Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
4 changes: 2 additions & 2 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
25 changes: 25 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 <name>` 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 <file>` 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
Expand Down
13 changes: 13 additions & 0 deletions README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,26 @@ Session A에서 `/ddaro:start billing`, Session B에서 `/ddaro:start auth`. 세

```
/ddaro:start # 새 격리 worktree 생성 (첫 실행 시 설정 프롬프트)
/ddaro:spec <name> # 설계문서 스캐폴드 + 결정 캡처 (0.6.0 new)
/ddaro:review <file> # 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
Expand Down
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 <name> # scaffold a design doc + capture decisions (new in 0.6.0)
/ddaro:review <file> # 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
Expand Down
21 changes: 21 additions & 0 deletions commands/ddaro-check.md
Original file line number Diff line number Diff line change
@@ -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-<name>` 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.
16 changes: 16 additions & 0 deletions commands/ddaro-review.md
Original file line number Diff line number Diff line change
@@ -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: "<file> [--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 <file>" and execute with `$ARGUMENTS` as `<file> [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 (<date> - 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`.
16 changes: 16 additions & 0 deletions commands/ddaro-spec.md
Original file line number Diff line number Diff line change
@@ -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: "<name> [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 <name>" and execute with `$ARGUMENTS` as `<name> [target-path]`.

- Resolve target path: `$2` if given, else `docs/design/<name>.md`. Refuse to overwrite an existing doc without confirm.
- **Search-Before-Building (mandatory):** grep `src/services/`, `src/routes/`, and siblings for symbols related to `<name>`; 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 <path>` next.
6 changes: 3 additions & 3 deletions commands/ddaro.md
Original file line number Diff line number Diff line change
@@ -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 <subcommand> [args]. Korean triggers: 따로, 병렬로, 분리해서, main 건드리지 마."
argument-hint: "<subcommand> [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 <subcommand> [args]. Korean triggers: 따로, 병렬로, 분리해서, main 건드리지 마."
argument-hint: "<subcommand> [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 <path>` 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 <new-form> directly" then execute.
- Otherwise, report "unknown subcommand" and list valid ones.

Expand Down
Loading
Loading