Documentation and consistency fixes surfaced by two independent release-readiness reviews. No behavior change: the loop, gates, and schemas are identical to 3.1.0.
- Examples are concrete, not templates. The README described the
examples/<stack>/files asYOUR_*_HEREplaceholder templates, but they are concrete, stack-specific instances. Reworded to "copy the closest to.devloop/and adapt it." - Examples surface the directory settings. Each
examples/*/config.mdnow shows thespec-directory/tracker-directorysettings (with defaultsdocs/specs/and.devloop/trackers/), matching what the README saysconfig.mdowns. - Accurate config cross-references.
quality-checklist.mdnow cites the real config headings (§Standards to Verify,§Blindspots to Check);examples/*/domain.mdattributes the Domain-Specific Concerns section to the Clarification Taxonomy (§9), not the Validation Checklist (which has only §1-8); andchunk-template.md's state-holder pointer now resolves toimplement SKILL.md §2.2instead of a non-existent§3.1. /implementProcess Overview now states that a passingplan_reviewisPASSorPASS-WITH-WARNINGS(it previously named onlyPASS).- Marketplace descriptions de-drifted. Both
marketplace.jsoncatalog entries now match theirplugin.jsondescription verbatim, so there is one canonical blurb per harness. validate.shhousekeeping. The dash guard now also scansexamples/*/config.mdandexamples/*/domain.md(published files a user copies into.devloop/); a stale comment referencing an uncommittedevals/directory was removed.
A single project-local home for devloop's per-project files: .devloop/.
This fixes config discovery under a plugin install (where the skills live
in a read-only shared cache and a PROJECT.md beside SKILL.md never
resolves in the user's project) and gives trackers a stable home outside
docs/.
.devloop/convention: skills and agents read project config from.devloop/in the project root:config.md, engineering config (build/test/lint commands, architecture rules, standards, blindspots, commit conventions, and the spec/tracker directory settings), read by/plan,/implement,review-plan,review-impl,red-team, and/spec(for the spec-directory setting).domain.md, pure domain knowledge (domain context, architecture overview, domain-specific concerns, existing patterns, quality standards), read by/spec.trackers/, home forimpl-tracker-<feature>.json, written by/plan.
- Config discovery: each skill and agent resolves config as
.devloop/<file>in the project, else generic mode. This is why a plugin install now works: the read-only cache holds the skills, but they read.devloop/from the project. There is no copied-inPROJECT.mdfallback (the old template files are removed);.devloop/is the only project-config source. validate.shsection 17: fails if a core file reintroduces the plugin-cache config pointer ("plugin's skill directory") and requires each skill and review agent to name the.devloop/home.validate.shsection 16 now also rejects en dashes (not just em dashes), closing a gap in the standard-punctuation guard.- Plugin marketplaces:
.claude-plugin/marketplace.json(Claude Code) and.agents/plugins/marketplace.json(Codex, its native catalog location) so devloop installs via/plugin marketplace add KashZod/devloopthen/plugin install devloop@kashzod, and thecodex plugin marketplace add/codex plugin addequivalents.
- Config ownership:
config.mdowns the operational paths (spec directory, tracker directory) alongside the engineering settings;domain.mdis now purely domain knowledge. Commit conventions live only inconfig.md(read by the skills that commit)./specreads its output path fromconfig.mdand its domain context fromdomain.md. - Tracker home:
/planwrites trackers to.devloop/trackers/by default (wasdocs/);/implement,review-plan, andreview-impllook there. - Example configs live in one place per stack under a top-level
examples/<stack>/(typescript-node,python,rust,android-kotlin), each holding aconfig.mdand adomain.md; copy the closest directory to.devloop/. This replaces the splitskills/spec/project-configs/(domain) andskills/implement/project-configs/(engineering) layout, andvalidate.shnow checks the examples in a single section (the former duplicate example-config check is removed). /implementPhase 3 sizes thered-teamhalf by diff size, the same way/plansizes work (its Trivial / Small / Medium+ / Large table). A single-file change (or a trivial one with no new logic) runs onered-teaminmode: both, unchanged from before. A broader, multi-file or cross-cutting diff (/planMedium+ and Large) splits thered-teamhalf into parallelmode: bugsandmode: cleanupruns so neither family crowds the other out.review-implruns alongside in every case. Becausered-teaminmode: cleanupcan apply fixes, the split invokes thecleanuprun report-only, so all three concurrent agents only report and the parallel gate stays read-only. No newred-teammode was added; report-only is an invocation instruction insidecleanupmode.validate.shsection 18 asserts the Phase 3 spawn stays size-adaptive (it names themode: both,mode: bugs,mode: cleanup, andreport-onlymarkers), so a future edit can't silently revert to the fixed single-agent gate.
- Move in-flight trackers. Trackers previously written under
docs/now live in.devloop/trackers/, and this release drops thedocs/read-fallback. Move any existingdocs/impl-tracker-*.jsoninto.devloop/trackers/, or pass an explicit tracker path when invoking/implementor the review agents. - Migrate an old
PROJECT.md. The copied-inPROJECT.mdfallback is gone;.devloop/is the only project-config source. Split any oldPROJECT.mdinto.devloop/config.md(engineering settings and paths) and.devloop/domain.md(domain knowledge), or copy the closestexamples/<stack>/directory as a starting point.
- Valid Claude Code manifest.
.claude-plugin/plugin.jsonno longer enumeratesskills/agentsas arrays of objects, a shape the current schema rejects (claude plugin validatereportedskills: Invalid input/agents: Invalid input). Claude Code auto-discoversskills/andagents/, so the keys are dropped; the manifest now passesclaude plugin validate --strict. The Claude manifest also gainsrepositoryandlicense, matching the Codex manifest.
Three-command split, a harness-agnostic rewrite, and a de-overlapped
review layer. The loop is now /spec -> /plan -> /implement, mapping to
three gates (spec validation, plan review, code review) one gate per
command, with a convergence back-edge where /implement re-runs the
plan-review gate in-session. This release rolls up every change since
2.5.0. Breaking change: /implement no longer plans.
/planskill: decomposes a spec into an ordered, dependency-aware chunk plan, writes the JSON tracker, and runs thereview-plangate before any code is written. This is the old/implementPhases 1-2.5 (analysis, chunk decomposition, dependency graph, tracker creation, plan-review gate), promoted from a buried mid-/implementcheckpoint to a first-class command. The plan-review gate is the most important checkpoint in the loop, now its own visible step.- Convergence back-edge: when a code-time finding (Phase 3) reveals
that the plan was wrong (not just the code),
/implementappends corrective chunks to the tracker and re-gates in-session by spawning thereview-planagent directly (not by re-invoking/plan, which would regenerate the tracker), preserving completed chunks and looping under a bounded guard until the plan and code converge./plangained a/spec-style detect-existing-tracker branch so a re-run merges into the existing tracker instead of resetting completed work. spec_doctracker field:/planrecords the source spec path so/implementandreview-implbind to the exact spec instead of globbing the spec directory (sharpens spec -> tracker traceability).- Shared concern vocabulary: the seven concerns common to
review-plan(plan-time) and the Phase 3 checklist (code-time) are now documented as one vocabulary inquality-checklist.md, so the reviewers speak the same language at both altitudes (the eighth concern is phase-specific: TDD Quality of the plan vs Blindspots in the code). - Three-state acceptance-criteria verification:
review-implclassifies each criterion CONFIRMED / PLAUSIBLE / REFUTED, each backed by a quoted line, recall-biased (default PLAUSIBLE; only CONFIRMED when a real test would go red on regression). Ported from thered-teamverification model. - Spec validation evidence rule: every WARN/FAIL in the spec validation checklist must quote the exact spec line it refers to, the same discipline the review agents apply to code.
- validate.sh checks: a harness-agnosticism check fails if any
harness-specific mechanic (
Shift+Tab,Ctrl+G,/compact,/rename,--resume, and similar) reappears in the skill or agent prose; the structural suite (~220 checks) also enforces the three-skill layout, phase sequencing, JSON validity, no project-specific leaks, and no em dashes in any published file. - Empirical validation: the higher-risk changes, the
review-impl/red-teamde-overlap (does a defect ever fall between them?) and the three-state false-positive catch, were validated with an A/B eval harness over seeded fixtures rather than by inspection alone.
/implementis now build-only (3 phases): Load the Plan (locate the tracker, hard-stop unless itsplan_reviewgate passed, orient on the next chunk), TDD Cycle per chunk (red/green/verify), and Quality Verification (8-point checklist + parallelreview-impl+red-teamgate). It refuses to start the TDD cycle on a tracker whoseplan_reviewis missing or FAIL, telling the user to run/planfirst./spechands off to/planinstead of/implement; its downstream mapping now routes spec sections to/plan(analysis, chunking) and/implement(tests) phases.- Plan artifacts moved with the plan:
tracker-schema.mdandchunk-template.mdnow live underskills/plan/references/;quality-checklist.mdstays underskills/implement/references/(it is the Phase 3 code checklist). Each skill cross-references the one shared file it needs. - review-impl narrowed to a conformance gate: it verifies plan match,
acceptance criteria (with quoted test evidence), test quality, and
regression only. Adversarial correctness, robustness/blindspots,
standards violations, and cleanup are deferred to
red-team, which already does them better. This removes the overlap between the two Quality-Verification reviewers while preserving their conformance-vs-correctness separation. - Harness-agnostic instructions: removed terminal-specific mechanics from the skill prose in favor of portable behavior. Plan presentation states the principle (planning is read-only; present a plan; get explicit approval) and lets the harness supply the mechanism; context management and session resumption describe the intent instead of naming specific keystrokes or commands. Exploration and check-running steps use conditional phrasing: use a subagent or parallel-tool capability if the harness has one, otherwise sequential is the default. The workflow tables are retitled "Mapping to the Explore -> Plan -> Code Loop" with no harness brand in the header.
- review-plan / review-impl repointing:
review-plan's description now says "in the /plan skill"; both agents read "the project's engineeringPROJECT.md" rather than "PROJECT.md in the skill directory" (there are now three skills);review-impl's Criterion 5 and the checklist reference/implementPhase 3 (Quality Verification). Agent names are unchanged (review-plan,review-impl,red-team). - review-plan Criterion 1 renamed "Scope, Completeness & Traceability" with explicit spec -> plan -> tracker forward/backward traceability language.
- Scaffolding trim: default to continuing multi-chunk work in one session rather than resetting between chunks; reset only when context degrades. Chunk decomposition prefers the fewest independently-testable chunks.
- The workflow gains one user-invoked step: after
/spec, run/plan, then/implement. Trackers created by an older/implementrun without aplan_reviewfield will be refused by the new/implement; run/plan(pointed at the existing tracker/spec) to gate them, or setplan_reviewmanually if the plan was already reviewed. Hand-settingplan_review: "PASS"bypasses the review-plan gate:/implementtrusts the field and cannot tell a gate-written verdict from a typed one.
Hardening from an adversarial review of the whole v3.0.0 design:
- Plan-time gate crash-safety, the symmetric twin of the convergence
fix.
/plancreates the tracker withplan_review: "PENDING"(never a pre-stampedPASS), writesFAILto disk before re-running on a gate FAIL, and bounds the FAIL/re-run loop, so a crash mid-review can no longer leave a stalePASSthat/implementwould build against. errorandin_progresschunks are no longer dead-ends.erroris documented as non-terminal (re-entered likein_progress);/implementPhase 1.3 validates the chunk graph (rejectingdepends_oncycles and dangling ids); resumption re-enters an unfinished chunk before searching for the nextpendingone, so a blocked feature is surfaced, not silently left with the Phase 3 gate un-triggered.- Convergence re-gate loop is now counted.
convergence_roundsis bumped before eachreview-planre-gate (not only when chunks are appended), so the two-round cap bounds the re-gate loop too; a bail-out cleanup path is documented. - Spec back-edge. A finding that an acceptance criterion itself is
wrong now routes to
/spec(update mode) instead of into the plan gate built to reject it. - Honest degradation without subagents / without a project rule file.
The gates document that a harness with no subagent capability degrades
to a non-isolated self-check;
/implementPhase 3 covers standards and architecture with a self-check when noPROJECT.md/CLAUDE.mdexists (wherered-team's conventions angle would otherwise return nothing). - Docs. Softened the "1:1 gates" phrasing (
/implementtouches two gates via convergence); README's table notes review-plan's convergence spawn; tracker writes documented as atomic.
- red-team
mode: cleanupcan now apply fixes: addedEdit/Writeto its tools so the tidy pass can edit files, not just report. - red-team is no longer git-only: Phase 0 shows git as the common case but instructs substituting another VCS (hg, jj, Perforce) or asking the caller for the changed set, and clarifies that a tracker or plan path is context, not the review target.
/implementdegrades gracefully with no PROJECT.md: infers the test/build commands, confirms them with the user, notes the miss in the tracker, and suggests creating one, matching how/specalready behaves.- Wired the conventions angle into every red-team mode and disambiguated
"all modes" from the mode literally named
both.
- review-impl no longer treats the post-implementation document as mandatory; its absence on a small self-contained change is no longer a false finding, matching the implement skill's conditional-docs rule.
- The plan-review gate branches on the verdict review-plan actually
emits (
PASS-WITH-WARNINGS) instead of aWARNvalue it never produces. /implementreads the spec directory fromPROJECT.md(defaultdocs/specs/), matching where/specwrites, instead of a hard-coded path.- README install now documents both
PROJECT.mdtemplates, points at theproject-configs/examples, and clarifies wherePROJECT.mdlives for plugin installs. - Removed every em dash from the repository in favor of standard punctuation.
Renamed from ai-agent-dev-workflow to devloop.
red-teamagent, adversarial diff reviewer that hunts correctness bugs (5 angles) and flags cleanup (reuse, simplification, efficiency, altitude), verifies each finding (recall-biased, 3-state), then sweeps for gaps. Modes:bugs,cleanup,both. Thecleanupmode is a standalone tidy pass.
- Renamed the
tddskill toimplement. - Phase 6 quality gate now spawns
review-impl+red-teamin parallel instead ofreview-impl+/code-review. A skill runs in the main loop and cannot invoke another skill or slash command, so it could not trigger/code-review.red-teamports the same finder-angle engine into an agent the skill can spawn via the Agent tool. - Post-implementation documentation is now conditional (write it when the work outlives the session or has deferred follow-ups; skip it for small closed fixes) instead of mandatory for every change.
- Sharpened the scaffolding-calibration guidance for strong-instruction-following models: prefer fewer/larger chunks and fewer resets; keep the tracker and review gates; make bug review recall-biased-then-verified rather than conservative single-pass.
- Dependency on
/code-reviewfrom within theimplementskill (a skill cannot invoke it). - The
extension.ymlspec-kit manifest..claude-plugin/plugin.jsonis the single source of truth; the spec-kit convention added a second manifest to keep in sync with no consumer in this project.