@jakkrichm/create-nexus-devflow 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/bin/create-nexus-devflow.js +28 -4
  2. package/dist/bin/create-nexus-devflow.js.map +1 -1
  3. package/dist/lib/project-metadata.d.ts +1 -1
  4. package/dist/lib/project-metadata.js +3 -2
  5. package/dist/lib/project-metadata.js.map +1 -1
  6. package/dist/lib/update.js +7 -3
  7. package/dist/lib/update.js.map +1 -1
  8. package/package.json +1 -1
  9. package/template/.agents/skills/adopt/SKILL.md +58 -5
  10. package/template/.agents/skills/doctor/SKILL.md +23 -16
  11. package/template/.agents/skills/implement/SKILL.md +2 -2
  12. package/template/.agents/skills/onboard/SKILL.md +18 -17
  13. package/template/.agents/skills/rollback/SKILL.md +1 -1
  14. package/template/.claude/skills/00-explore/SKILL.md +2 -2
  15. package/template/.claude/skills/10-define/SKILL.md +2 -2
  16. package/template/.claude/skills/20-spec/SKILL.md +1 -2
  17. package/template/.claude/skills/30-plan/SKILL.md +1 -2
  18. package/template/.claude/skills/40-execute/SKILL.md +2 -2
  19. package/template/.claude/skills/50-verify/SKILL.md +2 -2
  20. package/template/.claude/skills/60-report/SKILL.md +2 -2
  21. package/template/.claude/skills/70-deliver/SKILL.md +2 -2
  22. package/template/.claude/skills/adopt/SKILL.md +191 -75
  23. package/template/.claude/skills/audit/SKILL.md +267 -133
  24. package/template/.claude/skills/autopilot/SKILL.md +226 -167
  25. package/template/.claude/skills/brainstorm/SKILL.md +62 -0
  26. package/template/.claude/skills/brief/SKILL.md +93 -92
  27. package/template/.claude/skills/check/SKILL.md +96 -76
  28. package/template/.claude/skills/ci/SKILL.md +140 -61
  29. package/template/.claude/skills/complete/SKILL.md +156 -101
  30. package/template/.claude/skills/convert-any-to-md/SKILL.md +2 -2
  31. package/template/.claude/skills/convert-any-to-md/references/setup.md +29 -0
  32. package/template/.claude/skills/convert-any-to-md/scripts/convert_any_to_md.py +487 -0
  33. package/template/.claude/skills/convert-any-to-md/scripts/requirements.txt +3 -0
  34. package/template/.claude/skills/debug/SKILL.md +124 -49
  35. package/template/.claude/skills/devflow/SKILL.md +9 -3
  36. package/template/.claude/skills/discovery/SKILL.md +150 -129
  37. package/template/.claude/skills/doctor/SKILL.md +195 -72
  38. package/template/.claude/skills/feature/SKILL.md +195 -151
  39. package/template/.claude/skills/fix/SKILL.md +41 -90
  40. package/template/.claude/skills/idea/SKILL.md +2 -2
  41. package/template/.claude/skills/implement/SKILL.md +189 -46
  42. package/template/.claude/skills/onboard/SKILL.md +216 -85
  43. package/template/.claude/skills/overview/SKILL.md +44 -29
  44. package/template/.claude/skills/prototype/SKILL.md +82 -27
  45. package/template/.claude/skills/release/SKILL.md +119 -130
  46. package/template/.claude/skills/report-html/SKILL.md +2 -2
  47. package/template/.claude/skills/rollback/SKILL.md +123 -77
  48. package/template/.claude/skills/status/SKILL.md +109 -0
  49. package/template/.claude/skills/test/SKILL.md +2 -2
  50. package/template/.claude/skills/tests/SKILL.md +126 -0
  51. package/template/.claude/skills/try/SKILL.md +77 -65
  52. package/template/AGENTS.md +2 -1
  53. package/template/devflow/build-plan.md +8 -0
  54. package/template/devflow/history/features/README.md +5 -0
  55. package/template/devflow/history/fixes/README.md +5 -0
  56. package/template/devflow/history/rollbacks/README.md +5 -0
@@ -1,141 +1,275 @@
1
1
  ---
2
2
  name: audit
