Changelog
All notable changes to the agentic-engineering plugin. This project follows Semantic Versioning and Keep a Changelog conventions.
v4.0.0
2026-07-14 Major ReleaseChanged
- BREAKING — every command is now a skill;
/workflows:*invocations no longer exist. All 28 command files underplugins/agentic-engineering/commands/were migrated into 27 skills (skills/<name>/SKILL.md) and thecommands/directory was deleted. The plugin now ships zero commands. The 8workflows:*commands are renamed to hyphenated skills —workflows-brainstorm,workflows-compound,workflows-groom,workflows-merge,workflows-orchestrate,workflows-plan,workflows-review,workflows-work— because skill directory names allow only lowercase letters, numbers, and hyphens (no colons). Every/workflows:*invocation breaks: scripts, muscle memory, external docs, orchestrator hand-offs, and any other tooling that typed/workflows:plan,/workflows:review, etc. must switch to/workflows-plan,/workflows-review, and so on. No alias, redirect, or back-compat shim is provided — the old colon names are gone. This is the reason for the MAJOR version bump. - 3 underscore-named commands were hyphenated to satisfy the same skill-naming constraint:
generate_command→generate-command,resolve_parallel→resolve-parallel,resolve_todo_parallel→resolve-todo-parallel. Invocations using the underscore forms break. - Skill frontmatter parser reached parity with command parsing.
loadSkills()now parsesallowed-toolsandargument-hintfromSKILL.mdfrontmatter (previously only the command loader read these), so migrated skills keep their tool grants and argument hints intact across every conversion target. - OpenCode
"from-commands"permission derivation now also reads skillallowed-tools. Previously it derived permissions only from commands; a skills-only plugin like this one (now thatcommands/is gone) would have silently degraded to an all-deny permission set. The derivation now includes skillallowed-tools, so this plugin converts to a correct, non-empty OpenCode permission set. plugins/agentic-engineering/.cursor-plugin/plugin.jsondropped itscommandsfield — the Cursor native manifest no longer wires a commands directory, since none exists.- Component counts and manifest descriptions updated across all manifests (
plugin.json, rootmarketplace.json,.cursor-plugin/plugin.json,.codex-plugin/plugin.json), both READMEs, and the docs site: 31 agents, 62 skills, 0 commands, 1 MCP server (the 62 skills = 35 pre-existing + 27 migrated). The "commands" clause was removed from every description. - Sharpened
resolve-parallelandresolve-todo-paralleldescriptions so they no longer collide in skill routing. Once both former commands became skills they shared near-identical descriptions ("Resolve all TODO comments using parallel processing"); their frontmatter now distinguishes source-code TODO/FIXME annotations (resolve-parallel) from the file-basedtodos/markdown tracker (resolve-todo-parallel).
Removed
create-agent-skillcommand deleted — it was a redundant wrapper. Use the pre-existingcreate-agent-skillsskill directly (note the trailings).commands/directory removed entirely. The 28 commands migrated to 27 skills (the redundantcreate-agent-skillwrapper was dropped rather than migrated, accounting for the 28 → 27 delta).
v3.22.0
2026-07-13Added
- Native Cursor and Codex packaging — sync
.cursor-plugin/plugin.jsonto Claude version/counts and wireskills/agents/commands/hooks(hooks/hooks-cursor.json) / MCP; add.codex-plugin/plugin.jsonplus root.agents/plugins/marketplace.jsonso Codex can install from this repo without the Bun CLI. Native Codex surface is skills + MCP + safety hooks (agents/commands stay on Bun--to codex). - Cross-platform hook contracts — Cursor safety hooks now fail closed, and the Slack credential guard understands Codex's canonical
apply_patchpayload while scanning only newly added lines in non-documentation files. - Cross-harness safety hook adapters —
hooks/hooks-cursor.json(CursorbeforeShellExecution+ WritepreToolUse) andhooks/hooks.json(Codex${PLUGIN_ROOT}) shipblock-no-verify,prevent-main-commit,block-slack-webhook, andblock-db-push. Sharedscripts/hook_payload.pynormalizes Cursor payloads into the Claude shape. Nudge / SDD-cache / TodoWrite / Stop tracker hooks remain Claude-primary (documented inscripts/HOOKS.mdharness matrix). - Manifest parity CI —
tests/plugin-consistency.test.tsasserts Claude / Cursor / Codex plugin versions match and required packaging + hook config files exist, with script-path existence checks for Cursor/Codex hook entries.
Changed
- README install section — Claude / Cursor / Codex native install first; Bun
--to cursor/--to codexmarked secondary (legacy / full convert).
v3.21.3
2026-07-13Fixed
documentation-healthagent audit tier ran degraded — it could neither run the scanner nor post a review (follow-up to #128/#130). After the startup-crash fix, the audit agent started but ran deny-by-default: CI's non-interactive mode denies every non-read-only tool when no allowlist is given, so theSkilltool and thepython3scanner were both denied and the tier fell back to emitting--json-schemastructured output only — it never ran the deterministic scan itself nor posted its propose-only PR review. Granting the tools has a where-matters wrinkle that this fix encodes: the scanner + skill grants (Bash(python3:*),Skill,Read,Glob,Grep) go in thesettingsinput (parsed as JSON — noshell-quotemangling — and written to user-scope~/.claude/settings.json, whose allow rules apply headless without a workspace-trust dialog), while the single review toolmcp__github__create_and_submit_pull_request_reviewgoes inclaude_argsas--allowedTools(the action injects its GitHub MCP server only when anmcp__github__*tool appears there;--allowedToolsis *additive* with the settings allowlist, not a replacement). Bash-pattern rules must stay out ofclaude_args—shell-quotemangles their parens/colons, the same failure class as #128. The review tool posts one body-only formal PR review as the Claude App, which works for whole-repo findings off the PR's diff (the inline-comment server is diff-line-anchored; the sticky-comment server needs a tracking comment agent mode never creates). Fixed in both this repo's workflow (.github/workflows/doc-health.yml) and the consumer template (skills/documentation-health/assets/doc-health.yml); the mechanism is documented inreference.md"Continuous integration".- README + docs pointed users at the non-canonical
aagnone3/agentic-engineeringfork instead of the canonical originLife-With-Data/agentic-engineering— the very must-fix the now-working audit tier flagged on its first real run (dogfooding paying off). The marketplace-install command, thenpx github:install/sync commands, and the CI/Release badges inREADME.md, plus the install snippets and links indocs/index.htmlanddocs/pages/getting-started.html, and therepositoryfield in the plugin manifests, all named the personal fork and misdirected the install path. Repointed toLife-With-Data. Deliberately left untouched: the author's personal profile URL (author.url→github.com/aagnone3, which is correct — the author *is* aagnone3), historical CHANGELOG entries, and the recordedghtest fixtures / fork-trap tests that useaagnone3as their simulated-origin scenario.
v3.21.2
2026-07-13Fixed
documentation-healthCI template crashed the agent audit tier at startup (#128). Theauditjob's--json-schemavalue inclaude_argsused bare double quotes.claude-code-actiontokenizesclaude_argswith theshell-quoteparser, which strips those quotes, so{"type":"object",…}reached the CLI as{type:object,…}— invalid JSON — andclaudeexited 1 within ~0.4s, before running the scanner, doing the judgment pass, or posting a review. This masqueraded as an auth/version/settings crash (all ruled out by direct-invocation repro; the SDK-spawned argv proved the quotes were gone). Backslash-escaping the quotes (\") makesshell-quoteemit literal quotes so the CLI parses valid JSON. Fixed in both the consumer template (skills/documentation-health/assets/doc-health.yml) and this repo's own workflow; verified the audit then runs a full multi-turn pass and emits structured output.
v3.21.1
2026-07-13Changed
- Codified the board-granularity operating assumption: one board per owner, aggregating that owner's repos — not one board per repo. The
lifecycleskill's "Modes and the join-key contract" section now states it explicitly: a board belongs to an owner (org or user), the engine drops/never-writes foreign-repo items and scopes join keys to origin (so a single org board can track many repos while each command acts only on its own), the owner must equal the origin owner, and the cross-owner case is an out-of-bandgit config agentic.trustedBoardOwnersescape hatch — never the config file. Previously this was implicit in the code but undocumented.
Fixed
- This repo's board config was in an
owner_mismatchfailure state —agentic-engineering.mdpointed at the personalaagnone3/projects/5board while origin is the orgLife-With-Data, so every board operation hard-errored (/lifecycle-doctorFAILedboard_config). The board had migrated to the org (Life-With-Data/projects/1, which carries the full 9-stage schema) without the committed config following. Repointed toLife-With-Data/ project1, aligning owner with origin per the codified assumption above. (Effective once merged to the main working tree — the engine reads committed board config frommain_root, so the fix can't be live-verified from a worktree.)
v3.21.0
2026-07-13Added
- Sub-issue status is now a first-class, stakeholder-readable track. Sub-issues decompose a parent and roll up into the *parent's* PR, so they never earn their own
in_review/shippedboard stage — which left them with only open/closed as visible state, too coarse for a business stakeholder to read "what is happening right now." The lifecycle engine gains a--sub-status <N> <in_progress|in_review|blocked|done>verb that drives a mutually-exclusivestatus:*label (status:in-progress/status:in-review/status:blocked;donestrips everystatus:*label and closes the issue as completed — an orchestrator close, not a PR auto-close). Labels are repo-scoped, so the verb needs no board and runs ingithubmode too, self-creating its labels with colors that mirror the stage palette. The invariant — at most onestatus:*label per issue — is enforced by the verb (a swap, not an add) and covered by seven new cases intests/lifecycle_board_test.py. Defined in thelifecycleskill (new *Sub-issue status* section + one-writer table row) with the concreteghcalls inreferences/gh-recipes.md. - Seam gate + drift flag against status snowballing. Because agents don't deterministically do the right thing, the lifecycle now *verifies a predecessor step finished before allowing the next transition*, at the one seam where a mistake gets buried:
--set-status <N> in_reviewrefuses (error_code: open_sub_issues) when the parent still has open sub-issues — enforcing in the engine what/workflows:workPhase 4 only stated in prose, so an agent that skips the checklist can't mark a parent ready-for-review and let the merge →shippedautomation quietly ship unfinished decomposed work. The reconciler and deliberate operator/CI moves pass through with--force; a new report-only reconciler flagin_review_with_open_subissuescatches parents that reached that state via a forced/out-of-band path (rule-5 reality-sync, a human drag). Both use data already fetched (no extra queries) and are covered by six new tests. Deliberately scoped to this one high-value seam — sub-issue label-residue scans and board-wide audits were assessed as overkill. /lifecycle-doctornow verifies the one native automation the lifecycle depends on — the built-in "Item closed" Projects workflow is the sole writer of→ shipped(no engine verb owns it), so a human silently disabling it means merged PRs close issues but Status never advances toshipped. The doctor gains anitem_closed_workflowcheck (via a newproject_workflowsAPI reader) that FAILs if it is off — bootstrap only checked it once at setup; the doctor now re-checks every run. GitHub's Projects API exposes only a workflow'sname/enabled(never its action config) and no enable/create mutation, soenabledis the one bit that can be verified.
Changed
/workflows:workand/workflows:orchestratenow drive sub-issue status at the execution boundaries — dispatch →in_progress, hand-back →in_review, acceptance verified →done(replacing the rawgh issue close), openblocked-by→blocked. The owning agent writes every--sub-status; dispatched sub-agents never touch GitHub state, preserving the one-writer invariant so status stays faithful whether the owner implements inline or delegates. Component counts (agents/commands/skills) unchanged — this extends the engine and existing commands.
v3.20.1
2026-07-13Added
documentation-healthgains first-class GitHub Actions support. A new example workflow (assets/doc-health.yml) ships two independent tiers: a deterministicscangate that fetches the zero-dependency scanner at a pinned ref, and an opt-inauditjob that runs the skill insideanthropics/claude-code-actionfor the agent-in-the-loop judgment pass (duplication, Diátaxis mode-mixing, stale commands, README↔CLAUDE.md drift). The audit posts its review *as Claude* (the Claude GitHub App identity) and is propose-only yet blocking: it never pushes to a protected branch, but emits a--json-schemastructured output and fails the check on a judgment-confirmed must-fix, so a real problem blocks merge while scanner false positives don't. The skill is dogfooded on this very marketplace via live repo workflows (.github/workflows/doc-health.yml).- Manifest-version-triggered release automation (
.github/workflows/release.yml): on push tomain, reads the plugin version and cuts an immutablev<version>tag + GitHub Release (notes from the CHANGELOG) when it's new. Chosen over release-please/conventional-commits because the repo already hand-bumps the manifest and maintains the changelog under test — those tags are what the doc-health workflow and external consumers pin to. - One-click adoption via
/setup. The setup skill gains a "Docs CI" step that installs.github/workflows/doc-health.ymlinto the target repo and walks through enabling the agent tier — generate aCLAUDE_CODE_OAUTH_TOKEN(Pro/Max subscription, viaclaude setup-token) orANTHROPIC_API_KEYsecret, install the Claude GitHub App, and mark the checks Required. The scan gate needs no secret; the audit tier accepts a subscription token (pass exactly one credential — an empty second one breaks auth). Reciprocal pointers in the skill and README make the path obvious from either entry point, and both READMEs now route install →/setupwith a "Configure" step so the capability surfaces through the marketplace's config flow rather than sitting behind a skill users must already know to invoke.
Changed
- The scanner (
doc_health_check.py) gains tunable gate strictness via--fail-on {error,warn,info,never}(defaultnever;--strictis kept as a back-compat alias for--fail-on error). Teams can start aterroron PRs and ratchet towarnonce drift is burned down, or runneverfor report-only scheduled sweeps.SKILL.mdandreference.mddocument a "Continuous integration" section covering the two tiers, the strictness dial, the propose-only-yet-blocking rule, and tag-based pinning. No component counts change.
v3.20.0
2026-07-13Added
- New
block-db-push.pyPreToolUse hook — blocksprisma db push(and itsnpx/pnpm/dotenvwrapper forms pluspnpm --filter <pkg> pushscript aliases) before it runs.db pushmutates the live database to matchschema.prisma*without* writing a migration, silently drifting the schema from the migration history; that breaks tests which apply migrations from scratch and means CI/CD and production (which deploy by running migrations) never receive the change. This is the DB-safety sibling of the existingprevent-main-commit/block-no-verifygit guards, and it is inert unless a project actually runsprisma db push, so non-Prisma repos pay nothing. Precision-guarded (quote-stripped so prose/grep/echomentions and legitimatemigrate dev/migrate deploy/generatecommands are never blocked) and covered bytests/block_db_push_test.py. Documented inscripts/HOOKS.md. Adapted from the first-partyagent-leverage/bluestar-intelrepos. Component counts (agents/commands/skills) unchanged — hooks are not counted.
v3.19.0
2026-07-12Added
- New
acceptance-criteria-revieweragent — a focused reviewer whose sole job is to hold a change against the documented Acceptance Criteria and Validation steps of its tracker issue, criterion by criterion, and emit aPASS/FAIL/INCOMPLETEverdict withfile:lineevidence. It deliberately ignores code style, security, performance, and architecture (other agents own those) — the narrow scope and separate context window are the point: an independent verifier, not the author, decides whether "done" is actually done. A criterion is met only when the diff demonstrably makes it true; "can't tell" and "CI is green but no test covers the criterion" both count as *not met*. Review agent count 16 → 17; total agents 30 → 31.
Changed
/workflows:reviewnow runs the acceptance-criteria-reviewer on every pass as the gating conformance check. ItsFAILverdict and each unmet/partial criterion or absent validation step fold into synthesis as P1 findings — and becauseland-pr's merge gate already blocks on unresolved P1s, acceptance-criteria conformance becomes an *enforced* gate rather than implementer self-attestation. This closes the loop opened in 3.18.1, where the criteria and Validation sections were documented but no independent review step evaluated or gated on them./workflows:workPhase 3 gains an optional acceptance-criteria pre-check — the *same* agent, invoked in the implementer's own session before opening the PR, but advisory only (a smell-test, never the gate), so AC gaps are cheap to fix before the PR exists. This mirrors the repo's existing two-tier pattern: inline pre-check for focus/speed, independent stage for enforcement. Context separation is preserved because the authority to gate lives only with the independent review stage, never with the party being evaluated.
v3.18.1
2026-07-12Added
- Canonical issue and sub-issue body templates for the eng workflow —
scripts/templates/issue-template.md(parent) andscripts/templates/sub-issue-template.md(task unit) codify best-practice structure with standard sections: Overview, Problem Statement / Context, Proposed Solution / Implementation Notes, Scope, System-Wide Impact, External System Wiring, Task Breakdown, Acceptance Criteria, Validation (how a reviewer proves it *behaves*, not merely compiles — exact commands + expected result, plus manual and rollback steps), and Dependencies & Risks./workflows:planStep 7 now copies the sub-issue template for every<task_body_file>it creates under a parent, so decomposed tasks share one standard shape instead of an undefined ad-hoc body.
Changed
/workflows:plan's three plan-doc tiers (MINIMAL / MORE / A LOT) now each carry aValidationsection alongside Acceptance Criteria, and Step 4 points at the canonical templates as the reusable source of truth for both parent and sub-issue bodies. Closes the gap where "done" was asserted via acceptance criteria but never tied to a concrete verification the reviewer could run. No component counts change (templates are supporting assets, not agents/commands/skills).
v3.18.0
2026-07-11Added
- New
/workflows:groomcommand — the grooming segment of the pipeline as a first-class flow, supporting the standard bifurcated workflow (intake → groomed work; groomed work → implemented work). It drives an idea, bug report, or stub issue through brainstorm → plan and stops once the work is groomed: Statusplannedon the board, a join-keyed plan doc, and sub-issues with dependencies — exactly the bar/workflows:work's entry gate enforces before a claim. Autonomous by default with a decision log (--steerfor an interactive grooming session), idempotent on already-groomed items (re-runs report and stop; later stages are never re-groomed or regressed), provenance-gated for outsider-authored issues, and hard-stopped: it never claims, never branches, never writes product code, never opens a PR. It owns no lifecycle transition of its own — it sequences the existing/workflows:brainstormand/workflows:planwriters and reads state through theorchestrategate (a pure state read), so the one-writer-per-transition table is unchanged. Bug reports get grooming-specific handling: optional reproduction validation viabug-reproduction-validatorwhen cheap and side-effect-free, with "can't reproduce" treated as a legitimate grooming outcome rather than a failure. Command count 27 → 28.
Changed
/workflows:orchestrategains pipeline-segment flags, orthogonal to the autonomy flags:--groomruns only intake → groomed and stops (the/workflows:groomspec is normative — same ladder, same hard stop, same groomed packet), while--implementstarts from groomed work and refuses to groom on the fly — an item belowplanned, or one whose plan doc is missing, routes to/workflows:groominstead of being silently planned mid-run, so grooming can be reviewed separately before code gets written.--implementwith empty input pulls from--ready-workas before (its items are groomed by definition). The default end-to-end behavior is unchanged./workflows:plan's pipeline-mode note and thelifecycleskill's description/gate section now namegroomalongsideorchestrateas a pipeline driver;FLOWS.mddocuments the groom flow and the bifurcation boundary atplanned.
v3.17.7
2026-07-11Changed
documentation-healthnow audits the cross-tool agent-context layer and the CLAUDE.md lifecycle. Sourced from a deep-research review of CLAUDE.md-management practices, with every load-bearing claim verified against primary sources before adoption (official memory docs, ETH Zurich's arXiv:2602.11988, Vercel's skills-vs-AGENTS.md evals). The scanner gains deterministic checks for: unbridgedCLAUDE.md+AGENTS.mdpairs (Claude Code doesn't read AGENTS.md natively — the official bridge is a thin@AGENTS.mdimport or symlink),AGENTS.mdwith no bridge at all, legacy per-tool configs (.cursorrules,.windsurfrules,GEMINI.md,.cursor/rules/, …), tracked or un-gitignoredCLAUDE.local.md,.claude/rules/*.mdhygiene plus unscoped rules (nopaths:) feeding a new combined launch-context budget, raw/initboilerplate shipped uncurated, shouted-emphasis density, and style rules in prose when a formatter/linter config owns them;./.claude/CLAUDE.mdis now correctly treated as root-level.reference.mdadds Layer 1b (cross-tool context), CLAUDE.local.md/rules checks, a "CLAUDE.md lifecycle" section (two-strike add rule, adherence-based pruning, upgrade-triggered purges, and four behavioral verification tests: cold-start / constraint / command / noise-reduction), and an empirical-grounding note (context files add >20% inference cost without generally improving success; skills went un-invoked in 56% of Vercel's eval cases without triggers). Rejected from the same source doc after verification: a wrong import-depth claim (it said five hops; official docs say four, as the skill already stated), a misquoted eval number (94% vs the actual 56%), and rumor-tier content ("KAIROS" daemon, "Auto Dream" internals). No component counts change.
v3.17.6
2026-07-11Added
- New
documentation-healthskill — audits and repairs the informational health of a repository's documentation across all six layers (root & nestedCLAUDE.md, root & nestedREADME.md, internal-facing docs, external-facing docs). It encodes cited best practices — Anthropic's CLAUDE.md memory guidance (~200-line ceiling, no drifting counts,@importvs on-demand loading), the Standard-Readme required-section spec, Diátaxis mode-separation, docs-as-code hygiene, and GitHub community-health/ADR/CODEOWNERS conventions — as a concrete rule set anchored by one principle: *any fact that lives elsewhere (a count, version, date, command) must be referenced or generated, never hand-copied.* Ships a Discover → Audit → Report → Repair → Codify workflow (SKILL.md), a full cited per-layer checklist (reference.md), and a zero-dependency Python scanner (scripts/doc_health_check.py) that runs on any repo and shells out tolychee/doctoc/markdownlintwhen present. Skill count 34 → 35.
v3.17.5
2026-07-11Changed
- The compounding-knowledge PR is now always submitted with GitHub auto-merge enabled. The
land-docsskill (compound's Phase 3 data lane) previously opened the docs-only PR, blocked ongh pr checks --watch, then merged by hand — which meant the merge depended on the session staying alive until CI finished. It now arms GitHub-native auto-merge (gh pr merge --auto --squash --delete-branch) in the same step the PR is opened, gated only by the docs-only scope check, so the knowledge PR lands the instant checks go green even if the session has already ended. If the repo lacks "Allow auto-merge" the skill reports it as a settings blocker and falls back to watch-then-merge./workflows:compoundPhase 3 and/workflows:orchestrate's compound row are updated to match. No component counts change.
v3.17.4
2026-07-11Fixed
- Caught one landing-page stat the previous release missed — a "Delegate" pillar tool-tag still read "29 specialized agents". Converted it to a nested
data-stat="agents"span so the generator fills it (now 30) like every other stat. Completes the drift-proofing from v3.17.3.
v3.17.3
2026-07-11Fixed
- Landing-page stats are now generator-owned and drift-proof. The docs site's hero, call-to-action, and "Version X released" eyebrow carried hand-written counts that had gone stale ("29 agents, 23 commands, 18 skills", "Version 2.32.2") while the real marketplace-wide totals were 30 / 27 / 35 and the version was 3.17.x. Every on-page stat is now marked
data-stat="<key>"(agents/commands/skills/mcp/version) and filled byscripts/generate-docs.tsfrom the live component counts and plugin version on everybun run docs:build;bun run docs:check(CI) fails if any committed value is stale, andtests/plugin-consistency.test.tsasserts every occurrence matches the filesystem. SEO<meta>descriptions that cited counts were made evergreen (count-free) so they can't drift either. No plugin components change.
v3.17.2
2026-07-11Changed
- Standardized the project name to "Agentic Engineering" across outward-facing surfaces. Renamed the "Compounding Engineering" / "compounding engineering" brand and philosophy label to "Agentic Engineering" in the root and plugin READMEs/CLAUDE.md, the docs site (
docs/index.htmltitle, Open Graph/Twitter meta, logo, hero, philosophy sections) and everydocs/pages/*.htmlchrome title/meta/logo (CE Docs→AE Docs),FLOWS.md,orchestrate.md,HOOKS.md, and thereflect-for-skill-updates/headroomskills. Left intentionally intact: the/workflows:compoundcommand,compound-docsskill, and standalone "compounding" descriptions of the accumulation mechanic (these name an action, not the product); historical CHANGELOG entries; and every provenance reference to the upstreamEveryInc/compound-engineering-pluginrepo (its actual name) and formerplugins/compound-engineeringpaths in archived plans. No component counts change.
v3.17.1
2026-07-11Changed
- De-branded outward-facing references to the original upstream (Every / every.to). The project began as a fork and has since diverged substantially into its own thing; this removes the upstream company and repo from user-facing surfaces. The
every-style-editoragent and skill are renamed toeditorial-style-editor(directory, frontmattername, and the bundled style referenceEVERY_WRITE_STYLE.md→EDITORIAL_STYLE.md), with "Every's style guide" rewritten as "our editorial style guide" throughout and the Every-specific brand-capitalization rule dropped. Theagent-native-architecturereference examples that named the "Every Reader" product are genericized to "a reader app." RootREADME.md(attribution blockquote + external "Learn more" links), the docs-site footer (docs/index.html), and the pluginhomepagefields now point at our own docs site instead of every.to. Historical CHANGELOG attribution and upstream-adoption provenance records (docs/upstream-sources.md, the fork-trap notes inCLAUDE.md) are intentionally left intact — they are accurate history and load-bearing operational records, not branding. No component counts change.
v3.17.0
2026-07-10Added
doubt-driven-developmentskill — in-flight adversarial review of non-trivial decisions, adopted and adapted from addyosmani/agent-skills. Whereverification-loopand/workflows:revieware post-hoc gates on a finished artifact, doubt-driven is an in-flight posture: it materializes a fresh-context reviewer — biased to disprove, not approve — before any non-trivial decision stands. The loop is CLAIM → EXTRACT → DOUBT → RECONCILE → STOP: name the decision and why it matters, extract the smallest reviewable artifact + contract, hand the reviewer ARTIFACT + CONTRACT but never the CLAIM (passing the conclusion biases toward agreement), then classify every finding in strict precedence (contract-misread / valid-actionable / valid-trade-off / noise) and stop on trivial findings, a hard 3-cycle bound, or user override. Includes a "doubt theater" checkable signal (two+ cycles of substantive findings with zero classified actionable = validating, not doubting), rationalization/red-flag tables, and a heavily-gated cross-model escalation protocol (read-only sandbox, prompt piped via stdin not argv, explicit per-invocation user authorization, announced skips in non-interactive contexts). Retargeted to local components: the fresh-context reviewer roster points at theagentic-engineeringreview agents (security-sentinel,architecture-strategist,code-simplicity-reviewer,integration-boundary-reviewer,pattern-recognition-specialist, thekieran-*reviewers) spawned perorchestrating-swarms; docs-fact verification points at the context7 MCP; the post-hoc counterpart is/workflows:review+verification-loop; TDD's RED step (test-driven-development) is doubt made concrete for behavioral claims, withtest-strategy-reviewercovering coverage quality at review time; reviewer-surfaced failure modes hand off todebugging-and-error-recovery. Provenance pinned indocs/upstream-sources.md. Skills 33 → 34.
v3.16.0
2026-07-10Added
api-and-interface-designskill — design-time contract authoring for REST/GraphQL endpoints, module boundaries, component props, and type contracts (adopted from addyosmani/agent-skills,skills/api-and-interface-design/SKILL.md@4e8bd9fd, adapted). Fills a genuine gap: the plugin'sarchitecture-strategistandintegration-boundary-revieweragents both inspect an interface *after* the code is written, and nothing local covered shaping a contract *before* it exists. The skill carries the upstream's Hyrum's Law framing (every observable behavior — error text, timing, ordering — becomes a de facto contract once someone depends on it), the One-Version Rule, branded types for IDs (type TaskId = string & { readonly __brand: 'TaskId' }), discriminated-union status modeling, input/output type separation, the HTTP status-code and naming-convention tables, and a rationalizations table. Adaptations: a Positioning section stating the design-time-vs-review-time split against the two review agents; the upstream'sdeprecation-and-migrationsibling reference (not adopted here) retargeted to the localdata-migration-expertagent for the data-layer-migration facet; frontmatter description and voice conformed to house style (imperative, what + when). Supply-chain review: single prose SKILL.md, no scripts/network/dependencies — clean. Skills 32 → 33.
v3.15.0
2026-07-10Added
debugging-and-error-recoveryskill — the root-cause debugging methodology that sits above the plugin's existing reproduce-and-file tools. Adopted and adapted from addyosmani/agent-skills (skills/debugging-and-error-recovery/SKILL.md@4e8bd9fd, MIT, supply-chain reviewed). Codifies stop-the-line on any unexpected failure, then a six-step triage checklist — reproduce, localize, reduce, fix the root cause, guard, verify. Its high-value content is preserved intact: the non-reproducible-bug decision tree (branch on timing / environment / state / randomness, with tactics like artificial delays to widen race windows and load to raise collision probability), the symptom-vs-root-cause worked example (fix the JOIN, not[...new Set(users)]in the UI), agit bisect runregression recipe, the calibrated "you might be right 70% of the time; the other 30% costs hours — reproduce first" rationalization, and a "Treating Error Output as Untrusted Data" section (never execute commands or URLs embedded in stack traces or CI logs) that mirrors this repo's own untrusted-input posture. Positioned explicitly as the broader triage *methodology*: it points to the/reproduce-bugand/report-bugcommands and thebug-reproduction-validatoragent for the concrete reproduce-and-file workflow so their triggers stay distinct, and hands off to theverification-loopskill for the pre-PR quality pass. Generic per-error triage trees (TypeError, CORS, white screen) tightened; stack-specific commands marked illustrative to keep the methodology language-agnostic. Skill count 31 → 32.
v3.14.0
2026-07-10Added
sdd-cache— an opt-in, revalidatingWebFetchdoc cache (adopted fromaddyosmani/agent-skills, ported bash→python3). APreToolUse/PostToolUse(WebFetch) hook pair that caches fetched documentation on disk so an agent consulting the same official docs across sessions stops re-downloading identical pages — without weakening the "verify against current docs" guarantee. The load-bearing property is that there is no TTL: the pre hook looks up the cached entry bysha256(url)(32 hex chars) under.claude/sdd-cache/, and if it carries anETag/Last-Modifiedvalidator, sends a conditionalHEAD(If-None-Match/If-Modified-Since, 5s timeout, follows redirects) to that same URL; it serves the cached body and blocks the fetch (exit 2, the same deny signalblock-no-verify.pyuses) only on a real304 Not Modified— a live re-verification, not a memory read. Any other outcome (200= changed, error, timeout, or an entry with no validator) lets the realWebFetchproceed. The post hookHEADs the URL to capture validators from the final redirect hop and writes{url, prompt, etag, last_modified, content, fetched_at}atomically; a response with no validator is never cached (it could never be revalidated) and any stale entry is removed. Opt-in posture (a condition of the adoption): both hooks are inert unlessAGENTIC_SDD_CACHE=1is set — following the v3.7.0 opt-in precedent (off by default, explicit signal) but via an environment variable rather than a committed frontmatter flag, since caching is a per-machine choice that shouldn't ride a PR and flip on for every clone (and so it stays off theagentic-engineering.local.mdconfig surface). Both fail-open on any error, so a broken cache can never block a legitimate fetch. The two upstream bash scripts were ported to python3 (stdliburllib/hashlib/json—curl→urllib.request,jq→json,shasum→hashlib) to match every other hook inscripts/;.claude/sdd-cache/is gitignored. Supply-chain reviewed line-by-line (the only network egress is a conditionalHEADto the same URL the agent already intends to fetch — no exfiltration; writes confined to the cache dir; noevalof fetched content). Pinned bysdd_cache_pre_test.py/sdd_cache_post_test.py(offline: the revalidation call is mocked, including the safety-critical "200⇒ never serve stale" path and the cross-hook shared-key invariant). Documented inREADME.md(Hooks) andscripts/HOOKS.md. Provenance:addyosmani/agent-skills@4e8bd9fde4a38cd009053e649f4cdc7cd36b568b. No component count changes — hook addition only.
v3.13.0
2026-07-10Added
test-driven-developmentskill — the test-*authoring* discipline, adopted (adapted) fromaddyosmani/agent-skills. Fills the gap on the write side of testing: RED-GREEN-REFACTOR, the Prove-It pattern (every bug fix starts with a failing reproduction test), the test pyramid plus a Google-style test-size resource model (Small = no I/O, ms / Medium = localhost, s / Large = external, min), the test-double preference order (real > fake > stub > mock, mock only at boundaries), state-not-interactions assertions, DAMP-over-DRY, the Beyonce Rule, and the efficiency rule "after a clean run, don't re-run the same command unless code changed." Explicitly positioned as the authoring complement to the review-timetest-strategy-reviewer(audits existing tests) and theverification-loopgate (runs the suite before done), so the three skills' triggers don't collide. Co-locates an adaptedreferences/testing-patterns.md(framework-generic Arrange-Act-Assert, naming, assertions, mocking-at-boundaries, component/API/E2E examples). The upstream browser-testing section is retargeted from Chrome DevTools MCP to the localagent-browserskill and/test-browsercommand, and the "sibling reference" pointers now name only components that exist here. Skills 30 → 31. Provenance pinned indocs/upstream-sources.md.
v3.12.0
2026-07-10Added
security-and-hardeningskill — the build-time security playbook that complements the audit-timesecurity-sentinelagent. Adopted (adapted) from addyosmani/agent-skills via the/upstream-scantriage pipeline. Wheresecurity-sentinelreviews finished code ("did they build it safely"), this skill guides hardening *during* implementation ("how to build it safely") — the two are stated as complementary in the skill so their triggers don't collide. Substance preserved in full: a five-minute threat-model-first process running STRIDE over each trust boundary (with mitigations) and writing abuse cases next to use cases; a three-tier Always / Ask-First / Never boundary system; OWASP Top 10 prevention patterns including an SSRF allowlist built onipaddr.jsrange() !== 'unicast'that names its own residual TOCTOU / DNS-rebinding gap and the pinned-IP mitigation; a reachability-keyednpm audittriage decision tree ("is the vulnerable function actually called in your code path?") plus supply-chain hygiene (lockfile +npm ci,postinstallwariness, typosquat watch); and a full OWASP LLM Top 10 section treating model output as untrusted data (noeval/SQL/innerHTML/shell), with prompt-injection, excessive-agency, and unbounded-consumption guidance. Co-locates the upstream security checklist as a skill reference (security-checklist.md), linked fromSKILL.md. Provenance pinned toaddyosmani/agent-skills@4e8bd9fde4a38cd009053e649f4cdc7cd36b568b; both source files passed supply-chain review (pure documentation — no scripts, network calls, or embedded instructions). Skills 29 → 30.
v3.11.0
2026-07-10Added
observability-and-instrumentationskill — instrument-as-you-build discipline so a feature ships with the telemetry to operate it, not archaeology after the first incident. Adopted and adapted fromaddyosmani/agent-skills(skill + its repo-root observability checklist, co-located here as references/observability-checklist.md). Codifies the parts most teams get wrong: a signal-selection table (structured log vs metric vs trace, each with a cost profile — "metrics tell you *that*, traces *where*, logs *why*"), RED for endpoints / USE for resources, a hard cardinality denylist (user_id, email, request_id, full URL, and error text are never metric labels), "percentiles always, averages never", symptom-vs-cause alerting (error rate > 1% for 5 min pages; CPU at 85% does not), a log-level → on-call-action table, and a verify-the-telemetry step (force an error in staging, find it byrequestId). Complements the audit-timesecurity-sentinelagent (secret-in-logs) and theperformance-oracleagent (measured slowness); illustrative OpenTelemetry/Prometheus snippets are examples only. Skills 28 → 29.
v3.10.0
2026-07-10Added
interview-meskill — confidence-gated intent extraction that runs upstream ofbrainstorming. Adopted and adapted fromaddyosmani/agent-skills(skills/interview-me/SKILL.md). What the user asks for and what they actually want are different things ("build me a dashboard" is a convention, not a solved problem); this skill closes that gap before any spec, plan, or code exists, when switching costs are still zero. The mechanic is a mandatedHYPOTHESIS / CONFIDENCE ~N% — missing:opener, then one question at a time each carrying a falsifiableGUESS:(the user reacts to a wrong guess faster than they generate an answer, which also surfaces the interviewer's own assumptions), a "want vs. should-want" detector for buzzword goals ("scalable", "clean", "modern") whose probe is *"If you didn't have to justify this to anyone, what would you actually want?"*, an anti-sycophancy rule, rejection of false confirmations ("Whatever you think is best" → re-ask with two concrete options), a checkable stop condition (*"Can I predict the user's reaction to the next three questions?"*), and a restate template with a non-negotiable Out-of-scope line. It explicitly refuses non-interactive contexts (CI,/loop, autonomous loops), flagging underspecification as a blocker instead of guessing. Positioned deliberately relative tobrainstorming— interview-me extracts what the user wants (intent); brainstorming explores how to build it (approaches) — so their adjacent triggers order rather than collide, then it hands off tobrainstormingand/workflows:plan. Optional user-confirmed persistence todocs/intent/YYYY-MM-DD-<topic>-intent.md, mirroring wherebrainstormingsaves its design docs. Supply-chain review: clean (pure-prose skill, no remote fetches, scripts, or exfiltration). Skills 27 → 28. Provenance pinned indocs/upstream-sources.md.
v3.9.0
2026-07-10Added
/config-flags— discoverable config surface for every opt-in flag the plugin offers.scripts/config_registry.pyis the single declared inventory of per-repo configuration flags read fromagentic-engineering.local.md(and, for board identity, the committedagentic-engineering.md): aConfigFlagdataclass (key/kind/default/description/owner/file/choices/toggleable) per flag, with--inventory/--get/--setverbs sharinglifecycle_board.py's existing atomic-write, tracked-file-guard, and{ok, error_code, error, fix}error contract — writes are refused outright ifagentic-engineering.local.mdis tracked in git, never silently overwritten. Retrofits the four flags that previously shipped with zero central discoverability (issue_tracker,review_agents,plan_review_agents,nudge_todowritefrom v3.7.0) plus the two board-identity keys (github_project_owner/github_project_number, inventoried but never toggleable)./config-flags(named to avoid colliding with the built-in/config) browses the full inventory and flips a flag viaAskUserQuestion;/lifecycle-doctorgains a read-only Configuration section (SET/UNSET vocabulary, distinct from its PASS/WARN/FAIL/SKIP health checks) over the same inventory; thesetupskill now delegates its flag writes to the shared writer instead of hand-templating frontmatter (and, as a side effect, no longer risks silently overwriting a tracked local config — the writer refuses first). A new lint test (tests/config-registry.test.ts, mirroringtests/flagless-gh.test.ts) fails CI if a script reads a frontmatter key with no matching registry entry, so a flag can never ship invisibly again the waynudge_todowritedid. Command count 26 → 27. Seedocs/plans/2026-07-10-feat-discoverable-config-surface-plan.md(#91) for the full design, including the deliberately-deferred Phase 2 (build-time aggregation of config flags across every plugin in this marketplace, once a second plugin ships one).
v3.8.0
2026-07-10Added
land-docsskill — the autonomous "data lane" that ships compounded knowledge as its own docs-only PR and merges it on green, so a session closes out without a second user turn. Before this, the seam betweenland-pr(merges the code PR) and/workflows:compound(writesdocs/solutions/markdown) had a gap:compoundnever touched git — it wrote the knowledge into the post-merge default branch's working tree, stamped the boardcompounded, and stopped on a blocking "What's next?" menu. The knowledge was left uncommitted and the agent turned back to ask the user what to do — another cycle before the session could end.land-docscloses that seam: it opens adocs/<N>-knowledgePR, follows its GitHub Actions checks (CI owns review — the skill runs no in-agent review pass), and merges on green with no user turn; fixes a simple check failure; or pauses only when a failure genuinely warrants user input. Its one safety property is a docs-only scope gate — every changed path must match*.md/docs/; any non-doc path aborts the auto-merge and escalates — which is what licenses the unattended merge. Wired into/workflows:compound(new Phase 3) and/workflows:orchestrate(new Compound sub-row + suppressed the blockingcompound-docsdecision menu on the pipeline path), and referenced from theland-prskill as the counterpart knowledge-PR lander. Skills 26 → 27.
v3.7.0
2026-07-09Added
nudge-todowrite-to-tracker.py— optional, non-blockingPreToolUse(TodoWrite) hook nudging toward the repo's durable issue tracker.TodoWriteis ephemeral, in-session scratch; a repo that has committed to a durable tracker (GitHub Issues / GitHub Project board) wants cross-session work filed there instead, without fightingTodoWrite's legitimate ephemeral role with a hard block. The hook is silent (exit 0, no output) unless the repo opts in withnudge_todowrite: trueinagentic-engineering.local.mdfrontmatter (same tracked-file security invariant asissue_tracker:— a committed copy is ignored) *and* a tracker actually resolves to something other thannone. Tracker resolution reusesworkflow-repo-preflight.py'sresolve_issue_tracker()chain verbatim (local override > committed board config ->github-project->gh auth->github->none), so the reminder always names the same tracker the rest of the lifecycle tooling agrees on; beads is intentionally not a nudge target since the unified lifecycle already demotes it to a non-authoritative scratchpad (plan-tracker-guard.py). Pinned bynudge_todowrite_to_tracker_test.py. Addresses #89. No component count changes — hook addition only.
v3.6.2
2026-07-09Added
setupskill now offers an opt-in up-front Headroom install (Step 3.8). Previously theheadroomskill only installed the CLI lazily on its first invocation; the plugin's setup flow did not manage it. Setup now detects install state (command -v headroom) and the available installer (uvpreferred,pipfallback), and — only when Headroom is absent and an installer exists — offersuv tool install "headroom-ai[all]"behind an AskUserQuestion gate, then verifies withheadroom doctor. Consistent with the plugin's norm of never installing a binary without consent: it skips silently when already installed, declines to offer when neitheruvnorpipis present (pointing at the skill instead), never auto-installs on non-interactive runs (prints the command for later), and notes the AVX2/ONNX[all]-extra caveat with the base-package fallback. Step 5's confirmation summary gains aHeadroom:line; the skill description is updated to match. Skill enhancement only — no component count changes.
v3.6.1
2026-07-09Fixed
block-no-verifyandprevent-main-commithooks no longer false-block on PR-body prose. Two precision bugs surfaced when authoring PRs from an agent shell: (1)block-no-verifyscanned quoted strings but not here-document bodies, so a PR/issue body describing the bypass flag — e.g.gh pr create --body-file - <<'EOF' … git commit --no-verify … EOF— was blocked;sanitize()now strips heredoc bodies (per-heredoc backref, non-greedy) before matching, while a real bypass chained *after* a heredoc still blocks. (2)prevent-main-commitscanned the whole compound command for amain/masterrefspec token, so amainin a sibling segment (git push -u origin my-feature && gh pr create --base main, or a chainedgit log origin/main) false-blocked the push; the protected-refspec check is now scoped to the actualgit pushsegment(s). Both fixes are pinned by expandedblock_no_verify_test.py(heredoc cases) andprevent_main_commit_test.py(sibling-segment cases). No component count changes — hook precision only.
v3.6.0
2026-07-09Added
headroomskill — AI context compression via the Headroom CLI. Headroom compresses everything an agent reads (tool outputs, logs, RAG chunks, files, conversation history) before it reaches the LLM, cutting 60-95% of tokens with the same answers via reversible compression that caches and restores originals on demand. The skill follows the same shape as thercloneskill: a setup check that installs the tool as a global CLI withuv tool install "headroom-ai[all]"(pip fallback, plus AVX2/ONNX requirement notes andheadroom doctorrouting verification), a command reference (wrap,proxy,perf,dashboard,learn), and worked workflows for the three integration modes — wrapping a coding agent (headroom wrap claude), running the drop-in proxy (headroom proxy --port 8787), and library use (from headroom import compress).headroom learn(mine failed sessions into local markdown corrections) ties into the compounding-engineering loop. Skill count 25 → 26.
v3.5.7
2026-07-08Changed
- Removed ultrathink invocations from the workflow commands.
/workflows:reviewno longer frames its deep-dive phases as "ultra-thinking": the section-4 heading is now "Deep Dive Phases", the<ultrathink_instruction>block is a plain<instruction>(dropping "spend maximum cognitive effort"), the twoULTRA-THINK:thinking-prompt prefixes are gone, and the command description/command_purposeread "multi-agent analysis and worktrees"./workflows:plan's closing note no longer gates/deepen-planon "ultrathink enabled" — it now recommends running/deepen-planfor maximum depth unconditionally. Landing-page and generated command-reference copy updated to match. Behavior is unchanged; the commands relied on prose "ultrathink" cues rather than any harness feature. No component count changes.
v3.5.6
2026-07-08Added
git-worktreeskill gains a non-interactivegcsubcommand for safe, unattended reaping of merged worktrees (adapted from thebluestar-intelrepo's post-mergegc-worktrees.shhook). The skill previously only offeredcleanup, which is interactive (read -rprompt — unusable in an agentic loop or hook) and force-removes EVERY inactive worktree regardless of merge state, so it can silently discard unmerged parallel work and leaves orphaned local branches behind. This is a real hazard for the plugin's core parallel/swarm workflows (/resolve_parallel,orchestrating-swarms), where several worktrees hold live in-progress work at once.worktree-manager.sh gc [base-branch]reaps a worktree only when ALL hold: it lives under.worktrees/, is not the current worktree, has a clean tree, is fully merged into the base (git cherryshows zero+commits and ≥1-— patch-equivalence catches GitHub's default squash/rebase merges where SHAs differ, while a brand-new empty branch is left alone), and has been idle for the grace window (default 30 min,WORKTREE_GC_GRACE_MIN); it also deletes the now-orphaned local branch.WORKTREE_GC=0skips,WORKTREE_GC_BASEsets the default base (origin/main→ localmainfallback), and it always exits 0 so it can be wired into a gitpost-mergehook without ever failing the surrounding operation.cleanupis unchanged but now documents its force-remove hazard and points atgcfor unattended use. Verified end-to-end in scratch repos: squash-merged worktree + branch reaped; genuinely-unmerged, dirty, and current worktrees all preserved. No component count changes — skill enhancement only.
v3.5.5
2026-07-07Added
docs/pages/changelog.htmlis now generated from this file (issue #78). The published docs-site changelog had silently diverged fromCHANGELOG.md: hand-maintained from v1.0.0 → v2.6.0, it received two more hand-written entries at v2.32.1/v2.32.2 and was then untouched while ~30 releases (3.0.0 → 3.5.4) shipped — and nothing caught the drift, sincescripts/generate-docs.tsdeliberately left it as hand-written chrome.scripts/generate-docs.tsnow parses this file (Keep a Changelog format:## [x.y.z] - dateheaders,### Categorysections, single/nested bullet lists, inline bold/code/link spans, one summary table) with a small hand-rolled renderer — no new dependency; a markdown library was surveyed and rejected because the target page's per-category HTML/CSS wrapping (.changelog-category.added/.changed/.fixed/…, FA icons, version badges) needs bespoke mapping a generic renderer wouldn't produce anyway — and splices the result intodocs/pages/changelog.htmlbetween the standard<!-- GENERATED -->markers, wired into the existingbun run docs:build/docs:checkpipeline (tests/docs-generated.test.tsnow covers the changelog page too, so drift is caught in CI like every other reference page).- Backfilled v1.0.0 → v2.6.0 into
CHANGELOG.md— this file previously started at v2.15.0; those 13 earlier releases existed only in the hand-written HTML. Transcribed verbatim (all agents/commands/skills, the v2.0.0 summary table, nested Puppeteer→Playwright migration list) so the generated changelog page loses no history switching toCHANGELOG.mdas its sole source of truth. - Root
CLAUDE.md"Keeping Docs Up-to-Date" section corrected — no longer claimschangelog.html"mirrorsCHANGELOG.md" as a manual step; documents the generator relationship and warns against hand-editing the generated entries.
Fixed
- Orphan v2.32.1 / v2.32.2 HTML-only entries dropped, not migrated. Both duplicated changes already recorded under
CHANGELOG.md's[2.33.0]entry (the/release-docsrelocation and thelearnings-researcheraddition to/workflows:review) — hand-edited into the docs page as their own versions at some point but never given their ownCHANGELOG.mdentries. Generating fromCHANGELOG.mdnaturally resolves the contradiction the issue flagged (HTML documented v2.32.1/v2.32.2 whileCHANGELOG.mdonly had[2.32.0]) without double-recording the same change under two version numbers. No agent/command/skill/MCP changes — counts unchanged.
v3.5.4
2026-07-07Added
tests/setup-recipe.test.ts— the setup skill's Step 4.5 gitignore recipe is now executed in CI, not just published (todo 004 from the PR #72 review synthesis; the durability follow-up that PR deferred). The recipe's flags are load-bearing and lived only in markdown, unguarded by the count/frontmatter tests — the exact false-confidence shape docs/solutions/testing-patterns/recorded-fixtures-must-be-load-bearing.md warns about. The test extracts the first fenced bash block after the## Step 4.5heading verbatim (failing if the heading or block is missing, so doc and test cannot drift — a "simplified" recipe runs as simplified and fails on behavior) and executes it viabashin hermetic temp git repos (isolatedGIT_CONFIG_GLOBAL/GIT_CONFIG_NOSYSTEM/GIT_CEILING_DIRECTORIES, so a developer's own excludes can't fake a pass) across the six core scenarios: fresh repo run from a subdirectory (entry lands in the root.gitignore; file ignored and untracked), legacy tracked copy (tracked=1detected, entry appended exactly once across a re-run — pinning--no-index, without which a tracked path is never reported ignored and every re-run would re-append; the test also asserts plaincheck-ignorefails where--no-indexpasses), pre-existing broader*.local.mdpattern (byte-identical.gitignore, nothing appended),.gitignorewithout a trailing newline (thetail -c1repair keeps the last existing pattern intact), non-git directory (silent skip,root=none, no.gitignorecreated), and symlinked.gitignore(append refused — the PR #72 review guard — link target byte-identical across two runs). The echoedroot=/gitignore=/tracked=status line is asserted exactly: the SKILL declares it the recipe's only observable output, consumed by the untrack consent gate and Step 5. Mutation-verified before landing: dropping--no-index, disabling the symlink guard, or renaming the heading each fails the suite. Also commitstodos/004(pending → complete). No component changes — counts unchanged.
v3.5.3
2026-07-07Fixed
setupnow gitignoresagentic-engineering.local.mdon write and detects an already-tracked copy (issue #62). The skill wrote per-machine config into the user's repo with no.gitignorehandling, so agit add .committed it — exactly what the runtime forbids:lifecycle_board.pyignores a *tracked*.local.mdas a security invariant and warns on every invocation, silently dropping the file's overrides. New Step 4.5 idempotently ensures the ignore entry — gated ongit check-ignore -q --no-index(the skill's recipe notes explain why--no-indexis load-bearing) — guards the append against a missing trailing newline, refuses to write through a symlinked.gitignore, and reports every outcome on a single echoed status line that the untrack consent gate and Step 5 confirmation consume, then detects a tracked copy (the samegit ls-files --error-unmatchcheck the runtime's_is_trackeduses) and offers a consent-gatedgit rm --cachedwith the staged-deletion consequences spelled out. The full recipe also runs in Step 1 for existing configs, because legacy repos committed the file *before* any ignore entry existed and an entry alone never untracks it. All git operations anchor togit rev-parse --show-toplevel; non-git directories skip silently; the append is autonomous but untracking is never auto-run non-interactively. Live-verified in scratch repos (fresh, legacy-tracked with re-run, broader-pattern, no-trailing-newline, non-git). Skill instruction change only — no Python changes; component counts unchanged.
v3.5.2
2026-07-07Fixed
git-worktreeskill:ensure_gitignore()upgraded to the plugin's canonical gitignore idiom (the setup skill's Step 4.5 recipe). The old exact-line gate (grep -q "^\.worktrees$") plus bareecho >>had two defects: appending to a.gitignorethat lacks a final newline concatenated.worktreesonto the last existing pattern (corrupting both entries), and the exact-line grep missed broader/equivalent patterns (.worktrees/, wildcards, other ignore sources), appending a redundant line. Now gates ongit -C "$GIT_ROOT" check-ignore -q --no-index .worktrees(honors every ignore source and pattern form;--no-indexis load-bearing — a tracked path is never reported ignored, so without it a legacy tracked.worktreeswould re-append forever) and repairs a missing trailing newline via thetail -c1guard before aprintfappend. The guard chain's short-circuit isset -e-safe (a non-final&&failure doesn't trip it, and the chain is never the function's last statement) — verified against missing/empty/no-trailing-newline/pattern-variant.gitignorefixtures. No component changes — counts unchanged.
v3.5.1
2026-07-07Fixed
- A git-tracked
agentic-engineering.local.mdcan no longer pin the issue tracker — closes the gap the issue #62 plan deferred as out of scope.lifecycle_board.pyalready ignores a *tracked*.local.mdfor board identity and binding config (a tracked file rides PRs, so honoring it would let a PR redirect the lifecycle), butworkflow-repo-preflight.py'sread_local_config_trackerstill readissue_tracker:from a tracked copy — so a PR could commitissue_tracker: noneand silently downgrade every workflow command out of board gating. The preflight now applies the same gate (git ls-files --error-unmatch): a tracked.local.mdis skipped with a stderr warning and resolution falls back to auto-detect. Untracked (gitignored) overrides and invalid-value surfacing are unchanged; unit tests mirrorlifecycle_board_test'stest_tracked_local_config_is_ignored.
v3.5.0
2026-07-07Added
block-slack-webhooksecret-hygiene guard hook, ported fromagent-leverage(PreToolUse — Bash + Write/Edit/MultiEdit, wired inplugin.json, with a unit test). Completes the agent-leverage guard cluster: the prior ports (block-no-verify,prevent-main-commit,block-beads-jsonl-stage) cover git and env hygiene, but the plugin had no guard against committing a live secret. A Slack incoming-webhook URL (hooks.slack.com/services/...) is a credential; hardcoding one into code, CI config, or acurlleaks it into git history and build logs. The hook blocks that on the unambiguous host+path — so the Slack *app* (api.slack.com/chat.postMessage/ MCP tooling) is never blocked — and exempts prose (.md/.mdx/.txt/…) and files underhooks//scripts/that merely *describe* the anti-pattern. The block message points to the correct alternative: read the webhook from an env var / secret manager, or send through a connected Slack app. Generalized from agent-leverage's repo-specific version (removed references to that repo's internal notification code paths). No new agents/commands/skills — counts unchanged.
v3.4.0
2026-07-07Added
- Bootstrap scaffolds the
actions/add-to-projectworkflow when forward binding isauto-add(issue #63) — the mechanism that makes #64'sauto-addchoice functional and flips/lifecycle-doctor'sboard_forward_bindingcheck from WARN to PASS. The built-in Projects v2 auto-add workflow has no create/enable API (ProjectV2Workflowis delete-only); the officialactions/add-to-projectAction reproduces it. When (and only when) the operator choosesauto-add,bootstrap_lifecycle_board.pywrites.github/workflows/add-to-project.yml— idempotent (never clobbers an existing file) and non-fatal (a write failure degrades to a summary warning), mirroring thelink_repostep. The scaffolded workflow is hardened per a security + framework-docs deepening pass: SHA-pinnedactions/add-to-project(resolved live at scaffold time viagh api repos/actions/add-to-project/commits/v2, falling back to a known-good constant — a moving@v2tag would run with theADD_TO_PROJECT_PATsecret in scope, the tj-actions/changed-files compromise class, amplified across every scaffolded repo; first-partyactions/*is no exemption),permissions: {}at top and job level (the PAT does the Projects write, soGITHUB_TOKENneeds nothing — stricter thancontents: read),on: issues: [opened]with no untrusted checkout and norun:steps, plus an inline comment forbidding futurerun:steps that interpolategithub.event.issue.*(script-injection guardrail). Bootstrap also scaffolds.github/dependabot.yml(github-actions ecosystem) so the pin stays current — created only when absent; an existing dependabot config is never parsed/merged (a warning points the operator to add the ecosystem). The correctusers/vsorgs/project-url segment is resolved viagh api users/<owner> --jq .type. The one remaining manual step — theADD_TO_PROJECT_PATsecret — is documented least-privilege-first (fine-grained PAT with org Projects:R/W + repo Issues/PRs:read → GitHub App token → classic PAT fallback). No new agents/commands/skills — counts unchanged.
v3.3.0
2026-07-06Added
- The repo→board binding is now an explicit, recorded decision (issue #64). Bootstrap used to leave "configure auto-add" as an orphaned manual UI step with no explanation and a doctor check that could only say "verify by hand." Projects v2 boards are *materialized collections, not live queries* — creating an issue does not put it on any board, and GitHub's auto-add is forward-only (never backfills). Setup now records two orthogonal decisions, treated independently (backfill is offered under *any* forward choice, never gated behind auto-add):
- (A) Forward binding — how NEW issues reach the board.
bootstrap_lifecycle_board.pygained--forward-binding {workflow-only,auto-add,none}(defaultworkflow-only), written into committedagentic-engineering.mdasgithub_project_forward_bindingin the same write as board identity (a crash can never leave identity without policy). Omitting the flag preserves a prior choice on re-run rather than resetting it./lifecycle-doctorreplaces its uncheckable "verify by hand" line with a concrete per-branchboard_forward_bindingcheck:workflow-onlyPASSes when no orphaned auto-add workflow exists;auto-addverifies.github/workflows/add-to-project.ymlis present and the board is repo-linked (its token secret is write-only, so that one bit is explicitly called out as unverifiable);noneis informational; an unrecognized/unrecorded value WARNs. (The auto-add workflow *scaffolding* itself remains issue #63's mechanism — this change records and verifies the decision.) - (B) Backfill — put EXISTING issues on the board now. New
lifecycle_board.py --backfillverb: a one-time, idempotent add of every open origin-repo issue not already on the board, recording agithub_project_backfilled_throughhigh-water mark so a re-run adds only what a partial run missed. Enumerates repo issues via paginatedgh issue list— deliberately *not* the 50-capped ready-work path, which would have silently dropped issues 51+ — excludes PRs and closed issues, dedupes against board membership with one read (not N+1), tolerates partial failure (one failed add never aborts the loop), and advances an advisory high-water marker only over a failure-free prefix (the marker gates whether setup re-offers the backfill; a re-run always recomputes the full open-vs-board difference). Never run by bootstrap, so setup never mutates issues onto the board unattended (CI-safe by construction). - Internals: the committed-config writer (
upsert_frontmatter_keys/write_config_keys) moved tolifecycle_board.pyas the single write path shared by bootstrap and the backfill marker; the forward-binding doctor verdict is a pure, unit-tested helper (evaluate_forward_binding_check). No new agents/commands/skills — counts unchanged.
- (A) Forward binding — how NEW issues reach the board.
v3.2.0
2026-07-06Removed
/lfgand/slfgcommands, and every reference to the optionalralph-wiggumcontinuation loop. The two straight-line "run these commands in order, don't stop" chains duplicated what/workflows:orchestratealready does as a proper reviewer-driven loop, andralph-wiggumwas an unbundled external dependency the pipeline leaned on for don't-stop-early behavior. Doubling down on the/workflows:*commands as the single autonomy surface:/workflows:orchestrate --autois now the fully-autonomous entry point. Purged the references fromorchestrate.md,land-pr,merge.md,plan.md,FLOWS.md, and both READMEs. Counts: 28→26 commands.
Changed
/workflows:orchestrateis now fully autonomous by default. The default runs the whole pipeline to a merge with no approval prompts of any kind — self-answering every intermediate judgment call, merging once the PR is landable, and surfacing *only* genuine blockers (material scope change, branch protection, unresolvable ambiguity). Material scope expansion (redefining WHAT is built) is treated as a genuine blocker, so it still stops the run — that blocker-only floor holds identically in every mode. Added a new--final-reviewflag for the same hands-off run with one reinstated pre-merge gate (presents the review packet and waits for your go). The old "delegate pauses once at Final-Review" behavior is now--final-review; the old--autois folded into the default (and accepted as an explicit alias). The autonomy dial reads--careful>--steer>--final-review> default (fully autonomous).- The independent
/workflows:reviewstage is now explicitly non-skippable in every mode, including--auto. Hardenedland-prcondition 3 from "the caller's responsibility" to a self-satisfying gate:land-prconfirms a review ran this cycle and, if it cannot, runs/workflows:review(with fresh reviewer sub-agents) and resolves P1s before any merge — a PR is never merged unreviewed. Clarified in/workflows:workthat its optional inline reviewer agents are an in-session pre-check, never a substitute for that stage.
Added
- Uniform run-level no-progress stop. Replaced the scattered per-stage "~2 attempts" prose with one stagnation mechanism at the orchestrate loop level: a pass makes *progress* only if the board stage advanced or one of {open sub-issues, unresolved review threads, failing required CI checks, open P1 findings} strictly decreased; two consecutive no-progress passes at a stage enters a new
stalledterminal state and escalates with evidence. Evidence-based, not a clock/iteration/token cap. The existingland-prand/workflows:workretries are now documented as instances of this one rule (a retry that shrinks nothing counts toward the bound).
v3.1.0
2026-07-06Added
verification-loopskill — a systematic verify-before-done pass. Runs build → types → lint → tests → security → diff review as sequential gates and ends with a single ready / not-ready verdict. Adopted fromaffaan-m/ECCas the first upstream adoption executed through the/upstream-scantriage pipeline (landed via PR #35, issue #60). Counts: 24→25 skills.block-beads-jsonl-stageoperational guard hook ported fromagent-leverage(PreToolUse/Bash, wired inplugin.json, with a unit test): blocks staging the passive.beads/*.jsonlBeads export so the local scratchpad never lands in git (PR #38, issue #57).- Test coverage + a hook catalog for the existing safety hooks. Added unit tests for
block-no-verifyandprevent-main-commit(ported in a prior release without tests) and ascripts/HOOKS.mdindex documenting every plugin hook (PR #37, issue #59). - Bootstrap now links the lifecycle board to its origin repo. Projects v2 boards are owned by a user/org and can only be _linked_ to a repo — there is no repo-owned board — and linking is what surfaces the board on the repo's Projects tab and enables auto-add-from-repo.
bootstrap_lifecycle_board.pygained alink_repostep (after workflow config, before the committed-config write) that is idempotent (queries current links via a sharedlifecycle_board.project_linked_reposhelper and skips the mutation when already linked) and non-fatal (a link failure degrades to a summary warning, never an abort — board resolution only needsowner+number)./lifecycle-doctorgained a matchingboard_repo_linkcheck under Board schema: PASS when linked, WARN with the exactgh project link …fix when not, SKIP when unreadable. This closes the gap where a freshly bootstrapped board was invisible on the repo's Projects tab, which read as "no board" in the multi-repo/multi-customer model. Related footgun this surfaces: the committedagentic-engineering.mdrecords one board'sowner/number, so a fork/clone under a different owner must re-run bootstrap to point at _its own_ board.
Removed
- npm distribution of the converter CLI. The
@aagnone3/agentic-pluginpackage was never successfully published (the advertisedbunxcommand had never worked), and GitHub alone distributes everything: the plugin via the git-based marketplace, the CLI vianpx github:aagnone3/agentic-engineering(pinnable to a release tag). Deletedpublish.yml, markedpackage.jsonprivate (hard-prevents accidental registry publishes), and updated the README install instructions. Unused distribution surface is untested surface — same doctrine as the 3.0.0 Linear removal.
v3.0.0
2026-07-06 Major ReleaseAdded
operating-principlesskill — how to operate, distilled from Claude Fable 5 for executor models. The general operating approach for engineering work, captured as explicit procedure so Opus-tier executors (the implementation tier in delegate-mode orchestration) can follow a frontier model's policy mechanically. Depth is self-calibrating: a Step-0 gate sends easy tasks down a light path (do, verify once, report) and multi-step / ambiguous / expensive ones through the full procedure — ground-truth-before-planning (goal restated as an observable acceptance check, real code read before decomposition, load-bearing assumptions verified cheapest-first), risk-first decomposition where every subtask has an independently checkable exit condition, an explicit goal → evidence → gap → action execution loop with a two-strike backtrack rule (two failed fixes at one point = wrong mental model, go instrument) and a blocked-state taxonomy (self-serve facts; escalate only genuine decisions), independent-channel verification (execute > trace > hostile diff read > sibling sweep, plus the make-it-fail-once and green-is-real anti-theater disciplines), and calibrated reporting (every claim labeled Verified / Checked / Assumed; "should work" never rounds up to "works"). Progressive disclosure in four layers: an always-on CLAUDE.md snippet (assets/claude-md-snippet.md— the ten compressed rules plus a trigger line pointing at the skill, paste-ready for consumer repos), the SKILL.md spine, and three depth references —decomposition-patterns.md(load-bearing-question-first, vertical slice, interface-first, spike-then-implement, checkpoint-before-irreversible, scope ledger + five anti-patterns),verification-playbook.md(per-artifact checklists for bug fix / feature / refactor / migration / config), andfailure-modes.md(14 characteristic agent failure modes — success theater, patch spiral, imagined codebase, scope drift, premature done, stopping-at-a-plan, … — each with a detection signal and countermeasure). Wired into the delegation path so it is used constantly, not on request:/workflows:workloads it at entry and its subagent brief template instructs every implementation sub-agent to follow it;/workflows:orchestrateinherits both via that template and applies the same discipline to its own review-and-steering loop; and thesetupskill gains Step 3.7, which offers to install the snippet into the consuming repo's existingCLAUDE.mdand/orAGENTS.md— a marker-guarded append (operating-principles always-on layer) that is idempotent across re-runs and symlink-safe, with an offer to createCLAUDE.mdwhen neither file exists. Counts: 23→24 skills.- Unified work-item lifecycle on a GitHub Projects v2 board (part 2 of the unified-lifecycle work, issue #39). Replaces the three-tracker dispatch model with a single lifecycle —
stub → brainstormed → planned → in_progress → in_review → shipped, with order-independent terminal refinementsdeployed/compoundedand theabandonedoff-ramp — whose source of truth is a GitHub Projects v2 board readable and writable by both humans (browser) and agents (ghCLI). Newscripts/lifecycle_board.py(importable, stdlib-only, pure decision core + injectedrun_gh) exposes the verbs--gate/--claim/--set-status/--ready-work/--reconcile/--doctorwith a uniform{ok, error_code, error, fix}error contract; its reconciler applies a closed set of five repairs (merged_close_missed,not_planned_close,pr_closed_unmerged,abandoned_cascade,pr_reopened) plus three report-only flags (merged_to_non_default_branch,stale_join_key,truncated_ready_work), never widening past five. Every workflow command gains an idempotent entry gate (--gate) that reads lifecycle state and routes on a closed verdict enum, plus a one-line writer contract naming the single transition it owns. A newskills/lifecycle/SKILL.mdholds the shared vocabulary (9 stages, writer table, claim semantics, security invariants) with areferences/gh-recipes.mdfor the concreteghinvocations, deploy adapter, and git-flow issue-closer workflow. A bootstrap script (hosted by thesetupskill) creates and configures the board via ID-preservingupdateProjectV2Field— a fresh-project guard refuses to adopt a customized project, and the "Item reopened" workflow is disabled if present (new projects typically don't ship it;/lifecycle-doctorre-checks) so that where present, reopening never re-stampsstub. Board identity moves to committed config (github_project_owner:/github_project_number:inagentic-engineering.md) resolved from the git common dir so worktree-isolated subagents behave identically; only the session TTL cache stays local. New/lifecycle-doctorcommand (wrapping--doctor) is the setup verification front door: a PASS/WARN/FAIL/SKIP checklist over toolchain, repo shape, board schema, and delivery topology, ending with "Ready for first work item: yes/no" (--liveruns the end-to-end scratch-issue probe). The fork-trap hook (block-upstream-pr.sh) is extended to covergh projectwrites, ProjectV2-mutation GraphQL,GH_REPO=prefixes, and REST writes to upstream paths, backed by a committedtests/flagless-gh.test.ts.gh≥ 2.94.0 with theprojectscope is now a hard prerequisite (--parent,--blocked-by, dependency JSON fields), pinned in CI. Counts: 27→28 commands, 22→23 skills (newlifecycle-doctorcommand; newlifecycleskill offsets the deletedlinear-sync).
Removed
- BREAKING: Linear support removed entirely (part 1 of the unified-lifecycle work, issue #39). Deleted the four
/linear:*commands (sync,status,import,pull), thelinear-syncskill, and theagentic-plugin linearCLI (~1,650 lines of TypeScript:src/commands/linear.ts,src/sync/linear.ts,src/sync/linear-api.ts,src/types/linear.ts). The issue-tracker resolution chain is nowbeads | github | none—LINEAR_API_KEYis no longer consulted, theissue_tracker_ambiguous/linear_api_key_presentpreflight fields are gone, andlinear_issue:is no longer accepted by the plan-tracker-guard Stop hook (usebead_id:orgithub_issue:). Todo-file frontmatter dropslinear_id/linear_synced_at. Every workflow command's Linear dispatch branch (work, plan, review, triage, resolve_todo_parallel, land-pr, setup, file-todos, merge) was removed rather than deprecated: unused dispatch branches are untested surface where faithfulness dies silently. Migration: existing plans withlinear_issue:frontmatter should add agithub_issue:(orbead_id:) on next touch; git history is the archive if Linear support is ever needed as a companion plugin. Counts: 31→27 commands, 23→22 skills.
Changed
- Issue-tracker resolution is now
github-project | github | none(beads left the chain).github-projectis selected when a committed board config is present and unlocks the full lifecycle machinery;githubis plain issues + file-todos (today's semantics, no board writes);nonedegrades further. Beads is demoted to an opt-in, non-authoritative implementer scratchpad —bd rememberstill works, but no gate ever reads a bead and nothing syncs. /workflows:workno longer closes the issue at PR creation. Phase 4 opens the PR withCloses #Nand sets Status=in_review; the built-in "Item closed" merge automation is the sole writer ofshipped. The previous "PR creation is the completion event" rationale is replaced by automation-owns-shipped./workflows:reviewrecords findings via a singletodos/*.mdfile-todos path (the beads findings branch was removed)./workflows:orchestrate— delegate mode is the new default: the orchestrator delegates to sub-agents, reviews their work, and surfaces only blockers + one final review. The orchestrator (running on the session's strongest model) no longer implements feature code inline by default. It dispatches every work item to a focused implementation sub-agent (Opus-tier, background, parallel when file-disjoint, per/workflows:work's Orchestrated Execution) and performs the accept/retry/escalate review of each returned diff itself. The intermediate judgment gates are self-answered and recorded in a decision log: approach selection takes the brainstorm's recommendation (product-shaping forks still escalate), the Plan-Approval gate becomes a plan self-review (document-review+spec-flow-analyzer), and findings triage resolves to fix-P2s/defer-P3s. The run pauses exactly twice at most: genuine blockers (batched, any time) and the new Final-Review gate — a pre-merge packet with what was built, review/verification results, sub-agent stats, and the replayed decision log, offering merge / review-first / request-changes / don't-merge. Material scope expansion still escalates in every mode. The previous default cadence lives on as--steer(approach, plan-approval, triage, and merge checkpoints);--autois demoted from a mode to a modifier on delegate mode — it toggles exactly one bit, collapsing the Final-Review gate (auto-merge once landable, packet becomes the final summary; for unattended runs), and its former non-negotiable Plan-Approval stop is replaced by the plan self-review;--carefulis unchanged. The--autospelling is kept soland-pr's autonomous-context whitelist (/lfg,/slfg,/workflows:orchestrate --auto) is unaffected./workflows:workdocuments the two hooks the orchestrator relies on: Orchestrated Execution is the default execution model under delegate mode, and its dispatch step now carries the model-tiering rule (implementation on Opus-tier subagents, review on the orchestrator's tier, mechanical chores cheaper). FLOWS.md's orchestrate diagram gains the land stage and Final-Review hexagon with per-mode gate annotations.
Fixed
plan-tracker-guardnow documents and tests dotted uppercase-prefix bead IDs. The base-36 branch ofREAL_TRACKER_VALUE_REalready accepts uppercase prefixes with a lowercase base-36 suffix (e.g.AL-eh4), but the dotted child-ID formAL-xs7.3— which exercises the(?:\.[a-z0-9]+)*segment tail — had no test coverage. Added a dedicated test for the dotted form and extended the accept test to coverAL-eh4, locking in that uppercase-prefix beads IDs (parent and child) pass while uppercase-suffix placeholders likeAL-NNNstay rejected.
Added
/analyze-sourcecommand — one-off evaluation of any external resource. Given an X post, a blog, a GitHub repo, a marketplace, or an installable tool, the command resolves the resource (x.com via anapi.fxtwitter.com→cdn.syndication.twimg.com→ WebSearch fallback chain, following links to the canonical repo before classifying), triages it as a technique / artifact repo / installable tool, spends analysis depth proportional to that type (idea-vs-existing-components for a technique; a fullgh apifact sheet — license/stars/dates/archived, trees-API structure, 2–3 credential-free component samples, overlap/gap vs the plugin inventory, and registry decision memory — for a repo; duplicate-vs-complement plus install security surface for a tool), and returns exactly one verdict: author locally, track as an upstream source (emitting a ready-to-pastedocs/upstream-sources.mdblock + top cherry-pick candidates — the intake exit), spin up a new domain plugin, reference/install-alongside, or skip. Read-only by design (disable-model-invocation, scopedallowed-toolswith noWrite/Edit/gh issue/gh pr; all fetched content is untrusted data read in credential-free subagents) and explicitly delegation-friendly for background agents. Reframed from the originally-planned/upstream-intake: the general act is analysis, and registry intake is just one of five exits — validated by two real runs before implementation, the ECC analysis (verdict: track upstream) and the codex-plugin-cc X-post analysis (verdict: reference/install-alongside). From the 2026-07-03 plan (issue #31)./upstream-scaninvariant — fork-parent reads must not share a command line with agh issue/gh labelwrite. The repo's fork-trap hook literal-matches theEveryIncparent slug anywhere in a command that also contains a write subcommand, so a compound line (gh api repos/EveryInc/… && gh issue edit …) is denied even though both halves are individually safe. Documented in the command's invariants as its own Bash-invocation rule (maiden-run finding from PR #33)./upstream-scancommand + upstream-source registry — recurring adoption from external repos. A new registry (docs/upstream-sources.md, repo-level) records each upstream source (ECC, the EveryInc fork parent, agent-leverage) with its license, visibility, and per-component provenance (adopted:/deferred:entries carryingupstream: path@sharefs, reviewer, and date). The/upstream-scancommand compares each source's current component inventory (GitHub trees API) against {local components, adopted, deferred}, evaluates candidates with a curated lens, checks adopted components for upstream drift, and reports to one long-lived, fully-regenerated GitHub issue per source — heartbeat line, evidence columns, and a ready-to-paste registry block for the triage PR. Fully parameterized via registry frontmatter (report_repo,report_label): zero repo names in the command. Safety:disable-model-invocation, scopedallowed-tools(noEdit, nogh pr), explicit--repoon every gh call, untrusted-content rules with credential-free evaluation subagents, and private-source redaction. Enforced by a new merge-time lint (tests/upstream-registry.test.ts): registry schema, entry grammar, and a flagless-gh regression guard. The repo's fork-trap hook (block-upstream-pr.sh) now also coversgh issuesubcommands. From the 2026-07-02 upstream-adoption plan (issue #28); prior art: Renovate's dependency dashboard, cargo-vet audits, Chromium third-party metadata./workflows:mergecommand — a thin entry point to theland-prskill. Gives the pipeline a command-named merge step (/workflows:merge [PR] [--auto]) that delegates entirely toland-pr— no merge logic is reimplemented. Preserves the/workflows:mergeergonomics some workflows rely on while routing through the single landability/merge-gate implementation (CI wait, review-thread resolution viaresolve-pr-parallel, independent-review gate, branch cleanup, idempotent tracker-item close across beads/Linear/GitHub).land-prskill — the completion-and-merge tail the pipeline was missing. The plugin modeledplan → work → (PR opened) → review → resolve commentsbut had no single component that drives a PR the rest of the way: wait on CI, resolve every review thread (delegating toresolve-pr-parallel), confirm approval and mergeability, then merge and clean up (delete branch, fast-forward the local default branch, idempotently close the tracker item). It defines explicit landability conditions (CI green + threads resolved + approved/mergeable) and a merge gate: pause-and-ask by default, auto-merge only in autonomous contexts (--auto, or when called from/lfg//slfg//workflows:orchestrate --auto) and only once all three conditions hold. Ships ascripts/pr-landable-statushelper that emits the gating signals as JSON. Wired into the workflow surface:/lfgand/slfggain a land-and-merge step beforeDONE;/workflows:orchestrategains a land stage in its pipeline diagram, decision table (the merge is a 🧍 CHECKPOINT in steer mode, AUTO in--auto), state-detection, and final summary;/workflows:workPhase 4 and/workflows:reviewnow point toland-pras the next step after PR creation / findings resolution.
- Deterministic docs-site generator (
scripts/generate-docs.ts,bun run docs:build/docs:check), gated in CI. Replaces the manual/release-docsskill with a script that regenerates the reference pages (docs/pages/agents|commands|skills|mcp-servers.html) and the landing-page stat numbers directly from the plugin's components — card sections (between<!-- GENERATED -->markers) and each page's "On This Page" sidebar — preserving all hand-written page chrome. A newtests/docs-generated.test.ts(run bybun test) fails if the committed pages drift from the components, so the docs site can no longer fall out of sync. Regenerated all four reference pages, which had drifted badly (7 agents, 14 commands, 8 skills missing; stale counts; a removed Playwright MCP server still listed)./release-docsis now a thin wrapper aroundbun run docs:build. - Plugin consistency test (
tests/plugin-consistency.test.ts), enforced in CI viabun test. Asserts the filesystem truth (counts of agents/commands/skills, MCP servers) against every place those numbers and lists are declared —plugin.json,marketplace.json, both READMEs, and thedocs/index.htmllanding-page stats — plus version parity betweenplugin.jsonandmarketplace.json, README completeness (every command by frontmattername, every agent, every skill must be documented), and frontmatter hygiene (every command/agent declaresname+description; every skill'snamematches its directory). This closes the "added a component but forgot to update X" gap that previously had to be caught by hand. Failure messages name the exact file/component out of sync.
Fixed
deploy-docs.ymlpublished a non-existent path (plugins/agentic-engineering/docs/), so the GitHub Pages deploy never fired for the real site at rootdocs/. Corrected the trigger filter and upload path todocs/.docs/pages/mcp-servers.htmlstill documented a Playwright MCP server that the plugin no longer bundles (config examples, requirements row, intro copy). Removed.- Plugin README command table was missing 3 commands (
/deploy-docs,/agent-native-audit) and listed a phantom/xcode-testinstead of the real/test-xcode— the table claimed 27 commands but listed 26 (one wrong). Now complete and correct. resolve-pr-parallelskill declaredname: resolve_pr_parallel(underscores), violating the rule that a skill'snamemust match its directory. Corrected toresolve-pr-parallel.
Changed
/workflows:work— Orchestrated Execution is now tracker-driven (beads / Linear / file-todos), not beads-only. The section is generalized from "delegate beads to subagents" to a tracker-agnostic model with a Tracker bindings table mapping the same lifecycle (list-ready → claim → close → block → add-follow-on) onto each tracker's verbs; the beads parent-vs-child and Phase-4 close rules are preserved as the beads-specific instantiation. Phase 2 gains an execution-model selection table (Inline / Orchestrated / Swarm) that applies to any tracker, the subagent brief is generalized to "one tracked issue," andargument-hintnow signals that an issue/bead id can be passed directly. Ports the still-relevant idea from the stalefeat/work-orchestrated-bead-executionbranch onto currentmain(the branch's tracker-*detection* idea was already superseded by the preflight script).
Added
FLOWS.md— visual reference for every workflow. A plugin-root document with mermaid diagrams for each flow (orchestrate,brainstorm,plan,deepen-plan,work,review,compound, and the autonomouslfg/slfg), a shared shape legend (human checkpoints vs automatic steps), and a "big picture" composition diagram. Linked fromREADME.md./workflows:orchestrate— a steering orchestrator over the full pipeline. Drivesbrainstorm → plan → [deepen-plan] → work → review → compoundautonomously, sitting between the user and the raw workflow commands like/goal//loopsit over a task. It auto-handles every menial transition (branch setup, "proceed?" prompts, detail-level choices, tracker bookkeeping, running the next stage) and pauses only at meaningful decision gates: approach selection (during brainstorm), a non-negotiable Plan-Approval gate before any code is written, and findings triage after review (P1s are auto-fixed; the user decides on P2/P3). Includes an autonomy dial (--autominimizes gates to plan-approval + blockers; default "steer";--carefulconfirms at every stage boundary), artifact-driven state detection so re-running resumes in place, a sub-command auto-answer cheatsheet, and blocker-batching (oneAskUserQuestion, not drip-fed). Has full operation parity with/lfg: the same finalization steps run automatically when applicable —/resolve_todo_parallelfor approved findings,/test-browserfor web/iOS E2E verification, and/feature-videoto attach a walkthrough to the PR — plus the optionalralph-wiggumcontinuation loop (used only in--automode, and it never overrides a human gate). Contrast with/lfg(fully autonomous, no human in the loop): orchestrate runs the same operations but keeps the human at the steering wheel for the few decisions that shape the outcome./workflows:work— Orchestrated Execution style for the beads tracker. A third execution style (alongside inline and Swarm) where the agent acts as orchestrator: it owns the bead state machine and delegates implementation to one focused subagent per bead, looping each bead to a terminal state (resolved or a verified blocker) before returning to the user. Works for a single bead or a whole set. Adds terminal-condition definitions, a wave-based dispatch procedure, a subagent brief template, parallelism/worktree rules, and discovered-work-as-follow-on handling — all aligned with the existing parent-vs-child close convention (child beads close in the loop; the parent/standalone bead closes in Phase 4 after the PR). Picked via an execution-style note in the Phase 2 beads block; contrasted with Swarm mode for when to use each.
Changed
/workflows:plan— tracker-issue creation is now a mandatory gate, not a post-action option. The command runs a new "Step 7. Create Tracker Issue" inline between## Write Plan Fileand## Post-Generation Options, and a precondition assertion re-verifies the plan frontmatter before any next-step menu is opened. ThePost-Generation Optionsmenu surfaces the tracker ID in its preamble and omits/workflows:workwhen the explicitissue_tracker: nonecarve-out is active. Closes context-eww.- Frontmatter templates (MINIMAL/MORE/A LOT) now mark
bead_id/linear_issue/github_issueas REQUIRED fields (exactly one) rather than optional# added by /workflows:planannotations.
Added
- Stop hook safety net (
scripts/plan-tracker-guard.py, registered via.claude-plugin/plugin.jsonhooks.Stop) blocks turn termination when any plan file underdocs/plans/modified in the current session lacks a tracker ID in its frontmatter. Respectsissue_tracker: nonecarve-out andstop_hook_activere-entry protection. Catches any agent that bypasses or forks the/workflows:planworkflow.
Removed
- The standalone
## Issue Creationsection at the bottom ofcommands/workflows/plan.md(content moved into mandatory Step 7). Create Issueoption from Question 2 ofPost-Generation Options(issue creation is now upstream of the menu).You can also type freely — e.g., 'create issue'hint from Question 1 (no longer reachable).
Fixed
/workflows:worknever closed a standalone bead. Phase 4 closed$PLAN_BEAD, but for the standalone-bead flow (the commonbd ready/ explicit-bead-id case) Phase 1 never setPLAN_BEADand there is usually no plan file for theyq '.bead_id'fallback — so the bead was never claimed *or* closed (bd close ""silently no-op'd), and Phase 2 ("Phase 1 set noPLAN_BEAD") contradicted Phase 4 ("the standalone bead claimed in Phase 1"). Phase 1 now establishes and claimsPLAN_BEADin both standalone and plan-with-children modes; Phase 4 suppresses theyqerror when no plan file exists and guards against an empty id (fails loudly instead of closing nothing).
v2.42.0
2026-06-29Added
reflect-for-skill-updatesskill — the meta-improvement loop for compounding engineering. Where/workflows:compoundcaptures the *solution* to a technical problem, this skill captures *what was missing from the tooling or documentation that let the problem occur in the first place*. It provides a structured gap-analysis process: identify root cause → categorize (missing automation, incomplete skill, workflow gap, undocumented dependency) → implement the fix in the right place (SKILL.md, CLAUDE.md, hook, script) → verify the fix would have prevented the issue. Adapted from agent-leverage's operational toolchain; linked as a natural follow-on tocompound-docs. Increases skill count to 23.
/ci-resolve-workflow-issuescommand — guided CI diagnostic workflow. The plugin'sland-prskill waits for CI to be green before merging, but there was no guided workflow for _fixing_ a failing build. The new command walks through identifying the PR, fetching failure logs (viaghor GitHub MCP tools), classifying the failure type (lint, types, tests, build, E2E, lockfile, migration, environment), reproducing locally, applying the fix, verifying, and pushing — with a flaky-failure re-run shortcut and a reference table ofgh runcommands. Links toland-pras the natural next step once checks pass.
block-no-verifyPreToolUse hook (scripts/block-no-verify.py). Registers viaplugin.jsonhooks.PreToolUse. Blocksgit commit --no-verify/-nandgit push --no-verifyin any project that installs this plugin. Uses segment-aware regex to avoid false positives on grep/echo commands that merely mention the flag. Pre-commit and pre-push hooks are the last local quality gate before CI — bypassing them breaks the compounding-quality chain the plugin is built on.
prevent-main-commitPreToolUse hook (scripts/prevent-main-commit.py). Registers alongsideblock-no-verify. Blocksgit commitwhile onmain/masterand any explicitgit pushthat targets those branches. Enforces the plugin's PR-based workflow (plan → work → PR → review → merge) for all projects that install the plugin, preventing accidental direct pushes that bypass code review and CI.
v2.38.0
2026-05-16Added
- Beads (
bd) as a first-class issue tracker alongside Linear and GitHub. Workflow commands now resolve anissue_trackervalue (beads | linear | github | none) at start and dispatch accordingly. agentic-engineering.local.mdschema extended withissue_tracker:frontmatter field. Explicit override always wins over auto-detection.- Preflight script (
scripts/workflow-repo-preflight.py) now reportsbeads_installed,beads_initialized,github_cli_authed,issue_tracker_resolved,issue_tracker_source,issue_tracker_ambiguous, andbeads_remember_available. /workflows:planwritesbead_id:into plan frontmatter when tracker isbeads; otherwise still writeslinear_issue:or creates a GitHub issue unchanged./workflows:workusesbd ready/bd update/bd closeinstead of TodoWrite when tracker isbeads. Forlinear/github/none, TodoWrite is preserved (no regression)./workflows:reviewcreates findings as beads (bd create … --tags=code-review) instead oftodos/*.mdfiles when tracker isbeads. The Linear push step (Step 2b) is now gated to run only when tracker islinear./workflows:compoundappendsbd remember "<insight>" --link "<solution-doc>"wheneverbdis on PATH, regardless of tracker. Complements (does not replace) the solution doc./workflows:brainstormoffers an optional "Capture as bead" handoff step when tracker isbeads, pre-seeding the parent bead for the eventual plan.setupskill writes the auto-detectedissue_tracker:into the generated config and surfaces ambiguous detections via AskUserQuestion.
Changed
- Auto-detect priority for
issue_tracker:.beads/ + bd→beads, thenLINEAR_API_KEY→linear, thengh auth status→github, elsenone. First match wins. Existing Linear users withLINEAR_API_KEYset and no.beads/are unaffected. - Every workflow command prints a one-line tracker banner at start (e.g.
Tracker: beads (auto-detect)). If both.beads/andLINEAR_API_KEYare present, the banner notes the ambiguity and points at the override.
Preserved (no behavior change)
- All
agentic-plugin linear pull|push|createcalls fire unchanged when tracker islinear. linear_issue:frontmatter field is still written/read for Linear users.- The
file-todosskill path is still used fortodos/*.mdcreation when tracker islinear/github/none. /workflows:workstill uses TodoWrite for in-session task management when tracker is anything other thanbeads.- The silent-skip-on-missing-
LINEAR_API_KEYbehavior is preserved.
v2.37.2
2026-02-26Added
scripts/workflow-repo-preflight.py— Deterministic repo/work-start preflight for/workflows:workthat emits JSON with current/default branch, dirty state, optional PR metadata, Linear availability, and a recommended next action/prompt.
Changed
/workflows:workcommand — Phase 1 setup now calls the preflight script and follows structuredrecommendation.actionoutput instead of re-deriving branch/default-branch state from inline shell snippets.
v2.37.1
2026-02-25Fixed
- Fix AskUserQuestion constraint violation in
/workflows:plan(7 options → 4+3 sequential) and/deepen-plan(5 → 4)
v2.37.0
2026-02-25Added
integration-boundary-revieweragent — New always-on review agent that identifies untested integration boundaries where application code calls external libraries, APIs, or services. Flags cases where tests validate shapes but not behavior (e.g., constructor arguments that the library doesn't accept, transport type mismatches, tests that fail at auth before reaching integration code). Runs automatically during/workflows:review.test-strategy-reviewerskill — Analyze test files for coverage gaps, mock depth issues, and untested integration boundaries. Reports which functions have no tests, which tests mock at the wrong level, and which external library calls are never exercised with real objects.
Changed
pr-comment-resolveragent — Step 4 (Verify the Resolution) now includes integration verification: verify external API call signatures match the library, confirm changed code paths are actually tested, and write smoke tests for new library usage/workflows:reviewcommand — Addedintegration-boundary-reviewerto the always-on agents list (alongsideagent-native-reviewerandlearnings-researcher)/workflows:workcommand — Enhanced System-Wide Test Check with 6th question about external library API correctness. Added "External library smoke tests" guidance to Test Continuously section. Added Integration Boundary Verification step to Phase 3 Quality Check./deepen-plancommand — Added Step 4b (Testing Strategy Research) to spawn dedicated research agents for each external library's testing patterns, constructor signatures, and anti-patterns. Added Testing Strategy section to the enhancement format.setupskill — Comprehensive depth now includesintegration-boundary-reviewer
v2.36.0
2026-02-24Added
- Linear integration — Bidirectional sync between file-based todos and Linear project management
linear-syncskill — Documents the integration pattern, status/priority mappings, configuration, and workflow integration/linear:synccommand — Full bidirectional sync (push local changes + pull Linear changes)/linear:statuscommand — Show sync dashboard comparing file state with Linear state/linear:importcommand — Import a specific Linear issue as a local todo file/linear:pullcommand — Pull Linear changes (state, priority, comments, new issues) into files- CLI subcommand
agentic-plugin linear— 8 subcommands: sync, push, pull, status, import, create, cancel, config - Graceful degradation — All Linear operations silently skip when
LINEAR_API_KEYis not set - Last-write-wins conflict resolution — Compares Linear
updatedAtvs file mtime; conflicts logged, never silently dropped - Parent/sub-issue hierarchy — Plans map to parent Linear issues, spawned todos become sub-issues
Changed
/workflows:review— After creating todo files, pushes them to Linear with optional parent linking/triage— Pulls latest Linear state before presenting items; pushes approved items; cancels skipped items in Linear/resolve_todo_parallel— Pulls latest Linear state before planning; pushes completed state after resolution/workflows:plan— Issue creation now usesagentic-plugin linear createinstead oflinear issue create/workflows:work— Syncs with Linear at start and pushes final state on completionfile-todosskill — Addedlinear_idandlinear_synced_atfrontmatter documentationfile-todostodo template — Addedlinear_idfield to YAML frontmatter
v2.35.2
2026-02-20Changed
/workflows:planbrainstorm integration — When plan finds a brainstorm document, it now heavily references it throughout. Addedorigin:frontmatter field to plan templates, brainstorm cross-check in final review, and "Sources" section at the bottom of all three plan templates (MINIMAL, MORE, A LOT). Brainstorm decisions are carried forward with explicit references (see brainstorm: <path>) and a mandatory scan before finalizing ensures nothing is dropped.
v2.35.1
2026-02-18Changed
/workflows:worksystem-wide test check — Added "System-Wide Test Check" to the task execution loop. Before marking a task done, forces five questions: what callbacks/middleware fire when this runs? Do tests exercise the real chain or just mocked isolation? Can failure leave orphaned state? What other interfaces need the same change? Do error strategies align across layers? Includes skip criteria for leaf-node changes. Also added integration test guidance to the "Test Continuously" section./workflows:plansystem-wide impact templates — Added "System-Wide Impact" section to MORE and A LOT plan templates (interaction graph, error propagation, state lifecycle, API surface parity, integration test scenarios) as lightweight prompts to flag risks during planning.
v2.35.0
2026-02-17Fixed
/lfgand/slfgfirst-run failures — Made ralph-loop step optional with graceful fallback whenralph-wiggumskill is not installed (#154). Added explicit "do not stop" instruction across all steps (#134)./workflows:plannot writing file in pipeline — Added mandatory "Write Plan File" step with explicit Write tool instructions before Post-Generation Options. The file is now always written to disk before any interactive prompts (#155). Also adds pipeline-mode note to skip AskUserQuestion calls when invoked from LFG/SLFG (#134).- Agent namespace typo in
/workflows:plan—Task spec-flow-analyzer(...)now uses the full qualified nameTask agentic-engineering:workflow:spec-flow-analyzer(...)to prevent Claude from prepending the wrongworkflows:prefix (#193).
v2.34.0
2026-02-14Added
- Gemini CLI target — New converter target for Gemini CLI. Install with
--to geminito convert agents to.gemini/skills/*/SKILL.md, commands to.gemini/commands/*.toml(TOML format withdescription+prompt), and MCP servers to.gemini/settings.json. Skills pass through unchanged (identical SKILL.md standard). Namespaced commands create directory structure (workflows:plan→commands/workflows/plan.toml). 29 new tests. (#190)
v2.33.1
2026-02-13Changed
/workflows:plancommand - All plan templates now includestatus: activein YAML frontmatter. Plans are created withstatus: activeand markedstatus: completedwhen work finishes./workflows:workcommand - Phase 4 now updates plan frontmatter fromstatus: activetostatus: completedafter shipping. Agents can grep for status to distinguish current vs historical plans.
v2.33.0
2026-02-12Added
setupskill — Interactive configurator for review agents- Auto-detects project type (Rails, Python, TypeScript, etc.)
- Two paths: "Auto-configure" (one click) or "Customize" (pick stack, focus areas, depth)
- Writes
agentic-engineering.local.mdin project root (tool-agnostic — works for Claude, Codex, OpenCode) - Invoked automatically by
/workflows:reviewwhen no settings file exists
learnings-researcherin/workflows:review— Always-run agent that searchesdocs/solutions/for past issues related to the PRschema-drift-detectorwired into/workflows:review— Conditional agent for PRs with migrations
Changed
/workflows:review— Now reads review agents fromagentic-engineering.local.mdsettings file. Falls back to invoking setup skill if no file exists./workflows:work— Review agents now configurable via settings file/release-docscommand — Moved from plugin to local.claude/commands/(repo maintenance, not distributed)
Removed
/technical_reviewcommand — Superseded by configurable review agents
v2.32.0
2026-02-11Added
- Factory Droid target — New converter target for Factory Droid. Install with
--to droidto output agents, commands, and skills to~/.factory/. Includes tool name mapping (Claude → Factory), namespace prefix stripping, Task syntax conversion, and agent reference rewriting. 13 new tests (9 converter + 4 writer). (#174)
v2.31.1
2026-02-09Changed
dspy-rubyskill — Complete rewrite to DSPy.rb v0.34.3 API:.call()/result.fieldpatterns,T::Enumclasses,DSPy::Tools::Base/Toolset. Added events system, lifecycle callbacks, fiber-local LM context, GEPA optimization, evaluation framework, typed context pattern, BAML/TOON schema formats, storage system, score reporting, RubyLLM adapter. 5 reference files (2 new: toolsets, observability), 3 asset templates rewritten.
v2.31.0
2026-02-08Added
document-reviewskill — Brainstorm and plan refinement through structured review (@Trevin Chow)/synccommand — Sync Claude Code personal config across machines (@Terry Li)
Changed
- Context token optimization (79% reduction) — Plugin was consuming 316% of the context description budget, causing Claude Code to silently exclude components. Now at 65% with room to grow:
- All 29 agent descriptions trimmed from ~1,400 to ~180 chars avg (examples moved to agent body)
- 18 manual commands marked
disable-model-invocation: true(side-effect commands like/lfg,/deploy-docs,/triage, etc.) - 6 manual skills marked
disable-model-invocation: true(orchestrating-swarms,git-worktree,skill-creator,compound-docs,file-todos,resolve-pr-parallel)
- git-worktree: Remove confirmation prompt for worktree creation (@Sam Xie)
- Prevent subagents from writing intermediary files in compound workflow (@Trevin Chow)
Fixed
- Fix crash when hook entries have no matcher (@Roberto Mello)
- Fix git-worktree detection where
.gitis a file, not a directory (@David Alley) - Backup existing config files before overwriting in sync (@Zac Williams)
- Note new repository URL (@Aarni Koskela)
- Plugin component counts corrected: 29 agents, 24 commands, 18 skills
v2.30.0
2026-02-05Added
orchestrating-swarmsskill - Comprehensive guide to multi-agent orchestration- Covers primitives: Agent, Team, Teammate, Leader, Task, Inbox, Message, Backend
- Documents two spawning methods: subagents vs teammates
- Explains all 13 TeammateTool operations
- Includes orchestration patterns: Parallel Specialists, Pipeline, Self-Organizing Swarm
- Details spawn backends: in-process, tmux, iterm2
- Provides complete workflow examples
/slfgcommand - Swarm-enabled variant of/lfgthat uses swarm mode for parallel execution
Changed
/workflows:workcommand - Added optional Swarm Mode section for parallel execution with coordinated agents
v2.29.0
2026-02-04Added
schema-drift-detectoragent - Detects unrelated schema.rb changes in PRs- Compares schema.rb diff against migrations in the PR
- Catches columns, indexes, and tables from other branches
- Prevents accidental inclusion of local database state
- Provides clear fix instructions (checkout + migrate)
- Essential pre-merge check for any PR with database changes
v2.28.0
2026-01-21Added
/workflows:brainstormcommand - Guided ideation flow to expand options quickly (#101)
Changed
/workflows:plancommand - Smarter research decision logic before deep dives (#100)- Research checks - Mandatory API deprecation validation in research flows (#102)
- Docs - Call out experimental OpenCode/Codex providers and install defaults
- CLI defaults -
installpulls from GitHub by default and writes OpenCode/Codex output to global locations
Merged PRs
Contributors
Huge thanks to the community contributors who made this release possible! 🙌
- @tmchow - Brainstorm workflow, research decision logic (2 PRs)
- @jaredmorgenstern - API deprecation validation
v2.27.0
2026-01-20Added
/workflows:plancommand - Interactive Q&A refinement phase (#88)- After generating initial plan, now offers to refine with targeted questions
- Asks up to 5 questions about ambiguous requirements, edge cases, or technical decisions
- Incorporates answers to strengthen the plan before finalization
Changed
/workflows:workcommand - Incremental commits and branch safety (#93)- Now commits after each completed task instead of batching at end
- Added branch protection checks before starting work
- Better progress tracking with per-task commits
Fixed
dhh-rails-styleskill - Fixed broken markdown table formatting (#96)- Documentation - Updated hardcoded year references from 2025 to 2026 (#86, #91)
Contributors
Huge thanks to the community contributors who made this release possible! 🙌
- @tmchow - Interactive Q&A for plans, incremental commits, year updates (3 PRs!)
- @ashwin47 - Markdown table fix
- @rbouschery - Documentation year update
Summary
- 27 agents, 23 commands, 14 skills, 1 MCP server
v2.26.5
2026-01-18Changed
/workflows:workcommand - Now marks off checkboxes in plan document as tasks complete- Added step to update original plan file (
[ ]→[x]) after each task - Ensures no checkboxes are left unchecked when work is done
- Keeps plan as living document showing progress
- Added step to update original plan file (
v2.26.4
2026-01-15Changed
/workflows:workcommand - PRs now include Compound Engineered badge- Updated PR template to include badge at bottom linking to plugin repo
- Added badge requirement to quality checklist
- Badge provides attribution and link to the plugin that created the PR
v2.26.3
2026-01-14Changed
design-iteratoragent - Now auto-loads design skills at start of iterations- Added "Step 0: Discover and Load Design Skills (MANDATORY)" section
- Discovers skills from ~/.claude/skills/, .claude/skills/, and plugin cache
- Maps user context to relevant skills (Swiss design → swiss-design skill, etc.)
- Reads SKILL.md files to load principles into context before iterating
- Extracts key principles: grid specs, typography rules, color philosophy, layout principles
- Skills are applied throughout ALL iterations for consistent design language
v2.26.2
2026-01-14Changed
/test-browsercommand - Clarified to use agent-browser CLI exclusively- Added explicit "CRITICAL: Use agent-browser CLI Only" section
- Added warning: "DO NOT use Chrome MCP tools (mcp__claude-in-chrome__*)"
- Added Step 0: Verify agent-browser installation before testing
- Added full CLI reference section at bottom
- Added Next.js route mapping patterns
v2.26.1
2026-01-14Changed
best-practices-researcheragent - Now checks skills before going online- Phase 1: Discovers and reads relevant SKILL.md files from plugin, global, and project directories
- Phase 2: Only goes online for additional best practices if skills don't provide enough coverage
- Phase 3: Synthesizes all findings with clear source attribution (skill-based > official docs > community)
- Skill mappings: Rails → dhh-rails-style, Frontend → frontend-design, AI → agent-native-architecture, etc.
- Prioritizes curated skill knowledge over external sources for trivial/common patterns
v2.26.0
2026-01-14Added
/lfgcommand - Full autonomous engineering workflow- Orchestrates complete feature development from plan to PR
- Runs: plan → deepen-plan → work → review → resolve todos → test-browser → feature-video
- Uses ralph-loop for autonomous completion
- Migrated from local command, updated to use
/test-browserinstead of/playwright-test
Summary
- 27 agents, 21 commands, 14 skills, 1 MCP server
v2.25.0
2026-01-14Added
agent-browserskill - Browser automation using Vercel's agent-browser CLI- Navigate, click, fill forms, take screenshots
- Uses ref-based element selection (simpler than Playwright)
- Works in headed or headless mode
Changed
- Replaced Playwright MCP with agent-browser - Simpler browser automation across all browser-related features:
/test-browsercommand - Now uses agent-browser CLI with headed/headless mode option/feature-videocommand - Uses agent-browser for screenshotsdesign-iteratoragent - Browser automation via agent-browserdesign-implementation-revieweragent - Screenshot comparisonfigma-design-syncagent - Design verificationbug-reproduction-validatoragent - Bug reproduction/reviewworkflow - Screenshot capabilities/workworkflow - Browser testing
/test-browsercommand - Added "Step 0" to ask user if they want headed (visible) or headless browser mode
Removed
- Playwright MCP server - Replaced by agent-browser CLI (simpler, no MCP overhead)
/playwright-testcommand - Renamed to/test-browser
Summary
- 27 agents, 20 commands, 14 skills, 1 MCP server
v2.23.2
2026-01-09Changed
/reproduce-bugcommand - Enhanced with Playwright visual reproduction:- Added Phase 2 for visual bug reproduction using browser automation
- Step-by-step guide for navigating to affected areas
- Screenshot capture at each reproduction step
- Console error checking
- User flow reproduction with clicks, typing, and snapshots
- Better documentation structure with 4 clear phases
Summary
- 27 agents, 21 commands, 13 skills, 2 MCP servers
v2.23.1
2026-01-08Changed
- Agent model inheritance - All 26 agents now use
model: inheritso they match the user's configured model. Onlylintkeepsmodel: haikufor cost efficiency. (fixes #69)
Summary
- 27 agents, 21 commands, 13 skills, 2 MCP servers
v2.23.0
2026-01-08Added
/agent-native-auditcommand - Comprehensive agent-native architecture review- Launches 8 parallel sub-agents, one per core principle
- Principles: Action Parity, Tools as Primitives, Context Injection, Shared Workspace, CRUD Completeness, UI Integration, Capability Discovery, Prompt-Native Features
- Each agent produces specific score (X/Y format with percentage)
- Generates summary report with overall score and top 10 recommendations
- Supports single principle audit via argument
Summary
- 27 agents, 21 commands, 13 skills, 2 MCP servers
v2.22.0
2026-01-05Added
rcloneskill - Upload files to S3, Cloudflare R2, Backblaze B2, and other cloud storage providers
Changed
/feature-videocommand - Enhanced with:- Better ffmpeg commands for video/GIF creation (proper scaling, framerate control)
- rclone integration for cloud uploads
- Screenshot copying to project folder
- Improved upload options workflow
Summary
- 27 agents, 20 commands, 13 skills, 2 MCP servers
v2.21.0
2026-01-05Fixed
- Version history cleanup after merge conflict resolution
Summary
This release consolidates all recent work:
/feature-videocommand for recording PR demos/deepen-plancommand for enhanced planningcreate-agent-skillsskill rewrite (official spec compliance)agent-native-architectureskill major expansiondhh-rails-styleskill consolidation (merged dhh-ruby-style)- 27 agents, 20 commands, 12 skills, 2 MCP servers
v2.20.0
2026-01-05Added
/feature-videocommand - Record video walkthroughs of features using Playwright
Changed
create-agent-skillsskill - Complete rewrite to match Anthropic's official skill specification
Removed
dhh-ruby-styleskill - Merged intodhh-rails-styleskill
v2.19.0
2025-12-31Added
/deepen-plancommand - Power enhancement for plans. Takes an existing plan and runs parallel research sub-agents for each major section to add:- Best practices and industry patterns
- Performance optimizations
- UI/UX improvements (if applicable)
- Quality enhancements and edge cases
- Real-world implementation examples
The result is a deeply grounded, production-ready plan with concrete implementation details.
Changed
/workflows:plancommand - Added/deepen-planas option 2 in post-generation menu. Added note: if running with ultrathink enabled, automatically run deepen-plan for maximum depth.
v2.18.0
2025-12-25Added
agent-native-architectureskill - Added Dynamic Capability Discovery pattern and Architecture Review Checklist:
New Patterns in mcp-tool-design.md:
- Dynamic Capability Discovery - For external APIs (HealthKit, HomeKit, GraphQL), build a discovery tool (
list_*) that returns available capabilities at runtime, plus a generic access tool that takes strings (not enums). The API validates, not your code. This means agents can use new API capabilities without code changes. - CRUD Completeness - Every entity the agent can create must also be readable, updatable, and deletable. Incomplete CRUD = broken action parity.
New in SKILL.md:
- Architecture Review Checklist - Pushes reviewer findings earlier into the design phase. Covers tool design (dynamic vs static, CRUD completeness), action parity (capability map, edit/delete), UI integration (agent → UI communication), and context injection.
- Option 11: API Integration - New intake option for connecting to external APIs like HealthKit, HomeKit, GraphQL
- New anti-patterns: Static Tool Mapping (building individual tools for each API endpoint), Incomplete CRUD (create-only tools)
- Tool Design Criteria section added to success criteria checklist
New in shared-workspace-architecture.md:
- iCloud File Storage for Multi-Device Sync - Use iCloud Documents for your shared workspace to get free, automatic multi-device sync without building a sync layer. Includes implementation pattern, conflict handling, entitlements, and when NOT to use it.
Philosophy
This update codifies a key insight for agent-native apps: when integrating with external APIs where the agent should have the same access as the user, use Dynamic Capability Discovery instead of static tool mapping. Instead of building read_steps, read_heart_rate, read_sleep... build list_health_types + read_health_data(dataType: string). The agent discovers what's available, the API validates the type.
Note: This pattern is specifically for agent-native apps following the "whatever the user can do, the agent can do" philosophy. For constrained agents with intentionally limited capabilities, static tool mapping may be appropriate.
v2.17.0
2025-12-25Enhanced
agent-native-architectureskill - Major expansion based on real-world learnings from building the Every Reader iOS app. Added 5 new reference documents and expanded existing ones:
New References:
- dynamic-context-injection.md - How to inject runtime app state into agent system prompts. Covers context injection patterns, what context to inject (resources, activity, capabilities, vocabulary), implementation patterns for Swift/iOS and TypeScript, and context freshness.
- action-parity-discipline.md - Workflow for ensuring agents can do everything users can do. Includes capability mapping templates, parity audit process, PR checklists, tool design for parity, and context parity guidelines.
- shared-workspace-architecture.md - Patterns for agents and users working in the same data space. Covers directory structure, file tools, UI integration (file watching, shared stores), agent-user collaboration patterns, and security considerations.
- agent-native-testing.md - Testing patterns for agent-native apps. Includes "Can Agent Do It?" tests, the Surprise Test, automated parity testing, integration testing, and CI/CD integration.
- mobile-patterns.md - Mobile-specific patterns for iOS/Android. Covers background execution (checkpoint/resume), permission handling, cost-aware design (model tiers, token budgets, network awareness), offline handling, and battery awareness.
Updated References:
- architecture-patterns.md - Added 3 new patterns: Unified Agent Architecture (one orchestrator, many agent types), Agent-to-UI Communication (shared data store, file watching, event bus), and Model Tier Selection (fast/balanced/powerful).
Updated Skill Root:
- SKILL.md - Expanded intake menu (now 10 options including context injection, action parity, shared workspace, testing, mobile patterns). Added 5 new agent-native anti-patterns (Context Starvation, Orphan Features, Sandbox Isolation, Silent Actions, Capability Hiding). Expanded success criteria with agent-native and mobile-specific checklists.
agent-native-revieweragent - Significantly enhanced with comprehensive review process covering all new patterns. Now checks for action parity, context parity, shared workspace, tool design (primitives vs workflows), dynamic context injection, and mobile-specific concerns. Includes detailed anti-patterns, output format template, quick checks ("Write to Location" test, Surprise test), and mobile-specific verification.
Philosophy
These updates operationalize a key insight from building agent-native mobile apps: "The agent should be able to do anything the user can do, through tools that mirror UI capabilities, with full context about the app state." The failure case that prompted these changes: an agent asked "what reading feed?" when a user said "write something in my reading feed"—because it had no publish_to_feed tool and no context about what "feed" meant.
v2.16.0
2025-12-21Enhanced
dhh-rails-styleskill - Massively expanded reference documentation incorporating patterns from Marc Köhlbrugge's Unofficial 37signals Coding Style Guide:- controllers.md - Added authorization patterns, rate limiting, Sec-Fetch-Site CSRF protection, request context concerns
- models.md - Added validation philosophy, let it crash philosophy (bang methods), default values with lambdas, Rails 7.1+ patterns (normalizes, delegated types, store accessor), concern guidelines with touch chains
- frontend.md - Added Turbo morphing best practices, Turbo frames patterns, 6 new Stimulus controllers (auto-submit, dialog, local-time, etc.), Stimulus best practices, view helpers, caching with personalization, broadcasting patterns
- architecture.md - Added path-based multi-tenancy, database patterns (UUIDs, state as records, hard deletes, counter caches), background job patterns (transaction safety, error handling, batch processing), email patterns, security patterns (XSS, SSRF, CSP), Active Storage patterns
- gems.md - Added expanded what-they-avoid section (service objects, form objects, decorators, CSS preprocessors, React/Vue), testing philosophy with Minitest/fixtures patterns
Credits
- Reference patterns derived from Marc Köhlbrugge's Unofficial 37signals Coding Style Guide
v2.15.2
2025-12-21Fixed
- All skills - Fixed spec compliance issues across 12 skills:
- Reference files now use proper markdown links (
file.md) instead of backtick text - Descriptions now use third person ("This skill should be used when...") per skill-creator spec
- Affected skills: agent-native-architecture, andrew-kane-gem-writer, compound-docs, create-agent-skills, dhh-rails-style, dspy-ruby, every-style-editor, file-todos, frontend-design, gemini-imagegen
- Reference files now use proper markdown links (
Added
- CLAUDE.md - Added Skill Compliance Checklist with validation commands for ensuring new skills meet spec requirements
v2.15.1
2025-12-18Changed
/workflows:reviewcommand - Section 7 now detects project type (Web, iOS, or Hybrid) and offers appropriate testing. Web projects get/playwright-test, iOS projects get/xcode-test, hybrid projects can run both.
v2.15.0
2025-12-18Added
/xcode-testcommand - Build and test iOS apps on simulator using XcodeBuildMCP. Automatically detects Xcode project, builds app, launches simulator, and runs test suite. Includes retries for flaky tests.
/playwright-testcommand - Run Playwright browser tests on pages affected by current PR or branch. Detects changed files, maps to affected routes, generates/runs targeted tests, and reports results with screenshots.
v2.6.0
2024-11-26Removed
feedback-codifieragent — Removed from workflow agents. Agent count reduced from 24 to 23.
v2.5.0
2024-11-25Added
/report-bugcommand — New slash command for reporting bugs in the agentic-engineering plugin. Provides a structured workflow that gathers bug information through guided questions, collects environment details automatically, and creates a GitHub issue in the aagnone3/agentic-engineering repository.
v2.4.1
2024-11-24Changed
design-iteratoragent — Added focused screenshot guidance: always capture only the target element/area instead of full page screenshots. Includesbrowser_resizerecommendations, element-targeted screenshot workflow usingbrowser_snapshotrefs, and explicit instruction to never use fullPage mode.
v2.4.0
2024-11-24Fixed
- MCP Configuration — Moved MCP servers back to
plugin.jsonfollowing working examples from anthropics/life-sciences plugins. - Context7 URL — Updated to use HTTP type with correct endpoint URL.
v2.3.0
2024-11-24Changed
- MCP Configuration — Moved MCP servers from inline
plugin.jsonto a separate.mcp.jsonfile per Claude Code best practices.
v2.2.1
2024-11-24Fixed
- Playwright MCP Server — Added missing
"type": "stdio"field required for MCP server configuration to load properly.
v2.2.0
2024-11-24Added
- Context7 MCP Server — Bundled Context7 for instant framework documentation lookup. Provides up-to-date docs for Rails, React, Next.js, and more than 100 other frameworks.
v2.1.0
2024-11-24Added
- Playwright MCP Server — Bundled
@playwright/mcpfor browser automation across all projects. Provides screenshot, navigation, click, fill, and evaluate tools.
Changed
- Replaced all Puppeteer references with Playwright across agents and commands:
bug-reproduction-validatoragentdesign-iteratoragentdesign-implementation-revieweragentfigma-design-syncagentgenerate_commandcommand
v2.0.2
2024-11-24Changed
design-iteratoragent — Updated description to emphasize proactive usage when design work isn't coming together on first attempt.
v2.0.1
2024-11-24Added
CLAUDE.md— Project instructions with versioning requirements.docs/solutions/plugin-versioning-requirements.md— Workflow documentation.
v2.0.0
2024-11-24 Major ReleaseMajor reorganization consolidating agents, commands, and skills from multiple sources into a single, well-organized plugin.
Added
New Agents (seven):
design-iterator- Iteratively refine UI components through systematic design iterationsdesign-implementation-reviewer- Verify UI implementations match Figma design specificationsfigma-design-sync- Synchronize web implementations with Figma designsbug-reproduction-validator- Systematically reproduce and validate bug reportsspec-flow-analyzer- Analyze user flows and identify gaps in specificationslint- Run linting and code quality checks on Ruby and ERB filesankane-readme-writer- Create READMEs following Ankane-style template for Ruby gems
New Commands (nine):
/changelog- Create engaging changelogs for recent merges/plan_review- Multi-agent plan review in parallel/resolve_parallel- Resolve TODO comments in parallel/resolve_pr_parallel- Resolve PR comments in parallel/reproduce-bug- Reproduce bugs using logs and console/prime- Prime/setup command/create-agent-skill- Create or edit Claude Code skills/heal-skill- Fix skill documentation issues/codify- Document solved problems for knowledge base
New Skills (10):
andrew-kane-gem-writer- Write Ruby gems following Andrew Kane's patternscodify-docs- Capture solved problems as categorized documentationcreate-agent-skills- Expert guidance for creating Claude Code skillsdhh-ruby-style- Write Ruby/Rails code in DHH's 37signals styledspy-ruby- Build type-safe LLM applications with DSPy.rbevery-style-editor- Review copy for Every's style guide compliancefile-todos- File-based todo tracking systemfrontend-design- Create production-grade frontend interfacesgit-worktree- Manage Git worktrees for parallel developmentskill-creator- Guide for creating effective Claude Code skills
Changed
Agents reorganized by category:
review/(10 agents) - Code quality, security, performance reviewersresearch/(four agents) - Documentation, patterns, history analysisdesign/(three agents) - UI/design review and iterationworkflow/(six agents) - PR resolution, bug validation, lintingdocs/(one agent) - README generation
Summary:
| Component | v1.1.0 | v2.0.0 | Change |
|---|---|---|---|
| Agents | 17 | 24 | +7 |
| Commands | 6 | 15 | +9 |
| Skills | 1 | 11 | +10 |
v1.1.0
2024-11-22Added
gemini-imagegenskill- Text-to-image generation with Google's Gemini API
- Image editing and manipulation
- Multi-turn refinement via chat interface
- Multiple reference image composition (up to 14 images)
- Model support:
gemini-2.5-flash-imageandgemini-3-pro-image-preview
Fixed
- Corrected component counts in documentation (17 agents, not 15).
v1.0.0
2024-10-09 Initial ReleaseInitial release of the agentic-engineering plugin.
Added
17 Specialized Agents
Code Review (five):
kieran-rails-reviewer- Rails code review with strict conventionskieran-python-reviewer- Python code review with quality standardskieran-typescript-reviewer- TypeScript code reviewdhh-rails-reviewer- Rails review from DHH's perspectivecode-simplicity-reviewer- Final pass for simplicity and minimalism
Analysis & Architecture (four):
architecture-strategist- Architectural decisions and compliancepattern-recognition-specialist- Design pattern analysissecurity-sentinel- Security audits and vulnerability assessmentsperformance-oracle- Performance analysis and optimization
Research (four):
framework-docs-researcher- Framework documentation researchbest-practices-researcher- External best practices gatheringgit-history-analyzer- Git history and code evolution analysisrepo-research-analyst- Repository structure and conventions
Workflow (three):
every-style-editor- Every's style guide compliancepr-comment-resolver- PR comment resolutionfeedback-codifier- Feedback pattern codification
Six Slash Commands:
/plan- Create implementation plans/review- Comprehensive code reviews/work- Execute work items systematically/triage- Triage and prioritize issues/resolve_todo_parallel- Resolve TODOs in parallel/generate_command- Generate new slash commands
Infrastructure:
- MIT license
- Plugin manifest (
plugin.json) - Pre-configured permissions for Rails development