devlyn-cli 1.7.3 → 1.8.1

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.
package/CLAUDE.md CHANGED
@@ -68,6 +68,26 @@ Optional flags:
68
68
  - `--skip-docs` — skip update-docs phase
69
69
  - `--with-codex [evaluate|review|both]` — use OpenAI Codex as cross-model evaluator/reviewer (requires codex-mcp-server)
70
70
 
71
+ ## Preflight Check (Post-Roadmap Verification)
72
+
73
+ After completing a roadmap (or a phase), verify that everything was actually implemented correctly:
74
+
75
+ ```
76
+ /devlyn:preflight
77
+ ```
78
+
79
+ This reads every commitment from VISION.md, ROADMAP.md, and item specs, then audits the codebase evidence-based. Finds: missing features, incomplete implementations, spec divergence, bugs, stale documentation. Also checks in the browser for web projects.
80
+
81
+ Output: `.devlyn/PREFLIGHT-REPORT.md` with categorized findings (MISSING, INCOMPLETE, DIVERGENT, BROKEN, STALE_DOC). Confirmed gaps can be promoted to new roadmap items for auto-resolve.
82
+
83
+ Optional flags:
84
+ - `--phase N` — audit only phase N items
85
+ - `--autofix` — auto-promote CRITICAL/HIGH findings and run auto-resolve
86
+ - `--skip-browser` — skip browser validation
87
+ - `--skip-docs` — skip documentation audit
88
+
89
+ **Recommended workflow**: `/devlyn:ideate` → `/devlyn:auto-resolve` (repeat) → `/devlyn:preflight` → fix gaps → `/devlyn:preflight` (verify)
90
+
71
91
  ## Manual Pipeline (Step-by-Step Control)
72
92
 
73
93
  When you want to run each step yourself with review between phases:
package/README.md CHANGED
@@ -31,12 +31,12 @@ That's it. The interactive installer handles everything. Run it again anytime to
31
31
 
32
32
  ---
33
33
 
34
- ## How It Works — Two Commands, Full Cycle
34
+ ## How It Works — Three Steps, Full Cycle
35
35
 
36
36
  devlyn-cli turns Claude Code into an autonomous development pipeline. The core loop is simple:
37
37
 
38
38
  ```
39
- ideate → auto-resolve → shiprepeat
39
+ ideate → auto-resolve → preflightfix gaps → ship
40
40
  ```
41
41
 
42
42
  ### Step 1 — Plan with `/devlyn:ideate`
@@ -78,6 +78,26 @@ Build → Browser Test → Evaluate → Fix Loop → Simplify → Review → Sec
78
78
 
79
79
  Skip phases you don't need: `--skip-browser`, `--skip-review`, `--skip-clean`, `--skip-docs`, `--max-rounds 6`
80
80
 
81
+ ### Step 3 — Verify with `/devlyn:preflight`
82
+
83
+ After implementing all roadmap items, run a final alignment check:
84
+
85
+ ```
86
+ /devlyn:preflight
87
+ ```
88
+
89
+ Reads every commitment from your vision, roadmap, and item specs, then audits the codebase evidence-based. Catches what you missed:
90
+
91
+ | Category | What It Finds |
92
+ |---|---|
93
+ | `MISSING` | In roadmap but not implemented |
94
+ | `INCOMPLETE` | Started but unfinished |
95
+ | `DIVERGENT` | Implemented differently than spec |
96
+ | `BROKEN` | Has a bug preventing it from working |
97
+ | `STALE_DOC` | Docs don't match current code |
98
+
99
+ Confirmed gaps become new roadmap items — feed them back into auto-resolve. Use `--autofix` to do this automatically, or `--phase 2` to check only one phase.
100
+
81
101
  ### Bonus — Dual-Model Mode with Codex
82
102
 
83
103
  Install the Codex MCP server during setup, then:
@@ -127,6 +147,7 @@ When you want step-by-step control instead of the full pipeline.
127
147
 