3
- description: "[Devflow] Code, quality, security, performance, and test audit skill with durable ledger tracking in devflow/context/findings.md."
4
- argument-hint: "{scope/path or lens: quality | security | performance | tests | full}"
3
+ description: "[devflow][B] Read-only code audit for a Blueprint project, except for the findings ledger it maintains at devflow/context/findings.md. Reviews the active feature, changed files, a selected path, or the full project through all concerns or a focused quality, security, performance, or tests lens. Use when the user runs /audit, invokes $audit, asks for a code or quality audit, security review, performance review, test quality review, dead-code or duplication check, vibe-coded project cleanup, or standards review."
5
4
  ---
6
5
 
7
- # audit - Dedicated Multi-Lens Audit & Quality Ledger
6
+ # audit - review code quality against the project standards
8
7
 
9
8
  Where this sits in the workflow:
10
9
 
11
- ```text
12
- git diff / codebase / path -> [audit] -> devflow/context/findings.md -> check-gate / /complete
13
- (target scope & lenses) (analyze & (durable findings ledger) (quality gates)
14
- record)
15
- ```
10
+ /implement or /autopilot -> [audit] -> fixes or /complete
11
+ (code exists) (review + (repair quality issues
12
+ ledger) or close the feature)
16
13
 
17
- `audit` is the dedicated quality, security, performance, and test review engine for Nexus-DevFlow. It inspects changed files in the active branch, a targeted path, or the full repository, evaluates them through specialized review lenses, and records findings with durable IDs into `devflow/context/findings.md`.
18
-
19
- It is **strictly non-destructive**: it inspects and records findings in `findings.md`, but never modifies source code directly. Remediation is handled via `/fix <ID>` or `/implement`.
20
-
21
- ## Usage & Invocations
22
-
23
- ```text
24
- /audit # Audit active branch changes across all lenses (Default)
25
- /audit security # Focused Security audit on active changes
26
- /audit quality # Focused Quality, dead code & code smells audit
27
- /audit performance # Focused Performance & efficiency audit
28
- /audit tests # Focused Test quality & coverage gap audit
29
- /audit full # Full repository audit across all lenses
30
- /audit <path> # Targeted audit on a specific file or directory
31
- $audit # Codex CLI invocation
32
- ```
33
-
34
- ---
35
-
36
- ## Process
37
-
38
- ### Step 1 - Determine Scope & Lens
39
-
40
- 1. **Scope Resolution**:
41
- - **Branch / Active Run (Default)**: Inspect `git diff main...HEAD` or files touched in `devflow/context/current-feature.md`.
42
- - **Targeted Path**: If a directory/file path is passed (e.g. `src/auth/`), scope analysis to that path.
43
- - **Full Project**: If `full` is passed, scope analysis across the entire project repository.
44
- 2. **Lens Selection**:
45
- - If a lens name is provided (`security`, `quality`, `performance`, `tests`), focus primarily on that domain.
46
- - If none is provided, evaluate across all four lenses.
47
-
48
- ---
49
-
50
- ### Step 2 - Multi-Lens Inspection
51
-
52
- Evaluate code against standard criteria:
53
-
54
- #### 1. 🛡️ Security Lens
55
- - **Secrets & Credentials**: Look for hardcoded API keys, JWT secrets, passwords, or tokens.
56
- - **Injection Risks**: Unsanitized SQL, shell command execution, template injection, path traversal.
57
- - **Access Control & Auth**: Unprotected API routes, missing permission checks, insecure direct object references.
58
- - **Data Protection & Sanitization**: Missing XSS sanitization, unsafe HTML rendering, sensitive data leaks in logs.
59
-
60
- #### 2. 💎 Quality & Maintainability Lens
61
- - **Code Smells & Complexity**: Overly complex functions, deep nesting, high cyclomatic complexity.
62
- - **Duplication & Dead Code**: Repeated logic that should be abstracted, unused variables/imports/functions.
63
- - **Contract & Type Safety**: Unsafe `any` casts, missing error handling, unhandled Promise rejections.
64
- - **Standards & Conventions**: Compliance with `devflow/context/coding-standards.md`.
65
-
66
- #### 3. ⚡ Performance Lens
67
- - **Database & Query Efficiency**: N+1 queries, unindexed filter columns, unbounded queries without pagination.
68
- - **Resource Management**: Memory leaks, unclosed streams/handles, blocking synchronous operations in async loops.
69
- - **Bundle & Asset Footprint**: Unnecessary heavy dependencies, oversized client-side bundles.
70
-
71
- #### 4. 🧪 Test Quality Lens
72
- - **Coverage Gaps**: Critical business logic or branch conditions lacking unit or integration tests.
73
- - **Negative & Error Cases**: Testing only the happy path without asserting error handling and failure boundaries.
74
- - **Flakiness & Assertions**: Tests with race conditions, missing awaits, or non-deterministic assertions.
75
-
76
- ---
77
-
78
- ### Step 3 - Record Findings in `devflow/context/findings.md`
79
-
80
- For every confirmed issue found:
81
-
82
- 1. Determine **Severity**:
83
- - `P0` (Critical Blocker): Security vulnerabilities, data corruption bugs, crash-level defects.
84
- - `P1` (High Blocker): Major regressions, broken critical flows, unhandled failure paths.
85
- - `P2` (Medium): Code smells, missing non-critical tests, performance bottlenecks.
86
- - `P3` (Low / Polish): Minor naming inconsistencies, style polish, documentation gaps.
87
-
88
- 2. Determine **Durable ID**:
89
- - Check existing IDs in `devflow/context/findings.md` and use the next sequential ID:
90
- - `SEC-001`, `SEC-002` (Security)
91
- - `QUAL-001`, `QUAL-002` (Quality)
92
- - `PERF-001`, `PERF-002` (Performance)
93
- - `TEST-001`, `TEST-002` (Tests)
94
- - Or universal `FIND-001`, `FIND-002`
95
-
96
- 3. Append to `devflow/context/findings.md`:
97
- ```markdown
98
- ### SEC-001 [P0] open - Hardcoded Secret Key in config.ts
99
- - **Location**: `src/config.ts:24`
100
- - **Impact**: API secret key exposed in client bundle
101
- - **Remediation**: Move to environment variable `process.env.API_SECRET`
102
- ```
103
-
104
- ---
105
-
106
- ### Step 4 - Output Audit Summary & Recommendations
107
-
108
- Present a clean markdown report in **Thai (`th`)**:
109
-
110
- ```markdown
111
- ### 🛡️ ผลการตรวจสอบความปลอดภัยและคุณภาพโค้ด (Audit Summary)
112
-
113
- - **ขอบเขตการตรวจสอบ (Scope)**: `{Branch Diff | Path | Full Project}`
114
- - **เลนส์การตรวจ (Lenses)**: `{Quality, Security, Performance, Tests}`
115
- - **ข้อบกพร่องที่พบ (Findings Summary)**:
116
- - 🔴 **P0 (Critical)**: {count}
117
- - 🟠 **P1 (High)**: {count}
118
- - 🟡 **P2 (Medium)**: {count}
119
- - 🔵 **P3 (Low)**: {count}
120
-
121
- #### รายการข้อบกพร่องใหม่ที่บันทึกใน Findings Ledger:
122
- 1. `SEC-001 [P0] open - Hardcoded Secret Key in config.ts` (`src/config.ts:24`)
123
- 2. `PERF-001 [P2] open - Unbounded query in user list` (`src/users.ts:58`)
124
-
125
- ---
126
- 👉 **คำแนะนำถัดไป (Next Actions)**:
127
- - หากมีข้อบกพร่องระดับ P0/P1: เรียก `/fix SEC-001` เพื่อเริ่มการแก้ไขที่ติดตามได้
128
- - ตรวจสอบสถานะ Blockers: `nexus-devflow findings --blockers`
129
- ```
130
-
131
- ---
132
-
133
- ## Release Gatekeeper Rule
134
-
135
- > [!IMPORTANT]
136
- > Any `P0` or `P1` finding in `open` or `fixed` status in `devflow/context/findings.md` **unconditionally blocks**:
137
- > - `nexus-devflow check-gate` (Exit code 1)
138
- > - `/complete` (Fast-Track delivery close)
139
- > - `70-deliver` (Deep-Track release packaging)
140
- >
141
- > Findings must be repaired via `/fix` and verified with `/check` to reach `closed`, `accepted`, or `invalid` status.
14
+ `/check` proves behavior against the spec. `/doctor` checks Blueprint setup and
15
+ workflow health. This skill checks the code itself through either a broad review
16
+ or one focused lens: quality, security, performance, or tests.
17
+
18
+ It reviews code without changing it: it never edits source files, installs
19
+ dependencies, commits, merges, pushes, or starts product work. Its one write is
20
+ the findings ledger at `devflow/context/findings.md` (Step 4), the durable
21
+ record of findings and their status.
22
+
23
+ ## Input
24
+
25
+ Treat scope and lens as separate controls. Arguments may appear in either order,
26
+ such as `/audit security current` or `/audit src/auth tests`.
27
+
28
+ Optional scope:
29
+
30
+ - no scope argument: use `current` when an active feature exists, otherwise use
31
+ `changed` when local changes exist, otherwise use `full`
32
+ - `current`: audit the active `current-feature.md`, every committed feature-branch
33
+ change from its merge base through `HEAD`, staged and unstaged changes,
34
+ untracked source files, and nearby code affected by the feature
35
+ - `changed`: audit staged, unstaged, and untracked source files plus nearby code
36
+ - `full`: audit all project-owned source, tests, and configuration while excluding
37
+ dependencies, generated files, build output, coverage output, caches, vendored
38
+ code, and minified assets unless the user explicitly includes them
39
+ - path or directory: audit that area and the tests or callers needed to understand it
40
+
41
+ Optional lens:
42
+
43
+ - no lens: review all four lenses
44
+ - `quality`: maintainability, duplication, dead code, consistency, complexity,
45
+ and standards drift
46
+ - `security`: authorization, input trust, injection, data exposure, secret
47
+ handling, and unsafe configuration
48
+ - `performance`: query, network, rendering, memory, payload, concurrency, and
49
+ unbounded-work risks
50
+ - `tests`: missing coverage for important logic, weak assertions, skipped or
51
+ focused tests, poor isolation, brittle mocks, and likely flakiness
52
+
53
+ `full` is always the full-project scope, not a lens. `/audit full` therefore runs
54
+ all lenses across the full project. When only a lens is supplied, select scope
55
+ with the normal no-scope rules. A focused pass may name one or more lenses. If
56
+ the request names multiple lenses, review their union and report them separately.
57
+
58
+ If the requested scope is unclear, pick the smallest useful scope and state it.
59
+ If the lens is unclear, use all lenses and state that choice.
60
+
61
+ ## Step 1 - gather context
62
+
63
+ Read:
64
+
65
+ - `AGENTS.md`
66
+ - `devflow/context/project-overview.md`
67
+ - `devflow/context/coding-standards.md`
68
+ - `devflow/context/current-feature.md`
69
+ - `devflow/context/findings.md`, for existing IDs and statuses
70
+ - `devflow/context/ai-interaction.md`
71
+ - `devflow/build-plan.md`, when feature order matters
72
+ - git branch and working tree status
73
+ - relevant source files, tests, and configs for the chosen scope
74
+
75
+ For `current`, resolve the comparison base without network access:
76
+
77
+ 1. Use a base branch declared by the active spec or project instructions.
78
+ 2. Otherwise use the locally recorded remote default branch when available.
79
+ 3. Otherwise use an existing local `main`, then `master`.
80
+ 4. Find the merge base and inspect the committed delta through `HEAD`, then add
81
+ staged, unstaged, and untracked work.
82
+ 5. If no reliable base exists, say so and use the active spec plus local changes.
83
+ Never claim that committed feature work was fully covered in that case.
84
+
85
+ Do not fetch or pull to discover the base. For `full`, state the excluded paths
86
+ before reviewing so generated or third-party code does not consume the audit.
87
+
88
+ Prefer `rg` and targeted file reads. Do not dump large files into the response.
89
+
90
+ ## Step 2 - run available signals
91
+
92
+ Use existing commands only. Do not install tools.
93
+
94
+ Run or inspect only the signals relevant to the selected lens and scope:
95
+
96
+ - lint and typecheck commands when declared and relevant
97
+ - test command for the tests lens or when it directly validates a suspected risk
98
+ - build command when the selected lens needs compilation or bundle evidence
99
+ - existing security command for the security lens, when declared and locally runnable
100
+ - existing performance command for the performance lens, when declared and locally runnable
101
+ - targeted lightweight searches for the chosen lens, such as unused exports and
102
+ copied logic for quality, unsafe trust boundaries for security, repeated or
103
+ unbounded work for performance, and skipped or weak tests for tests
104
+
105
+ Do not run broad checks unrelated to a focused lens. If a useful command is
106
+ missing, report that as a gap. Do not invent a pass or claim that a focused
107
+ review covered the other lenses.
108
+
109
+ ## Step 3 - review the code
110
+
111
+ For all lenses, ground findings in reachable code and project-specific
112
+ expectations. Apply only the selected lens or lenses:
113
+
114
+ - **Quality:** duplicated logic, dead or unused code, unreachable paths,
115
+ oversized modules, abstractions that do not pay for themselves, risky missing
116
+ abstractions, inconsistent patterns, and drift from the standards or spec.
117
+ - **Security:** missing authentication or authorization, client-controlled
118
+ ownership, injection, unsafe parsing or deserialization, sensitive-data
119
+ exposure, secret handling, insecure defaults, and trust-boundary mistakes.
120
+ Inspect existing dependency or scanner output when available, but never imply
121
+ that local manifest inspection is a current vulnerability scan.
122
+ - **Performance:** N+1 queries, repeated network or database work, unnecessary
123
+ rendering, blocking work on hot paths, unbounded loops or collections, memory
124
+ growth, oversized payloads, missing pagination, and unsafe concurrency. Mark
125
+ hypotheses as unverified when runtime or profiling evidence is missing.
126
+ - **Tests:** important logic without coverage when a test command exists, weak
127
+ assertions, tests that only mirror implementation, excessive mocking, shared
128
+ state, time or order dependence, skipped or focused tests, placeholder tests,
129
+ swallowed failures, and missing browser or integration evidence where behavior
130
+ crosses a real boundary. Never invent a coverage percentage.
131
+
132
+ Do not nitpick harmless style differences unless they signal drift from the local
133
+ patterns. Prefer a short list of real findings over a broad list of guesses.
134
+
135
+ Do not broaden a focused pass because another category might be interesting.
136
+ Do not report or call out non-critical concerns from omitted lenses, even as
137
+ suggestions for a later audit. If an obvious P0 is directly encountered outside
138
+ the selected lens, report and record it as an out-of-lens critical risk, but do
139
+ not continue searching that other lens.
140
+
141
+ If a possible secret is found, never quote its value, paste the matching source
142
+ line, or include raw command output containing it. Report only the redacted secret
143
+ category, file, line, risk, and remediation. Redact sensitive values from all
144
+ audit evidence before responding.
145
+
146
+ ## Step 4 - update the findings ledger
147
+
148
+ `devflow/context/findings.md` is the durable record of findings. Chat reports
149
+ do not survive a context clear; the ledger does. It is the only file this skill
150
+ writes. If it is missing (an older install), create it with a `# Findings`
151
+ heading first.
152
+
153
+ **The ledger never scopes the review.** Review the code fresh in Step 3, then
154
+ record what the review found. Working from the open findings as a checklist and
155
+ verifying only those is the exact failure this file exists to prevent: a repair
156
+ can introduce a new defect that no existing entry points at.
157
+
158
+ One block per finding. The header line is the machine-readable contract and must
159
+ keep this exact shape; the prose below it is for humans and may vary:
160
+
161
+ ### F-03 [P0] open - Retained auth volumes carry the run label
162
+
163
+ **File:** ops/agent-proof/compose.yaml:86
164
+ **Found:** 2026-07-21 by /audit (scope: current; lens: security)
165
+ **Why it matters:** ...
166
+ **Suggested fix:** ...
167
+ **Resolution:**
168
+
169
+ IDs are sequential within the ledger (`F-01`, `F-02`, ...), never reused and
170
+ never renumbered while their entries live here, even after a finding closes.
171
+ Bare IDs are scoped to the live ledger: `/complete` archives resolved entries
172
+ under a work-item prefix (feature 12's `F-03` becomes `12/F-03`), and that
173
+ prefixed form is the permanent reference. A later ledger that has emptied and
174
+ reset starts at `F-01` again without colliding. Severity reuses the P0-P3
175
+ scheme from Step 5; only P0 and P1 block `/complete`. Status is one of:
176
+
177
+ | Status | Meaning | Blocks P0/P1 at /complete |
178
+ |---|---|---|
179
+ | `unverified` | Suspected, no confirming evidence yet | No |
180
+ | `open` | Confirmed, not yet repaired | Yes |
181
+ | `fixed` | Repaired, not yet re-reviewed | Yes |
182
+ | `closed` | Repaired and re-reviewed against the new code | No |
183
+ | `accepted` | Not fixing, by the user's explicit decision; reason recorded in Resolution | No |
184
+ | `invalid` | Re-examination proved the finding wrong; evidence recorded in Resolution | No |
185
+
186
+ After the review:
187
+
188
+ - Append each new confirmed finding as `open` with the next sequential ID, one
189
+ past the highest ID present in the ledger (entries carried forward from
190
+ earlier work count; a fresh ledger starts at `F-01`).
191
+ - Record an unverified risk worth tracking as `unverified`. It is a lead, not a
192
+ defect, and never gates a merge.
193
+ - Update the entries this pass re-examined: correct the status or severity and
194
+ note the evidence in **Resolution**.
195
+ - Move a `fixed` finding to `closed` only when all three hold: this pass's
196
+ reviewed set included the finding's file, re-examining the repaired code
197
+ confirmed the original defect is gone and the repair introduced no new one,
198
+ and the report names the finding as closed. An unrelated new finding in the
199
+ same file gets its own entry and does not keep the repaired one open. Never
200
+ close a finding implicitly.
201
+ - Set `accepted` only on the user's explicit decision in the current session,
202
+ and record their reason. Never accept a finding on their behalf.
203
+ - Set `invalid` only when re-examination shows the finding was wrong, and
204
+ record that evidence in **Resolution**. It is a review verdict (or the
205
+ user's explicit call), never a shortcut past the gate for blocked work.
206
+
207
+ `fixed` blocking `/complete` is deliberate: a repair is not done when the code
208
+ changes, it is done when a review has looked at the result. `/implement` marks
209
+ repairs `fixed`; only a review pass moves them to `closed`.
210
+
211
+ ## Step 5 - report findings
212
+
213
+ Lead with findings, ordered by severity, using the IDs the ledger assigned:
214
+
215
+ F-04 [P1] Title
216
+ File: path:line
217
+ Why it matters: ...
218
+ Suggested fix: ...
219
+
220
+ Severity:
221
+
222
+ - `P0` - data loss, security break, or code that cannot ship
223
+ - `P1` - likely bug, broken contract, missing guard, or high-risk duplication
224
+ - `P2` - maintainability issue worth fixing before the feature closes
225
+ - `P3` - small cleanup, consistency issue, or follow-up candidate
226
+
227
+ Use P0 or P1 only when a concrete code path, violated contract or security
228
+ boundary, failing command or test, or reproducible behavior confirms the risk. If
229
+ the evidence is incomplete, list it under `Unverified risks` with the missing
230
+ validation instead of presenting it as a confirmed high-severity finding.
231
+
232
+ If there are no findings, say that clearly for the selected lens and name any
233
+ remaining risk or missing signal, such as "no test command declared" or
234
+ "browser flow not audited."
235
+
236
+ Then include:
237
+
238
+ - ledger changes: findings added, updated, or closed this pass, by ID
239
+ - commands run and results
240
+ - selected scope
241
+ - selected lens or lenses
242
+ - base branch, merge base, and commit range for `current`, when available
243
+ - files or directories reviewed
244
+ - generated, third-party, or otherwise excluded paths
245
+ - applicable standards checked
246
+ - browser or runtime evidence inspected, when relevant
247
+ - skipped, focused, or placeholder tests found, when the tests lens was selected
248
+ - checks that were unavailable or could not run
249
+ - suggested repair order
250
+
251
+ For `full`, say whether coverage was complete or partial. Never label a partial
252
+ review as a full-project audit.
253
+
254
+ ## Rules
255
+
256
+ - The findings ledger is the only file this skill writes. Never edit, format,
257
+ install, commit, merge, push, or delete anything else.
258
+ - A focused lens is not a broad audit. State what was not reviewed and never
259
+ imply that omitted lenses passed.
260
+ - The ledger reports status; it never defines what the review looks at. Do not
261
+ turn open findings into the review checklist.
262
+ - Never fetch, pull, or run network-backed audit tools without explicit approval.
263
+ - Never reproduce secrets or sensitive values in findings or command output.
264
+ - Findings first. Keep summaries short.
265
+ - Ground every finding in a file path and line number when possible.
266
+ - Avoid speculative rewrites. Recommend the smallest fix that removes the risk.
267
+ - Respect existing project patterns over generic advice.
268
+ - Do not require perfection. The goal is code that is understandable, consistent,
269
+ testable where it matters, and safe to keep building on.
270
+
271
+ ## Formatting
272
+
273
+ Format the output to match the project's conventions in
274
+ `devflow/context/ai-interaction.md`: concise, scannable markdown, with lists for
275
+ enumerations and tables for matrices rather than dense paragraphs.