Changelog
All notable changes to this project are documented here. Format — Keep a Changelog, versioning — SemVer.
This file is maintained in English — see CONTRIBUTING.md.
[Unreleased]
Added
task:code-reviewer— the pipeline's own review pass (agents/code-reviewer.md, the plugin's first and only agent). It runs in explicit phases with a mandatory output each: read the task file and itsTouches/Spec:anchors → gather the committed diff → collect candidate defects (fanning out where the diff warrants it) → prove or refute each one independently → fix only what it confirmed, insideTouchesplus regressions the same diff introduced outside them → runconfig.md→ Build and Tests →git commit --amendthe implementation's commit. An unproven candidate is dropped, never fixed;0 findingsis a declared state; and a report that doesn't enumerate what was checked perTouchesfile counts as a failed review, not a passed one. It never pushes, never touches a commit other thanHEAD, and writes nothing under.task/.
Changed
/verifyand/code-revieware no longer part of the pipeline — Claude Code 2.1.217 marked bothdisable-model-invocation, and that gate treats every subagent as "the user didn't type this". Worse, a command in that state isn't listed to the model at all, so nothing errored:roadmap-to-workflow's per-item agent and every plainimplement .task/task/<slug>.mdsession silently skipped the review step and still reportedOK. The pipeline's review gate had been quietly absent rather than loudly broken, and there is no settings escape hatch. Both execution paths now spawntask:code-reviewerinstead — a plain session per the## Executionblock, androadmap-to-workflow's driver as its own stage in the per-item serial loop.- The stamped
## Executionblock carries the new sequence — implement → commit perconfig.md→ Commit Format → spawntask:code-revieweron the diff → tick the roadmap checkbox once the review returns OK. Existing task files keep working; re-run/task:to-planon one to re-stamp it (they only ever named commands that weren't running anyway). Verification is relocated, not dropped: it rides inside the reviewer viaconfig.md→ Build and Tests, which fails the item on a red run and reports an explicit "skipped" when no command is declared. - Implement commits, the reviewer amends — the implement step commits as before and the reviewer folds its fixes into that same commit, so work is durable immediately and one item stays one commit. If the implementation was never committed, the reviewer leaves its fixes in the working tree rather than rewriting an unrelated commit.
roadmap-to-workflowis now three agents per item — opus-plans / sonnet-implements /task:code-reviewer-reviews. The review runs inside the existing per-item serial loop (not as apipeline()stage), so the shared working tree keeps exactly one writer; auto-mark still belongs to the driver, now after the review; a failed review stops the wave exactly as a failed implement does. The item's**Model:**hint no longer reaches the review — the reviewer pins its own model, so ahaikuitem can't get ahaikureview.- Requirements dropped a prerequisite — no platform slash command has to be available any more; the reviewer only needs the
taskplugin enabled in the session doing the work. Since the## Executionblock names the agent directly with no fallback, a disabled or missing plugin is now the failure mode to know about — documented on the site's troubleshooting page. - Two declared invariants were rewritten rather than silently violated: "orchestration, verification, review, and commits are delegated to the platform" (
CLAUDE.md) and "there is noagents/directory in v3" (CONTRIBUTING.md). The commit-scope list gainsagents. Skill count is unchanged at six — the reviewer is an agent, not a skill.
[3.2.1] — 2026-07-23
Patch release. Non-breaking — no artifact-shape changes.
Fixed
roadmap-to-workflowwave concurrency — the script template passed{ isolation: "worktree" }toparallel(), which the Workflow tool silently ignores, so every wave actually ran all agents concurrently in one shared tree, and true per-item worktrees have no reconciliation step anyway. Waves now plan all items in parallel (each plan agent writes only its own task file, never the tree) then implement them strictly one at a time, the sole mutator of the shared tree — a plan FAIL stops before any implement, an implement FAIL stops as before. Each implement now sees its wave-mates' already-landed commits and/verifyruns against the integrated state.
Docs
- VitePress documentation site — added a searchable guide/reference site under
website/, deployed to GitHub Pages: getting-started and core-concepts pages, per-skill workflow guides (grill, single task, roadmaps, autopilot, specs), a comparison against similar tools (superpowers, OpenSpec, spec-kit, Task Master, Matt Pocock's skills), and a full command reference.docs/usage.mdanddocs/troubleshooting.mdare now thin pointers to the site, which is the single owner of user-facing usage prose.
[3.2.0] — 2026-07-20
Replaces the confirm-before-write gate with write-then-digest. Non-breaking — no artifact-shape changes.
Changed
- Write-then-digest replaces confirm-before-write — convention (b)'s print-draft → Accept/Edit/Decline gate was the pipeline's most error-prone step (three prior patch releases only papered over it) and re-reviewed content the chat discussion had already settled. Every capture skill now writes its artifact immediately, runs
validate.shon the written file, then prints a structural digest (path, title, sections, captured decisions/pins, validate result) inviting edits against the file.grilldrops its ledger confirmation and prints the ledger as the digest after the pre-mortem. Chips survive only where the question isn't distilled content: config Step 0 setup and the slug-collision overwrite guard. Synced acrossCLAUDE.md,docs/contract.md, andself-invariants-auditor.
Fixed
to-roadmap/to-specno longer hard-stop on unrelated artifact errors — Step 0 treated any non-zerovalidate.shexit as "config malformed → stop", but exit 1 means one or more existing artifacts failed validation;validate.shnever inspectsconfig.mdcontent. A pre-existing broken, unrelated file could block a fresh capture. Both now hard-stop only on a missingconfig.md(exit 2), matchingto-taskandroadmap-to-workflow; exit-1 artifact errors surface but don't block.
[3.1.2] — 2026-07-19
Bugfix release. Non-breaking — no artifact-shape or layout changes.
Fixed
- Confirmation gate hardened further — v3.1.1's "print the draft as message text first" wording did not change model behavior: a post-release transcript showed the turn going straight from bash checks to
AskUserQuestionwith no text block, so the draft was never actually printed. Every confirmation site (grill,to-task,to-plan,to-roadmap,to-spec) now carries an explicit gate — never emitAskUserQuestionuntil the full draft sits printed above it in the same reply; prior chat discussion does not count. Mirrored in both docs of record (CLAUDE.md,docs/contract.md).
[3.1.1] — 2026-07-19
Bugfix release. Non-breaking — no artifact-shape or layout changes.
Fixed
- Confirmation prints the draft first — the model was routing all confirmation output through the
AskUserQuestioncall and skipping the draft, so users confirmed content they never saw. Convention (b) is hardened at both docs of record (CLAUDE.md,docs/contract.md) and at every capture-skill confirmation site (grill,to-task,to-plan,to-roadmap,to-spec) to mandate printing the full draft as visible message text first, then posing the question in the same reply; the question box and optionpreviewnever render the draft.
[3.1.0] — 2026-07-19
Adds a pre-capture interrogation skill and tightens the capture flow. Non-breaking — no artifact-shape or layout changes.
Added
grillskill — a pre-capture interrogation that sits at the "discuss freely" stage: it stress-tests a plan or decision one question at a time, keeps a running decision-plus-rationale ledger, ends with a pre-mortem, and routes to the right capture skill (to-task/to-plan/to-roadmap/to-spec). It writes no artifacts and touches nothing under.task/, so it can run before any capture exists and needs noconfig.md. Brings the pipeline to 6 skills.
Changed
- Skills and docs compacted — skill prompts and docs were trimmed to cut runtime token cost without changing behavior.
validateis now a bash-only utility (skills/validate/validate.sh); itsSKILL.mdis removed. roadmap.shslimmed — dropped theresolve_roadmap_pathwrapper and a dead guard.
Fixed
roadmap-to-workflowauto-mark — checkbox ticking is pinned to an anchoredawkmatch and its fallback path is corrected, so the driver marks the right roadmap item.- Capture flow hardened —
to-task/to-plan/to-roadmap/to-spechandle empty and edge-case inputs cleanly; decline and stop branches now end with the canonical→ Next:footer and aligned resume cues. validatediagnostics — a task-subcommand miss now reports the paths it searched.
Docs
- Contract — documents the 5-state roadmap checkbox class in
docs/contract.md.
[3.0.0] — 2026-07-18
Chat-first rewrite. The pipeline is no longer an orchestration engine with phases, locks, and a hook gate — it is a small set of capture skills. Discuss freely in chat, then fix the discussion into a fixed-format Markdown artifact under .task/ with one short skill; capture depth is the skill name, never a flag. There is no execution skill — every artifact carries a stamped ## Execution block that an ordinary session follows to implement, verify, review, and commit. This replaces the entire v1/v2 surface and is breaking with no automatic migration. See Migration.
Added
- Capture skills —
to-task(captures## Description),to-plan(adds## Plan: Goal / Touches / Logic steps),to-roadmap(a multi-task initiative), andto-spec(a standalone load-bearing technical decision under.task/spec/<slug>.md, referenced by tasks/roadmaps via aSpec:header). Depth of capture is the skill, not a flag. roadmap-to-workflowlauncher — authors and invokes a dynamic Workflow over a roadmap's unchecked items in dependency-ordered waves, opus-plans / sonnet-implements per item by default. The driver ticks each roadmap checkbox after its agent returns OK (never inside the per-item agent).- Stamped
## Executionblock — every artifact carries an English, parser-stable Execution block that a plain session toldimplement .task/task/<slug>.mdfollows: implement the plan, run/verify+/code-review, apply review fixes within Touches, commit perconfig.md→ Commit Format, and tick the roadmap item whenRoadmap:/Source item:are present. - Single artifact contract —
docs/contract.mddocuments the full artifact shapes, producer/consumer table, and bash-layer contract in one place.
Changed (breaking)
- Flat
.task/layout —.task/config/config.md,.task/task/<slug>.md,.task/roadmap/<slug>.md,.task/spec/<slug>.md. No<task-id>/subfolders, noworkspace/, nolog/, no archive — git history is the record. The slug (kebab-case, derived from the title) is the identity; task-ids and[TASK-ID]brackets are gone. - Bash layer shrunk —
resolve-ws.shis now a pure.task/-root finder (no workspace resolution, no pointer read/write/self-heal). Onlyvalidate.shandroadmap.shremain alongside it. - Orchestration delegated to the platform — verification, review, and per-item fan-out use
/verify,/code-review, and dynamic Workflows instead of hand-rolled skill logic.
Removed (breaking)
- Skills —
bootstrap,design,build,ship,roadmap, andauto-roadmapare removed, along with all phase companion files and the nine audit/runner subagents. - Bash machinery — the lock protocol (
auto-locks.sh), phase detection (phase-detect.sh), fail-log (fail-log.sh), touches-gate (touches-gate.sh),derive-task-id.sh,preamble.sh, and the auto-roadmap helpers are all gone. - Layout markers — the active-task pointer,
TASK_ID_OVERRIDE, per-worktree pointer files, and the roadmap.spec.mdsidecar are removed. Pipeline markers are exactlygit config task.rootplus the.taskexclude entry. docs/spec/*— replaced by the singledocs/contract.md.
Migration
- No automatic migration from a v1/v2
.task/workspace — this is a clean cut. Start fresh: discuss in chat, then runto-task/to-plan/to-roadmap/to-spec. - Replace
/task:design+/task:build+/task:shipwith: capture viato-task/to-plan, then tell a sessionimplement .task/task/<slug>.mdand let it follow the stamped## Executionblock. - Replace
/task:auto-roadmapwithroadmap-to-workflowover a.task/roadmap/<slug>.md. - Replace
/task:bootstrap— the four capture skills auto-run setup inline in a fresh project.
[2.0.0] — 2026-07-13
Interactive-first release. The pipeline now carries a task through each phase with structured questions, so a single bare command replaces most flag fiddling; the advanced flags stay fully functional but move off the everyday surface into a documented "Escape hatches" registry. This release also removes several redundant flags/modes and reworks the multi-worktree .task/ model — both are breaking. See Migration.
Added
- Interactive structured-choice layer — discrete path forks are now asked as
AskUserQuestionchips in interactive runs: design's fresh-start entry fork and--fromitem picker, build's implement→audit advance,/task:auto-roadmap's roadmap picker and item-scope question (all remaining / only next / pick range). Interactive-only — the autopilot runners still pass explicit flags. - Design phase-advance loop — after each design phase the skill re-detects state and asks once before chaining (Description-ready → build the plan; plan-ready → invoke
/task:build), so one/task:designinvocation walks the whole design half instead of needing repeated calls. - Bootstrap language + testing-policy detection —
/task:bootstrapnow detects the repo's language policy and testing-policy mode and presents both as a single accept/decline/edit proposal instead of asking cold. - Roadmap decision harvest —
/task:roadmapcan harvest decisions already settled in the prior conversation into a confirmed Decision Inventory before drafting, converging with the cold-start path on one pre-draft decision list. - Roadmap light self-check — after authoring,
/task:roadmapruns a report-only three-lens self-check (Coverage / Decomposition / Clarity) over the saved file and offers--refineinline only when findings warrant escalation.
Changed
- Question-driven cycle; advanced flags hidden —
--idea/--from/--auto/--next/--refine/--phaseare removed from README signatures, skilldescriptionfrontmatter, examples, and every user-facing next-step footer. The surviving flags remain functional and are documented once indocs/troubleshooting.md§ "Escape hatches", each paired with its interactive equivalent;/task:auto-roadmap's own flags stay a documented power surface. - Clean build proposes ship; ship commit composed from artifacts — a clean interactive build flows into ship's single accept/decline/edit confirmation, and the commit header+body are composed from
summary.md(fallbacktask.md) rather than free-text authoring. The audit tail is quieted to a one-line### Resultsummary (full detail stays inaudit.md; blocking findings are always shown in full). - Bootstrap auto-runs on first design/roadmap — the first
/task:designor/task:roadmapin an unconfigured project auto-runs/task:bootstrapinline, then continues the original request (stops only if you decline). - Roadmap
Sizecomputed,Classinferred —Sizeis derived from the### Outcomescount and**Class:**is a best-effort inferred, user-overridable hint; a codified archive path replaces ad-hoc naming. - Stale active-task pointer self-heals — a provably-stale pointer (empty / missing workspace subfolder) is cleared with a one-line notice instead of hard-stopping.
- Canonical next-step footer + one interaction grammar — every core command ends with a
→ Next:footer (or→ Done.), and content confirmations use one accept/decline/edit grammar. - Faster
/task:auto-roadmapper item — per-item token load and interactive validate round-trips trimmed; per-item time cut via the model split and lighter audit.
Changed (breaking)
- Multi-worktree
.task/model reworked — the.tasksymlink and/task:bootstrapjoin-mode are removed. All worktrees of a repo now share one.task/resolved viagit config --local task.root(written by bootstrap;dirname(git-common-dir)fallback), and the per-worktree active-task pointer moved from the worktree-root.task-currentinto git's per-worktree dir (git rev-parse --git-path task-current). Bootstrapped repos migrate automatically on the next command.
Removed (breaking)
/task:ship --fulland the hand-supplied commit slug —/task:shiphas one mode (full close); the slug is always auto-derived. Both removed forms now fail loud./task:ship --nextsubtask-transition mode — removed. This also fixed a bug where--nextwiped a subtask's Description without archivingtask.md; every close now archivestask.md./task:build --auto— removed; the interactive implement→audit advance question replaces it (the audit ≤2-iteration bound is unaffected)./task:design --ideaand the design idea phase — removed; brainstorm a task in chat, then run/task:design "<description>".--full chore-finalizerecovery convention — collapsed to a bare/task:ship.validate.sh todolegacy intake name — removed; usevalidate.sh roadmap <path|slug>.
Migration
- Run bare
/task:ship(default full close, slug auto-derived) instead of/task:ship --fullor/task:ship <slug>. - Clean up an aborted
/task:auto-roadmaprun with a bare/task:shipinstead of/task:ship --full chore-finalize. - Replace
/task:build --autowith a normal/task:buildand accept the implement→audit advance question when prompted. - Replace
/task:design --ideaby discussing the task in chat first, then/task:design "<description>"; work a multi-item roadmap by re-running/task:design --from <roadmap>per item. - Reach design's plan-refine via
/task:design --phase refine(repair-level, documented indocs/troubleshooting.md). - Use
validate.sh roadmap <path|slug>in place ofvalidate.sh todo. - Multi-worktree setups: standalone per-worktree
.task/is no longer supported — all worktrees share one.task/viagit config task.root, migrated automatically on the next command. To point the pipeline at an existing.task/yourself:git config --local task.root /abs/path/containing/dot-task.
[1.1.0] — 2026-07-11
Added
- Bootstrap onboarding primer — after writing
config.md,/task:bootstrapnow prints a fixed-template primer that teaches the mental model at first value: the four.task/artifacts and what each holds, phase auto-detect on re-run, the umbrella/subtask model, and the exact next command. Static template (localizable perconfig.md→ Language).
Changed
/task:auto-roadmapcollapses the per-item cycle into one item-runner subagent — now that nested subagents are supported, each item's design → implement → audit → ship runs inside a single disposableauto-roadmap-item-runner, returning only a compact report-card digest to the driver. Driver context stays flat, lifting the previous ~15/~25-item auto-compact ceiling on long runs. The per-stage model split, fail-stop, sentinel, and cross-worktree contracts are preserved;is_lastis now computed via checkbox look-ahead, fixing a latent dangling-umbrella case when a trailing item was already done.- Skill descriptions rewritten as trigger→result — the six user-invocable skill descriptions drop the internal
[N·phase]prefix codes (which collided across skills) in favor of a when-to-use then what-it-does form, so the/menu reads as guidance rather than pipeline taxonomy. - Design open names the plan-building next step — the quick-draft next-step hint now names the action and the artifact (review
task.md, then run/task:designagain to buildplan.md) instead of the opaque "auto-enters blueprint", removing the most common stall before a first ship. - README and troubleshooting reworked for new users — a copy-paste quickstart leads the README (the dense flag list is demoted to a "Command reference"), a new safety section states upfront what the pipeline touches in your code and git, and the troubleshooting page is rewritten around first-run symptoms keyed on the literal strings the tool prints.
[1.0.1] — 2026-07-10
Changed
- Tool-agnostic references — the authoring guidance and heuristic lists no longer privilege specific products or language stacks. The pipeline already resolved all tooling from
config.mdat runtime; now bootstrap's config-authoring guidance and the README use role-based phrasing, the roadmap per-task verification reminder and the commit fallback template defer toconfig.md, andtouches-gatepath extensions plusaudit-contextlockfile excludes broaden to a language-agnostic superset (a missing entry only skips a fast-path, never yields a wrong result).
Fixed
- Pipeline root discovery —
.taskis now located by a git-style upward walk (find_ai_dirin_lib/resolve-ws.sh) instead of being assumed at the current working directory. Skill bash helpers (validate.sh,phase-detect.sh, the context scripts,close.sh,auto-roadmap-context.sh) previously failed withconfig.md not foundwhenever the shell had drifted out of the project root; they now resolve.taskfrom any subdirectory. Linked-worktree.tasksymlinks are preserved (so the local.task-currentis still found), and a call from outside any project still fails cleanly with the same message. - Roadmap sidecar enumeration —
/task:auto-roadmapand/task:roadmap --refineno longer list<slug>.spec.md/<slug>.refine.mdsidecars as spurious "[malformed]" or empty roadmaps when enumerating.task/roadmap/. Both enumerators now skip the sidecars, matching whatvalidate.shalready carved out.
[1.0.0] — 2026-06-23
First public release. A linear task pipeline for Claude Code — design → build → ship — with explicit, file-backed checkpoints and an off-cycle roadmap track.
Added
- Pipeline skills —
/task:bootstrap(one-time per-project config),/task:design,/task:build,/task:ship, plus the off-cycle/task:roadmapand the/task:auto-roadmapautopilot. Phase-decomposed orchestrators (design→ open / idea / blueprint / refine;build→ implement / audit) dispatch to companion phase files. - Artifact contract — every stage reads and writes plain Markdown under
.task/(task.md,plan.md,audit.md,summary.md), reviewable without the agent and enforced by a PreToolUse validator hook. - Read-only audit lenses — six auditor-class subagents (Reuse / Simplicity / Clarity for the build audit phase; Coverage / Decomposition / Clarity for
/task:roadmap --refine) fan out in parallel; build audit runs a bounded, scope-gated auto-fix loop. - Roadmap autopilot —
/task:auto-roadmapdrives a whole roadmap item by item in the interactive session, with a per-item model split (cheaper model for the implement stage viaplan.md → Implement-Model:).
Full release history and downloads: GitHub releases.