devlyn-cli 1.12.3 → 1.12.5
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.
|
@@ -42,9 +42,13 @@ This pipeline runs hands-free. The user launches it to walk away and come back t
|
|
|
42
42
|
Flags can be passed naturally: `/devlyn:auto-resolve fix the auth bug --max-rounds 3 --skip-docs`
|
|
43
43
|
Engine examples: `--engine auto`, `--engine codex`, `--engine claude`
|
|
44
44
|
Codex examples (legacy): `--with-codex` (both), `--with-codex evaluate`, `--with-codex review`
|
|
45
|
-
If no flags are present, use defaults.
|
|
45
|
+
If no flags are present, use defaults. **The default engine is `auto` — if the user does not pass `--engine`, treat it as `--engine auto`.**
|
|
46
46
|
|
|
47
|
-
3. **
|
|
47
|
+
3. **Engine pre-flight** (runs unless `--engine claude` was explicitly passed):
|
|
48
|
+
- The default engine is `auto`. If the user did not pass `--engine`, the engine is `auto` — NOT `claude`.
|
|
49
|
+
- Read `references/engine-routing.md` for the full routing table.
|
|
50
|
+
- Call `mcp__codex-cli__ping` to verify the Codex MCP server is available. If ping fails, warn the user and offer: [1] Continue with `--engine claude` (fallback), [2] Abort.
|
|
51
|
+
- Exception: if `--engine` is not set AND `--with-codex` is explicitly enabled (legacy), read `references/codex-integration.md` instead and run its pre-flight check.
|
|
48
52
|
|
|
49
53
|
4. Announce the pipeline plan:
|
|
50
54
|
```
|
|
@@ -398,9 +402,37 @@ Skip if `--skip-docs` was set.
|
|
|
398
402
|
|
|
399
403
|
Spawn a subagent using the Agent tool with `mode: "bypassPermissions"`.
|
|
400
404
|
|
|
401
|
-
Agent prompt — pass this to the Agent tool:
|
|
405
|
+
Agent prompt — pass this to the Agent tool (include the original task description from `<pipeline_config>` so the agent can detect spec paths):
|
|
406
|
+
|
|
407
|
+
You are the Docs phase of the auto-resolve pipeline. You have two jobs, in this order.
|
|
408
|
+
|
|
409
|
+
**Job 1 — Roadmap Sync** (run first, only if this task implemented a roadmap item)
|
|
410
|
+
|
|
411
|
+
The ideate skill produces specs at `docs/roadmap/phase-N/{id}-{slug}.md` and tracks them in `docs/ROADMAP.md`. When auto-resolve finishes a task for one of those specs, the index lies until someone flips it — and nobody does, so it rots. Your job is to flip it.
|
|
412
|
+
|
|
413
|
+
1. **Detect whether this task was a spec implementation.** Look at the original task description you were passed. Match against this regex: `docs/roadmap/phase-\d+/[^\s"'\`)]+\.md`. If there is no match, or if `docs/ROADMAP.md` does not exist in the repo, Job 1 is a no-op — skip straight to Job 2.
|
|
414
|
+
2. **Sanity-check against the diff.** Run `git diff main --stat` (or `git diff HEAD~N --stat` if on main). If the diff is empty or contains only doc changes, the build phase produced nothing — do NOT flip any status. Leave Job 1 untouched and continue to Job 2.
|
|
415
|
+
3. **Read the spec file** at the matched path. If its frontmatter already has `status: done`, Job 1 is already done — skip to Job 2. Otherwise:
|
|
416
|
+
- Set `status: done` in the frontmatter.
|
|
417
|
+
- Add a `completed: YYYY-MM-DD` field (use today's date from `date +%Y-%m-%d`).
|
|
418
|
+
- Do not change any other fields, and do not touch the body of the spec.
|
|
419
|
+
4. **Update `docs/ROADMAP.md`.** Find the row whose `#` column matches the spec's `id` (e.g., row starting `| 2.3 |`). Change its Status column to `Done`. Do not touch any other row, and do not reformat the table.
|
|
420
|
+
5. **Check whether the phase is now fully Done.** Read every row of the phase's table (the one containing the just-flipped row). If every row's Status is `Done`, archive the phase:
|
|
421
|
+
- Cut the phase's `## Phase N: …` heading and table out of the active section of ROADMAP.md.
|
|
422
|
+
- If no `## Completed` section exists at the bottom of the file, create one just above end-of-file (below Decisions if Decisions exists).
|
|
423
|
+
- Add a `<details>` block for the phase inside Completed, using the format defined in the devlyn:ideate skill's Context Archiving section. Pull each item's completion date from its spec file's `completed:` frontmatter; if a spec has none, use today's date.
|
|
424
|
+
- Item spec files stay on disk — do not delete them. Only the index row moves.
|
|
425
|
+
6. **Report.** In your summary, say explicitly what you did: "Flipped spec 2.3 to done, updated ROADMAP.md row." And if applicable: "Phase 2 was fully Done — archived to Completed block."
|
|
426
|
+
|
|
427
|
+
**Safety invariants** — violating any of these means stop Job 1 and report it:
|
|
428
|
+
- Never flip a spec to `done` without a non-empty `git diff` touching non-doc files.
|
|
429
|
+
- Never flip multiple specs in one run — one task, one spec.
|
|
430
|
+
- Never edit a row whose `#` doesn't exactly match the spec's `id`.
|
|
431
|
+
- Never delete spec files.
|
|
432
|
+
|
|
433
|
+
**Job 2 — General doc sync**
|
|
402
434
|
|
|
403
|
-
Synchronize documentation with recent code changes. Use `git log --oneline -20` and `git diff main` to understand what changed. Update any docs that reference changed APIs, features, or behaviors. Do not create new documentation files unless the changes introduced entirely new features with no existing docs. Preserve all forward-looking content:
|
|
435
|
+
Synchronize the rest of the documentation with recent code changes. Use `git log --oneline -20` and `git diff main` to understand what changed. Update any docs that reference changed APIs, features, or behaviors. Do not create new documentation files unless the changes introduced entirely new features with no existing docs. Preserve all forward-looking content: future plans, visions, open questions. (Job 1 already handled the roadmap index — don't second-guess it here.)
|
|
404
436
|
|
|
405
437
|
**After the agent completes**:
|
|
406
438
|
1. **Checkpoint**: Run `git add -A && git commit -m "chore(pipeline): docs updated"` if there are changes
|
|
@@ -30,9 +30,12 @@ Parse these from the user's invocation message:
|
|
|
30
30
|
- `codex`: Codex handles FRAME/EXPLORE/CONVERGE/DOCUMENT, Claude runs CHALLENGE (role reversal — builder and critic are always different models).
|
|
31
31
|
- `claude`: all phases use Claude. No Codex calls.
|
|
32
32
|
|
|
33
|
-
**
|
|
33
|
+
**Engine pre-flight** (runs unless `--engine claude` was explicitly passed):
|
|
34
|
+
- The default engine is `auto`. If the user did not pass `--engine`, the engine is `auto` — NOT `claude`.
|
|
35
|
+
- Call `mcp__codex-cli__ping` to verify the Codex MCP server is available. If ping fails, warn the user and offer: [1] Continue with `--engine claude`, [2] Abort.
|
|
36
|
+
- Also read `references/challenge-rubric.md` up front. The engine routing table is defined in the auto-resolve skill's `references/engine-routing.md` under "Pipeline Phase Routing (ideate)".
|
|
34
37
|
|
|
35
|
-
**If `--engine` is not set and `--with-codex` is set** (legacy): read `references/challenge-rubric.md` and `references/codex-debate.md` up front, then run the pre-flight check described in `codex-debate.md` to verify the Codex MCP server is available before starting the pipeline. If the server is unavailable and the user opts to continue without Codex, the solo CHALLENGE pass still runs — only the cross-model rubric pass is disabled.
|
|
38
|
+
**If `--engine` is not set and `--with-codex` is explicitly set** (legacy): read `references/challenge-rubric.md` and `references/codex-debate.md` up front, then run the pre-flight check described in `codex-debate.md` to verify the Codex MCP server is available before starting the pipeline. If the server is unavailable and the user opts to continue without Codex, the solo CHALLENGE pass still runs — only the cross-model rubric pass is disabled.
|
|
36
39
|
|
|
37
40
|
<why_this_matters>
|
|
38
41
|
When ideas flow directly from conversation to `/devlyn:auto-resolve`, context degrades at each handoff:
|
|
@@ -112,7 +115,8 @@ Expand is the most common mode after initial setup — the user already has Visi
|
|
|
112
115
|
**On entry:**
|
|
113
116
|
1. Read `docs/VISION.md`, `docs/ROADMAP.md`, and existing phase `_overview.md` files to understand the established context
|
|
114
117
|
2. Scan existing item specs to understand what's built and what's planned
|
|
115
|
-
3.
|
|
118
|
+
3. **Run the Archive Pass** (see Context Archiving below) before summarizing. Summarizing a stale roadmap to the user wastes the exchange — they'll see "Phase 1 has 4 items" when really all 4 are already Done and the phase should be collapsed.
|
|
119
|
+
4. Summarize your understanding: "Here's what exists: [phases, item count, current status]. You want to add [new area]. Does this expand an existing phase or warrant a new one?"
|
|
116
120
|
|
|
117
121
|
**During ideation:**
|
|
118
122
|
- FRAME is lighter — the vision already exists, focus on framing the NEW area only
|
|
@@ -126,7 +130,7 @@ Expand is the most common mode after initial setup — the user already has Visi
|
|
|
126
130
|
- New item specs can reference existing items in their Dependencies section
|
|
127
131
|
- If new items change the meaning of existing items, flag this: "Adding [X] may affect the scope of existing item [Y]. Should we update [Y]'s spec?"
|
|
128
132
|
|
|
129
|
-
In Replan mode
|
|
133
|
+
In Replan mode: read existing docs first, **run the Archive Pass** (see Context Archiving below) before any reprioritization — you can't sensibly reorder work that's already finished — then focus on the Converge phase to reprioritize what remains. The Archive Pass also surfaces Backlog items whose Revisit date has passed, which are natural candidates when replanning.
|
|
130
134
|
|
|
131
135
|
### Quick Add Mode Detail
|
|
132
136
|
|
|
@@ -134,8 +138,9 @@ Quick Add is for when the user has a single concrete idea, bug report, or improv
|
|
|
134
138
|
|
|
135
139
|
**On entry:**
|
|
136
140
|
1. Read `docs/ROADMAP.md` and relevant phase `_overview.md` files
|
|
137
|
-
2.
|
|
138
|
-
3.
|
|
141
|
+
2. **Run the Archive Pass first** (see Context Archiving below). Do this *before* you figure out where the new item goes — a stale roadmap will mislead phase selection and ID numbering. If the pass moves a phase out of the active section, the new item's natural home may change.
|
|
142
|
+
3. Identify the best-fit phase for the new item (or suggest a new phase if it doesn't fit)
|
|
143
|
+
4. Determine the next available item ID (e.g., if phase 2 has 2.1-2.4, the new item is 2.5)
|
|
139
144
|
|
|
140
145
|
**Workflow (minimal — no full Frame/Explore/Converge):**
|
|
141
146
|
1. Confirm the idea with the user: "I'll add this as [item title] in Phase [N]. That sound right?"
|
|
@@ -154,12 +159,25 @@ To implement:
|
|
|
154
159
|
|
|
155
160
|
### Context Archiving
|
|
156
161
|
|
|
157
|
-
|
|
162
|
+
ROADMAP.md is the tactical index. Every row that isn't Planned / In Progress / Blocked is noise — it dilutes attention, pads the file past its 150-line target, and makes future ideation sessions read stale context they'll have to mentally filter out. Done work should move; it shouldn't disappear.
|
|
158
163
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
164
|
+
The goal state: the active section of ROADMAP.md only lists work that still needs doing. Everything completed lives under a collapsed `## Completed` block at the bottom. Item spec files themselves stay in place — they remain on disk at `docs/roadmap/phase-N/{id}.md` because other specs may reference them — only the index row moves.
|
|
165
|
+
|
|
166
|
+
#### The Archive Pass
|
|
167
|
+
|
|
168
|
+
Run this at the start of every Quick Add, Expand, and Replan session (each mode's "On entry" checklist tells you when). It's deterministic and cheap. Never skip it to "save time" — the time you save by skipping it is immediately spent by you and the user arguing about a roadmap that shows phantom work.
|
|
169
|
+
|
|
170
|
+
1. **Read `docs/ROADMAP.md`.** For each phase, look at the Status column of every row.
|
|
171
|
+
2. **For each phase where every row is `Done`:** archive the whole phase.
|
|
172
|
+
- Cut the phase's `## Phase N: …` heading and table out of the active section.
|
|
173
|
+
- If no `## Completed` section exists yet at the bottom of the file, create one.
|
|
174
|
+
- Add a `<details>` block inside Completed for this phase (see format below). Use the latest completion date you can find in the item spec frontmatter (`completed:` field, or today's date if absent). Item count is the row count.
|
|
175
|
+
3. **For individual `Done` rows inside an otherwise-active phase:** leave them in place. A row only moves when its whole phase is finished. (Mixed-state phases stay mixed so the user can see recent wins alongside open work.)
|
|
176
|
+
4. **Scan the Backlog table.** Surface any row whose "Revisit" date has passed — mention it to the user as a replan candidate. Don't auto-promote it; that's a conversation.
|
|
177
|
+
5. **Scan `docs/roadmap/decisions/`.** Flag any decision whose status is `accepted` but whose reasoning is visibly contradicted by the work that's now Done. Don't silently edit decisions; raise them as open questions.
|
|
178
|
+
6. **Report what you did.** Before moving on to the mode's main work, tell the user in one short paragraph: "Archived Phase 1 (3 items). Active roadmap is now Phase 2 (2 items). Proceeding with [Quick Add / Expand / Replan]." Skip the report only if nothing changed.
|
|
179
|
+
|
|
180
|
+
**Completed block format** (place at the bottom of ROADMAP.md, below Decisions):
|
|
163
181
|
|
|
164
182
|
```markdown
|
|
165
183
|
## Completed
|
|
@@ -175,16 +193,13 @@ As projects progress, completed work accumulates and dilutes the active roadmap.
|
|
|
175
193
|
</details>
|
|
176
194
|
```
|
|
177
195
|
|
|
178
|
-
|
|
179
|
-
1. Scan ROADMAP.md for items marked Done — if all items in a phase are Done, archive that phase
|
|
180
|
-
2. Check Backlog for items whose "Revisit" date has passed — surface them as candidates for the new phase
|
|
181
|
-
3. Review decisions — flag any marked `accepted` that may need revisiting given new context
|
|
196
|
+
If the `## Completed` section already exists and you're archiving an additional phase, append a new `<details>` block — don't rewrite existing ones.
|
|
182
197
|
|
|
183
|
-
|
|
184
|
-
- Don't delete it — mark status as `superseded` and add a note pointing to the replacement decision
|
|
185
|
-
- This preserves the reasoning history for future reference
|
|
198
|
+
#### Outdated decisions
|
|
186
199
|
|
|
187
|
-
|
|
200
|
+
When a decision becomes wrong because the world changed under it:
|
|
201
|
+
- Don't delete it — set its `status:` to `superseded` in the decision file's frontmatter and add a one-line pointer to the replacement decision record.
|
|
202
|
+
- This preserves the reasoning history for future reference, which matters more than a tidy decisions table.
|
|
188
203
|
|
|
189
204
|
## Phase 1: FRAME
|
|
190
205
|
|
|
@@ -52,7 +52,9 @@ Parse from `<preflight_config>`:
|
|
|
52
52
|
Example: `/devlyn:preflight --phase 2 --skip-browser`
|
|
53
53
|
Example with engine: `/devlyn:preflight --engine auto`
|
|
54
54
|
|
|
55
|
-
**
|
|
55
|
+
**Engine pre-flight** (runs unless `--engine claude` was explicitly passed):
|
|
56
|
+
- The default engine is `auto`. If the user did not pass `--engine`, the engine is `auto` — NOT `claude`.
|
|
57
|
+
- Call `mcp__codex-cli__ping` to verify Codex MCP availability. If ping fails, fall back to `--engine claude` with a warning.
|
|
56
58
|
|
|
57
59
|
## PHASE 0: DISCOVER & SCOPE
|
|
58
60
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devlyn-cli",
|
|
3
|
-
"version": "1.12.
|
|
3
|
+
"version": "1.12.5",
|
|
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": {
|