From e7645004f985aa94467e94cbe68503bbe07ccae5 Mon Sep 17 00:00:00 2001 From: Minwoo Park <246407127+minwoo-data@users.noreply.github.com> Date: Fri, 5 Jun 2026 12:59:31 -0500 Subject: [PATCH] feat: lifecycle conductor (spec/review/check) - 0.6.0 Add three orchestration subcommands that fill the design->review FRONT half of the dev cycle before the existing commit->CI-merge back half: /ddaro:start -> spec -> review -> [implement] -> check -> commit -> merge - /ddaro:spec scaffold a design/PRD doc (fixed skeleton) + enforce Search-Before-Building (Reuse inventory) + capture Locked decisions (ask, never silently default) - /ddaro:review fan out 8 agents (prism 5 angles + triad 3 lenses), require each to verify the doc's code claims vs real source, triage by severity + agreement, collate a `## Review findings` section back in. --codex adds the cross-engine pass (deferred by default for no-code docs) - /ddaro:check [branch] pre-merge gate: prism-all on the diff (adversarially verified) + project ship checklist discovered from CLAUDE.md/rules -> BLOCK/PASS, hands off to commit+merge on PASS Pure orchestration over the doc-template/prism/triad skills; degrades to inline steps if absent; only commit/merge touch git. Deliberately NOT a GSD-style project/milestone/phase framework - encodes the lightweight one-doc->review-> implement->review cadence that maps to a single ddaro session. commands/ auto-discovered (no manifest per-command wiring). Router + SKILL.md sections + manifest/marketplace version 0.6.0 + README/README.ko + CHANGELOG updated. --- .claude-plugin/marketplace.json | 4 +- .claude-plugin/plugin.json | 4 +- CHANGELOG.md | 25 ++++++++++ README.ko.md | 13 +++++ README.md | 16 +++++++ commands/ddaro-check.md | 21 +++++++++ commands/ddaro-review.md | 16 +++++++ commands/ddaro-spec.md | 16 +++++++ commands/ddaro.md | 6 +-- skills/ddaro/SKILL.md | 84 +++++++++++++++++++++++++++++++++ 10 files changed, 198 insertions(+), 7 deletions(-) create mode 100644 commands/ddaro-check.md create mode 100644 commands/ddaro-review.md create mode 100644 commands/ddaro-spec.md diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 3b7def6..85f2549 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -9,8 +9,8 @@ { "name": "ddaro", "source": "./", - "description": "Worktree-based parallel workflow for Claude Code sessions. 6-tier worktree classification (main / owned / adopted / protected / unmanaged / external), /ddaro:adopt to bring existing worktrees under management, cwd-safe destructive commands (clear/abandon from main only), size-based merge review, crash-recoverable context logs, and plugin-native protective hooks (0.5.0: registered in hooks/hooks.json, active when ddaro is enabled, modes set via /ddaro:config - never written to .claude/settings.json). /ddaro:start uses a 6-step setup. /ddaro:abandon accepts adopted via --force. Korean triggers: 따로, 병렬로, 분리해서.", - "version": "0.5.2", + "description": "Worktree-based parallel workflow for Claude Code sessions. 6-tier worktree classification (main / owned / adopted / protected / unmanaged / external), /ddaro:adopt to bring existing worktrees under management, cwd-safe destructive commands (clear/abandon from main only), size-based merge review, crash-recoverable context logs, and plugin-native protective hooks (0.5.0: registered in hooks/hooks.json, active when ddaro is enabled, modes set via /ddaro:config - never written to .claude/settings.json). New in 0.6.0: a lifecycle conductor (/ddaro:spec design-doc scaffold + decision capture, /ddaro:review prism-all + triad fan-out with collated findings, /ddaro:check pre-merge prism + ship-checklist gate) that orchestrates the doc-template/prism-all/triad skills around the worktree cycle. /ddaro:start uses a 6-step setup. /ddaro:abandon accepts adopted via --force. Korean triggers: 따로, 병렬로, 분리해서.", + "version": "0.6.0", "homepage": "https://github.com/minwoo-data/ddaro", "license": "MIT", "author": { diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index f1cf1c1..a8e7e4e 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "ddaro", - "version": "0.5.2", - "description": "Worktree-based parallel workflow for Claude Code sessions with plugin-native protective hooks (new in 0.5.0) and dev-cycle orchestration (0.4.0). The seven hooks (main_protection, branch_naming, cross_worktree_check, branch_worktree_match, evidence_check + the two SessionStart reporters) ship in hooks/hooks.json and activate automatically when ddaro is enabled - config-gated and fail-open, so non-ddaro projects see zero noise and nothing is written to .claude/settings.json (run /ddaro:config migrate once to clean up pre-0.5.0 installs). 6-tier classification (main / owned / adopted / protected / unmanaged / external), /ddaro:adopt, cwd-safe destructive commands (clear/abandon from main only). /ddaro:commit opt-in --verify flag (verify.json + CLAUDE.md fallback discovery). /ddaro:merge drives the PR path through CI: state machine, polling, hard-capped fix loop (default 3, configurable), CI_STUCK detection, idempotency guard, confirm gate, sync-main content-diff preview, --force-with-lease invariant. Korean triggers: /ddaro, 따로, 병렬로. English: /ddaro, parallel, isolated.", + "version": "0.6.0", + "description": "Worktree-based parallel workflow for Claude Code sessions with a lifecycle conductor (new in 0.6.0: /ddaro:spec scaffolds a design doc + captures decisions, /ddaro:review fires prism-all + triad and collates findings, /ddaro:check is a pre-merge prism + ship-checklist gate - pure orchestration over the doc-template/prism-all/triad skills, filling the design->review front half before the existing commit->CI-merge back half), plugin-native protective hooks (new in 0.5.0) and dev-cycle orchestration (0.4.0). The seven hooks (main_protection, branch_naming, cross_worktree_check, branch_worktree_match, evidence_check + the two SessionStart reporters) ship in hooks/hooks.json and activate automatically when ddaro is enabled - config-gated and fail-open, so non-ddaro projects see zero noise and nothing is written to .claude/settings.json (run /ddaro:config migrate once to clean up pre-0.5.0 installs). 6-tier classification (main / owned / adopted / protected / unmanaged / external), /ddaro:adopt, cwd-safe destructive commands (clear/abandon from main only). /ddaro:commit opt-in --verify flag (verify.json + CLAUDE.md fallback discovery). /ddaro:merge drives the PR path through CI: state machine, polling, hard-capped fix loop (default 3, configurable), CI_STUCK detection, idempotency guard, confirm gate, sync-main content-diff preview, --force-with-lease invariant. Korean triggers: /ddaro, 따로, 병렬로. English: /ddaro, parallel, isolated.", "author": { "name": "haroom", "url": "https://github.com/minwoo-data" diff --git a/CHANGELOG.md b/CHANGELOG.md index d5e3b66..98c2c9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,31 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), ## [Unreleased] +## [0.6.0] - 2026-06-05 + +### Added + +- **Lifecycle conductor (`/ddaro:spec`, `/ddaro:review`, `/ddaro:check`).** Three + orchestration subcommands that fill the design->review FRONT half of the dev cycle + before ddaro's existing commit->CI-merge back half: + `start -> spec -> review -> [implement] -> check -> commit -> merge`. + - `/ddaro:spec ` scaffolds a design/PRD doc with a fixed skeleton, enforces + Search-Before-Building (greps existing code into a Reuse inventory), and captures + Locked decisions (asks rather than silently defaulting a user-owned choice). + - `/ddaro:review ` fans out 8 agents in parallel (prism 5 angles + triad 3 lenses), + requires every agent to verify the doc's code claims against the real source, triages + by severity + cross-angle agreement, and collates a `## Review findings` section back + into the target. `--codex` adds the cross-engine pass (deferred by default for no-code + docs). + - `/ddaro:check [branch]` is a pre-merge gate: prism-all on the diff (adversarially + verified) + a project ship checklist discovered from CLAUDE.md/rules (tests, route-map + drift, CHANGELOG sync, schema-additive, no synthetic accounts/secrets/em-dash) -> + BLOCK/PASS, handing off to `/ddaro:commit` + `/ddaro:merge` on PASS. + - Pure orchestration: sequences the `doc-template` / `prism-all` / `triad` skills and + degrades to inline steps if absent; only commit/merge touch git. Deliberately NOT a + GSD-style project/milestone/phase framework - it encodes the lightweight + one-doc->review->implement->review cadence that maps to a single ddaro session. + ## [0.5.2] - 2026-06-04 ### Added diff --git a/README.ko.md b/README.ko.md index 9d598ed..6bbf506 100644 --- a/README.ko.md +++ b/README.ko.md @@ -64,13 +64,26 @@ Session A에서 `/ddaro:start billing`, Session B에서 `/ddaro:start auth`. 세 ``` /ddaro:start # 새 격리 worktree 생성 (첫 실행 시 설정 프롬프트) +/ddaro:spec # 설계문서 스캐폴드 + 결정 캡처 (0.6.0 new) +/ddaro:review # prism-all + triad 병렬 리뷰, findings 문서에 합치기 (0.6.0 new) /ddaro:commit # 안전 검증 + commit + push + context 스냅샷 /ddaro:commit --verify # ...추가로 프로젝트의 verify 명령 실행 (0.4.0 new) +/ddaro:check # 머지 전 prism + ship 체크리스트 게이트 (0.6.0 new) /ddaro:merge # 규모별 리뷰 + CI 오케스트레이션 + merge + sync-main (0.4.0 new) ``` 설치/업데이트 후 Claude Code 재시작. +### 라이프사이클 컨덕터 (0.6.0 new) + +3개 오케스트레이션 서브커맨드가 dev 사이클의 설계->리뷰 앞부분을 채웁니다 (기존 commit->CI-merge 뒷부분 앞): + +``` +/ddaro:start -> /ddaro:spec -> /ddaro:review -> [구현] -> /ddaro:check -> /ddaro:commit -> /ddaro:merge +``` + +자매 스킬(`doc-template`, `prism`, `triad`)을 순수 지휘만 하며, 없으면 inline으로 폴백합니다. 프로젝트 관리 프레임워크가 아니라, 한 ddaro 세션에 매핑되는 가벼운 "문서 하나 -> 리뷰 -> 구현 -> 리뷰" cadence입니다. + --- ## Commands diff --git a/README.md b/README.md index 7731cda..94b362b 100644 --- a/README.md +++ b/README.md @@ -64,13 +64,29 @@ You fire up Session A to fix billing and Session B to refactor auth. Both edit ` ``` /ddaro:start # creates a new isolated worktree (first run prompts for setup) +/ddaro:spec # scaffold a design doc + capture decisions (new in 0.6.0) +/ddaro:review # prism-all + triad fan-out, findings collated back in (new in 0.6.0) /ddaro:commit # safe commit + push + context snapshot /ddaro:commit --verify # ...plus run the project's verify command(s) first (new in 0.4.0) +/ddaro:check # pre-merge prism + ship-checklist gate (new in 0.6.0) /ddaro:merge # size-based review + CI orchestration + merge + sync-main (new in 0.4.0) ``` Restart Claude Code after install/update. +### Lifecycle conductor (new in 0.6.0) + +Three orchestration subcommands fill the design->review front half of the dev cycle before +the existing commit->CI-merge back half: + +``` +/ddaro:start -> /ddaro:spec -> /ddaro:review -> [implement] -> /ddaro:check -> /ddaro:commit -> /ddaro:merge +``` + +They are pure orchestration over the sibling skills (`doc-template`, `prism`, `triad`) and +degrade to inline steps if those are absent. Not a project-management framework - just the +lightweight "one doc -> review -> implement -> review" cadence that maps to one ddaro session. + --- ## Commands diff --git a/commands/ddaro-check.md b/commands/ddaro-check.md new file mode 100644 index 0000000..93ae2d9 --- /dev/null +++ b/commands/ddaro-check.md @@ -0,0 +1,21 @@ +--- +name: ddaro:check +description: "Pre-merge review-list gate on the implementation diff: fire prism-all on the changes (bugs/security/regressions) + run the project ship checklist (tests, route-map drift, CHANGELOG sync, schema-additive, project rules), then BLOCK or PASS. On PASS, hand off to /ddaro:commit + /ddaro:merge. Back half of the dev cycle." +argument-hint: "[branch|--staged] - default: this worktree's branch vs main" +allowed-tools: [Agent, Bash, Read, Glob, Grep] +--- + +Read `${CLAUDE_PLUGIN_ROOT}/skills/ddaro/SKILL.md` section "## /ddaro:check [branch]" and execute with `$ARGUMENTS`. + +- Resolve the diff: `$1` branch vs main, or `--staged`, else current `d-` branch vs `origin/main`. +- Fire prism-all on the diff (focus: correctness, security, regressions, concurrency, data integrity). Adversarially verify each HIGH+ before reporting. +- Run the SHIP CHECKLIST, discovering project rules from `.claude/CLAUDE.md` + `.claude/rules/`: + - tests pass (run the project test command); + - route-map drift (if `src/routes` or `app.py` touched -> regenerate + diff); + - CHANGELOG updated AND its central mirror synced (if the project declares one); + - schema change is additive (no data-rewrite that blocks auto-promote) or flagged; + - no synthetic test accounts / no secrets / no em-dash / config not hardcoded (per rules); + - docs-vs-code drift on any touched spec. +- Verdict: **BLOCK** (list every blocker + the one fix each) or **PASS**. +- On PASS, recommend / hand off to `/ddaro:commit` then `/ddaro:merge`. Never auto-merge on BLOCK. +- Output: the verdict table + blocker list. This is a gate, not a fixer - it reports, the operator (or a follow-up) fixes. diff --git a/commands/ddaro-review.md b/commands/ddaro-review.md new file mode 100644 index 0000000..06820d6 --- /dev/null +++ b/commands/ddaro-review.md @@ -0,0 +1,16 @@ +--- +name: ddaro:review +description: "Dual-engine multi-angle review of a doc or diff: fire prism-all (5 angles) + triad (3 lenses) in parallel, cross-check every code claim against real files, triage by severity + cross-model agreement, and collate findings back INTO the target as a '## Review findings' section with a fix list. Automates the design-review gate." +argument-hint: " [--codex] [--diff] - e.g. docs/design/canonical-merge.md" +allowed-tools: [Agent, Bash, Read, Write, Edit, Glob, Grep] +--- + +Read `${CLAUDE_PLUGIN_ROOT}/skills/ddaro/SKILL.md` section "## /ddaro:review " and execute with `$ARGUMENTS` as ` [flags]`. + +- Read the target. If `--diff`, review the working/branch diff instead of a file (mirror `/ddaro:check` scoping). +- Fire 8 agents IN PARALLEL (one message): prism 5 angles (conflict / devil's-advocate / improvement / code-review / robustness-4axis) + triad 3 lenses (LLM-implementability / architecture-longevity / decision-maker-comprehension). Every agent MUST verify the doc's file:line / behavior claims against the ACTUAL code, not take them on faith. +- Triage: severity CRIT/HIGH/MED/LOW; promote findings flagged by 2+ angles/lenses (agreement tier). Separate genuine contradictions for adjudication. +- Collate into the target: append a `## Review findings ( - prism + triad)` section + an ordered fix list. If reviewing a doc, also APPLY the fixes (or list them if the user prefers review-only). +- `--codex`: also run the real dual-engine prism-all + triad-all (Claude + Codex). Default DEFERS Codex to the implementation-PR review for no-code docs (note this in the section, per the project's established cadence). +- If `prism-all` / `triad` skills are installed, invoke them; else run the 8 agents directly per the angle/lens prompts in this section. +- Output: the findings summary (top CRIT/HIGH) + confirm the section was written. Recommend implementing, then `/ddaro:check`. diff --git a/commands/ddaro-spec.md b/commands/ddaro-spec.md new file mode 100644 index 0000000..848cc7e --- /dev/null +++ b/commands/ddaro-spec.md @@ -0,0 +1,16 @@ +--- +name: ddaro:spec +description: "Scaffold a design/PRD doc + capture locked decisions before building. Enforces Search-Before-Building (greps existing code into a Reuse inventory), fixed section skeleton, and a [DECIDE] checklist. Front half of the dev cycle - run inside a ddaro worktree before implementing." +argument-hint: " [target-path] - e.g. canonical-merge docs/design/canonical-merge.md" +allowed-tools: [Bash, Read, Write, Edit, Glob, Grep] +--- + +Read `${CLAUDE_PLUGIN_ROOT}/skills/ddaro/SKILL.md` section "## /ddaro:spec " and execute with `$ARGUMENTS` as ` [target-path]`. + +- Resolve target path: `$2` if given, else `docs/design/.md`. Refuse to overwrite an existing doc without confirm. +- **Search-Before-Building (mandatory):** grep `src/services/`, `src/routes/`, and siblings for symbols related to ``; record what already exists + the reuse/extend decision in a "Reuse inventory" table. A spec with an empty inventory for a non-greenfield feature is incomplete - say so. +- Scaffold the fixed skeleton: TL;DR (decision) / Problem / Evidence / Reuse inventory / Options table (verdict per row) / Locked decisions / Slices + per-slice gates / Schema (if any) / UI (if any) / Test plan / Rollback / Open questions / Out of scope. +- Fill what the conversation already settled; mark every unresolved gray area as `[DECIDE]` inline. +- Capture Locked decisions explicitly: for each gray area, either record the user's stated choice or ASK (do not silently default). +- If a `doc-template` skill is installed, use it for the skeleton instead of hand-rolling. +- Output: the doc path + a checklist of remaining `[DECIDE]` items, and recommend `/ddaro:review ` next. diff --git a/commands/ddaro.md b/commands/ddaro.md index 22d44f1..faa8b92 100644 --- a/commands/ddaro.md +++ b/commands/ddaro.md @@ -1,14 +1,14 @@ --- name: ddaro -description: "ddaro - worktree-based parallel workflow. Use subcommands via /ddaro:start, /ddaro:adopt, /ddaro:resume, /ddaro:commit, /ddaro:merge, /ddaro:status, /ddaro:list, /ddaro:clear, /ddaro:abandon, /ddaro:config. Or /ddaro [args]. Korean triggers: 따로, 병렬로, 분리해서, main 건드리지 마." -argument-hint: " [args] - start | adopt | resume | commit | merge | status | list | clear | abandon | config" +description: "ddaro - worktree-based parallel workflow + lifecycle conductor. Use subcommands via /ddaro:start, /ddaro:adopt, /ddaro:resume, /ddaro:commit, /ddaro:merge, /ddaro:status, /ddaro:list, /ddaro:clear, /ddaro:abandon, /ddaro:config, and the 0.6.0 lifecycle trio /ddaro:spec, /ddaro:review, /ddaro:check. Or /ddaro [args]. Korean triggers: 따로, 병렬로, 분리해서, main 건드리지 마." +argument-hint: " [args] - start | adopt | resume | commit | merge | status | list | clear | abandon | config | spec | review | check" allowed-tools: [Bash, Read, Write, Edit, Glob, Grep] --- Read `${CLAUDE_PLUGIN_ROOT}/skills/ddaro/SKILL.md` fully, then: - If `$ARGUMENTS` is empty, show a brief overview of all subcommands and recommend `/ddaro:start` for first-time users (or `/ddaro:adopt ` if they already have an existing worktree they want under ddaro). -- If `$ARGUMENTS[0]` matches one of: `start`, `adopt`, `resume`, `commit`, `merge`, `clear`, `status`, `list`, `abandon`, `config` - execute the matching section in the skill document using the remaining arguments. +- If `$ARGUMENTS[0]` matches one of: `start`, `adopt`, `resume`, `commit`, `merge`, `clear`, `status`, `list`, `abandon`, `config`, `spec`, `review`, `check` - execute the matching section in the skill document using the remaining arguments. - Legacy aliases: `summary` → `/ddaro:resume --recap-only` (with remaining args passed through). `setting` → `/ddaro:config` (no args, opens menu). Print a one-line "note: renamed in v0.3 — use directly" then execute. - Otherwise, report "unknown subcommand" and list valid ones. diff --git a/skills/ddaro/SKILL.md b/skills/ddaro/SKILL.md index f6469ac..e720f1d 100644 --- a/skills/ddaro/SKILL.md +++ b/skills/ddaro/SKILL.md @@ -1443,6 +1443,90 @@ If `language=korean`, all subsequent output is in Korean. --- +## Lifecycle conductor (spec / review / check) *(new in 0.6.0)* + +Three orchestration subcommands that fill the FRONT half of the dev cycle (design -> +review) before ddaro's existing back half (commit -> CI merge): + +``` +/ddaro:start -> /ddaro:spec -> /ddaro:review -> [implement] -> /ddaro:check -> /ddaro:commit -> /ddaro:merge + (worktree) (design+decide) (prism+triad) (code) (gate) (existing ship path) +``` + +They are PURE orchestration: each sequences existing building blocks (the `doc-template`, +`prism-all`, and `triad` skills) and degrades gracefully to running the steps inline if a +preferred skill is absent. None of them touch git history - only `/ddaro:commit` and +`/ddaro:merge` do. They do NOT reimplement a project-management framework (use GSD for +that if you want phases/milestones); they encode the lightweight "one doc -> review -> +implement -> review" cadence that maps to one ddaro session. + +## /ddaro:spec + +Scaffold a design/PRD doc and capture locked decisions BEFORE any code is written. + +- Parse `$ARGUMENTS` as ` [target-path]`. Target = `$2` or `docs/design/.md`. + If it exists, show it and ask before overwriting (offer `--append` for a revision section). +- **Search-Before-Building (mandatory):** grep `src/services/`, `src/routes/`, and the + dirs the project's CLAUDE.md names, for symbols related to ``. Summarize hits into + a "Reuse inventory" table (capability | where file:line | reuse/extend/new). A + non-greenfield spec with an empty inventory is incomplete - say so. +- Scaffold the fixed skeleton (use `doc-template` if installed, else inline): TL;DR + (decision) / Problem / Evidence / Reuse inventory / Options (verdict per row) / Locked + decisions / Slices + per-slice gates / Schema (if any) / UI (if any) / Test plan / + Rollback / Open questions (each with a default) / Out of scope. +- Fill what the conversation settled; mark every unresolved gray area inline as + `[DECIDE: ]`. +- **Capture Locked decisions:** for each `[DECIDE]`, record the user's choice or ASK now + (AskUserQuestion). Never silently default a decision the user owns. +- Output: the doc path + the remaining `[DECIDE]` checklist + "next: `/ddaro:review `". + +Anti-patterns: empty Reuse inventory; unresolved `[DECIDE]` silently defaulted; empty +section headers for parts the feature doesn't need (drop them). + +## /ddaro:review + +Dual-engine multi-angle review of a doc (or diff) + collate findings back in. + +- Read the target. With `--diff`, scope to the working/branch diff (see `/ddaro:check`). +- **Fan out 8 agents in ONE message (parallel):** prism 5 angles (Conflict / Devil's- + advocate / Improvement / Code-review accuracy / Robustness 4-axis) + triad 3 lenses + (LLM-implementability / Architecture-longevity / Decision-maker comprehension). **Every + agent MUST verify the doc's file:line / behavior claims against the ACTUAL code** and + flag any that are wrong/stale - this is the step that catches design-breaking errors. If + `prism-all` / `triad` skills are installed, invoke them with the same "verify vs code" + instruction. +- Triage: severity CRIT/HIGH/MED/LOW; promote findings raised by 2+ angles/lenses + (agreement tier); collect genuine contradictions for the operator. +- **Collate INTO the target:** append `## Review findings ( - prism + triad)` with a + table (severity | finding | fix) + a "what changed" note. For a doc, also APPLY the + fixes (or, with `--review-only`, just list them). Re-verify any CRIT claim before acting. +- `--codex`: additionally run the real cross-engine prism-all + triad-all. Default DEFERS + Codex to the implementation-PR review for no-code docs and says so in the section. +- Take the date from session context (`currentDate`), not a `date` shell call. +- Output: top CRIT/HIGH summary + confirm the section was written. Recommend implement -> + `/ddaro:check`. + +## /ddaro:check [branch] + +Pre-merge review-list gate on the implemented diff. Reports BLOCK/PASS; does not fix. + +- Resolve the diff: `$1` branch vs `origin/main`; or `--staged`; else this worktree's + `d-` branch vs `origin/main` (read the branch from the lock file). +- **prism-all on the diff** (correctness, security, regressions, concurrency, data + integrity). Adversarially verify each HIGH+ before reporting (spawn skeptics prompted to + refute; keep only survivors). +- **Ship checklist** - discover the project's rules from `.claude/CLAUDE.md` + + `.claude/rules/` and check each that applies: tests pass (run the declared command); + route-map drift (if routes/app changed -> regenerate + diff); CHANGELOG updated AND its + central mirror synced (if declared); schema change additive or flagged; no synthetic + accounts / no secrets / no em-dash / config not hardcoded (per rules); docs-vs-code + drift on any touched spec. +- **Verdict:** BLOCK (enumerate every blocker + the single fix each) or PASS. +- On PASS: recommend / hand off to `/ddaro:commit` then `/ddaro:merge`. On BLOCK: stop; + never auto-proceed. It is a gate, not a fixer. + +--- + ## Limits (honest) What this plugin protects against: