feat: spec → plan → execute workflow (ADR-020) - #13
Conversation
Replace the single-shot PRP flow with a three-command pipeline adapted from Spec-Driven Development (spec-author → plan-author → plan-executor), folding in dotcontext's own strengths. - /spec-dc — behavior spec (the WHAT) in .context/specs/; keeps the clarity assessment + reference-material handling; does NOT review ADRs. - /plan-dc — implementation plan (the HOW) in .context/plans/; owns ADR review, 100% Traceability, the Validation Gate (user approval on the approach), the four-option ADR-conflict resolution with version/History/Supersede mechanics, and a dual adversarial reviewer loop until double-APPROVED. - /execute-dc — parallel waves + tests-per-wave + dual review vs the plan; worktree option; base branch detected (no hardcoded develop). - AskUserQuestion (ADR-005) stays explicit and mandatory in all three. - Retire generate-prp/execute-prp NON-DESTRUCTIVELY: dropped from init and the managed update set, so existing installs keep their files and .context/prp untouched; new projects get the trio only. Wiring: init.sh, update.sh, agents.sh (DOTCONTEXT_COMMANDS), help.sh, make build. Docs: AGENTS.md workflows, setup-context tree, root CONTEXT/CLAUDE/README/CHANGELOG. Decisions: new ADR-020; amend ADR-018 (command list); update ADR-019 refs. Also removes two orphaned ~22MB demo GIFs for the retired commands.
WalkthroughThis PR replaces the PRP workflow with a three-step ChangesSpec-Plan-Execute Workflow
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related PRs
Poem Old PRP paths fade from view, 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 16
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/commands/init.sh (1)
105-122: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick winDon't overwrite the new managed prompt files on re-init.
These
/spec-dc//plan-dc//execute-dccommand files and reviewer prompts still go through the unconditionaldownloadpath, so rerunningdotcontext initwill clobber local edits despite the "without overwriting your content" promise.Suggested fix
- download "${BASE_URL}/templates/.claude/commands/${c}.md" ".claude/commands/${c}.md" + download_if_missing "${BASE_URL}/templates/.claude/commands/${c}.md" ".claude/commands/${c}.md" ... - download "${BASE_URL}/templates/.claude/agents/${a}.md" ".claude/agents/${a}.md" + download_if_missing "${BASE_URL}/templates/.claude/agents/${a}.md" ".claude/agents/${a}.md"Based on learnings: seed files must be create-only, and managed files should not overwrite existing user content without a diff/prompt.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/commands/init.sh` around lines 105 - 122, The init script is still overwriting managed prompt files on rerun via the unconditional download loops in init.sh. Update the command and agent seeding logic around the local c/local a loops so the new managed prompts (including spec-dc, plan-dc, execute-dc, and reviewer prompts) are create-only: skip downloading if the target file already exists, or otherwise preserve user edits unless an explicit update/diff flow is requested. Keep the existing download helper, but add an existence check or equivalent non-overwrite guard before calling it for each managed template path.Source: Learnings
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.claude/commands/execute-dc.md:
- Around line 49-77: The worktree prompt in execute-dc.md is unreachable when
the working tree has unrelated changes because the clean-tree bailout happens
first. Reorder the flow so the AskUserQuestion/worktree choice is offered before
the clean-tree check, or only run the clean-tree bailout for the in-place
branch; keep the base-branch detection, git checkout/pull, and work branch
creation behavior in the same execute-dc.md flow.
In @.claude/commands/plan-dc.md:
- Around line 54-56: The path snippet in the plan docs is using an untagged
fenced code block, which triggers the markdown lint rule. Update the fenced
snippet in the plan guidance so the
`.context/plans/plan-<unix-timestamp>-<descriptive-kebab>.md` example is marked
as text, keeping the same content but adding the language tag to the fence.
- Around line 219-235: The reviewer prompt fence in the plan guidance block is
missing a language tag, causing the MD040 issue. Update the fenced prompt block
in the plan instructions to use the existing plain-text tag by adjusting the
markdown fence around the “Review the full plan…” prompt, and keep the rest of
the prompt content unchanged so the block remains clearly identified for linting
and reviewers.
In @.claude/commands/spec-dc.md:
- Around line 80-82: The artifact-path example in the spec docs uses an
unlabeled fenced code block, which triggers MD040. Update the fence around the
`.context/specs/spec-<unix-timestamp>-<descriptive-kebab>.md` example in
spec-dc.md to use an explicit language label such as text so the documentation
remains lint-clean.
In @.context/CONTEXT.md:
- Around line 168-190: The flow example in CONTEXT.md is an untyped fenced code
block, which triggers MD040. Update the opening fence for the feature
development flow example to use a text language tag so the markdown lint passes,
keeping the existing content and closing fence unchanged.
In @.context/decisions/019-knowledge-reconciliation-after-prp.md:
- Around line 44-75: This section still documents a stale auto-sync contract, so
update the ADR text to match the deferred/manual reconciliation workflow in
ADR-020. In the `/sync-context` and `Context Impact` sections, remove the claim
that `/execute-dc` invokes sync automatically and rewrite the delta description
to reflect the new PRP/template flow and manual reconciliation semantics. Keep
the guidance aligned with the existing reconciliation policy described in this
ADR and the referenced workflow symbols only.
In @.context/decisions/020-spec-plan-execute-workflow.md:
- Around line 66-67: The ADR references incorrect agent file paths for the
reviewers, so update the plan-dc and execute-dc path examples to the actual
.claude/agents/.../*.md locations used by this PR. Adjust the wording in the
decision doc where the reviewer agents are named so readers are directed to the
real reviewer-pro and reviewer-fast files instead of the old paths.
In @.context/plans/README.md:
- Around line 5-7: The README example fence in the planning filename section is
missing a language tag and triggers markdownlint MD040. Update the fenced block
used for the `plan-<unix-timestamp>-<descriptive-kebab>.md` example to include a
proper language identifier, using the README example block itself as the target
to fix.
In `@dotcontext`:
- Around line 1129-1132: cmd_update_templates now copies managed reviewer
prompts for plan-dc and execute-dc, but it does not remove obsolete files when
templates are renamed or deleted. Update the cleanup logic in
cmd_update_templates to prune stale reviewer files from the plan-dc and
execute-dc directories, keeping only the current set of managed templates. Use
the existing template-management flow and the reviewer path patterns from the
diff to locate and delete any orphaned files during dotcontext update.
In `@README.md`:
- Around line 294-297: The README workflow examples use bare code fences, which
triggers the markdown lint rule for missing language tags. Update the fenced
blocks for the workflow examples to include an explicit language such as text,
and use bash only where the snippet is actual shell syntax. Make the change
consistently across all referenced example blocks so the docs remain lint-clean.
In `@src/setup/agents.sh`:
- Line 272: The DOTCONTEXT_COMMANDS list is dropping the legacy generate-prp and
execute-prp commands, which breaks upgraded installs. Update the command
registration in emit_agent_commands so legacy names are preserved in a
compatibility path during dotcontext update, while keeping the newer command set
intact for fresh installs. Use the DOTCONTEXT_COMMANDS variable and the
emit_agent_commands flow to split legacy aliases from the main update path
instead of removing them.
In `@templates/.claude/commands/execute-dc.md`:
- Around line 49-77: The execute-dc command flow is ordered incorrectly: the
clean-tree check currently runs before offering the optional isolated worktree
path, which makes the no-stash workflow unreachable when the tree is dirty.
Reorder the steps in the command template so the worktree offer comes first,
then branch creation/setup, and only after that enforce the clean working tree
requirement; keep the same sequencing as the source command doc and preserve the
behavior around AskUserQuestion, git checkout, and git worktree add.
In `@templates/.claude/commands/plan-dc.md`:
- Around line 88-93: The ADR update guidance in the plan template is incorrect
because it implies editing the existing ADR in place and hard-coding a 1.0 to
2.0 bump. Update the instructions around the ADR mechanics so they tell authors
to create a new ADR version for the updated decision, record the change in the
plan’s Impact on Existing Decisions table, and mark the prior ADR as superseded
instead of mutating it; reference the ADR/version/history guidance in the plan
doc so the wording aligns with the repo rule.
In `@templates/.claude/commands/spec-dc.md`:
- Around line 80-82: Label the bare code fence in the artifact-path example to
avoid MD040; update the fenced block in the spec template so the path example is
marked with an explicit language such as text. Use the existing template snippet
around `.context/specs/spec-<unix-timestamp>-<descriptive-kebab>.md` to locate
the fence and keep the rest of the content unchanged.
In `@templates/.context/plans/README.md`:
- Around line 5-7: The README example fence in the plans docs is missing a
language tag, triggering markdownlint MD040. Update the fenced code block around
the `plan-<unix-timestamp>-<descriptive-kebab>.md` example to include a valid
language identifier (for example, `text`) while keeping the example content
unchanged.
In `@templates/.context/specs/README.md`:
- Around line 5-7: The README example uses an unlabeled fenced code block, which
triggers the docs lint rule. Update the fenced example in the specs README to
include a language tag such as text or md on the fence, keeping the example
content unchanged so the markdown remains valid and MD040 is satisfied.
---
Outside diff comments:
In `@src/commands/init.sh`:
- Around line 105-122: The init script is still overwriting managed prompt files
on rerun via the unconditional download loops in init.sh. Update the command and
agent seeding logic around the local c/local a loops so the new managed prompts
(including spec-dc, plan-dc, execute-dc, and reviewer prompts) are create-only:
skip downloading if the target file already exists, or otherwise preserve user
edits unless an explicit update/diff flow is requested. Keep the existing
download helper, but add an existence check or equivalent non-overwrite guard
before calling it for each managed template path.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 60f77a3f-866a-4cd8-8734-5728da7524d0
⛔ Files ignored due to path filters (3)
assets/demo-execute-prp.gifis excluded by!**/*.gifassets/demo-generate-prp.gifis excluded by!**/*.giftemplates/.context/prp/generated/.keepis excluded by!**/generated/**
📒 Files selected for processing (38)
.claude/agents/execute-dc/reviewer-fast.md.claude/agents/execute-dc/reviewer-pro.md.claude/agents/plan-dc/reviewer-fast.md.claude/agents/plan-dc/reviewer-pro.md.claude/commands/execute-dc.md.claude/commands/execute-prp.md.claude/commands/generate-prp.md.claude/commands/plan-dc.md.claude/commands/spec-dc.md.context/CONTEXT.md.context/decisions/018-command-portability-and-invocation-modes.md.context/decisions/019-knowledge-reconciliation-after-prp.md.context/decisions/020-spec-plan-execute-workflow.md.context/decisions/README.md.context/plans/README.md.context/specs/README.mdCHANGELOG.mdCLAUDE.mdREADME.mddotcontextsrc/commands/help.shsrc/commands/init.shsrc/commands/update.shsrc/setup/agents.shtemplates/.claude/agents/execute-dc/reviewer-fast.mdtemplates/.claude/agents/execute-dc/reviewer-pro.mdtemplates/.claude/agents/plan-dc/reviewer-fast.mdtemplates/.claude/agents/plan-dc/reviewer-pro.mdtemplates/.claude/commands/execute-dc.mdtemplates/.claude/commands/execute-prp.mdtemplates/.claude/commands/generate-prp.mdtemplates/.claude/commands/plan-dc.mdtemplates/.claude/commands/setup-context.mdtemplates/.claude/commands/spec-dc.mdtemplates/.context/plans/README.mdtemplates/.context/prp/templates/feature.mdtemplates/.context/specs/README.mdtemplates/AGENTS.md
💤 Files with no reviewable changes (5)
- .claude/commands/generate-prp.md
- templates/.context/prp/templates/feature.md
- templates/.claude/commands/execute-prp.md
- .claude/commands/execute-prp.md
- templates/.claude/commands/generate-prp.md
The source workshop had no spec review; a bad spec poisons everything
downstream (a plan can be 100% faithful to a wrong spec). So /spec-dc now
ends with the same dual reviewer loop as /plan-dc and /execute-dc — but
scoped deliberately narrow.
- New agents spec-dc/{reviewer-pro,reviewer-fast}: judge ONLY well-formedness,
testability, scope hygiene, internal consistency, grounding (cited paths
exist), and faithfulness to the original request.
- Hard guardrail: reviewers must NOT judge product merit and must NOT invent
requirements — "is this the right thing to build" stays the human's call
(the "Review first" checkpoint + clarity assessment).
- spec-dc.md: new Phase 3 review loop (fresh Pro+Fast each round, verify
findings, ~3-round cap); old Final verification → Phase 4.
- Wired into init.sh/update.sh; rebuilt binary; mirrored to root.
- Docs: ADR-020 (review at all three boundaries + spec-scope rationale,
History v1.1), CONTEXT.md (18 agents + flow), README, AGENTS.md, CHANGELOG.
Raised in tech-lead review (Daniel Henrique).
There was a problem hiding this comment.
♻️ Duplicate comments (1)
.claude/commands/spec-dc.md (1)
164-181: 📐 Maintainability & Code Quality | 🟡 Minor | 💤 Low valueLabel the example fence to keep the docs lint-clean.
The bare fenced block here still triggers MD040. Mark the opening fence as
text(or another explicit language) so this example stays lint-clean.Suggested fix
-``` +```text .context/specs/spec-<unix-timestamp>-<descriptive-kebab>.md -``` +```🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude/commands/spec-dc.md around lines 164 - 181, The example fenced block in the spec review instructions is unlabeled, which triggers the docs lint rule. Update the fence in the spec-dc guidance so the example uses an explicit language label via the fenced block around the sample path placeholder, keeping the content otherwise unchanged and preserving the intended markdown example.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Duplicate comments:
In @.claude/commands/spec-dc.md:
- Around line 164-181: The example fenced block in the spec review instructions
is unlabeled, which triggers the docs lint rule. Update the fence in the spec-dc
guidance so the example uses an explicit language label via the fenced block
around the sample path placeholder, keeping the content otherwise unchanged and
preserving the intended markdown example.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: b493495d-4fd1-45d5-bfd7-559a5ce99485
📒 Files selected for processing (14)
.claude/agents/spec-dc/reviewer-fast.md.claude/agents/spec-dc/reviewer-pro.md.claude/commands/spec-dc.md.context/CONTEXT.md.context/decisions/020-spec-plan-execute-workflow.mdCHANGELOG.mdREADME.mddotcontextsrc/commands/init.shsrc/commands/update.shtemplates/.claude/agents/spec-dc/reviewer-fast.mdtemplates/.claude/agents/spec-dc/reviewer-pro.mdtemplates/.claude/commands/spec-dc.mdtemplates/AGENTS.md
✅ Files skipped from review due to trivial changes (3)
- .context/decisions/020-spec-plan-execute-workflow.md
- CHANGELOG.md
- README.md
🚧 Files skipped from review as they are similar to previous changes (6)
- .context/CONTEXT.md
- src/commands/update.sh
- templates/.claude/commands/spec-dc.md
- templates/AGENTS.md
- src/commands/init.sh
- dotcontext
Code reviewFound 1 issue:
dotcontext/src/commands/update.sh Lines 434 to 443 in 6ef92c0 🤖 Generated with Claude Code - If this code review was useful, please react with 👍. Otherwise, react with 👎. |
- update.sh: add cleanup_managed_dir for spec-dc/plan-dc/execute-dc reviewer dirs. init.sh and update.sh must stay in sync for every managed agent dir (code-review/deep-context/fix-bug already are); the three new dirs were only in init's cleanup + update's managed list, so `update --templates` would keep stale reviewer files. Flagged by my code-review + CodeRabbit (dotcontext:1137). - execute-dc (template + root): offer the worktree BEFORE the clean-tree bailout and scope the clean-tree check to the in-place path — a dirty tree could never reach the worktree option that exists precisely to sidestep it (CodeRabbit Major). - plan-dc (template + root): ADR-update guidance now leads with "new ADR + supersede" per CLAUDE.md; in-place version bump reserved for minor amendments (CodeRabbit). - ADR-019: mark section 2 as proposed/deferred, not implemented (CodeRabbit). - markdownlint MD040: tag bare code fences (text) in commands, README, CONTEXT, and the specs/plans READMEs. - Rebuilt the bundled dotcontext binary; mirrored command files to root.
CodeRabbit review — addressedFixed (commit bd3f526):
Resolved without change (not applicable):
🤖 Generated with Claude Code |
`dotcontext update` was non-destructive but didn't fully deliver the renamed workflow to existing projects: Claude got the trio via managed templates, but opencode/Copilot (whose commands are emitted only by the init-only emit_agent_commands) and AGENTS.md-only harnesses got nothing. - update now re-runs emit_agent_commands (create-only) for the per-harness dirs it detects (.opencode/command, .github/prompts), so opencode/Copilot pick up spec-dc/plan-dc/execute-dc. Guarded by --dry-run. - Prints a migration notice when a legacy generate-prp/execute-prp is detected: the flow moved to spec -> plan -> execute, old commands are kept and still work, and Gemini/Cursor/Codex should refresh the ## Workflows table in AGENTS.md (create-only, not auto-rewritten). - Docs: ADR-020 section 6 + CHANGELOG note the delivery path and the AGENTS.md limitation. Rebuilt the bundled binary.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/commands/update.sh`:
- Around line 451-463: The re-emit path in update.sh is swallowing failures from
emit_agent_commands, so command delivery issues for existing opencode and
Copilot installs are hidden. Update the re-run block that builds _reemit and
calls emit_agent_commands so failures are surfaced instead of forcing success;
keep the space-separated harness list handling, but replace the silent
suppression with a warning or explicit failure reporting around
emit_agent_commands.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: d5d87d85-c939-4e4a-af34-3f613ce8ae3c
📒 Files selected for processing (17)
.claude/commands/execute-dc.md.claude/commands/plan-dc.md.claude/commands/spec-dc.md.context/CONTEXT.md.context/decisions/019-knowledge-reconciliation-after-prp.md.context/decisions/020-spec-plan-execute-workflow.md.context/plans/README.md.context/specs/README.mdCHANGELOG.mdREADME.mddotcontextsrc/commands/update.shtemplates/.claude/commands/execute-dc.mdtemplates/.claude/commands/plan-dc.mdtemplates/.claude/commands/spec-dc.mdtemplates/.context/plans/README.mdtemplates/.context/specs/README.md
✅ Files skipped from review due to trivial changes (9)
- .context/plans/README.md
- templates/.context/specs/README.md
- .context/specs/README.md
- templates/.context/plans/README.md
- CHANGELOG.md
- templates/.claude/commands/execute-dc.md
- .context/decisions/019-knowledge-reconciliation-after-prp.md
- .context/CONTEXT.md
- README.md
🚧 Files skipped from review as they are similar to previous changes (6)
- templates/.claude/commands/spec-dc.md
- .claude/commands/execute-dc.md
- .claude/commands/plan-dc.md
- templates/.claude/commands/plan-dc.md
- .claude/commands/spec-dc.md
- dotcontext
| # ── Deliver renamed workflows to existing per-harness installs (ADR-020) ── | ||
| # Claude picks up spec/plan/execute-dc via managed_templates above. opencode and | ||
| # Copilot keep their commands in .opencode/command / .github/prompts, emitted only | ||
| # by emit_agent_commands (create-only). Re-run it here — inferring the harnesses in | ||
| # use from the dirs that exist — so those installs also get the new commands. | ||
| if [ "$dry_run" != "true" ]; then | ||
| local _reemit="" | ||
| [ -d ".opencode/command" ] && _reemit="$_reemit opencode" | ||
| [ -d ".github/prompts" ] && _reemit="$_reemit copilot" | ||
| _reemit="${_reemit# }" | ||
| [ -n "$_reemit" ] && emit_agent_commands "$_reemit" 2>/dev/null || true | ||
| fi | ||
|
|
There was a problem hiding this comment.
🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Locate emit_agent_commands definition to confirm its expected argument format.
rg -n 'emit_agent_commands' --type=sh -A 15 srcRepository: goca-se/dotcontext
Length of output: 4223
🏁 Script executed:
#!/bin/bash
# Inspect emit_agent_commands and the download helper for error handling and argument parsing.
sed -n '240,340p' src/setup/agents.sh
printf '\n----\n'
rg -n '^download\(\)|^download ' src/setup/agents.sh -A 25 -B 5Repository: goca-se/dotcontext
Length of output: 2308
🏁 Script executed:
#!/bin/bash
# Inspect the download helper and surrounding error handling in src/setup/agents.sh.
sed -n '1,240p' src/setup/agents.shRepository: goca-se/dotcontext
Length of output: 7716
🏁 Script executed:
#!/bin/bash
# Locate the download helper definition and inspect how it reports failures.
rg -n '^download\(\)|^download ' src -A 40 -B 5Repository: goca-se/dotcontext
Length of output: 2222
Surface re-emit failures instead of hiding them
emit_agent_commands "$_reemit" 2>/dev/null || true suppresses diagnostics and forces success, so existing opencode/Copilot installs can miss failed command delivery without any warning. emit_agent_commands already accepts a space-separated list, so the argument shape is fine; the missing piece is surfacing failures with at least a warning.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/commands/update.sh` around lines 451 - 463, The re-emit path in update.sh
is swallowing failures from emit_agent_commands, so command delivery issues for
existing opencode and Copilot installs are hidden. Update the re-run block that
builds _reemit and calls emit_agent_commands so failures are surfaced instead of
forcing success; keep the space-separated harness list handling, but replace the
silent suppression with a warning or explicit failure reporting around
emit_agent_commands.
Summary
/spec-dc(the WHAT) →/plan-dc(the HOW) →/execute-dc(the DO) — adapted from Spec-Driven Development (spec-author→plan-author→plan-executor) and folded into dotcontext's conventions (ADR-020).reviewer-pro+reviewer-fastloop until double-APPROVED.generate-prp/execute-prpnon-destructively — existing installs keep working afterdotcontext update.Architecture
flowchart TD A([feature idea]) --> B["/spec-dc — the WHAT<br/>.context/specs/spec-*.md<br/>clarity assessment · no ADR review"] B -->|user reviews spec| C["/plan-dc — the HOW<br/>.context/plans/plan-*.md<br/>ADR review · 100% traceability<br/>Validation Gate + dual reviewer loop"] C -->|/clear · fresh session| D["/execute-dc — the DO<br/>parallel waves · tests per wave<br/>dual review vs git diff"] D --> E([implemented + reviewed])Changes
templates/.claude/commands/{spec-dc,plan-dc,execute-dc}.md(mirrored into root.claude/commands/).plan-dc/{reviewer-pro,reviewer-fast}andexecute-dc/{reviewer-pro,reviewer-fast}(ADR-012 extraction)..context/specs/+.context/plans/(versioned, with READMEs).AskUserQuestionstays explicit/mandatory (ADR-005); the Validation Gate (user approval on the approach) and the four-option ADR-conflict resolution (Update / Find alternative / Keep / Let Claude decide + version/History/Supersede mechanics) moved into/plan-dc; worktree isolation kept in/execute-dcwith base-branch detection replacing the hardcodeddevelop.init.sh,update.sh,agents.sh(DOTCONTEXT_COMMANDS),help.sh; rebuilt thedotcontextbinary.AGENTS.mdWorkflows,setup-context.mdtree, rootCONTEXT.md/CLAUDE.md/README.md/CHANGELOG.md.Regression safety: on
dotcontext update,generate-prp/execute-prp/.context/prp/are simply dropped from the managed set — existing local copies are left untouched (they freeze but keep working). New projects get the trio only.Type
src/change — rebuilt thedotcontextbinary)Checklist
make buildand committed the rebuiltdotcontextbash -npasses and I tested locally (./dotcontext doctor→ 13 passed, 0 failed)description/namefrontmatter and are wired intoinit.sh+update.sh.context/decisions/— added ADR-020, amended ADR-018/019 (no unresolved conflict)feat:)Test plan
dotcontext init --agents claude --yesin a scratch repo → trio installed,.context/specs+.context/planscreated, no.context/prpdotcontext updatein a repo that predates this change → trio added, oldgenerate-prp/execute-prpand.context/prp/left intact (nothing broken)dotcontext init --agents opencode,copilot --yes→ trio emitted to.opencode/command/and.github/prompts/;AGENTS.mdWorkflows lists the trio/spec-dc→/plan-dc→/execute-dcon a small feature; confirm AskUserQuestion fires, the Validation Gate pauses for approval, and the dual reviewer loops runSummary by CodeRabbit
/spec-dc,/plan-dc, and/execute-dc, including dual fast/pro review loops, 100% traceability-backed planning, and wave-based execution with test gating and final diff verification..contextguidance and ADRs to reflect the new workflow, artifact layout, and retirement of the PRP flow.