/ardd-implement¶
Tier: core
Execute tasks sequentially — offers worktree delegation; all state rides the work branch and lands on merge. --reconcile
re-syncs an interrupted tasks file with the codebase first (absorbs ardd-converge).
Usage¶
/ardd-implement # pick a tasks file and execute it
/ardd-implement --reconcile <file> # reconcile mode: sync the file with the codebase instead
/ardd-implement --list # print ready/in-progress tasks files and stop (read-only, no pick flow)
--list is a pure side door: it runs tasks-list.sh, filters its output
to ready/in-progress rows only, prints the result, and stops before
step 1 — no inflight-worktrees.sh cross-reference, no interactive pick,
and no writes of any kind.
Tasks run sequentially; each is self-contained and loads only the
artifacts its [artifacts: ...] tag declares. The skill stops and
surfaces blockers rather than working around them.
Reads¶
.project/tasks/tasks-*.mdviatasks-list.sh(status, progress, plan binding;abandonedfiles excluded)- Sibling worktrees via
inflight-worktrees.sh— a tasks file a live worktree claims atin-progressis excluded from the pick (its real state lives there, not here) parallel-matrix.sh— pairwise overlap verdicts used to annotate every pick-list and fan-out multi-select option:independent(no declared overlap only — not conflict-free),shared-artifact (<tags>),shared-feature (<slugs>), orclaimed(the same tasks file, ready here and claimed by an in-flight worktree). Ashared-featureverdict is a strong warning in the option text, never a hard exclusion — the same-file claim check stays the only hard exclusion, which aclaimedverdict simply reports (the rule itself is unchanged), andmerge_policyconflict handling still governs at merge time. When two candidates merely look related, the agent skims both and flags likely code-path contact before fanning out- Constitution frontmatter knobs:
workflow_mode,delegation,merge_policy - The declared artifacts, per task
Writes¶
- Code, tests, and commits — one commit per task
- The tasks file:
ready → in-progressflip, per-task checkboxes (ardd-state.sh task-check), the→ completedflip - The feature register:
tasked → implemented, whensibling-tasks-complete.shreports every tasks file bound to the same plan is done
Every one of those state changes rides the work branch and reaches the default branch only on merge, atomically with the code — there is no pre-delegation state commit, and an abandoned worktree never poisons the default branch.
The delegation gate¶
In solo mode, delegation to a background subagent in an isolated worktree
is offered eagerly — regardless of which branch you're on (a branch
isolates state; backgrounding frees your session). The constitution's
delegation knob tunes the gate: eager delegates without asking, ask
(or absent) offers each time, inline never offers.
- Pre-flight, before the fold below: the chosen tasks file and its
bound plan must be committed, or a delegated worktree simply can't see
them. This extends to two more resolved-path kinds: the plan's bound
feature-register files (from its
features:frontmatter) and any feedback files whoseplan:frontmatter names this plan — all four kinds are checked and, where the mode allows, committed together. In solo mode, anything dirty/untracked among these four is auto-committed (scopedgit addof exactly those resolved paths, then a signed commit) — no prompt, the committed paths and hash are printed. In collaborative mode this is unchanged: the user is asked to commit or delegation is blocked. Also verifies the plan file resolved from the tasks file'splan:frontmatter actually exists on disk first (a nonexistent path makesgit status --shortprint nothing, which would otherwise look identical to "already clean"). Separately,.project/artifacts/is checked as a whole directory — since artifact edits carry no back-reference to the plan that produced them — and this one always asks before committing, in both solo and collaborative mode; it's never folded into the auto-commit path above. - Already on a feature branch when backgrounding? The branch is
fast-forward-folded into local
<default>first (fold-to-main.sh) so the delegated worktree can see its state; any non-trivial condition (dirty,diverged, …) refuses and is surfaced, never resolved. - The delegated subagent's mandatory first act is
worktree-align.sh; anything butaligned=truemeans stop and report, never work unaligned. - Fan-out: with several
readyfiles, the pick can be a multi-select — one parallel worktree run per file. The unit of parallelism is the tasks file; tasks within a file are always sequential. - On report-back the coordinator checks for the known
core.bare=trueside effect, merges permerge_policy(automerges fast-forward or conflict-free merges without asking — any conflict aborts and asks, nothing is ever auto-resolved;askoffers, suggesting yes — eager merge keeps the in-flight window short), then runsworktree-reap.shto remove the landed worktree (refusals surfaced verbatim, never forced). - A delegated subagent never runs
/ardd-statusin any mode — the coordinator owns the refresh. The trapped-write rationale is solo-specific (an abandoned worktree would trap the write on the worktree branch); in collaborative mode the coordinator refreshes on the feature branch in the primary checkout instead. The terminal analyze handoff belongs to the coordinator or the inline path. - If delegation ever misbehaves, the blessed fallback is a plain branch,
inline: decline the offer,
git checkout -b <name>, same state model, same merge.
Collaborative mode: nothing is ever committed to the local default
branch. Work moves to a branch (worktree or plain), and after the first
commit the skill offers to push and open a draft PR titled with the
feature slug(s) — the mode's in-flight visibility channel. Merging goes
through the PR; merge_policy is never consulted; pushes always require
explicit confirmation. On a delegated report-back the coordinator
fast-forwards the feature branch onto the subagent-reported branch, runs
/ardd-status on it (refresh + prune) and commits, and only then offers
the push/PR — in collaborative mode, no ArDD skill pushes a feature
branch whose STATUS.md predates the state the push carries (the inline
path's terminal /ardd-status satisfies the same invariant; the
first-commit draft-PR visibility push is exempt).
Reconcile mode (formerly the ardd-converge skill)¶
Compares the codebase to the tasks file and brings the file back in line:
marks tasks whose work is verifiably done, adds [partial: <what remains>]
notes, appends gap tasks for work that landed without a task. Entered two
ways:
- Offered on pick — choosing an
in-progressfile no worktree claims (the fingerprint of an interrupted run) folds a reconcile-first option into the pick confirmation itself. - Explicit —
--reconcile <file>works onreadyfiles too (e.g. hotfix work that landed without ever being tasked).
Reconcile never resurrects a completed file.
Rules¶
completedis terminal. Post-completion failures are new work — capture with/ardd-feedback, never edit the status back.- Never skip a test task; follow the constitution's declared testing paradigm (TDD, test-after, or none) — never assume one it doesn't state.
- Never modify artifacts during implementation — stop, surface, and
let the user run
/ardd-refine. (The register status flip is the one exception: bookkeeping, not design.) - Never write to
DEFECTS.md— report incidental findings in the task output and point at/ardd-defects.
Related¶
/ardd-plan— produces the tasks files this executes;--fromre-tasks/ardd-status— the In Flight section shows unmerged work- guides/parallel-work.md — the full delegation/worktree model