Loading...
Loading...
Use after code review - implement ALL findings; any finding not fixed MUST have tracking issue created; no finding disappears without trace
npx skill4agent add troykelly/codex-skills apply-all-findings1 unclear variable name +
1 missing null check +
1 inconsistent style +
1 outdated comment =
Confusing, fragile code"This minor issue can wait" →
"That minor issue can wait too" →
"We don't fix minor issues" →
Technical debt mountainEvery finding addressed →
High standards maintained →
Quality becomes habitcomprehensive-review### Findings
1. [Critical] SQL injection in findUser()
2. [Major] N+1 query in getOrders()
3. [Minor] Variable 'x' should be renamed
4. [Minor] Missing JSDoc on helper()
5. [Minor] Inconsistent quote style- [ ] Fix SQL injection in findUser()
- [ ] Fix N+1 query in getOrders()
- [ ] Rename variable 'x' to descriptive name
- [ ] Add JSDoc to helper()
- [ ] Fix quote style to use single quotesdeferred-finding# Create tracking issue for deferred finding
gh issue create \
--title "[Finding] [Description] (from #123)" \
--label "review-finding,depth:1" \
--body "[Full deferred-finding template]"
# Create spawned-from label if needed
gh label create "spawned-from:#123" --color "C2E0C6" 2>/dev/null || true
gh issue edit [NEW_ISSUE] --add-label "spawned-from:#123"# Re-run linting
pnpm lint
# Re-run tests
pnpm test
# Re-run type check
pnpm typecheck// Finding: SQL injection in findUser()
// Before
return db.query(`SELECT * FROM users WHERE username = '${username}'`);
// After
return db.query('SELECT * FROM users WHERE username = ?', [username]);// Finding: Variable 'x' should be renamed
// Before
const x = users.filter(u => u.active);
// After
const activeUsers = users.filter(user => user.isActive);// Finding: Missing JSDoc on helper()
// Before
function helper(data: Data): Result {
// After
/**
* Transforms raw data into the expected result format.
*
* @param data - Raw data from the API
* @returns Transformed result ready for display
*/
function helper(data: Data): Result {// Finding: Inconsistent quote style
// Before
const name = "Alice";
const greeting = 'Hello';
// After (using project standard: single quotes)
const name = 'Alice';
const greeting = 'Hello';| Reason | Example | Requires |
|---|---|---|
| Out of scope | Architectural change | Tracking issue |
| External dependency | Infrastructure change | Tracking issue |
| Breaking change | Major version bump | Tracking issue |
| Separate concern | Independent feature | Tracking issue |
| Excuse | Reality | Action |
|---|---|---|
| "It's minor" | Minor compounds | Fix now |
| "Takes too long" | Debt takes longer | Fix now |
| "Good enough" | Never enough | Fix now |
| "Not important" | Then why note it? | Fix now |
| "Do it later" | Without tracking? No. | Fix or create issue |
# WRONG - Deferred without tracking
"We'll fix the SQL injection later" # NO
# RIGHT - Deferred with tracking
gh issue create --title "[Finding] SQL injection in findUser (from #123)" ...
# Then link #456 in review artifact# Linting
pnpm lint
# Type checking
pnpm typecheck
# Tests
pnpm test
# Build
pnpm buildgit diff| Pushback | Response |
|---|---|
| "We can fix minors later" | Without tracking? No. Create issue or fix now. |
| "This is slowing us down" | Debt slows you down more. |
| "It's not important" | Then why was it noted? |
| "Good enough" | Good enough is never enough. |
| "The reviewer is being picky" | Attention to detail is valuable. |
issue-driven-developmentcomprehensive-reviewdeferred-finding