128
148
  | Command | What It Does |
129
149
  |---|---|
150
+ | `/devlyn:preflight` | Verify codebase matches vision/roadmap — gap analysis with evidence |
130
151
  | `/devlyn:product-spec` | Generate or update product specs |
131
152
  | `/devlyn:feature-spec` | Turn product spec → implementable feature spec |
132
153
  | `/devlyn:discover-product` | Scan codebase → auto-generate product docs |
@@ -0,0 +1,355 @@
1
+ ---
2
+ name: devlyn:preflight
3
+ description: >
4
+ Final alignment check between vision/roadmap documents and the actual codebase — the last step
5
+ before declaring a roadmap phase complete. Reads every commitment from VISION.md, ROADMAP.md,
6
+ and item specs, then audits the implementation with evidence-based analysis citing file:line
7
+ for every finding. Catches missing features, incomplete implementations, spec divergence, bugs,
8
+ and documentation drift. Also validates in the browser for web projects and checks documentation
9
+ alignment. Use when the user has finished implementing a roadmap and wants to verify nothing was
10
+ missed. Triggers on "preflight", "preflight check", "gap analysis", "gap check", "did I miss
11
+ anything", "check against the roadmap", "verify implementation", "alignment check", "are we done",
12
+ "final check before shipping", or when the user says they've finished implementing and wants
13
+ verification. This is different from /devlyn:evaluate (which grades a single changeset) and
14
+ /devlyn:review (which reviews code quality) — preflight audits the ENTIRE project against its
15
+ planning documents holistically.
16
+ ---
17
+
18
+ # Vision-to-Implementation Preflight Check
19
+
20
+ The final gate before you declare "done." Read every promise the planning documents made, then verify each one against the actual codebase — evidence-based, no guessing.
21
+
22
+ <preflight_config>
23
+ $ARGUMENTS
24
+ </preflight_config>
25
+
26
+ <why_this_matters>
27
+ After implementing a full roadmap, gaps are almost inevitable. Features get partially implemented, edge cases from specs get skipped, implementations drift from the original design, and docs fall out of sync. These gaps compound — a missing integration here, a forgotten error state there — until the shipped product doesn't match the vision.
28
+
29
+ This skill catches those gaps systematically, before users do. The difference between "we built everything on the list" and "we actually delivered what we promised."
30
+ </why_this_matters>
31
+
32
+ <evidence_standard>
33
+ Every finding must cite evidence: file:line for code, specific doc section for documentation, screenshot for browser issues. A finding without evidence is speculation — exclude it.
34
+
35
+ The corollary: if you search thoroughly and can't find evidence that something exists, that IS evidence it's missing. "Searched for X across src/ and found no implementation" is a valid, evidence-based finding.
36
+
37
+ This matters because the report feeds into auto-resolve. Vague findings produce vague fixes.
38
+ </evidence_standard>
39
+
40
+ ## Flags
41
+
42
+ Parse from `<preflight_config>`:
43
+ - `--phase N` — audit only phase N items (default: all phases)
44
+ - `--autofix` — auto-promote all findings to roadmap items and run auto-resolve on each
45
+ - `--skip-browser` — skip browser validation
46
+ - `--skip-docs` — skip documentation audit
47
+
48
+ Example: `/devlyn:preflight --phase 2 --skip-browser`
49
+
50
+ ## PHASE 0: DISCOVER & SCOPE
51
+
52
+ 1. **Find planning documents** — search in parallel:
53
+ - `docs/VISION.md`
54
+ - `docs/ROADMAP.md`
55
+ - `docs/roadmap/` directory (item specs)
56
+ - If none found, stop clearly: "No vision/roadmap documents found. Run `/devlyn:ideate` first to create them."
57
+
58
+ 2. **Determine scope**:
59
+ - If `--phase N` specified → only read specs in `docs/roadmap/phase-N/`
60
+ - Otherwise → read all phases
61
+ - Read `docs/roadmap/backlog/` to identify deferred items (excluded from audit)
62
+
63
+ 3. **Check for prior state**:
64
+ - If `.devlyn/PREFLIGHT-REPORT.md` exists from a previous run → note it for delta comparison in PHASE 4
65
+ - If `.devlyn/preflight-accepted.md` exists → load accepted divergences to filter in PHASE 4
66
+
67
+ 4. **Announce**:
68
+ ```
69
+ Preflight check starting
70
+ Scope: [Phase N / All phases]
71
+ Documents: VISION.md, ROADMAP.md, [N] item specs
72
+ Deferred items (excluded): [N]
73
+ Previous run: [found — will show delta / none]
74
+ Phases: Extract → Audit → [Browser] → [Docs] → Report → Triage
75
+ ```
76
+
77
+ ## PHASE 1: EXTRACT COMMITMENTS
78
+
79
+ Read all in-scope planning documents and build a **commitment registry** — every concrete promise the documents make. This registry is the grading rubric for all auditors.
80
+
81
+ 1. **Read in parallel**: VISION.md, ROADMAP.md, all in-scope item specs, phase `_overview.md` files
82
+
83
+ 2. **Extract from each item spec**:
84
+ - Requirements section → each bullet becomes a `FEATURE` or `BEHAVIOR` commitment
85
+ - Constraints section → each becomes a `CONSTRAINT` commitment
86
+ - Dependencies section → each becomes an `INTEGRATION` commitment
87
+ - Explicit test requirements → `TEST` commitments
88
+
89
+ 3. **Extract from VISION.md**: high-level success criteria — checked at a broader level ("the system supports X" rather than "file Y has function Z")
90
+
91
+ 4. **Filter out** (excluded from audit entirely):
92
+ - Items in `backlog/` or `deferred.md`
93
+ - Items with `status: cut` in ROADMAP.md
94
+ - Out of Scope entries — these are anti-commitments (things promised NOT to build)
95
+
96
+ 5. **Separate planned items**: Items with `status: planned` in their spec frontmatter or "Planned" in ROADMAP.md are NOT expected to be implemented yet. Include them in a `[PLANNED]` section of the registry for visibility, but do NOT audit them or report them as findings. This distinction matters — flagging planned items as MISSING creates noise and buries the real gaps in work that was supposed to be done.
97
+
98
+ 5. **Write to `.devlyn/commitment-registry.md`**:
99
+
100
+ ```markdown
101
+ # Commitment Registry
102
+ Generated: [timestamp]
103
+ Scope: [phase N / all]
104
+ Total commitments: [N]
105
+
106
+ ## Phase 1: [name]
107
+ ### 1.1 [item title] (spec status: [done/in-progress/planned])
108
+ - [FEATURE] User can sign up with email and password
109
+ - [BEHAVIOR] Failed login returns 401 with specific error message
110
+ - [CONSTRAINT] Passwords hashed with bcrypt, min 8 characters
111
+ - [INTEGRATION] Auth middleware applied to all /api/* routes
112
+ - [TEST] Auth flow covered by E2E tests
113
+
114
+ ## Anti-Commitments (Out of Scope)
115
+ - [item 1.1] Does NOT include social login
116
+ - [item 1.2] Does NOT include real-time inventory sync
117
+
118
+ ## Not Started (Planned — excluded from audit)
119
+ ### 2.1 [item title] (spec status: planned)
120
+ - [FEATURE] WebSocket connection on page load
121
+ - [FEATURE] Real-time task list updates
122
+ [These items are tracked for visibility but NOT audited or reported as findings]
123
+ ```
124
+
125
+ ## PHASE 2: AUDIT
126
+
127
+ Spawn all applicable auditors in parallel. Each reads `.devlyn/commitment-registry.md` and investigates from their perspective.
128
+
129
+ ### code-auditor (always)
130
+
131
+ Spawn a subagent with `mode: "bypassPermissions"`. Read the full prompt from `references/auditors/code-auditor.md` and pass it to the subagent.
132
+
133
+ The code-auditor classifies each commitment as IMPLEMENTED, MISSING, INCOMPLETE, DIVERGENT, or BROKEN — with file:line evidence. Also catches cross-feature integration gaps and constraint violations. Writes to `.devlyn/audit-code.md`.
134
+
135
+ ### docs-auditor (unless --skip-docs)
136
+
137
+ Spawn a subagent with `mode: "bypassPermissions"`. Read the full prompt from `references/auditors/docs-auditor.md` and pass it to the subagent.
138
+
139
+ Checks: ROADMAP.md status accuracy, README alignment, API doc coverage, VISION.md currency, item spec status. Writes to `.devlyn/audit-docs.md`.
140
+
141
+ ### browser-auditor (conditional)
142
+
143
+ **Skip conditions** (check in order):
144
+ 1. `--skip-browser` flag → skip
145
+ 2. No web-relevant files in project (no `*.tsx`, `*.jsx`, `*.vue`, `*.svelte`, `*.html`, `page.*`, `layout.*`) → skip with note "Browser validation skipped — no web files detected"
146
+ 3. Otherwise → spawn
147
+
148
+ Spawn a subagent with `mode: "bypassPermissions"`. Read the full prompt from `references/auditors/browser-auditor.md` and pass it to the subagent.
149
+
150
+ Tests user-facing features in the browser against commitment registry. Writes to `.devlyn/audit-browser.md`.
151
+
152
+ **After all auditors complete**: Read each audit file and proceed to PHASE 3.
153
+
154
+ ## PHASE 3: SYNTHESIZE & REPORT
155
+
156
+ After all auditors report:
157
+
158
+ 1. **Read all audit files** in parallel:
159
+ - `.devlyn/audit-code.md`
160
+ - `.devlyn/audit-docs.md` (if exists)
161
+ - `.devlyn/audit-browser.md` (if exists)
162
+
163
+ 2. **Deduplicate**: If multiple auditors flagged the same issue, merge into one finding at the highest severity.
164
+
165
+ 3. **Filter accepted divergences**: If `.devlyn/preflight-accepted.md` exists, remove any findings that match accepted entries.
166
+
167
+ 4. **Classify each finding** using these categories:
168
+
169
+ | Category | Description | Typical source |
170
+ |----------|-------------|----------------|
171
+ | `MISSING` | In roadmap but not implemented | code-auditor |
172
+ | `INCOMPLETE` | Implementation started but unfinished | code-auditor |
173
+ | `DIVERGENT` | Implemented differently than spec says | code-auditor |
174
+ | `BROKEN` | Implemented but has a bug | code-auditor, browser-auditor |
175
+ | `UNDOCUMENTED` | Implemented but not in docs | docs-auditor |
176
+ | `STALE_DOC` | Docs don't match current code | docs-auditor |
177
+
178
+ 5. **Assign severity**: CRITICAL (blocks shipping), HIGH (should fix), MEDIUM (fix or accept), LOW (cosmetic)
179
+
180
+ 6. **Compare with previous run** (if `.devlyn/PREFLIGHT-REPORT.md` existed):
181
+ - `RESOLVED`: finding from previous run no longer present
182
+ - `PERSISTS`: finding still present
183
+ - `NEW`: finding not in previous run
184
+
185
+ 7. **Generate `.devlyn/PREFLIGHT-REPORT.md`**:
186
+
187
+ ```markdown
188
+ # Preflight Report
189
+ Generated: [timestamp]
190
+ Scope: [phase N / all]
191
+ Previous run: [timestamp / none]
192
+
193
+ ## Summary
194
+ | Category | Count |
195
+ |----------|-------|
196
+ | MISSING | [N] |
197
+ | INCOMPLETE | [N] |
198
+ | DIVERGENT | [N] |
199
+ | BROKEN | [N] |
200
+ | UNDOCUMENTED | [N] |
201
+ | STALE_DOC | [N] |
202
+ | **Total findings** | **[N]** |
203
+
204
+ ## Delta (vs previous run)
205
+ - Resolved: [N]
206
+ - Persists: [N]
207
+ - New: [N]
208
+
209
+ ## Commitment Coverage
210
+ - Active commitments (done/in-progress specs): [N]
211
+ - Verified (IMPLEMENTED): [N] ([%])
212
+ - Issues found: [N] ([%])
213
+ - Planned items (excluded from audit): [N] across [M] specs
214
+
215
+ ## Findings
216
+
217
+ ### CRITICAL
218
+ - **[MISSING]** `1.2` — Order cancellation flow
219
+ - **Commitment**: "User can cancel pending orders within 24 hours"
220
+ - **Evidence**: No cancellation endpoint in `src/api/orders/`. No cancel button in `src/components/OrderDetail.tsx`.
221
+ - **Impact**: Core user workflow completely absent.
222
+
223
+ ### HIGH
224
+ - **[INCOMPLETE]** `1.1` — Error handling on signup
225
+ - **Commitment**: "Failed signup shows specific validation errors"
226
+ - **Evidence**: `src/api/auth/signup.ts:34` returns generic 500. No field-level validation.
227
+ - **Impact**: Users see "Something went wrong" instead of actionable feedback.
228
+
229
+ ### MEDIUM
230
+ ...
231
+
232
+ ### LOW
233
+ ...
234
+
235
+ ## Documentation Findings
236
+ - [STALE_DOC] ROADMAP.md: Item 1.3 status "In Progress" → should be "Done"
237
+ - [UNDOCUMENTED] WebSocket real-time updates not mentioned in README
238
+
239
+ ## What's Verified
240
+ [Explicitly list areas that passed — balanced feedback prevents over-correction]
241
+ - Auth flow: all 5 commitments verified (signup, login, logout, password reset, session management)
242
+ - Database schema: matches all spec constraints
243
+
244
+ ## Not Started (Expected — Planned Items)
245
+ [List planned items here for visibility, not as findings]
246
+ - 2.1 Real-time Updates — status: planned, 5 commitments
247
+ - 2.2 Team Management — status: planned, 6 commitments
248
+ These items are acknowledged future work per the roadmap. They will be audited when their status changes to in-progress or done.
249
+
250
+ ## Accepted Divergences (from previous runs)
251
+ - [list any, or "None"]
252
+ ```
253
+
254
+ 8. **Present the report** to the user with a summary.
255
+
256
+ ## PHASE 4: TRIAGE & PROMOTE
257
+
258
+ How this phase runs depends on the `--autofix` flag:
259
+
260
+ ### Without --autofix (default — interactive)
261
+
262
+ Present findings and guide the user through triage:
263
+
264
+ ```
265
+ Preflight found [N] findings across [categories].
266
+
267
+ For each finding, you can:
268
+ 1. **Promote** → creates a roadmap item spec, adds to ROADMAP.md
269
+ 2. **Accept** → marks as intentional divergence (won't flag on future runs)
270
+ 3. **Skip** → leave for later
271
+
272
+ Which findings would you like to promote to the roadmap?
273
+ ```
274
+
275
+ **When the user confirms findings to promote:**
276
+
277
+ 1. **Generate item specs** for each confirmed finding, following the ideate template format:
278
+ ```markdown
279
+ ---
280
+ id: "[phase].[next-number]"
281
+ title: "[Fix/Add: description]"
282
+ phase: [N]
283
+ status: planned
284
+ priority: [derived from finding severity]
285
+ complexity: [estimated from finding scope]
286
+ depends-on: []
287
+ ---
288
+
289
+ # [id] [Title]
290
+
291
+ ## Context
292
+ Preflight check identified this gap against the original roadmap specification.
293
+ [Brief context from the original commitment and what's wrong]
294
+
295
+ ## Objective
296
+ [What needs to be true after this is fixed]
297
+
298
+ ## Requirements
299
+ - [ ] [Specific fix requirement derived from the finding]
300
+ - [ ] [Verification step]
301
+
302
+ ## Constraints
303
+ - Must align with original spec at docs/roadmap/phase-N/[original-item].md
304
+
305
+ ## Out of Scope
306
+ - Changes beyond what the original spec requires
307
+ ```
308
+
309
+ 2. **Place specs** in the appropriate roadmap phase directory (same phase as the original item, or a new "fixes" phase if multiple phases are affected)
310
+
311
+ 3. **Update ROADMAP.md** with new rows for promoted findings
312
+
313
+ 4. **Record accepted divergences** in `.devlyn/preflight-accepted.md`:
314
+ ```markdown
315
+ # Accepted Divergences
316
+ # Findings marked as intentional — excluded from future preflight runs
317
+
318
+ - [item-id] [commitment]: [reason accepted]
319
+ ```
320
+
321
+ 5. **STALE_DOC findings**: Fix these directly — update ROADMAP.md statuses, item spec frontmatter, and VISION.md "What's Next" sections. These are factual corrections, not implementation decisions.
322
+
323
+ 6. **Suggest next steps**:
324
+ ```
325
+ Triage complete.
326
+ - [N] findings promoted to roadmap ([list item IDs])
327
+ - [N] divergences accepted
328
+ - [N] doc issues fixed directly
329
+
330
+ Next steps:
331
+ - To implement fixes: /devlyn:auto-resolve "Implement per spec at docs/roadmap/phase-N/[id]-[name].md"
332
+ - For high-stakes fixes (CRITICAL severity or complex DIVERGENT findings), add `--with-codex both` to cross-validate the fix and review with Codex
333
+ - To re-run preflight after fixes: /devlyn:preflight [same flags]
334
+ - To add new features discovered during audit: /devlyn:ideate expand
335
+ ```
336
+
337
+ ### With --autofix
338
+
339
+ 1. Auto-promote all CRITICAL and HIGH findings to roadmap items (steps 1-3 above)
340
+ 2. Fix all STALE_DOC findings directly
341
+ 3. MEDIUM and LOW findings are reported but not auto-promoted (include in report with note "manually promote if needed")
342
+ 4. For each promoted item, spawn `/devlyn:auto-resolve` sequentially:
343
+ ```
344
+ /devlyn:auto-resolve "Implement per spec at docs/roadmap/phase-N/[id]-[name].md"
345
+ ```
346
+ 5. After all auto-resolve runs complete, re-run preflight (without --autofix) as a verification pass
347
+ 6. Present final delta report showing what was resolved
348
+
349
+ <autofix_safety>
350
+ Auto-promoting only CRITICAL and HIGH findings prevents noise — MEDIUM/LOW findings often benefit from human judgment on whether they're worth fixing or should be accepted as intentional divergence. The user can always manually promote remaining findings after reviewing the report.
351
+ </autofix_safety>
352
+
353
+ ## Language
354
+
355
+ Generate all documents and reports in the language the user communicates in. Keep technical terms (file paths, code references, category names like MISSING/DIVERGENT) in English for consistency with the rest of the devlyn toolchain.
@@ -0,0 +1,32 @@
1
+ # Browser Auditor Prompt
2
+
3
+ Use this as the subagent prompt when spawning the browser-auditor in PHASE 2.
4
+
5
+ **Skip conditions** (check in order before spawning):
6
+ 1. `--skip-browser` flag → skip
7
+ 2. No web-relevant files in project (no `*.tsx`, `*.jsx`, `*.vue`, `*.svelte`, `*.html`, `page.*`, `layout.*`) → skip with note "Browser validation skipped — no web files detected"
8
+ 3. Otherwise → spawn
9
+
10
+ ---
11
+
12
+ You are performing browser-based verification of a web application against its planning commitments.
13
+
14
+ Read `.devlyn/commitment-registry.md` for the user-facing features that should be working.
15
+
16
+ **Your workflow:**
17
+ 1. Read `.claude/skills/devlyn:browser-validate/SKILL.md` for the browser testing methodology and tier system
18
+ 2. Start the dev server
19
+ 3. For each user-facing FEATURE and BEHAVIOR commitment:
20
+ - Navigate to the relevant page
21
+ - Perform the user action described in the commitment
22
+ - Verify the expected outcome
23
+ - Take screenshots as evidence
24
+ 4. Pay special attention to:
25
+ - Error states: trigger errors and verify error UI appears
26
+ - Empty states: verify empty state UI for lists/collections
27
+ - Loading states: verify loading indicators during async operations
28
+ - Edge cases explicitly mentioned in specs
29
+
30
+ Write findings to `.devlyn/audit-browser.md` with screenshot paths as evidence.
31
+
32
+ If browser tools are unavailable, fall back to HTTP smoke testing (curl endpoints, verify response codes and shapes). Note the reduced coverage in your findings.
@@ -0,0 +1,77 @@
1
+ # Code Auditor Prompt
2
+
3
+ Use this as the subagent prompt when spawning the code-auditor in PHASE 2.
4
+
5
+ ---
6
+
7
+ You are auditing a codebase against its planning commitments. Your job is to verify that every commitment was actually implemented — and implemented correctly.
8
+
9
+ Read `.devlyn/commitment-registry.md` for the full list of commitments to verify. Skip any items in the "Not Started (Planned)" section — those are acknowledged future work, not gaps.
10
+
11
+ **For each active commitment (not planned):**
12
+ 1. Search the codebase for its implementation (use Grep, Glob, Read in parallel where possible)
13
+ 2. Read the implementing code thoroughly — line by line for critical paths
14
+ 3. Classify the commitment:
15
+
16
+ | Classification | Meaning | Evidence required |
17
+ |---|---|---|
18
+ | IMPLEMENTED | Code exists and fulfills the commitment | file:line showing the implementation |
19
+ | MISSING | No implementation found after thorough search | What you searched for and where |
20
+ | INCOMPLETE | Implementation started but doesn't fully satisfy | What's there + what's missing, both with file:line |
21
+ | DIVERGENT | Implementation does something different than specified | Spec requirement vs actual behavior, with file:line |
22
+ | BROKEN | Implementation exists but has a bug preventing it from working | The bug with file:line |
23
+
24
+ **Beyond the commitment checklist**, also investigate:
25
+ - Cross-feature integration gaps: features that should connect but don't
26
+ - Error handling specified in specs but not implemented in code
27
+ - Constraints specified but violated (e.g., spec says "use bcrypt" but code uses plaintext)
28
+ - Edge cases explicitly mentioned in specs but unhandled
29
+
30
+ <code_auditor_calibration>
31
+ Calibrate your judgment with these examples:
32
+
33
+ **This IS a finding (INCOMPLETE)**:
34
+ Spec says "failed API calls display an error banner with retry button."
35
+ Code at `src/components/Dashboard.tsx:42` has `catch (e) { console.error(e) }` — error is logged but no UI feedback. The user sees a blank screen on failure.
36
+ Why: logging is not user-facing error handling. The commitment specifies visible feedback.
37
+
38
+ **This IS a finding (DIVERGENT)**:
39
+ Spec says "alert admin via push notification when stock below threshold."
40
+ Code at `src/inventory/alerts.ts:28` sends an email instead.
41
+ Why: the channel matters — push notification has different urgency characteristics than email.
42
+
43
+ **This is NOT a finding**:
44
+ Spec says "store user preferences." Code stores them in localStorage instead of the database.
45
+ Why: unless the spec explicitly requires server-side persistence, the implementation choice is reasonable. The commitment is fulfilled.
46
+
47
+ **General rule**: focus on whether the user-facing OUTCOME matches the commitment, not on internal implementation details. But when the spec explicitly constrains HOW something should work, verify that too.
48
+ </code_auditor_calibration>
49
+
50
+ Write findings to `.devlyn/audit-code.md`:
51
+
52
+ ```markdown
53
+ # Code Audit Findings
54
+
55
+ ## Summary
56
+ - Commitments checked: [N]
57
+ - IMPLEMENTED: [N]
58
+ - MISSING: [N]
59
+ - INCOMPLETE: [N]
60
+ - DIVERGENT: [N]
61
+ - BROKEN: [N]
62
+
63
+ ## Findings
64
+
65
+ ### [MISSING] 1.1 — Email validation on signup
66
+ **Commitment**: "Email format validated on signup"
67
+ **Evidence**: Searched `src/auth/`, `src/validators/`, `src/api/auth*`. No validation found. `src/api/auth/signup.ts:15` accepts email parameter without any format check.
68
+ **Severity**: HIGH
69
+ **Impact**: Invalid emails enter the database, breaking password reset flow.
70
+
71
+ ### [DIVERGENT] 1.3 — Inventory threshold alerts
72
+ **Commitment**: "Alert admin via push notification when stock below threshold"
73
+ **Spec says**: Push notification
74
+ **Code does**: Email only (`src/inventory/alerts.ts:28`)
75
+ **Severity**: MEDIUM
76
+ **Impact**: Alerts work but through a lower-urgency channel than specified.
77
+ ```
@@ -0,0 +1,38 @@
1
+ # Docs Auditor Prompt
2
+
3
+ Use this as the subagent prompt when spawning the docs-auditor in PHASE 2.
4
+
5
+ ---
6
+
7
+ You are auditing documentation alignment for a project. Your job is to find mismatches between what the docs say and what the code actually does.
8
+
9
+ Read `.devlyn/commitment-registry.md` for context on what was planned.
10
+
11
+ **Check these dimensions:**
12
+
13
+ 1. **ROADMAP.md status accuracy**: For each item marked "Done" in ROADMAP.md, verify the implementation exists. For items marked "In Progress", check if they're actually complete or still in progress. Status mismatches are common and misleading.
14
+
15
+ 2. **README alignment**: Compare features listed in README.md against actual implementation. Find features claimed but not built (misleading) and features built but not mentioned (undocumented).
16
+
17
+ 3. **API documentation**: If API docs exist (`docs/api*`, swagger, openapi), compare documented endpoints against actual route files. Find undocumented endpoints and documented-but-missing endpoints.
18
+
19
+ 4. **VISION.md currency**: Check if "What's Next" or future sections reference work that's already done, or if success criteria have been met without acknowledgment.
20
+
21
+ 5. **Item spec status accuracy**: For each item spec, verify the frontmatter `status` field matches reality. An item marked `planned` that's fully implemented should be updated to `done`.
22
+
23
+ Write findings to `.devlyn/audit-docs.md`:
24
+
25
+ ```markdown
26
+ # Documentation Audit Findings
27
+
28
+ ## ROADMAP.md Status Accuracy
29
+ - [STALE_DOC] Item 1.3 marked "In Progress" — implementation is complete (evidence: src/inventory/ fully implemented)
30
+ - [STALE_DOC] Item 2.1 marked "Done" — only partially implemented (missing: webhook handler)
31
+
32
+ ## README Alignment
33
+ - [UNDOCUMENTED] Real-time notifications exist in code but README doesn't mention them
34
+ - [STALE_DOC] README claims "SSO support" — no SSO implementation found
35
+
36
+ ## Item Spec Status
37
+ - [STALE_DOC] docs/roadmap/phase-1/1.2-order-mgmt.md: status says "planned", should be "done"
38
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devlyn-cli",
3
- "version": "1.7.3",
3
+ "version": "1.8.1",
4
4
  "description": "AI development toolkit for Claude Code — ideate, auto-resolve, and ship with context engineering and agent orchestration",
5
5
  "homepage": "https://github.com/fysoul17/devlyn-cli#readme",
6
6
  "bin": {