docs(architecture): add tool-neutral agent hub findings, ADR-10, and adoption roadmap#428
docs(architecture): add tool-neutral agent hub findings, ADR-10, and adoption roadmap#428JustAGhosT merged 3 commits intodevfrom
Conversation
…adoption roadmap Comparative analysis of agentkit-forge sync engine vs Mystira.workspace hand-authored .agents/ pattern. Documents 5-phase adoption roadmap to converge both approaches: .agents/ as sync target, reflective guards, .readme.yaml generation, cross-session traces, and schema formalisation. Includes regenerated sync output (updated timestamps across all tools). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Mention Blocks like a regular teammate with your question or request: @blocks review this pull request Run |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Important Review skippedToo many files! This PR contains 300 files, which is 150 over the limit of 150. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (300)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Adds architecture documentation that proposes a tool-neutral “agent hub” (.agents/) and includes regenerated AgentKit Forge sync outputs across supported tool targets.
Changes:
- Adds a tool-neutral agent hub findings report plus an adoption roadmap (planning + phased execution).
- Adds ADR-10 proposing
.agents/as a first-class sync target. - Regenerates sync outputs across multiple AI tool targets (primarily timestamp stamp updates).
Reviewed changes
Copilot reviewed 300 out of 444 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| .github/chatmodes/team-devops.chatmode.md | Regenerated metadata (last_updated) timestamp |
| .github/chatmodes/team-data.chatmode.md | Regenerated metadata (last_updated) timestamp |
| .github/chatmodes/team-cost-ops.chatmode.md | Regenerated metadata (last_updated) timestamp |
| .github/chatmodes/team-backend.chatmode.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/vendor-arbitrage-analyst.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/ui-designer.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/token-efficiency-engineer.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/test-lead.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/team-validator.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/spec-compliance-auditor.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/security-auditor.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/role-architect.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/roadmap-tracker.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/retrospective-analyst.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/release-manager.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/release-coordinator.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/prompt-engineer.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/project-shipper.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/product-manager.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/portfolio-analyst.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/model-economist.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/mission-definer.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/integration-tester.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/input-clarifier.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/infra.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/impact-assessor.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/growth-analyst.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/grant-hunter.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/governance-advisor.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/frontend.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/flow-designer.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/feature-ops.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/expansion-analyst.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/environment-manager.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/devops.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/dependency-watcher.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/data.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/coverage-tracker.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/cost-ops-monitor.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/content-strategist.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/brand-guardian.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/backend.agent.md | Regenerated metadata (last_updated) timestamp |
| .github/agents/adoption-strategist.agent.md | Regenerated metadata (last_updated) timestamp |
| .gemini/styleguide.md | Regenerated header timestamp |
| .cursor/rules/team-testing.mdc | Regenerated frontmatter timestamp |
| .cursor/rules/team-strategic-ops.mdc | Regenerated frontmatter timestamp |
| .cursor/rules/team-security.mdc | Regenerated frontmatter timestamp |
| .cursor/rules/team-quality.mdc | Regenerated frontmatter timestamp |
| .cursor/rules/team-product.mdc | Regenerated frontmatter timestamp |
| .cursor/rules/team-infra.mdc | Regenerated frontmatter timestamp |
| .cursor/rules/team-frontend.mdc | Regenerated frontmatter timestamp |
| .cursor/rules/team-forge.mdc | Regenerated frontmatter timestamp |
| .cursor/rules/team-docs.mdc | Regenerated frontmatter timestamp |
| .cursor/rules/team-devops.mdc | Regenerated frontmatter timestamp |
| .cursor/rules/team-data.mdc | Regenerated frontmatter timestamp |
| .cursor/rules/team-cost-ops.mdc | Regenerated frontmatter timestamp |
| .cursor/rules/team-backend.mdc | Regenerated frontmatter timestamp |
| .cursor/rules/languages/typescript.md | Regenerated header timestamp |
| .cursor/rules/languages/testing.md | Regenerated header timestamp |
| .cursor/rules/languages/template-protection.md | Regenerated header timestamp |
| .cursor/rules/languages/security.md | Regenerated header timestamp |
| .cursor/rules/languages/rust.md | Regenerated header timestamp |
| .cursor/rules/languages/python.md | Regenerated header timestamp |
| .cursor/rules/languages/iac.md | Regenerated header timestamp |
| .cursor/rules/languages/git-workflow.md | Regenerated header timestamp |
| .cursor/rules/languages/finops.md | Regenerated header timestamp |
| .cursor/rules/languages/dotnet.md | Regenerated header timestamp |
| .cursor/rules/languages/documentation.md | Regenerated header timestamp |
| .cursor/rules/languages/dependency-management.md | Regenerated header timestamp |
| .cursor/rules/languages/ci-cd.md | Regenerated header timestamp |
| .cursor/rules/languages/blockchain.md | Regenerated header timestamp |
| .cursor/rules/languages/ai-cost-ops.md | Regenerated header timestamp |
| .cursor/rules/languages/agent-conduct.md | Regenerated header timestamp |
| .cursor/rules/languages/README.md | Regenerated header timestamp |
| .cursor/commands/validate.md | Regenerated header timestamp |
| .cursor/commands/test.md | Regenerated header timestamp |
| .cursor/commands/sync.md | Regenerated header timestamp |
| .cursor/commands/sync-backlog.md | Regenerated header timestamp |
| .cursor/commands/start.md | Regenerated header timestamp |
| .cursor/commands/security.md | Regenerated header timestamp |
| .cursor/commands/scaffold.md | Regenerated header timestamp |
| .cursor/commands/review.md | Regenerated header timestamp |
| .cursor/commands/project-status.md | Regenerated header timestamp |
| .cursor/commands/preflight.md | Regenerated header timestamp |
| .cursor/commands/plan.md | Regenerated header timestamp |
| .cursor/commands/orchestrate.md | Regenerated header timestamp |
| .cursor/commands/infra-eval.md | Regenerated header timestamp |
| .cursor/commands/import-issues.md | Regenerated header timestamp |
| .cursor/commands/format.md | Regenerated header timestamp |
| .cursor/commands/feature-review.md | Regenerated header timestamp |
| .cursor/commands/feature-flow.md | Regenerated header timestamp |
| .cursor/commands/feature-configure.md | Regenerated header timestamp |
| .cursor/commands/expand.md | Regenerated header timestamp |
| .cursor/commands/document-history.md | Regenerated header timestamp |
| .cursor/commands/doctor.md | Regenerated header timestamp |
| .cursor/commands/discover.md | Regenerated header timestamp |
| .cursor/commands/deploy.md | Regenerated header timestamp |
| .cursor/commands/cost.md | Regenerated header timestamp |
| .cursor/commands/cost-centres.md | Regenerated header timestamp |
| .cursor/commands/check.md | Regenerated header timestamp |
| .cursor/commands/build.md | Regenerated header timestamp |
| .cursor/commands/brand.md | Regenerated header timestamp |
| .cursor/commands/backlog.md | Regenerated header timestamp |
| .cursor/commands/analyze-agents.md | Regenerated header timestamp |
| .clinerules/typescript.md | Regenerated header timestamp |
| .clinerules/testing.md | Regenerated header timestamp |
| .clinerules/template-protection.md | Regenerated header timestamp |
| .clinerules/security.md | Regenerated header timestamp |
| .clinerules/rust.md | Regenerated header timestamp |
| .clinerules/python.md | Regenerated header timestamp |
| .clinerules/iac.md | Regenerated header timestamp |
| .clinerules/git-workflow.md | Regenerated header timestamp |
| .clinerules/finops.md | Regenerated header timestamp |
| .clinerules/dotnet.md | Regenerated header timestamp |
| .clinerules/documentation.md | Regenerated header timestamp |
| .clinerules/dependency-management.md | Regenerated header timestamp |
| .clinerules/ci-cd.md | Regenerated header timestamp |
| .clinerules/blockchain.md | Regenerated header timestamp |
| .clinerules/ai-cost-ops.md | Regenerated header timestamp |
| .clinerules/agent-conduct.md | Regenerated header timestamp |
| .clinerules/languages/typescript.md | Regenerated header timestamp |
| .clinerules/languages/testing.md | Regenerated header timestamp |
| .clinerules/languages/template-protection.md | Regenerated header timestamp |
| .clinerules/languages/security.md | Regenerated header timestamp |
| .clinerules/languages/rust.md | Regenerated header timestamp |
| .clinerules/languages/python.md | Regenerated header timestamp |
| .clinerules/languages/iac.md | Regenerated header timestamp |
| .clinerules/languages/git-workflow.md | Regenerated header timestamp |
| .clinerules/languages/finops.md | Regenerated header timestamp |
| .clinerules/languages/dotnet.md | Regenerated header timestamp |
| .clinerules/languages/documentation.md | Regenerated header timestamp |
| .clinerules/languages/dependency-management.md | Regenerated header timestamp |
| .clinerules/languages/ci-cd.md | Regenerated header timestamp |
| .clinerules/languages/blockchain.md | Regenerated header timestamp |
| .clinerules/languages/ai-cost-ops.md | Regenerated header timestamp |
| .clinerules/languages/agent-conduct.md | Regenerated header timestamp |
| .clinerules/languages/README.md | Regenerated header timestamp |
| .claude/skills/validate/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/test/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/sync/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/sync-backlog/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/start/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/security/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/scaffold/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/review/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/project-status/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/preflight/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/plan/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/orchestrate/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/infra-eval/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/import-issues/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/format/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/feature-review/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/feature-flow/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/feature-configure/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/expand/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/document-history/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/doctor/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/discover/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/deploy/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/cost/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/cost-centres/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/check/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/build/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/brand/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/backlog/SKILL.md | Regenerated frontmatter timestamp |
| .claude/skills/analyze-agents/SKILL.md | Regenerated frontmatter timestamp |
| .claude/rules/typescript.md | Regenerated header timestamp |
| .claude/rules/testing.md | Regenerated header timestamp |
| .claude/rules/template-protection.md | Regenerated header timestamp |
| .claude/rules/security.md | Regenerated header timestamp |
| .claude/rules/rust.md | Regenerated header timestamp |
| .claude/rules/quality.md | Regenerated header timestamp |
| .claude/rules/python.md | Regenerated header timestamp |
| .claude/rules/iac.md | Regenerated header timestamp |
| .claude/rules/git-workflow.md | Regenerated header timestamp |
| .claude/rules/dotnet.md | Regenerated header timestamp |
| .claude/rules/documentation.md | Regenerated header timestamp |
| .claude/rules/dependency-management.md | Regenerated header timestamp |
| .claude/rules/ci-cd.md | Regenerated header timestamp |
| .claude/rules/blockchain.md | Regenerated header timestamp |
| .claude/rules/agent-conduct.md | Regenerated header timestamp |
| .claude/rules/languages/typescript.md | Regenerated header timestamp |
| .claude/rules/languages/testing.md | Regenerated header timestamp |
| .claude/rules/languages/template-protection.md | Regenerated header timestamp |
| .claude/rules/languages/security.md | Regenerated header timestamp |
| .claude/rules/languages/rust.md | Regenerated header timestamp |
| .claude/rules/languages/python.md | Regenerated header timestamp |
| .claude/rules/languages/iac.md | Regenerated header timestamp |
| .claude/rules/languages/git-workflow.md | Regenerated header timestamp |
| .claude/rules/languages/finops.md | Regenerated header timestamp |
| .claude/rules/languages/dotnet.md | Regenerated header timestamp |
| .claude/rules/languages/documentation.md | Regenerated header timestamp |
| .claude/rules/languages/dependency-management.md | Regenerated header timestamp |
| .claude/rules/languages/ci-cd.md | Regenerated header timestamp |
| .claude/rules/languages/blockchain.md | Regenerated header timestamp |
| .claude/rules/languages/ai-cost-ops.md | Regenerated header timestamp |
| .claude/rules/languages/agent-conduct.md | Regenerated header timestamp |
| .claude/rules/languages/README.md | Regenerated header timestamp |
| .claude/commands/validate.md | Regenerated frontmatter timestamp |
| .claude/commands/test.md | Regenerated frontmatter timestamp |
| .claude/commands/team-testing.md | Regenerated frontmatter timestamp |
| .claude/commands/team-strategic-ops.md | Regenerated frontmatter timestamp |
| .claude/commands/team-security.md | Regenerated frontmatter timestamp |
| .claude/commands/team-quality.md | Regenerated frontmatter timestamp |
| .claude/commands/team-product.md | Regenerated frontmatter timestamp |
| .claude/commands/team-infra.md | Regenerated frontmatter timestamp |
| .claude/commands/team-frontend.md | Regenerated frontmatter timestamp |
| .claude/commands/team-forge.md | Regenerated frontmatter timestamp |
| .claude/commands/team-docs.md | Regenerated frontmatter timestamp |
| .claude/commands/team-devops.md | Regenerated frontmatter timestamp |
| .claude/commands/team-data.md | Regenerated frontmatter timestamp |
| .claude/commands/team-cost-ops.md | Regenerated frontmatter timestamp |
| .claude/commands/team-backend.md | Regenerated frontmatter timestamp |
| .claude/commands/sync.md | Regenerated frontmatter timestamp |
| .claude/commands/sync-backlog.md | Regenerated frontmatter timestamp |
| .claude/commands/start.md | Regenerated frontmatter timestamp |
| .claude/commands/security.md | Regenerated frontmatter timestamp |
| .claude/commands/scaffold.md | Regenerated frontmatter timestamp |
| .claude/commands/review.md | Regenerated frontmatter timestamp |
| .claude/commands/project-status.md | Regenerated frontmatter timestamp |
| .claude/commands/preflight.md | Regenerated frontmatter timestamp |
| .claude/commands/plan.md | Regenerated frontmatter timestamp |
| .claude/commands/orchestrate.md | Regenerated frontmatter timestamp |
| .claude/commands/infra-eval.md | Regenerated frontmatter timestamp |
| .claude/commands/import-issues.md | Regenerated frontmatter timestamp |
| .claude/commands/format.md | Regenerated frontmatter timestamp |
| .claude/commands/feature-review.md | Regenerated frontmatter timestamp |
| .claude/commands/feature-flow.md | Regenerated frontmatter timestamp |
| .claude/commands/feature-configure.md | Regenerated frontmatter timestamp |
| .claude/commands/expand.md | Regenerated frontmatter timestamp |
| .claude/commands/document-history.md | Regenerated frontmatter timestamp |
| .claude/commands/doctor.md | Regenerated frontmatter timestamp |
| .claude/commands/discover.md | Regenerated frontmatter timestamp |
| .claude/commands/deploy.md | Regenerated frontmatter timestamp |
| .claude/commands/cost.md | Regenerated frontmatter timestamp |
| .claude/commands/cost-centres.md | Regenerated frontmatter timestamp |
| .claude/commands/check.md | Regenerated frontmatter timestamp |
| .claude/commands/build.md | Regenerated frontmatter timestamp |
| .claude/commands/brand.md | Regenerated frontmatter timestamp |
| .claude/commands/backlog.md | Regenerated frontmatter timestamp |
| .claude/agents/vendor-arbitrage-analyst.md | Regenerated header timestamp |
| .claude/agents/ui-designer.md | Regenerated header timestamp |
| .claude/agents/token-efficiency-engineer.md | Regenerated header timestamp |
| .claude/agents/test-lead.md | Regenerated header timestamp |
| .claude/agents/team-validator.md | Regenerated header timestamp |
| .claude/agents/spec-compliance-auditor.md | Regenerated header timestamp |
| .claude/agents/security-auditor.md | Regenerated header timestamp |
| .claude/agents/role-architect.md | Regenerated header timestamp |
| .claude/agents/roadmap-tracker.md | Regenerated header timestamp |
| .claude/agents/retrospective-analyst.md | Regenerated header timestamp |
| .claude/agents/release-manager.md | Regenerated header timestamp |
| .claude/agents/release-coordinator.md | Regenerated header timestamp |
| .claude/agents/prompt-engineer.md | Regenerated header timestamp |
| .claude/agents/project-shipper.md | Regenerated header timestamp |
| .claude/agents/product-manager.md | Regenerated header timestamp |
| .claude/agents/portfolio-analyst.md | Regenerated header timestamp |
| .claude/agents/model-economist.md | Regenerated header timestamp |
| .claude/agents/mission-definer.md | Regenerated header timestamp |
| .claude/agents/integration-tester.md | Regenerated header timestamp |
| .claude/agents/input-clarifier.md | Regenerated header timestamp |
| .claude/agents/infra.md | Regenerated header timestamp |
| .claude/agents/impact-assessor.md | Regenerated header timestamp |
| .claude/agents/growth-analyst.md | Regenerated header timestamp |
| .claude/agents/grant-hunter.md | Regenerated header timestamp |
| .claude/agents/governance-advisor.md | Regenerated header timestamp |
| .claude/agents/frontend.md | Regenerated header timestamp |
| .claude/agents/flow-designer.md | Regenerated header timestamp |
| .claude/agents/feature-ops.md | Regenerated header timestamp |
| .claude/agents/expansion-analyst.md | Regenerated header timestamp |
| .claude/agents/environment-manager.md | Regenerated header timestamp |
| .claude/agents/devops.md | Regenerated header timestamp |
| .claude/agents/dependency-watcher.md | Regenerated header timestamp |
| .claude/agents/data.md | Regenerated header timestamp |
| .claude/agents/coverage-tracker.md | Regenerated header timestamp |
| .claude/agents/cost-ops-monitor.md | Regenerated header timestamp |
| .claude/agents/content-strategist.md | Regenerated header timestamp |
| .claude/agents/brand-guardian.md | Regenerated header timestamp |
| .claude/agents/backend.md | Regenerated header timestamp |
| .claude/agents/adoption-strategist.md | Regenerated header timestamp |
| .agents/skills/validate/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/test/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/sync/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/sync-backlog/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/start/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/security/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/scaffold/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/review/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/project-status/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/preflight/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/plan/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/orchestrate/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/infra-eval/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/import-issues/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/format/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/feature-review/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/feature-flow/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/feature-configure/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/expand/SKILL.md | Regenerated frontmatter timestamp |
| .agents/skills/document-history/SKILL.md | Regenerated frontmatter timestamp |
You can also share your feedback on Copilot code review. Take the survey.
| generated_by: 'agentkit-forge' | ||
| last_model: 'sync-engine' | ||
| last_updated: '2026-03-13' | ||
| last_updated: '2026-03-17' |
There was a problem hiding this comment.
False positive — the 3 docs files ARE in the commit (verified via git show --name-only). Copilot sampled 300 of 444 files and missed them. The bulk are regenerated sync timestamp bumps.
| <!-- generated_by: agentkit-forge | last_model: sync-engine | last_updated: 2026-03-17 --> | ||
| <!-- Format: Plain Markdown. Language/domain-specific AI assistant instructions. --> | ||
|
|
||
| # Instructions — template-protection |
There was a problem hiding this comment.
Valid observation but not a regression in this PR. All .cursor/rules/languages/*.md files use the same preamble format (generated_by: agentkit-forge | last_model: sync-engine | last_updated: ...) — this is what the Cursor template produces. The DO NOT EDIT header is used by other output targets (e.g. .claude/rules/). Standardising preamble format across all output targets is a good future improvement but out of scope for this docs-only PR. Tracking as a minor backlog item.
…report Comprehensive analysis of the AI agent configuration & orchestration market: - 6 primary competitors profiled (Ruler, Agent OS, ai-rules-sync, agent-rules, Block ai-rules, AGENTS.md) - Evaluation matrix across 14 dimensions - SWOT analysis with evidence-based assessments - 12-KPI framework with baselines, targets, and scoring methodology - Tracking dashboard template and priority matrix - Market context: $8.5B market, 62% developer adoption, protocol convergence Key finding: Rules sync is commoditising; AgentKit Forge's moat is orchestration + governance + CI validation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
# Conflicts: # .agents/skills/document-history/SKILL.md # .agents/skills/expand/SKILL.md # .agents/skills/feature-configure/SKILL.md # .agents/skills/feature-flow/SKILL.md # .agents/skills/feature-review/SKILL.md # .agents/skills/format/SKILL.md # .agents/skills/import-issues/SKILL.md # .agents/skills/infra-eval/SKILL.md # .agents/skills/orchestrate/SKILL.md # .agents/skills/plan/SKILL.md # .agents/skills/preflight/SKILL.md # .agents/skills/project-status/SKILL.md # .agents/skills/review/SKILL.md # .agents/skills/scaffold/SKILL.md # .agents/skills/security/SKILL.md # .agents/skills/start/SKILL.md # .agents/skills/sync-backlog/SKILL.md # .agents/skills/sync/SKILL.md # .agents/skills/test/SKILL.md # .agents/skills/validate/SKILL.md # .claude/agents/adoption-strategist.md # .claude/agents/backend.md # .claude/agents/brand-guardian.md # .claude/agents/content-strategist.md # .claude/agents/cost-ops-monitor.md # .claude/agents/coverage-tracker.md # .claude/agents/data.md # .claude/agents/dependency-watcher.md # .claude/agents/devops.md # .claude/agents/environment-manager.md # .claude/agents/expansion-analyst.md # .claude/agents/feature-ops.md # .claude/agents/flow-designer.md # .claude/agents/frontend.md # .claude/agents/governance-advisor.md # .claude/agents/grant-hunter.md # .claude/agents/growth-analyst.md # .claude/agents/impact-assessor.md # .claude/agents/infra.md # .claude/agents/input-clarifier.md # .claude/agents/integration-tester.md # .claude/agents/mission-definer.md # .claude/agents/model-economist.md # .claude/agents/portfolio-analyst.md # .claude/agents/product-manager.md # .claude/agents/project-shipper.md # .claude/agents/prompt-engineer.md # .claude/agents/release-coordinator.md # .claude/agents/release-manager.md # .claude/agents/retrospective-analyst.md # .claude/agents/roadmap-tracker.md # .claude/agents/role-architect.md # .claude/agents/security-auditor.md # .claude/agents/spec-compliance-auditor.md # .claude/agents/team-validator.md # .claude/agents/test-lead.md # .claude/agents/token-efficiency-engineer.md # .claude/agents/ui-designer.md # .claude/agents/vendor-arbitrage-analyst.md # .claude/commands/backlog.md # .claude/commands/brand.md # .claude/commands/build.md # .claude/commands/check.md # .claude/commands/cost-centres.md # .claude/commands/cost.md # .claude/commands/deploy.md # .claude/commands/discover.md # .claude/commands/doctor.md # .claude/commands/document-history.md # .claude/commands/expand.md # .claude/commands/feature-configure.md # .claude/commands/feature-flow.md # .claude/commands/feature-review.md # .claude/commands/format.md # .claude/commands/import-issues.md # .claude/commands/infra-eval.md # .claude/commands/orchestrate.md # .claude/commands/plan.md # .claude/commands/preflight.md # .claude/commands/project-status.md # .claude/commands/review.md # .claude/commands/scaffold.md # .claude/commands/security.md # .claude/commands/start.md # .claude/commands/sync-backlog.md # .claude/commands/sync.md # .claude/commands/team-backend.md # .claude/commands/team-cost-ops.md # .claude/commands/team-data.md # .claude/commands/team-devops.md # .claude/commands/team-docs.md # .claude/commands/team-forge.md # .claude/commands/team-frontend.md # .claude/commands/team-infra.md # .claude/commands/team-product.md # .claude/commands/team-quality.md # .claude/commands/team-security.md # .claude/commands/team-strategic-ops.md # .claude/commands/team-testing.md # .claude/commands/test.md # .claude/commands/validate.md # .claude/rules/agent-conduct.md # .claude/rules/blockchain.md # .claude/rules/ci-cd.md # .claude/rules/dependency-management.md # .claude/rules/documentation.md # .claude/rules/dotnet.md # .claude/rules/git-workflow.md # .claude/rules/iac.md # .claude/rules/languages/README.md # .claude/rules/languages/agent-conduct.md # .claude/rules/languages/ai-cost-ops.md # .claude/rules/languages/blockchain.md # .claude/rules/languages/ci-cd.md # .claude/rules/languages/dependency-management.md # .claude/rules/languages/documentation.md # .claude/rules/languages/dotnet.md # .claude/rules/languages/finops.md # .claude/rules/languages/git-workflow.md # .claude/rules/languages/iac.md # .claude/rules/languages/python.md # .claude/rules/languages/rust.md # .claude/rules/languages/security.md # .claude/rules/languages/template-protection.md # .claude/rules/languages/testing.md # .claude/rules/languages/typescript.md # .claude/rules/python.md # .claude/rules/quality.md # .claude/rules/rust.md # .claude/rules/security.md # .claude/rules/template-protection.md # .claude/rules/testing.md # .claude/rules/typescript.md # .claude/skills/analyze-agents/SKILL.md # .claude/skills/backlog/SKILL.md # .claude/skills/brand/SKILL.md # .claude/skills/build/SKILL.md # .claude/skills/check/SKILL.md # .claude/skills/cost-centres/SKILL.md # .claude/skills/cost/SKILL.md # .claude/skills/deploy/SKILL.md # .claude/skills/discover/SKILL.md # .claude/skills/doctor/SKILL.md # .claude/skills/document-history/SKILL.md # .claude/skills/expand/SKILL.md # .claude/skills/feature-configure/SKILL.md # .claude/skills/feature-flow/SKILL.md # .claude/skills/feature-review/SKILL.md # .claude/skills/format/SKILL.md # .claude/skills/import-issues/SKILL.md # .claude/skills/infra-eval/SKILL.md # .claude/skills/orchestrate/SKILL.md # .claude/skills/plan/SKILL.md # .claude/skills/preflight/SKILL.md # .claude/skills/project-status/SKILL.md # .claude/skills/review/SKILL.md # .claude/skills/scaffold/SKILL.md # .claude/skills/security/SKILL.md # .claude/skills/start/SKILL.md # .claude/skills/sync-backlog/SKILL.md # .claude/skills/sync/SKILL.md # .claude/skills/test/SKILL.md # .claude/skills/validate/SKILL.md # .clinerules/agent-conduct.md # .clinerules/ai-cost-ops.md # .clinerules/blockchain.md # .clinerules/ci-cd.md # .clinerules/dependency-management.md # .clinerules/documentation.md # .clinerules/dotnet.md # .clinerules/finops.md # .clinerules/git-workflow.md # .clinerules/iac.md # .clinerules/languages/README.md # .clinerules/languages/agent-conduct.md # .clinerules/languages/ai-cost-ops.md # .clinerules/languages/blockchain.md # .clinerules/languages/ci-cd.md # .clinerules/languages/dependency-management.md # .clinerules/languages/documentation.md # .clinerules/languages/dotnet.md # .clinerules/languages/finops.md # .clinerules/languages/git-workflow.md # .clinerules/languages/iac.md # .clinerules/languages/python.md # .clinerules/languages/rust.md # .clinerules/languages/security.md # .clinerules/languages/template-protection.md # .clinerules/languages/testing.md # .clinerules/languages/typescript.md # .clinerules/python.md # .clinerules/rust.md # .clinerules/security.md # .clinerules/template-protection.md # .clinerules/testing.md # .clinerules/typescript.md # .cursor/commands/analyze-agents.md # .cursor/commands/backlog.md # .cursor/commands/brand.md # .cursor/commands/build.md # .cursor/commands/check.md # .cursor/commands/cost-centres.md # .cursor/commands/cost.md # .cursor/commands/deploy.md # .cursor/commands/discover.md # .cursor/commands/doctor.md # .cursor/commands/document-history.md # .cursor/commands/expand.md # .cursor/commands/feature-configure.md # .cursor/commands/feature-flow.md # .cursor/commands/feature-review.md # .cursor/commands/format.md # .cursor/commands/import-issues.md # .cursor/commands/infra-eval.md # .cursor/commands/orchestrate.md # .cursor/commands/plan.md # .cursor/commands/preflight.md # .cursor/commands/project-status.md # .cursor/commands/review.md # .cursor/commands/scaffold.md # .cursor/commands/security.md # .cursor/commands/start.md # .cursor/commands/sync-backlog.md # .cursor/commands/sync.md # .cursor/commands/test.md # .cursor/commands/validate.md # .cursor/rules/languages/README.md # .cursor/rules/languages/agent-conduct.md # .cursor/rules/languages/ai-cost-ops.md # .cursor/rules/languages/blockchain.md # .cursor/rules/languages/ci-cd.md # .cursor/rules/languages/dependency-management.md # .cursor/rules/languages/documentation.md # .cursor/rules/languages/dotnet.md # .cursor/rules/languages/finops.md # .cursor/rules/languages/git-workflow.md # .cursor/rules/languages/iac.md # .cursor/rules/languages/python.md # .cursor/rules/languages/rust.md # .cursor/rules/languages/security.md # .cursor/rules/languages/template-protection.md # .cursor/rules/languages/testing.md # .cursor/rules/languages/typescript.md # .cursor/rules/team-backend.mdc # .cursor/rules/team-cost-ops.mdc # .cursor/rules/team-data.mdc # .cursor/rules/team-devops.mdc # .cursor/rules/team-docs.mdc # .cursor/rules/team-forge.mdc # .cursor/rules/team-frontend.mdc # .cursor/rules/team-infra.mdc # .cursor/rules/team-product.mdc # .cursor/rules/team-quality.mdc # .cursor/rules/team-security.mdc # .cursor/rules/team-strategic-ops.mdc # .cursor/rules/team-testing.mdc # .gemini/styleguide.md # .github/agents/adoption-strategist.agent.md # .github/agents/backend.agent.md # .github/agents/brand-guardian.agent.md # .github/agents/content-strategist.agent.md # .github/agents/cost-ops-monitor.agent.md # .github/agents/coverage-tracker.agent.md # .github/agents/data.agent.md # .github/agents/dependency-watcher.agent.md # .github/agents/devops.agent.md # .github/agents/environment-manager.agent.md # .github/agents/expansion-analyst.agent.md # .github/agents/feature-ops.agent.md # .github/agents/flow-designer.agent.md # .github/agents/frontend.agent.md # .github/agents/governance-advisor.agent.md # .github/agents/grant-hunter.agent.md # .github/agents/growth-analyst.agent.md # .github/agents/impact-assessor.agent.md # .github/agents/infra.agent.md # .github/agents/input-clarifier.agent.md # .github/agents/integration-tester.agent.md # .github/agents/mission-definer.agent.md # .github/agents/model-economist.agent.md # .github/agents/portfolio-analyst.agent.md # .github/agents/product-manager.agent.md # .github/agents/project-shipper.agent.md # .github/agents/prompt-engineer.agent.md # .github/agents/release-coordinator.agent.md # .github/agents/release-manager.agent.md # .github/agents/retrospective-analyst.agent.md # .github/agents/roadmap-tracker.agent.md # .github/agents/role-architect.agent.md # .github/agents/security-auditor.agent.md # .github/agents/spec-compliance-auditor.agent.md # .github/agents/team-validator.agent.md # .github/agents/test-lead.agent.md # .github/agents/token-efficiency-engineer.agent.md # .github/agents/ui-designer.agent.md # .github/agents/vendor-arbitrage-analyst.agent.md # .github/chatmodes/team-backend.chatmode.md # .github/chatmodes/team-cost-ops.chatmode.md # .github/chatmodes/team-data.chatmode.md # .github/chatmodes/team-devops.chatmode.md # .github/chatmodes/team-docs.chatmode.md # .github/chatmodes/team-forge.chatmode.md # .github/chatmodes/team-frontend.chatmode.md # .github/chatmodes/team-infra.chatmode.md # .github/chatmodes/team-product.chatmode.md # .github/chatmodes/team-quality.chatmode.md # .github/chatmodes/team-security.chatmode.md # .github/chatmodes/team-strategic-ops.chatmode.md # .github/chatmodes/team-testing.chatmode.md # .github/copilot-instructions.md # .github/prompts/analyze-agents.prompt.md # .github/prompts/backlog.prompt.md # .github/prompts/brand.prompt.md # .github/prompts/build.prompt.md # .github/prompts/check.prompt.md # .github/prompts/cost-centres.prompt.md # .github/prompts/cost.prompt.md # .github/prompts/deploy.prompt.md # .github/prompts/discover.prompt.md # .github/prompts/doctor.prompt.md # .github/prompts/document-history.prompt.md # .github/prompts/expand.prompt.md # .github/prompts/feature-configure.prompt.md # .github/prompts/feature-flow.prompt.md # .github/prompts/feature-review.prompt.md # .github/prompts/format.prompt.md # .github/prompts/import-issues.prompt.md # .github/prompts/infra-eval.prompt.md # .github/prompts/orchestrate.prompt.md # .github/prompts/plan.prompt.md # .github/prompts/preflight.prompt.md # .github/prompts/project-status.prompt.md # .github/prompts/review.prompt.md # .github/prompts/scaffold.prompt.md # .github/prompts/security.prompt.md # .github/prompts/start.prompt.md # .github/prompts/sync-backlog.prompt.md # .github/prompts/sync.prompt.md # .github/prompts/test.prompt.md # .github/prompts/validate.prompt.md # .roo/rules/agent-conduct.md # .roo/rules/ai-cost-ops.md # .roo/rules/blockchain.md # .roo/rules/ci-cd.md # .roo/rules/dependency-management.md # .roo/rules/documentation.md # .roo/rules/dotnet.md # .roo/rules/finops.md # .roo/rules/git-workflow.md # .roo/rules/iac.md # .roo/rules/languages/README.md # .roo/rules/languages/agent-conduct.md # .roo/rules/languages/ai-cost-ops.md # .roo/rules/languages/blockchain.md # .roo/rules/languages/ci-cd.md # .roo/rules/languages/dependency-management.md # .roo/rules/languages/documentation.md # .roo/rules/languages/dotnet.md # .roo/rules/languages/finops.md # .roo/rules/languages/git-workflow.md # .roo/rules/languages/iac.md # .roo/rules/languages/python.md # .roo/rules/languages/rust.md # .roo/rules/languages/security.md # .roo/rules/languages/template-protection.md # .roo/rules/languages/testing.md # .roo/rules/languages/typescript.md # .roo/rules/python.md # .roo/rules/rust.md # .roo/rules/security.md # .roo/rules/template-protection.md # .roo/rules/testing.md # .roo/rules/typescript.md # .windsurf/commands/analyze-agents.md # .windsurf/commands/backlog.md # .windsurf/commands/brand.md # .windsurf/commands/build.md # .windsurf/commands/check.md # .windsurf/commands/cost-centres.md # .windsurf/commands/cost.md # .windsurf/commands/deploy.md # .windsurf/commands/discover.md # .windsurf/commands/doctor.md # .windsurf/commands/document-history.md # .windsurf/commands/expand.md # .windsurf/commands/feature-configure.md # .windsurf/commands/feature-flow.md # .windsurf/commands/feature-review.md # .windsurf/commands/format.md # .windsurf/commands/import-issues.md # .windsurf/commands/infra-eval.md # .windsurf/commands/orchestrate.md # .windsurf/commands/plan.md # .windsurf/commands/preflight.md # .windsurf/commands/project-status.md # .windsurf/commands/review.md # .windsurf/commands/scaffold.md # .windsurf/commands/security.md # .windsurf/commands/start.md # .windsurf/commands/sync-backlog.md # .windsurf/commands/sync.md # .windsurf/commands/test.md # .windsurf/commands/validate.md # .windsurf/rules/languages/README.md # .windsurf/rules/languages/agent-conduct.md # .windsurf/rules/languages/ai-cost-ops.md # .windsurf/rules/languages/blockchain.md # .windsurf/rules/languages/ci-cd.md # .windsurf/rules/languages/dependency-management.md # .windsurf/rules/languages/documentation.md # .windsurf/rules/languages/dotnet.md # .windsurf/rules/languages/finops.md # .windsurf/rules/languages/git-workflow.md # .windsurf/rules/languages/iac.md # .windsurf/rules/languages/python.md # .windsurf/rules/languages/rust.md # .windsurf/rules/languages/security.md # .windsurf/rules/languages/template-protection.md # .windsurf/rules/languages/testing.md # .windsurf/rules/languages/typescript.md # .windsurf/rules/orchestrate.md # .windsurf/rules/project.md # .windsurf/rules/security.md # .windsurf/rules/team-backend.md # .windsurf/rules/team-cost-ops.md # .windsurf/rules/team-data.md # .windsurf/rules/team-devops.md # .windsurf/rules/team-docs.md # .windsurf/rules/team-forge.md # .windsurf/rules/team-frontend.md # .windsurf/rules/team-infra.md # .windsurf/rules/team-product.md # .windsurf/rules/team-quality.md # .windsurf/rules/team-security.md # .windsurf/rules/team-strategic-ops.md # .windsurf/rules/team-testing.md # CLAUDE.md # GEMINI.md # WARP.md
There was a problem hiding this comment.
Pull request overview
Adds architecture documentation and an adoption plan for a tool-neutral .agents/ “agent hub” output, alongside a full regeneration of AI-tool configuration outputs (largely timestamp refreshes).
Changes:
- Introduces a findings report comparing agent hub patterns and identifying what to adopt.
- Adds ADR-10 proposing
.agents/as a first-class, tool-neutral sync target plus an adoption roadmap. - Regenerates sync outputs across multiple tool targets (timestamp bumps across generated artifacts).
Reviewed changes
Copilot reviewed 300 out of 443 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| .github/chatmodes/team-devops.chatmode.md | Regenerated metadata timestamp update |
| .github/chatmodes/team-data.chatmode.md | Regenerated metadata timestamp update |
| .github/chatmodes/team-cost-ops.chatmode.md | Regenerated metadata timestamp update |
| .github/chatmodes/team-backend.chatmode.md | Regenerated metadata timestamp update |
| .github/agents/vendor-arbitrage-analyst.agent.md | Regenerated metadata timestamp update |
| .github/agents/ui-designer.agent.md | Regenerated metadata timestamp update |
| .github/agents/token-efficiency-engineer.agent.md | Regenerated metadata timestamp update |
| .github/agents/test-lead.agent.md | Regenerated metadata timestamp update |
| .github/agents/team-validator.agent.md | Regenerated metadata timestamp update |
| .github/agents/spec-compliance-auditor.agent.md | Regenerated metadata timestamp update |
| .github/agents/security-auditor.agent.md | Regenerated metadata timestamp update |
| .github/agents/role-architect.agent.md | Regenerated metadata timestamp update |
| .github/agents/roadmap-tracker.agent.md | Regenerated metadata timestamp update |
| .github/agents/retrospective-analyst.agent.md | Regenerated metadata timestamp update |
| .github/agents/release-manager.agent.md | Regenerated metadata timestamp update |
| .github/agents/release-coordinator.agent.md | Regenerated metadata timestamp update |
| .github/agents/prompt-engineer.agent.md | Regenerated metadata timestamp update |
| .github/agents/project-shipper.agent.md | Regenerated metadata timestamp update |
| .github/agents/product-manager.agent.md | Regenerated metadata timestamp update |
| .github/agents/portfolio-analyst.agent.md | Regenerated metadata timestamp update |
| .github/agents/model-economist.agent.md | Regenerated metadata timestamp update |
| .github/agents/mission-definer.agent.md | Regenerated metadata timestamp update |
| .github/agents/integration-tester.agent.md | Regenerated metadata timestamp update |
| .github/agents/input-clarifier.agent.md | Regenerated metadata timestamp update |
| .github/agents/infra.agent.md | Regenerated metadata timestamp update |
| .github/agents/impact-assessor.agent.md | Regenerated metadata timestamp update |
| .github/agents/growth-analyst.agent.md | Regenerated metadata timestamp update |
| .github/agents/grant-hunter.agent.md | Regenerated metadata timestamp update |
| .github/agents/governance-advisor.agent.md | Regenerated metadata timestamp update |
| .github/agents/frontend.agent.md | Regenerated metadata timestamp update |
| .github/agents/flow-designer.agent.md | Regenerated metadata timestamp update |
| .github/agents/feature-ops.agent.md | Regenerated metadata timestamp update |
| .github/agents/expansion-analyst.agent.md | Regenerated metadata timestamp update |
| .github/agents/environment-manager.agent.md | Regenerated metadata timestamp update |
| .github/agents/devops.agent.md | Regenerated metadata timestamp update |
| .github/agents/dependency-watcher.agent.md | Regenerated metadata timestamp update |
| .github/agents/data.agent.md | Regenerated metadata timestamp update |
| .github/agents/coverage-tracker.agent.md | Regenerated metadata timestamp update |
| .github/agents/cost-ops-monitor.agent.md | Regenerated metadata timestamp update |
| .github/agents/content-strategist.agent.md | Regenerated metadata timestamp update |
| .github/agents/brand-guardian.agent.md | Regenerated metadata timestamp update |
| .github/agents/backend.agent.md | Regenerated metadata timestamp update |
| .github/agents/adoption-strategist.agent.md | Regenerated metadata timestamp update |
| .gemini/styleguide.md | Regenerated header timestamp update |
| .cursor/rules/team-testing.mdc | Regenerated frontmatter timestamp update |
| .cursor/rules/team-strategic-ops.mdc | Regenerated frontmatter timestamp update |
| .cursor/rules/team-security.mdc | Regenerated frontmatter timestamp update |
| .cursor/rules/team-quality.mdc | Regenerated frontmatter timestamp update |
| .cursor/rules/team-product.mdc | Regenerated frontmatter timestamp update |
| .cursor/rules/team-infra.mdc | Regenerated frontmatter timestamp update |
| .cursor/rules/team-frontend.mdc | Regenerated frontmatter timestamp update |
| .cursor/rules/team-forge.mdc | Regenerated frontmatter timestamp update |
| .cursor/rules/team-docs.mdc | Regenerated frontmatter timestamp update |
| .cursor/rules/team-devops.mdc | Regenerated frontmatter timestamp update |
| .cursor/rules/team-data.mdc | Regenerated frontmatter timestamp update |
| .cursor/rules/team-cost-ops.mdc | Regenerated frontmatter timestamp update |
| .cursor/rules/team-backend.mdc | Regenerated frontmatter timestamp update |
| .cursor/rules/languages/typescript.md | Regenerated header timestamp update |
| .cursor/rules/languages/testing.md | Regenerated header timestamp update |
| .cursor/rules/languages/template-protection.md | Regenerated header timestamp update |
| .cursor/rules/languages/security.md | Regenerated header timestamp update |
| .cursor/rules/languages/rust.md | Regenerated header timestamp update |
| .cursor/rules/languages/python.md | Regenerated header timestamp update |
| .cursor/rules/languages/iac.md | Regenerated header timestamp update |
| .cursor/rules/languages/git-workflow.md | Regenerated header timestamp update |
| .cursor/rules/languages/finops.md | Regenerated header timestamp update |
| .cursor/rules/languages/dotnet.md | Regenerated header timestamp update |
| .cursor/rules/languages/documentation.md | Regenerated header timestamp update |
| .cursor/rules/languages/dependency-management.md | Regenerated header timestamp update |
| .cursor/rules/languages/ci-cd.md | Regenerated header timestamp update |
| .cursor/rules/languages/blockchain.md | Regenerated header timestamp update |
| .cursor/rules/languages/ai-cost-ops.md | Regenerated header timestamp update |
| .cursor/rules/languages/agent-conduct.md | Regenerated header timestamp update |
| .cursor/rules/languages/README.md | Regenerated header timestamp update |
| .cursor/commands/validate.md | Regenerated header timestamp update |
| .cursor/commands/test.md | Regenerated header timestamp update |
| .cursor/commands/sync.md | Regenerated header timestamp update |
| .cursor/commands/sync-backlog.md | Regenerated header timestamp update |
| .cursor/commands/start.md | Regenerated header timestamp update |
| .cursor/commands/security.md | Regenerated header timestamp update |
| .cursor/commands/scaffold.md | Regenerated header timestamp update |
| .cursor/commands/review.md | Regenerated header timestamp update |
| .cursor/commands/project-status.md | Regenerated header timestamp update |
| .cursor/commands/preflight.md | Regenerated header timestamp update |
| .cursor/commands/plan.md | Regenerated header timestamp update |
| .cursor/commands/orchestrate.md | Regenerated header timestamp update |
| .cursor/commands/infra-eval.md | Regenerated header timestamp update |
| .cursor/commands/import-issues.md | Regenerated header timestamp update |
| .cursor/commands/format.md | Regenerated header timestamp update |
| .cursor/commands/feature-review.md | Regenerated header timestamp update |
| .cursor/commands/feature-flow.md | Regenerated header timestamp update |
| .cursor/commands/feature-configure.md | Regenerated header timestamp update |
| .cursor/commands/expand.md | Regenerated header timestamp update |
| .cursor/commands/document-history.md | Regenerated header timestamp update |
| .cursor/commands/doctor.md | Regenerated header timestamp update |
| .cursor/commands/discover.md | Regenerated header timestamp update |
| .cursor/commands/deploy.md | Regenerated header timestamp update |
| .cursor/commands/cost.md | Regenerated header timestamp update |
| .cursor/commands/cost-centres.md | Regenerated header timestamp update |
| .cursor/commands/check.md | Regenerated header timestamp update |
| .cursor/commands/build.md | Regenerated header timestamp update |
| .cursor/commands/brand.md | Regenerated header timestamp update |
| .cursor/commands/backlog.md | Regenerated header timestamp update |
| .cursor/commands/analyze-agents.md | Regenerated header timestamp update |
| .clinerules/typescript.md | Regenerated header timestamp update |
| .clinerules/testing.md | Regenerated header timestamp update |
| .clinerules/template-protection.md | Regenerated header timestamp update |
| .clinerules/security.md | Regenerated header timestamp update |
| .clinerules/rust.md | Regenerated header timestamp update |
| .clinerules/python.md | Regenerated header timestamp update |
| .clinerules/languages/typescript.md | Regenerated header timestamp update |
| .clinerules/languages/testing.md | Regenerated header timestamp update |
| .clinerules/languages/template-protection.md | Regenerated header timestamp update |
| .clinerules/languages/security.md | Regenerated header timestamp update |
| .clinerules/languages/rust.md | Regenerated header timestamp update |
| .clinerules/languages/python.md | Regenerated header timestamp update |
| .clinerules/languages/iac.md | Regenerated header timestamp update |
| .clinerules/languages/git-workflow.md | Regenerated header timestamp update |
| .clinerules/languages/finops.md | Regenerated header timestamp update |
| .clinerules/languages/dotnet.md | Regenerated header timestamp update |
| .clinerules/languages/documentation.md | Regenerated header timestamp update |
| .clinerules/languages/dependency-management.md | Regenerated header timestamp update |
| .clinerules/languages/ci-cd.md | Regenerated header timestamp update |
| .clinerules/languages/blockchain.md | Regenerated header timestamp update |
| .clinerules/languages/ai-cost-ops.md | Regenerated header timestamp update |
| .clinerules/languages/agent-conduct.md | Regenerated header timestamp update |
| .clinerules/languages/README.md | Regenerated header timestamp update |
| .clinerules/iac.md | Regenerated header timestamp update |
| .clinerules/git-workflow.md | Regenerated header timestamp update |
| .clinerules/finops.md | Regenerated header timestamp update |
| .clinerules/dotnet.md | Regenerated header timestamp update |
| .clinerules/documentation.md | Regenerated header timestamp update |
| .clinerules/dependency-management.md | Regenerated header timestamp update |
| .clinerules/ci-cd.md | Regenerated header timestamp update |
| .clinerules/blockchain.md | Regenerated header timestamp update |
| .clinerules/ai-cost-ops.md | Regenerated header timestamp update |
| .clinerules/agent-conduct.md | Regenerated header timestamp update |
| .claude/skills/validate/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/test/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/sync/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/sync-backlog/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/start/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/security/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/scaffold/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/review/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/project-status/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/preflight/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/plan/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/orchestrate/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/infra-eval/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/import-issues/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/format/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/feature-review/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/feature-flow/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/feature-configure/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/expand/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/document-history/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/doctor/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/discover/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/deploy/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/cost/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/cost-centres/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/check/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/build/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/brand/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/backlog/SKILL.md | Regenerated metadata timestamp update |
| .claude/skills/analyze-agents/SKILL.md | Regenerated metadata timestamp update |
| .claude/rules/typescript.md | Regenerated header timestamp update |
| .claude/rules/testing.md | Regenerated header timestamp update |
| .claude/rules/template-protection.md | Regenerated header timestamp update |
| .claude/rules/security.md | Regenerated header timestamp update |
| .claude/rules/rust.md | Regenerated header timestamp update |
| .claude/rules/quality.md | Regenerated header timestamp update |
| .claude/rules/python.md | Regenerated header timestamp update |
| .claude/rules/languages/typescript.md | Regenerated header timestamp update |
| .claude/rules/languages/testing.md | Regenerated header timestamp update |
| .claude/rules/languages/template-protection.md | Regenerated header timestamp update |
| .claude/rules/languages/security.md | Regenerated header timestamp update |
| .claude/rules/languages/rust.md | Regenerated header timestamp update |
| .claude/rules/languages/python.md | Regenerated header timestamp update |
| .claude/rules/languages/iac.md | Regenerated header timestamp update |
| .claude/rules/languages/git-workflow.md | Regenerated header timestamp update |
| .claude/rules/languages/finops.md | Regenerated header timestamp update |
| .claude/rules/languages/dotnet.md | Regenerated header timestamp update |
| .claude/rules/languages/documentation.md | Regenerated header timestamp update |
| .claude/rules/languages/dependency-management.md | Regenerated header timestamp update |
| .claude/rules/languages/ci-cd.md | Regenerated header timestamp update |
| .claude/rules/languages/blockchain.md | Regenerated header timestamp update |
| .claude/rules/languages/ai-cost-ops.md | Regenerated header timestamp update |
| .claude/rules/languages/agent-conduct.md | Regenerated header timestamp update |
| .claude/rules/languages/README.md | Regenerated header timestamp update |
| .claude/rules/iac.md | Regenerated header timestamp update |
| .claude/rules/git-workflow.md | Regenerated header timestamp update |
| .claude/rules/dotnet.md | Regenerated header timestamp update |
| .claude/rules/documentation.md | Regenerated header timestamp update |
| .claude/rules/dependency-management.md | Regenerated header timestamp update |
| .claude/rules/ci-cd.md | Regenerated header timestamp update |
| .claude/rules/blockchain.md | Regenerated header timestamp update |
| .claude/rules/agent-conduct.md | Regenerated header timestamp update |
| .claude/commands/validate.md | Regenerated metadata timestamp update |
| .claude/commands/test.md | Regenerated metadata timestamp update |
| .claude/commands/team-testing.md | Regenerated metadata timestamp update |
| .claude/commands/team-strategic-ops.md | Regenerated metadata timestamp update |
| .claude/commands/team-security.md | Regenerated metadata timestamp update |
| .claude/commands/team-quality.md | Regenerated metadata timestamp update |
| .claude/commands/team-product.md | Regenerated metadata timestamp update |
| .claude/commands/team-infra.md | Regenerated metadata timestamp update |
| .claude/commands/team-frontend.md | Regenerated metadata timestamp update |
| .claude/commands/team-forge.md | Regenerated metadata timestamp update |
| .claude/commands/team-docs.md | Regenerated metadata timestamp update |
| .claude/commands/team-devops.md | Regenerated metadata timestamp update |
| .claude/commands/team-data.md | Regenerated metadata timestamp update |
| .claude/commands/team-cost-ops.md | Regenerated metadata timestamp update |
| .claude/commands/team-backend.md | Regenerated metadata timestamp update |
| .claude/commands/sync.md | Regenerated metadata timestamp update |
| .claude/commands/sync-backlog.md | Regenerated metadata timestamp update |
| .claude/commands/start.md | Regenerated metadata timestamp update |
| .claude/commands/security.md | Regenerated metadata timestamp update |
| .claude/commands/scaffold.md | Regenerated metadata timestamp update |
| .claude/commands/review.md | Regenerated metadata timestamp update |
| .claude/commands/project-status.md | Regenerated metadata timestamp update |
| .claude/commands/preflight.md | Regenerated metadata timestamp update |
| .claude/commands/plan.md | Regenerated metadata timestamp update |
| .claude/commands/orchestrate.md | Regenerated metadata timestamp update |
| .claude/commands/infra-eval.md | Regenerated metadata timestamp update |
| .claude/commands/import-issues.md | Regenerated metadata timestamp update |
| .claude/commands/format.md | Regenerated metadata timestamp update |
| .claude/commands/feature-review.md | Regenerated metadata timestamp update |
| .claude/commands/feature-flow.md | Regenerated metadata timestamp update |
| .claude/commands/feature-configure.md | Regenerated metadata timestamp update |
| .claude/commands/expand.md | Regenerated metadata timestamp update |
| .claude/commands/document-history.md | Regenerated metadata timestamp update |
| .claude/commands/doctor.md | Regenerated metadata timestamp update |
| .claude/commands/discover.md | Regenerated metadata timestamp update |
| .claude/commands/deploy.md | Regenerated metadata timestamp update |
| .claude/commands/cost.md | Regenerated metadata timestamp update |
| .claude/commands/cost-centres.md | Regenerated metadata timestamp update |
| .claude/commands/check.md | Regenerated metadata timestamp update |
| .claude/commands/build.md | Regenerated metadata timestamp update |
| .claude/commands/brand.md | Regenerated metadata timestamp update |
| .claude/commands/backlog.md | Regenerated metadata timestamp update |
| .claude/agents/vendor-arbitrage-analyst.md | Regenerated header timestamp update |
| .claude/agents/ui-designer.md | Regenerated header timestamp update |
| .claude/agents/token-efficiency-engineer.md | Regenerated header timestamp update |
| .claude/agents/test-lead.md | Regenerated header timestamp update |
| .claude/agents/team-validator.md | Regenerated header timestamp update |
| .claude/agents/spec-compliance-auditor.md | Regenerated header timestamp update |
| .claude/agents/security-auditor.md | Regenerated header timestamp update |
| .claude/agents/role-architect.md | Regenerated header timestamp update |
| .claude/agents/roadmap-tracker.md | Regenerated header timestamp update |
| .claude/agents/retrospective-analyst.md | Regenerated header timestamp update |
| .claude/agents/release-manager.md | Regenerated header timestamp update |
| .claude/agents/release-coordinator.md | Regenerated header timestamp update |
| .claude/agents/prompt-engineer.md | Regenerated header timestamp update |
| .claude/agents/project-shipper.md | Regenerated header timestamp update |
| .claude/agents/product-manager.md | Regenerated header timestamp update |
| .claude/agents/portfolio-analyst.md | Regenerated header timestamp update |
| .claude/agents/model-economist.md | Regenerated header timestamp update |
| .claude/agents/mission-definer.md | Regenerated header timestamp update |
| .claude/agents/integration-tester.md | Regenerated header timestamp update |
| .claude/agents/input-clarifier.md | Regenerated header timestamp update |
| .claude/agents/infra.md | Regenerated header timestamp update |
| .claude/agents/impact-assessor.md | Regenerated header timestamp update |
| .claude/agents/growth-analyst.md | Regenerated header timestamp update |
| .claude/agents/grant-hunter.md | Regenerated header timestamp update |
| .claude/agents/governance-advisor.md | Regenerated header timestamp update |
| .claude/agents/frontend.md | Regenerated header timestamp update |
| .claude/agents/flow-designer.md | Regenerated header timestamp update |
| .claude/agents/feature-ops.md | Regenerated header timestamp update |
| .claude/agents/expansion-analyst.md | Regenerated header timestamp update |
| .claude/agents/environment-manager.md | Regenerated header timestamp update |
| .claude/agents/devops.md | Regenerated header timestamp update |
| .claude/agents/dependency-watcher.md | Regenerated header timestamp update |
| .claude/agents/data.md | Regenerated header timestamp update |
| .claude/agents/coverage-tracker.md | Regenerated header timestamp update |
| .claude/agents/cost-ops-monitor.md | Regenerated header timestamp update |
| .claude/agents/content-strategist.md | Regenerated header timestamp update |
| .claude/agents/brand-guardian.md | Regenerated header timestamp update |
| .claude/agents/backend.md | Regenerated header timestamp update |
| .claude/agents/adoption-strategist.md | Regenerated header timestamp update |
| .agents/skills/validate/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/test/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/sync/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/sync-backlog/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/start/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/security/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/scaffold/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/review/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/project-status/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/preflight/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/plan/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/orchestrate/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/infra-eval/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/import-issues/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/format/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/feature-review/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/feature-flow/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/feature-configure/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/expand/SKILL.md | Regenerated metadata timestamp update |
| .agents/skills/document-history/SKILL.md | Regenerated metadata timestamp update |
You can also share your feedback on Copilot code review. Take the survey.
| # Format: YAML frontmatter + Markdown body. Codex agent skill definition. | ||
| # Docs: https://developers.openai.com/codex/guides/agents-md | ||
| --- |
| generated_by: 'agentkit-forge' | ||
| last_model: 'sync-engine' | ||
| last_updated: '2026-03-15' | ||
| last_updated: '2026-03-17' |
* Add start command: new user entry point with state detection (#387)
* fix(commands): add AskUserQuestion to VALID_TOOLS and /start command
The /start command session got stuck because AskUserQuestion was not
included in the allowed-tools whitelist. This fix addresses three issues:
1. VALID_TOOLS in spec-validator was missing AskUserQuestion, TodoWrite,
Agent, and NotebookEdit — preventing commands from declaring these
Claude Code built-in tools in their allowed-tools.
2. The /start command template now explicitly includes AskUserQuestion
in its allowed-tools frontmatter and instructs the agent to use it
for interactive guided choices (Phase 3).
3. Added /start command spec to commands.yaml with AskUserQuestion as
a declared tool dependency.
Also adds a test case validating all four newly-added tools are accepted
by the spec validator.
https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M
* fix(commands): remove unrendered Handlebars comment from start.md output
The generated .claude/commands/start.md contained a raw {{! ... }}
Handlebars comment that was not processed by the sync engine. Remove it
so the generated output is clean Markdown.
https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Add configurable prefix to kits commands (#388)
* feat(sync): add configurable command prefix for generated slash commands
Add `commandPrefix` setting to overlay settings that namespaces all
generated slash commands across platforms:
- Claude Code: subdirectory strategy (kits/check.md → /project:kits:check)
- Cursor/Windsurf/Copilot/Codex: filename prefix (kits-check.md → /kits-check)
- Team commands excluded from prefixing (already namespaced)
Changes:
- Add resolveCommandPath() helper with subdirectory/filename strategies
- Update syncClaudeCommands, syncClaudeSkills, syncCursorCommands,
syncWindsurfCommands, syncCopilotPrompts, syncCodexSkills
- Add commandPrefix to vars from overlay settings
- Add commandPrefixedName to buildCommandVars
- Add 16 unit + integration tests (all pass, 93 existing tests unaffected)
Default is null (no prefix) for full backwards compatibility.
https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p
* fix(sync): address review findings for command prefix
- Remove unused afterAll import from test file
- Add clarifying comment that non-spec command files are also prefixed
- Add 2 integration tests verifying commandPrefixedName template variable
renders correctly with and without prefix
https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p
---------
Co-authored-by: Claude <noreply@anthropic.com>
* fix(ci): CI remediation — package manager, review findings, test stability (#390)
* fix(ci): resolve 7 bugs from project review
- BUG-001: Replace flaky discover test with controlled temp fixture
- BUG-002: Run prettier --write to fix formatting drift
- BUG-003: Add form-template detection skip in issue label validation
- BUG-005: Change claude.yml to self-hosted runner
- BUG-006: Align branch protection required status checks with project.yaml
- BUG-007: Fix command injection in resolve-merge.sh (use grep -F)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: update changelog, add planning registry review findings
- Add changelog entries for Wave 1-3 fixes (Added/Changed/Fixed/Removed)
- Add Project Review Findings section to planning registry (PR-001 to PR-014)
- Update planning docs after sync merge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(review): add --generate-plans flag to project-review command
Add Phase 2.5 plan generation after project review findings. When
--generate-plans is passed (default: true), scaffold plan files from
critical/high findings into docs/planning/review-findings/.
Also includes sync cleanup of stale cursor/windsurf settings.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore(sync): regenerate all outputs after project review fixes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(cli): dynamic flag loading from commands.yaml + context-aware template hook
- Replace ~200 lines of hardcoded VALID_FLAGS/FLAG_TYPES with loadCommandFlags()
that reads flag definitions from commands.yaml at startup
- CLI_INTERNAL_FLAGS/CLI_INTERNAL_FLAG_TYPES cover commands not in commands.yaml
- Self-validation warns at startup if any flag is missing a type definition
- Update cli.test.mjs to validate CLI_INTERNAL_FLAGS consistency
- Fix scaffold-once orphan bug: carry forward manifest entries for files
skipped by scaffold-once so orphan cleanup does not delete them
- Make protect-templates hook context-aware: skip protection in the
agentkit-forge source repo (detected via package.json name) so
maintainer agents can edit templates; block only in downstream repos
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(sync): add managed-mode script templates for downstream repos
Add 14 script templates (.agentkit/templates/scripts/) with `managed`
scaffold mode so downstream repos receive script updates via three-way
merge while preserving local customizations.
Templates include: create-doc, update-changelog, validate-documentation,
validate-numbering, check-documentation-requirement, sync-issues,
sync-split-pr, setup-agentkit-branch-governance, and resolve-merge
(both .sh and .ps1 variants where applicable).
Parameterized templates use {{defaultBranch}} and branch protection
variables from project.yaml. Engine wired via syncScripts() under
doc-scaffolding feature gate.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(teams): add TeamForge meta-team for agent team creation (cogmesh #130)
Add the TEAMFORGE meta-team (T11) — a structured pipeline for creating,
validating, and deploying new agent team specifications. Adapted from
cogmesh #130 with a simplified 6-agent pipeline:
- input-clarifier: assess requests, extract constraints
- mission-definer: lock team definition (ID, scope, accepts)
- role-architect: design agent roles and dependencies
- prompt-engineer: write agent descriptions and rules
- flow-designer: design team command and integration points
- team-validator: quality gate for spec consistency
Includes /team-forge command with --task flag (create-team, validate-team,
audit-teams, update-team) and planning doc.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(teams): add Strategic Ops team for cross-project coordination
Add the STRATEGIC OPS team (T12) — handles framework governance,
portfolio analysis, adoption strategy, impact assessment, and release
coordination across all repos using AgentKit Forge.
5-agent pipeline:
- portfolio-analyst: inventory repos, detect drift, adoption metrics
- governance-advisor: versioning strategy, breaking change protocols
- adoption-strategist: onboarding, migration paths, rollout plans
- impact-assessor: blast radius analysis for template/spec changes
- release-coordinator: version bumps, sync waves, release comms
Includes /team-strategic-ops command with --task and --scope flags.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(agents): add agent/team relationship matrix analysis engine + scripts
Add comprehensive agent/team relationship analysis with 8 cross-reference
matrices and 10 supplementary analyses (orphans, cycles, bottlenecks,
reachability, critical path, notification amplifiers, etc.).
- Fix YAML structure: strategic-ops agents now under own top-level key
- Add explicit agents: lists to forge + strategic-ops teams in teams.yaml
- Add consolidation detection responsibilities to portfolio-analyst
- Create agent-analysis.mjs engine module (loadFullAgentGraph + renderers)
- Wire analyze-agents CLI command with --output/--matrix/--format flags
- Add managed-scaffold script templates (bash + PowerShell)
- Integrate into sync pipeline (auto-regenerates matrix on spec changes)
- Add 33 tests covering all matrices, analyses, and edge cases
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: update documentation files and add plan template
- Add trailing newlines to Cursor command documentation files for consistency
- Add new plan template files for project planning
- Improve markdown table formatting in Claude skills documentation
- Remove obsolete .clinerules/testing.md file
- Update various rule files with better formatting and advisory rule alignment
* feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14)
- Add spec-compliance-auditor to operations category (quality team) — closes
the feedback loop between agent specs and actual behavior
- Add Cost Ops team (T14) with 5 agents: model-economist,
token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter,
cost-ops-monitor
- Add ai-cost-ops rules domain with 6 conventions (model routing, token
budgets, caching, batch APIs, vendor abstraction, credit tracking)
- Add team-cost-ops command with --task, --period, --provider flags
- Update notification chains: data→cost-ops-monitor, infra→model-economist,
retrospective-analyst→spec-compliance-auditor
- Add intake routes: cost-ops, agent-performance
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(teams): add implement to cost-ops team accepts list
Resolves agent/team accepts mismatch — token-efficiency-engineer accepts
implement but the team definition only had investigate/review/plan/document.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(cost-ops): add multi-provider infra cost ticket to backlog
Add detailed planning ticket for multi-provider infrastructure cost
normalisation, routing, and cost-agent integration. Covers 9 providers
(Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS,
GCP) with 3-phase delivery plan and cross-team dependency tracking.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(templates): resolve PR review comments from CodeRabbit
- Fix protect-templates.sh: package name check uses correct
"agentkit-forge-runtime" instead of "agentkit-forge"
- Fix protect-templates.ps1: malformed path (missing separator before
.agentkit) and same package name correction
- Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS
require() syntax used in the inline Node script
- Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder
- Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left
by sync engine, keeping user formatting + implement in cost-ops
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents
Enable web research capabilities for cost-ops team:
- Add WebSearch and WebFetch to /team-cost-ops allowed-tools
- Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst,
and grant-hunter agent preferred-tools
- Add web intake expansion ticket (P2) for MCP crawler, Puppeteer
integration, automated pricing refresh, and cross-session persistence
- Regenerate sync outputs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(cost-ops): add Cost Ops team, agents, and multi-provider cost ticket (#364)
* feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14)
- Add spec-compliance-auditor to operations category (quality team) — closes
the feedback loop between agent specs and actual behavior
- Add Cost Ops team (T14) with 5 agents: model-economist,
token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter,
cost-ops-monitor
- Add ai-cost-ops rules domain with 6 conventions (model routing, token
budgets, caching, batch APIs, vendor abstraction, credit tracking)
- Add team-cost-ops command with --task, --period, --provider flags
- Update notification chains: data→cost-ops-monitor, infra→model-economist,
retrospective-analyst→spec-compliance-auditor
- Add intake routes: cost-ops, agent-performance
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(teams): add implement to cost-ops team accepts list
Resolves agent/team accepts mismatch — token-efficiency-engineer accepts
implement but the team definition only had investigate/review/plan/document.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(cost-ops): add multi-provider infra cost ticket to backlog
Add detailed planning ticket for multi-provider infrastructure cost
normalisation, routing, and cost-agent integration. Covers 9 providers
(Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS,
GCP) with 3-phase delivery plan and cross-team dependency tracking.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(templates): resolve PR review comments from CodeRabbit
- Fix protect-templates.sh: package name check uses correct
"agentkit-forge-runtime" instead of "agentkit-forge"
- Fix protect-templates.ps1: malformed path (missing separator before
.agentkit) and same package name correction
- Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS
require() syntax used in the inline Node script
- Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder
- Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left
by sync engine, keeping user formatting + implement in cost-ops
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents (#365)
Enable web research capabilities for cost-ops team:
- Add WebSearch and WebFetch to /team-cost-ops allowed-tools
- Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst,
and grant-hunter agent preferred-tools
- Add web intake expansion ticket (P2) for MCP crawler, Puppeteer
integration, automated pricing refresh, and cross-session persistence
- Regenerate sync outputs
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix(teams): address CodeRabbit review findings on strategic-ops PR
- Lazy-load js-yaml in cli.mjs after ensureDependencies() to prevent
crash when node_modules is missing
- Convert YAML frontmatter to PowerShell comment blocks in all 6 PS1
templates to fix invalid PowerShell syntax
- Fix protect-templates hook path: use 3 parent traversals to reach
.agentkit/package.json from hooks directory
- Remove schema-invalid 'phase' field from ai-cost-ops rule domain
- Narrow strategic-ops scope: replace **/* catch-all with specific files
- Add strategic-ops to cost-ops handoff-chain for consistency
- Add Write tool to spec-compliance-auditor, vendor-arbitrage-analyst,
and grant-hunter agents
- Fix glob matching in resolve-merge.sh (use regex instead of broken
sed strip)
- Add merge failure vs conflict detection in resolve-merge.ps1
- Add branch existence check in setup-agentkit-branch-governance scripts
- Add gh CLI preflight check in sync-split-pr.ps1
- Deduplicate branch protection loop when defaultBranch is 'main'
- Fix applies-to glob: docs/planning/cost/** → docs/planning/cost-governance/**
- Fix non-canonical doc paths in intake-agent-proposal.md
- Add changelog entries for new teams, agents, and analysis engine
- Resolve AGENT_TEAMS.md merge conflict (accept narrowed scope)
- Run prettier on all modified files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(templates): add gh auth preflight and changelog divider handling
- sync-split-pr.ps1: add gh auth status check before side effects
- update-changelog.ps1: stop before --- divider when appending entries
Addresses CodeRabbit review comments #7 and #13 on PR #356.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(sync): set executable permission on analyze-agents.sh
Linux CI sync produces +x permissions; align local to match.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(templates): address CodeRabbit review round 3-4 findings
- Fix YAML frontmatter in copilot agent template: use double quotes
for description field to handle apostrophes (CRITICAL)
- Fix protect-templates.sh/ps1 path traversal: correct parent
directory count for .agentkit/package.json source repo detection
- Add $PSNativeCommandUseErrorActionPreference to sync-split-pr.ps1
so native command failures (git, pnpm, gh) are treated as fatal
- Replace try/catch with $LASTEXITCODE check for gh auth status
- Deduplicate branch loop in setup-agentkit-branch-governance.sh
when defaultBranch equals 'main'
- Fix duplicate verification echo lines in governance scripts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* style(docs): fix prettier formatting on planning documents
Run prettier --write on web-intake-expansion.md and
intake-agent-proposal.md to fix CI formatting check.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(tests): isolate render target gating tests with fresh temp dirs
Tests in the "render target gating" describe block shared a single temp
directory via beforeAll/afterAll. The first test ran --only claude
(generating .claude/ files), and the second ran --only warp expecting no
Claude files — but leftovers from test 1 caused the assertion to fail.
Changing to beforeEach/afterEach gives each test a clean directory.
Closes #377
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(commands): add /start command as new user entry point
Adds a context-aware triage command that detects repository state
(fresh clone, post-discovery, mid-session, uncommitted work) and
guides users to the right command or team for their goal.
Includes team routing table, 4 contextual flows, and decision
guidance for when users don't know which team to use.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* refactor(commands): add Arguments and State Management sections to /start
Addresses TEAMFORGE validation findings:
- Add dedicated Arguments section documenting $ARGUMENTS handling
- Add State Management section (reads/writes inventory)
- Fix frontmatter: remove misleading generated_by field
- Add explicit "manually authored" comment header
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): add /start to spec and template for cross-repo generation
Moves /start from a hand-authored command to a proper spec-driven,
sync-generated command available to any repo that adopts AgentKit Forge.
- Add start command definition to commands.yaml (no feature gate — always on)
- Create start.md template in .agentkit/templates/claude/commands/
- Add /start to CLAUDE.md Quick Reference table template
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after adding /start command
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): make /start team routing dynamic instead of hardcoded
Replace the static team routing table with dynamic discovery:
1. Read AGENT_TEAMS.md (from /discover) at runtime
2. Fall back to .agentkit/spec/teams.yaml
3. Fall back to /team-* command frontmatter
This ensures /start always reflects the actual teams configured
in any repo, rather than a hardcoded list that could go stale.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after dynamic routing change
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add interactive TUI entry point with hybrid UI
Replace static markdown output with an ink-based terminal UI that
combines two modes: a guided conversation flow for first-run users
and a fuzzy-searchable command palette for returning users. A
persistent status bar shows repo state at a glance (branch, phase,
backlog count, working tree status).
- Context detection module mirrors /start Phase 1 signals
- ConversationFlow: branching dialogue tree (choose-your-own-adventure)
- CommandPalette: fuzzy search with context-ranked star recommendations
- StatusBar: tmux-style persistent strip with color-coded segments
- Supports --json flag for scripting/piping
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add test suite, error handling, and refactor for production readiness
- Add vitest test infrastructure with 102 tests across 7 files
- Coverage: 95.58% statements, 90.81% branches, 96.72% functions
- Extract conversation tree to separate config module for testability
- Add error boundary to App component for graceful error display
- Add --help flag with usage documentation
- Add TTY detection with JSON fallback for non-interactive environments
- Add SIGINT/SIGTERM signal handling for clean exit
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: add coverage to gitignore, include plan and workspace config
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — unused code, git cwd, magic numbers
- Call exit() after command selection so Ink process terminates
- Remove unused ctx prop from Header component
- Fix git commands to use -C flag with root path parameter
- Extract dumpContextJson() helper to deduplicate JSON output logic
- Add comment explaining hardcoded team filter exclusion
- Replace magic numbers with named constants (FUSE_THRESHOLD,
RECOMMENDED_SCORE, MAX_BRANCH_LENGTH)
- Remove unused ink-spinner dependency
- Add test verifying git -C flag passes root correctly
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — security, correctness, test quality
- CRITICAL: Replace execSync shell interpolation with execFileSync to
prevent command injection via root parameter in detect.js
- CRITICAL: Remove phantom --external:ink-spinner from build script and
switch npx to direct esbuild invocation
- HIGH: Fix exit race condition — use useEffect instead of setTimeout
- HIGH: Wire up onSelect callback in ConversationFlow so Guide mode
triggers the result screen in App
- HIGH: Destructure and accept ctx prop in ConversationFlow
- HIGH: Add back-navigation (Escape) in ConversationFlow
- HIGH: Guard against undefined team.focus in commands.js tags
- MEDIUM: Use functional setCursor form to avoid stale closures
- MEDIUM: Key commandIndices Map by string id instead of object identity
- MEDIUM: Improve parseTeams header detection (drop first row approach)
- MEDIUM: Filter completed/done/closed items from backlogCount
- MEDIUM: Extract shared makeCtx test utility across all test files
- MEDIUM: Add null guard to StatusBar truncate helper
- LOW: Validate orchestratorPhase is a number in range 1-5
- LOW: Fix pnpm-workspace.yaml list syntax
- Replace all setTimeout in tests with vi.waitFor deterministic waits
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(engine): add pre-sync commit guard and interactive apply mode
Adds two safety features to the sync pipeline:
1. Pre-sync commit guard: Detects uncommitted changes in protected
directories (.agentkit/engines, spec, overlays) before sync runs.
In TTY mode, prompts to abort, stash, or continue. In non-TTY
mode (CI), prints a warning and proceeds.
2. Interactive apply mode: After rendering, shows a change summary
and prompts: apply all / skip all / prompt each file. Per-file
prompt supports show-diff and apply-all-remaining. Default in
TTY; bypassed with --yes, --no-prompt, or --force.
New module: sync-guard.mjs with 4 exported functions and 7 tests.
New CLI flags: --yes, --no-prompt for non-interactive sync.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore(sync): regenerate outputs after branch merges
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore(sync): regenerate outputs after merge of new-user-entry-point
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(engine): add configurable package manager and fix review findings
- Add `stack.packageManager` field to project.yaml (pnpm | npm | yarn)
- Derive helper template vars (pmInstall, pmRun, pmExec, pmLockfile, etc.)
- Update CLAUDE.md template and hook/workflow templates to use {{packageManager}}
- Fix sync-guard to exclude .agentkit/spec from protected dirs and add try/catch
- Remove duplicate cost-ops team definition from teams.yaml
- Pin all dependency versions in package.json (remove ^ prefixes)
- Add vitest coverage thresholds (80% statements/branches/functions/lines)
- Fix src/start/ code quality: null guards, exit delay, error boundaries
- Harden consolidate-branches.sh: self-resolution guard, stash restore
- Regenerate all 533 output files via agentkit sync
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore(engine): add brand color palette variables to sync vars
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(ci): fix test race condition, workspace config, and lockfile
- Fix ConversationFlow test: wait for 'Got it' before asserting hint text
- Add packages field to pnpm-workspace.yaml for proper workspace resolution
- Regenerate lockfile after version pinning (removed ^ prefixes)
- Remove accidental .agentkit/templates/src/ artifacts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(start): add event loop yields to ConversationFlow tests
ink-select-input needs setImmediate yields after a new menu renders
before it can process ENTER keypresses. Without this, the second ENTER
in leaf-selection tests was swallowed, causing intermittent failures.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix(spec): correct githubSlug to phoenixvc/agentkit-forge (#391)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Add entry point for new framework users (#389)
* feat(commands): add /start command as new user entry point
Adds a context-aware triage command that detects repository state
(fresh clone, post-discovery, mid-session, uncommitted work) and
guides users to the right command or team for their goal.
Includes team routing table, 4 contextual flows, and decision
guidance for when users don't know which team to use.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* refactor(commands): add Arguments and State Management sections to /start
Addresses TEAMFORGE validation findings:
- Add dedicated Arguments section documenting $ARGUMENTS handling
- Add State Management section (reads/writes inventory)
- Fix frontmatter: remove misleading generated_by field
- Add explicit "manually authored" comment header
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): add /start to spec and template for cross-repo generation
Moves /start from a hand-authored command to a proper spec-driven,
sync-generated command available to any repo that adopts AgentKit Forge.
- Add start command definition to commands.yaml (no feature gate — always on)
- Create start.md template in .agentkit/templates/claude/commands/
- Add /start to CLAUDE.md Quick Reference table template
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after adding /start command
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): make /start team routing dynamic instead of hardcoded
Replace the static team routing table with dynamic discovery:
1. Read AGENT_TEAMS.md (from /discover) at runtime
2. Fall back to .agentkit/spec/teams.yaml
3. Fall back to /team-* command frontmatter
This ensures /start always reflects the actual teams configured
in any repo, rather than a hardcoded list that could go stale.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after dynamic routing change
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add interactive TUI entry point with hybrid UI
Replace static markdown output with an ink-based terminal UI that
combines two modes: a guided conversation flow for first-run users
and a fuzzy-searchable command palette for returning users. A
persistent status bar shows repo state at a glance (branch, phase,
backlog count, working tree status).
- Context detection module mirrors /start Phase 1 signals
- ConversationFlow: branching dialogue tree (choose-your-own-adventure)
- CommandPalette: fuzzy search with context-ranked star recommendations
- StatusBar: tmux-style persistent strip with color-coded segments
- Supports --json flag for scripting/piping
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add test suite, error handling, and refactor for production readiness
- Add vitest test infrastructure with 102 tests across 7 files
- Coverage: 95.58% statements, 90.81% branches, 96.72% functions
- Extract conversation tree to separate config module for testability
- Add error boundary to App component for graceful error display
- Add --help flag with usage documentation
- Add TTY detection with JSON fallback for non-interactive environments
- Add SIGINT/SIGTERM signal handling for clean exit
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: add coverage to gitignore, include plan and workspace config
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — unused code, git cwd, magic numbers
- Call exit() after command selection so Ink process terminates
- Remove unused ctx prop from Header component
- Fix git commands to use -C flag with root path parameter
- Extract dumpContextJson() helper to deduplicate JSON output logic
- Add comment explaining hardcoded team filter exclusion
- Replace magic numbers with named constants (FUSE_THRESHOLD,
RECOMMENDED_SCORE, MAX_BRANCH_LENGTH)
- Remove unused ink-spinner dependency
- Add test verifying git -C flag passes root correctly
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — security, correctness, test quality
- CRITICAL: Replace execSync shell interpolation with execFileSync to
prevent command injection via root parameter in detect.js
- CRITICAL: Remove phantom --external:ink-spinner from build script and
switch npx to direct esbuild invocation
- HIGH: Fix exit race condition — use useEffect instead of setTimeout
- HIGH: Wire up onSelect callback in ConversationFlow so Guide mode
triggers the result screen in App
- HIGH: Destructure and accept ctx prop in ConversationFlow
- HIGH: Add back-navigation (Escape) in ConversationFlow
- HIGH: Guard against undefined team.focus in commands.js tags
- MEDIUM: Use functional setCursor form to avoid stale closures
- MEDIUM: Key commandIndices Map by string id instead of object identity
- MEDIUM: Improve parseTeams header detection (drop first row approach)
- MEDIUM: Filter completed/done/closed items from backlogCount
- MEDIUM: Extract shared makeCtx test utility across all test files
- MEDIUM: Add null guard to StatusBar truncate helper
- LOW: Validate orchestratorPhase is a number in range 1-5
- LOW: Fix pnpm-workspace.yaml list syntax
- Replace all setTimeout in tests with vi.waitFor deterministic waits
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* test(start): add coverage for result screen exit path
Add App-level test that navigates through ConversationFlow to a leaf
node and verifies the result screen text is rendered before exit().
Confirms the synchronous useEffect exit is safe — React commits the
render (Ink captures the frame) before useEffect fires.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: update generated sync output timestamps
Generated files updated with current sync date from dev merge.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
---------
Co-authored-by: Claude <noreply@anthropic.com>
* fix: caldues heuristics (#398)
* feat: complete revisit of agents (#399) (#400)
* Add start command: new user entry point with state detection (#387)
* fix(commands): add AskUserQuestion to VALID_TOOLS and /start command
The /start command session got stuck because AskUserQuestion was not
included in the allowed-tools whitelist. This fix addresses three issues:
1. VALID_TOOLS in spec-validator was missing AskUserQuestion, TodoWrite,
Agent, and NotebookEdit — preventing commands from declaring these
Claude Code built-in tools in their allowed-tools.
2. The /start command template now explicitly includes AskUserQuestion
in its allowed-tools frontmatter and instructs the agent to use it
for interactive guided choices (Phase 3).
3. Added /start command spec to commands.yaml with AskUserQuestion as
a declared tool dependency.
Also adds a test case validating all four newly-added tools are accepted
by the spec validator.
https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M
* fix(commands): remove unrendered Handlebars comment from start.md output
The generated .claude/commands/start.md contained a raw {{! ... }}
Handlebars comment that was not processed by the sync engine. Remove it
so the generated output is clean Markdown.
https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M
---------
* Add configurable prefix to kits commands (#388)
* feat(sync): add configurable command prefix for generated slash commands
Add `commandPrefix` setting to overlay settings that namespaces all
generated slash commands across platforms:
- Claude Code: subdirectory strategy (kits/check.md → /project:kits:check)
- Cursor/Windsurf/Copilot/Codex: filename prefix (kits-check.md → /kits-check)
- Team commands excluded from prefixing (already namespaced)
Changes:
- Add resolveCommandPath() helper with subdirectory/filename strategies
- Update syncClaudeCommands, syncClaudeSkills, syncCursorCommands,
syncWindsurfCommands, syncCopilotPrompts, syncCodexSkills
- Add commandPrefix to vars from overlay settings
- Add commandPrefixedName to buildCommandVars
- Add 16 unit + integration tests (all pass, 93 existing tests unaffected)
Default is null (no prefix) for full backwards compatibility.
https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p
* fix(sync): address review findings for command prefix
- Remove unused afterAll import from test file
- Add clarifying comment that non-spec command files are also prefixed
- Add 2 integration tests verifying commandPrefixedName template variable
renders correctly with and without prefix
https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p
---------
* fix(ci): CI remediation — package manager, review findings, test stability (#390)
* fix(ci): resolve 7 bugs from project review
- BUG-001: Replace flaky discover test with controlled temp fixture
- BUG-002: Run prettier --write to fix formatting drift
- BUG-003: Add form-template detection skip in issue label validation
- BUG-005: Change claude.yml to self-hosted runner
- BUG-006: Align branch protection required status checks with project.yaml
- BUG-007: Fix command injection in resolve-merge.sh (use grep -F)
* docs: update changelog, add planning registry review findings
- Add changelog entries for Wave 1-3 fixes (Added/Changed/Fixed/Removed)
- Add Project Review Findings section to planning registry (PR-001 to PR-014)
- Update planning docs after sync merge
* feat(review): add --generate-plans flag to project-review command
Add Phase 2.5 plan generation after project review findings. When
--generate-plans is passed (default: true), scaffold plan files from
critical/high findings into docs/planning/review-findings/.
Also includes sync cleanup of stale cursor/windsurf settings.
* chore(sync): regenerate all outputs after project review fixes
* feat(cli): dynamic flag loading from commands.yaml + context-aware template hook
- Replace ~200 lines of hardcoded VALID_FLAGS/FLAG_TYPES with loadCommandFlags()
that reads flag definitions from commands.yaml at startup
- CLI_INTERNAL_FLAGS/CLI_INTERNAL_FLAG_TYPES cover commands not in commands.yaml
- Self-validation warns at startup if any flag is missing a type definition
- Update cli.test.mjs to validate CLI_INTERNAL_FLAGS consistency
- Fix scaffold-once orphan bug: carry forward manifest entries for files
skipped by scaffold-once so orphan cleanup does not delete them
- Make protect-templates hook context-aware: skip protection in the
agentkit-forge source repo (detected via package.json name) so
maintainer agents can edit templates; block only in downstream repos
* feat(sync): add managed-mode script templates for downstream repos
Add 14 script templates (.agentkit/templates/scripts/) with `managed`
scaffold mode so downstream repos receive script updates via three-way
merge while preserving local customizations.
Templates include: create-doc, update-changelog, validate-documentation,
validate-numbering, check-documentation-requirement, sync-issues,
sync-split-pr, setup-agentkit-branch-governance, and resolve-merge
(both .sh and .ps1 variants where applicable).
Parameterized templates use {{defaultBranch}} and branch protection
variables from project.yaml. Engine wired via syncScripts() under
doc-scaffolding feature gate.
* feat(teams): add TeamForge meta-team for agent team creation (cogmesh #130)
Add the TEAMFORGE meta-team (T11) — a structured pipeline for creating,
validating, and deploying new agent team specifications. Adapted from
cogmesh #130 with a simplified 6-agent pipeline:
- input-clarifier: assess requests, extract constraints
- mission-definer: lock team definition (ID, scope, accepts)
- role-architect: design agent roles and dependencies
- prompt-engineer: write agent descriptions and rules
- flow-designer: design team command and integration points
- team-validator: quality gate for spec consistency
Includes /team-forge command with --task flag (create-team, validate-team,
audit-teams, update-team) and planning doc.
* feat(teams): add Strategic Ops team for cross-project coordination
Add the STRATEGIC OPS team (T12) — handles framework governance,
portfolio analysis, adoption strategy, impact assessment, and release
coordination across all repos using AgentKit Forge.
5-agent pipeline:
- portfolio-analyst: inventory repos, detect drift, adoption metrics
- governance-advisor: versioning strategy, breaking change protocols
- adoption-strategist: onboarding, migration paths, rollout plans
- impact-assessor: blast radius analysis for template/spec changes
- release-coordinator: version bumps, sync waves, release comms
Includes /team-strategic-ops command with --task and --scope flags.
* feat(agents): add agent/team relationship matrix analysis engine + scripts
Add comprehensive agent/team relationship analysis with 8 cross-reference
matrices and 10 supplementary analyses (orphans, cycles, bottlenecks,
reachability, critical path, notification amplifiers, etc.).
- Fix YAML structure: strategic-ops agents now under own top-level key
- Add explicit agents: lists to forge + strategic-ops teams in teams.yaml
- Add consolidation detection responsibilities to portfolio-analyst
- Create agent-analysis.mjs engine module (loadFullAgentGraph + renderers)
- Wire analyze-agents CLI command with --output/--matrix/--format flags
- Add managed-scaffold script templates (bash + PowerShell)
- Integrate into sync pipeline (auto-regenerates matrix on spec changes)
- Add 33 tests covering all matrices, analyses, and edge cases
* chore: update documentation files and add plan template
- Add trailing newlines to Cursor command documentation files for consistency
- Add new plan template files for project planning
- Improve markdown table formatting in Claude skills documentation
- Remove obsolete .clinerules/testing.md file
- Update various rule files with better formatting and advisory rule alignment
* feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14)
- Add spec-compliance-auditor to operations category (quality team) — closes
the feedback loop between agent specs and actual behavior
- Add Cost Ops team (T14) with 5 agents: model-economist,
token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter,
cost-ops-monitor
- Add ai-cost-ops rules domain with 6 conventions (model routing, token
budgets, caching, batch APIs, vendor abstraction, credit tracking)
- Add team-cost-ops command with --task, --period, --provider flags
- Update notification chains: data→cost-ops-monitor, infra→model-economist,
retrospective-analyst→spec-compliance-auditor
- Add intake routes: cost-ops, agent-performance
* fix(teams): add implement to cost-ops team accepts list
Resolves agent/team accepts mismatch — token-efficiency-engineer accepts
implement but the team definition only had investigate/review/plan/document.
* feat(cost-ops): add multi-provider infra cost ticket to backlog
Add detailed planning ticket for multi-provider infrastructure cost
normalisation, routing, and cost-agent integration. Covers 9 providers
(Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS,
GCP) with 3-phase delivery plan and cross-team dependency tracking.
* fix(templates): resolve PR review comments from CodeRabbit
- Fix protect-templates.sh: package name check uses correct
"agentkit-forge-runtime" instead of "agentkit-forge"
- Fix protect-templates.ps1: malformed path (missing separator before
.agentkit) and same package name correction
- Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS
require() syntax used in the inline Node script
- Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder
- Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left
by sync engine, keeping user formatting + implement in cost-ops
* feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents
Enable web research capabilities for cost-ops team:
- Add WebSearch and WebFetch to /team-cost-ops allowed-tools
- Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst,
and grant-hunter agent preferred-tools
- Add web intake expansion ticket (P2) for MCP crawler, Puppeteer
integration, automated pricing refresh, and cross-session persistence
- Regenerate sync outputs
* feat(cost-ops): add Cost Ops team, agents, and multi-provider cost ticket (#364)
* feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14)
- Add spec-compliance-auditor to operations category (quality team) — closes
the feedback loop between agent specs and actual behavior
- Add Cost Ops team (T14) with 5 agents: model-economist,
token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter,
cost-ops-monitor
- Add ai-cost-ops rules domain with 6 conventions (model routing, token
budgets, caching, batch APIs, vendor abstraction, credit tracking)
- Add team-cost-ops command with --task, --period, --provider flags
- Update notification chains: data→cost-ops-monitor, infra→model-economist,
retrospective-analyst→spec-compliance-auditor
- Add intake routes: cost-ops, agent-performance
* fix(teams): add implement to cost-ops team accepts list
Resolves agent/team accepts mismatch — token-efficiency-engineer accepts
implement but the team definition only had investigate/review/plan/document.
* feat(cost-ops): add multi-provider infra cost ticket to backlog
Add detailed planning ticket for multi-provider infrastructure cost
normalisation, routing, and cost-agent integration. Covers 9 providers
(Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS,
GCP) with 3-phase delivery plan and cross-team dependency tracking.
* fix(templates): resolve PR review comments from CodeRabbit
- Fix protect-templates.sh: package name check uses correct
"agentkit-forge-runtime" instead of "agentkit-forge"
- Fix protect-templates.ps1: malformed path (missing separator before
.agentkit) and same package name correction
- Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS
require() syntax used in the inline Node script
- Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder
- Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left
by sync engine, keeping user formatting + implement in cost-ops
* feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents (#365)
Enable web research capabilities for cost-ops team:
- Add WebSearch and WebFetch to /team-cost-ops allowed-tools
- Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst,
and grant-hunter agent preferred-tools
- Add web intake expansion ticket (P2) for MCP crawler, Puppeteer
integration, automated pricing refresh, and cross-session persistence
- Regenerate sync outputs
---------
* fix(teams): address CodeRabbit review findings on strategic-ops PR
- Lazy-load js-yaml in cli.mjs after ensureDependencies() to prevent
crash when node_modules is missing
- Convert YAML frontmatter to PowerShell comment blocks in all 6 PS1
templates to fix invalid PowerShell syntax
- Fix protect-templates hook path: use 3 parent traversals to reach
.agentkit/package.json from hooks directory
- Remove schema-invalid 'phase' field from ai-cost-ops rule domain
- Narrow strategic-ops scope: replace **/* catch-all with specific files
- Add strategic-ops to cost-ops handoff-chain for consistency
- Add Write tool to spec-compliance-auditor, vendor-arbitrage-analyst,
and grant-hunter agents
- Fix glob matching in resolve-merge.sh (use regex instead of broken
sed strip)
- Add merge failure vs conflict detection in resolve-merge.ps1
- Add branch existence check in setup-agentkit-branch-governance scripts
- Add gh CLI preflight check in sync-split-pr.ps1
- Deduplicate branch protection loop when defaultBranch is 'main'
- Fix applies-to glob: docs/planning/cost/** → docs/planning/cost-governance/**
- Fix non-canonical doc paths in intake-agent-proposal.md
- Add changelog entries for new teams, agents, and analysis engine
- Resolve AGENT_TEAMS.md merge conflict (accept narrowed scope)
- Run prettier on all modified files
* fix(templates): add gh auth preflight and changelog divider handling
- sync-split-pr.ps1: add gh auth status check before side effects
- update-changelog.ps1: stop before --- divider when appending entries
Addresses CodeRabbit review comments #7 and #13 on PR #356.
* fix(sync): set executable permission on analyze-agents.sh
Linux CI sync produces +x permissions; align local to match.
* fix(templates): address CodeRabbit review round 3-4 findings
- Fix YAML frontmatter in copilot agent template: use double quotes
for description field to handle apostrophes (CRITICAL)
- Fix protect-templates.sh/ps1 path traversal: correct parent
directory count for .agentkit/package.json source repo detection
- Add $PSNativeCommandUseErrorActionPreference to sync-split-pr.ps1
so native command failures (git, pnpm, gh) are treated as fatal
- Replace try/catch with $LASTEXITCODE check for gh auth status
- Deduplicate branch loop in setup-agentkit-branch-governance.sh
when defaultBranch equals 'main'
- Fix duplicate verification echo lines in governance scripts
* style(docs): fix prettier formatting on planning documents
Run prettier --write on web-intake-expansion.md and
intake-agent-proposal.md to fix CI formatting check.
* fix(tests): isolate render target gating tests with fresh temp dirs
Tests in the "render target gating" describe block shared a single temp
directory via beforeAll/afterAll. The first test ran --only claude
(generating .claude/ files), and the second ran --only warp expecting no
Claude files — but leftovers from test 1 caused the assertion to fail.
Changing to beforeEach/afterEach gives each test a clean directory.
Closes #377
* feat(commands): add /start command as new user entry point
Adds a context-aware triage command that detects repository state
(fresh clone, post-discovery, mid-session, uncommitted work) and
guides users to the right command or team for their goal.
Includes team routing table, 4 contextual flows, and decision
guidance for when users don't know which team to use.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* refactor(commands): add Arguments and State Management sections to /start
Addresses TEAMFORGE validation findings:
- Add dedicated Arguments section documenting $ARGUMENTS handling
- Add State Management section (reads/writes inventory)
- Fix frontmatter: remove misleading generated_by field
- Add explicit "manually authored" comment header
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): add /start to spec and template for cross-repo generation
Moves /start from a hand-authored command to a proper spec-driven,
sync-generated command available to any repo that adopts AgentKit Forge.
- Add start command definition to commands.yaml (no feature gate — always on)
- Create start.md template in .agentkit/templates/claude/commands/
- Add /start to CLAUDE.md Quick Reference table template
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after adding /start command
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): make /start team routing dynamic instead of hardcoded
Replace the static team routing table with dynamic discovery:
1. Read AGENT_TEAMS.md (from /discover) at runtime
2. Fall back to .agentkit/spec/teams.yaml
3. Fall back to /team-* command frontmatter
This ensures /start always reflects the actual teams configured
in any repo, rather than a hardcoded list that could go stale.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after dynamic routing change
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add interactive TUI entry point with hybrid UI
Replace static markdown output with an ink-based terminal UI that
combines two modes: a guided conversation flow for first-run users
and a fuzzy-searchable command palette for returning users. A
persistent status bar shows repo state at a glance (branch, phase,
backlog count, working tree status).
- Context detection module mirrors /start Phase 1 signals
- ConversationFlow: branching dialogue tree (choose-your-own-adventure)
- CommandPalette: fuzzy search with context-ranked star recommendations
- StatusBar: tmux-style persistent strip with color-coded segments
- Supports --json flag for scripting/piping
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add test suite, error handling, and refactor for production readiness
- Add vitest test infrastructure with 102 tests across 7 files
- Coverage: 95.58% statements, 90.81% branches, 96.72% functions
- Extract conversation tree to separate config module for testability
- Add error boundary to App component for graceful error display
- Add --help flag with usage documentation
- Add TTY detection with JSON fallback for non-interactive environments
- Add SIGINT/SIGTERM signal handling for clean exit
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: add coverage to gitignore, include plan and workspace config
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — unused code, git cwd, magic numbers
- Call exit() after command selection so Ink process terminates
- Remove unused ctx prop from Header component
- Fix git commands to use -C flag with root path parameter
- Extract dumpContextJson() helper to deduplicate JSON output logic
- Add comment explaining hardcoded team filter exclusion
- Replace magic numbers with named constants (FUSE_THRESHOLD,
RECOMMENDED_SCORE, MAX_BRANCH_LENGTH)
- Remove unused ink-spinner dependency
- Add test verifying git -C flag passes root correctly
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — security, correctness, test quality
- CRITICAL: Replace execSync shell interpolation with execFileSync to
prevent command injection via root parameter in detect.js
- CRITICAL: Remove phantom --external:ink-spinner from build script and
switch npx to direct esbuild invocation
- HIGH: Fix exit race condition — use useEffect instead of setTimeout
- HIGH: Wire up onSelect callback in ConversationFlow so Guide mode
triggers the result screen in App
- HIGH: Destructure and accept ctx prop in ConversationFlow
- HIGH: Add back-navigation (Escape) in ConversationFlow
- HIGH: Guard against undefined team.focus in commands.js tags
- MEDIUM: Use functional setCursor form to avoid stale closures
- MEDIUM: Key commandIndices Map by string id instead of object identity
- MEDIUM: Improve parseTeams header detection (drop first row approach)
- MEDIUM: Filter completed/done/closed items from backlogCount
- MEDIUM: Extract shared makeCtx test utility across all test files
- MEDIUM: Add null guard to StatusBar truncate helper
- LOW: Validate orchestratorPhase is a number in range 1-5
- LOW: Fix pnpm-workspace.yaml list syntax
- Replace all setTimeout in tests with vi.waitFor deterministic waits
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(engine): add pre-sync commit guard and interactive apply mode
Adds two safety features to the sync pipeline:
1. Pre-sync commit guard: Detects uncommitted changes in protected
directories (.agentkit/engines, spec, overlays) before sync runs.
In TTY mode, prompts to abort, stash, or continue. In non-TTY
mode (CI), prints a warning and proceeds.
2. Interactive apply mode: After rendering, shows a change summary
and prompts: apply all / skip all / prompt each file. Per-file
prompt supports show-diff and apply-all-remaining. Default in
TTY; bypassed with --yes, --no-prompt, or --force.
New module: sync-guard.mjs with 4 exported functions and 7 tests.
New CLI flags: --yes, --no-prompt for non-interactive sync.
* chore(sync): regenerate outputs after branch merges
* chore(sync): regenerate outputs after merge of new-user-entry-point
* feat(engine): add configurable package manager and fix review findings
- Add `stack.packageManager` field to project.yaml (pnpm | npm | yarn)
- Derive helper template vars (pmInstall, pmRun, pmExec, pmLockfile, etc.)
- Update CLAUDE.md template and hook/workflow templates to use {{packageManager}}
- Fix sync-guard to exclude .agentkit/spec from protected dirs and add try/catch
- Remove duplicate cost-ops team definition from teams.yaml
- Pin all dependency versions in package.json (remove ^ prefixes)
- Add vitest coverage thresholds (80% statements/branches/functions/lines)
- Fix src/start/ code quality: null guards, exit delay, error boundaries
- Harden consolidate-branches.sh: self-resolution guard, stash restore
- Regenerate all 533 output files via agentkit sync
* chore(engine): add brand color palette variables to sync vars
* fix(ci): fix test race condition, workspace config, and lockfile
- Fix ConversationFlow test: wait for 'Got it' before asserting hint text
- Add packages field to pnpm-workspace.yaml for proper workspace resolution
- Regenerate lockfile after version pinning (removed ^ prefixes)
- Remove accidental .agentkit/templates/src/ artifacts
* fix(start): add event loop yields to ConversationFlow tests
ink-select-input needs setImmediate yields after a new menu renders
before it can process ENTER keypresses. Without this, the second ENTER
in leaf-selection tests was swallowed, causing intermittent failures.
---------
* fix(spec): correct githubSlug to phoenixvc/agentkit-forge (#391)
* Add entry point for new framework users (#389)
* feat(commands): add /start command as new user entry point
Adds a context-aware triage command that detects repository state
(fresh clone, post-discovery, mid-session, uncommitted work) and
guides users to the right command or team for their goal.
Includes team routing table, 4 contextual flows, and decision
guidance for when users don't know which team to use.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* refactor(commands): add Arguments and State Management sections to /start
Addresses TEAMFORGE validation findings:
- Add dedicated Arguments section documenting $ARGUMENTS handling
- Add State Management section (reads/writes inventory)
- Fix frontmatter: remove misleading generated_by field
- Add explicit "manually authored" comment header
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): add /start to spec and template for cross-repo generation
Moves /start from a hand-authored command to a proper spec-driven,
sync-generated command available to any repo that adopts AgentKit Forge.
- Add start command definition to commands.yaml (no feature gate — always on)
- Create start.md template in .agentkit/templates/claude/commands/
- Add /start to CLAUDE.md Quick Reference table template
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after adding /start command
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): make /start team routing dynamic instead of hardcoded
Replace the static team routing table with dynamic discovery:
1. Read AGENT_TEAMS.md (from /discover) at runtime
2. Fall back to .agentkit/spec/teams.yaml
3. Fall back to /team-* command frontmatter
This ensures /start always reflects the actual teams configured
in any repo, rather than a hardcoded list that could go stale.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after dynamic routing change
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add interactive TUI entry point with hybrid UI
Replace static markdown output with an ink-based terminal UI that
combines two modes: a guided conversation flow for first-run users
and a fuzzy-searchable command palette for returning users. A
persistent status bar shows repo state at a glance (branch, phase,
backlog count, working tree status).
- Context detection module mirrors /start Phase 1 signals
- ConversationFlow: branching dialogue tree (choose-your-own-adventure)
- CommandPalette: fuzzy search with context-ranked star recommendations
- StatusBar: tmux-style persistent strip with color-coded segments
- Supports --json flag for scripting/piping
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add test suite, error handling, and refactor for production readiness
- Add vitest test infrastructure with 102 tests across 7 files
- Coverage: 95.58% statements, 90.81% branches, 96.72% functions
- Extract conversation tree to separate config module for testability
- Add error boundary to App component for graceful error display
- Add --help flag with usage documentation
- Add TTY detection with JSON fallback for non-interactive environments
- Add SIGINT/SIGTERM signal handling for clean exit
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: add coverage to gitignore, include plan and workspace config
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — unused code, git cwd, magic numbers
- Call exit() after command selection so Ink process terminates
- Remove unused ctx prop from Header component
- Fix git commands to use -C flag with root path parameter
- Extract dumpContextJson() helper to deduplicate JSON output logic
- Add comment explaining hardcoded team filter exclusion
- Replace magic numbers with named constants (FUSE_THRESHOLD,
RECOMMENDED_SCORE, MAX_BRANCH_LENGTH)
- Remove unused ink-spinner dependency
- Add test verifying git -C flag passes root correctly
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — security, correctness, test quality
- CRITICAL: Replace execSync shell interpolation with execFileSync to
prevent command injection via root parameter in detect.js
- CRITICAL: Remove phantom --external:ink-spinner from build script and
switch npx to direct esbuild invocation
- HIGH: Fix exit race condition — use useEffect instead of setTimeout
- HIGH: Wire up onSelect callback in ConversationFlow so Guide mode
triggers the result screen in App
- HIGH: Destructure and accept ctx prop in ConversationFlow
- HIGH: Add back-navigation (Escape) in ConversationFlow
- HIGH: Guard against undefined team.focus in commands.js tags
- MEDIUM: Use functional setCursor form to avoid stale closures
- MEDIUM: Key commandIndices Map by string id instead of object identity
- MEDIUM: Improve parseTeams header detection (drop first row approach)
- MEDIUM: Filter completed/done/closed items from backlogCount
- MEDIUM: Extract shared makeCtx test utility across all test files
- MEDIUM: Add null guard to StatusBar truncate helper
- LOW: Validate orchestratorPhase is a number in range 1-5
- LOW: Fix pnpm-workspace.yaml list syntax
- Replace all setTimeout in tests with vi.waitFor deterministic waits
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* test(start): add coverage for result screen exit path
Add App-level test that navigates through ConversationFlow to a leaf
node and verifies the result screen text is rendered before exit().
Confirms the synchronous useEffect exit is safe — React commits the
render (Ink captures the frame) before useEffect fires.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: update generated sync output timestamps
Generated files updated with current sync date from dev merge.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
---------
* fix: caldues heuristics (#398)
---------
Co-authored-by: Claude <noreply@anthropic.com>
* fix(quality): resolve all lint and format errors
- Fix Prettier formatting across engine src and start components
- Resolve 381 markdown lint errors (MD040, MD024, MD036, MD029, MD022, MD001)
- Add markdownlint config rules for intentional doc patterns
- Add .claude/worktrees to prettierignore to exclude external branches
- Enable markdownlint MD024/MD026 for duplicate headings and trailing colons
All quality checks now pass: Prettier (0 errors), Markdown lint (0 errors), Tests (111/111), Build (28.9kb)
* I'll update the last_updated field in all the files from '2026-03-12' to '2026-03-13'. This appears to be a routine timestamp update across all the AgentKit Forge generated files.
* docs: add AgentKit Forge sync feedback
Add detailed feedback on AgentKit Forge v3.1.0 integration, focusing on:
- Windows line-ending issues and multi-editor sync behavior
- Documentation scaffold-once limitations and override challenges
- Unresolved placeholder warnings lacking diagnostics
- Windows-specific pnpm execution problems
* docs: update CLAUDE.md with repository-specific editing guidelines
Clarified that modifications to `.agentkit` files are permitted in the agentkit-forge repository, while upstream directories remain protected. This ensures users understand the editing boundaries for project configuration and template files.
* docs(claude): allow .agentkit edits in this repo (NB for framework dev)
Made-with: Cursor
* chore(sync): regenerate outputs after agentkit:sync
Made-with: Cursor
* Fix/generated files and conflict markers (#427)
* fix(infra): resolve container app fqdn attribute and format code
* chore(sync): update AGENT_BACKLOG.md and other files for task management
- Enhanced AGENT_BACKLOG.md with detailed task scopes for CI pipeline configuration and test framework setup.
- Added new docker-compose.yml for local/staging validation of the framework.
- Updated CONTRIBUTING.md to include documentation hub link in the Discovery phase.
- Introduced README.md files in db, infra, and migrations directories to clarify their purpose for adopters.
- Added API conventions documentation to guide adopters on structuring their APIs.
- Created implementation plan for state management improvements and added relevant tests.
- Regenerated outputs across various files to reflect recent changes and ensure consistency.
* chore(ci): reduce CodeQL to weekly + manual only (#430)
* chore(ci): reduce CodeQL to weekly schedule + manual trigger
Removes push and pull_request triggers to reduce GitHub Actions costs.
Scans were running on every PR including Renovate dependency updates.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* docs(architecture): add tool-neutral agent hub findings, ADR-10, and adoption roadmap (#428)
* docs(architecture): add tool-neutral agent hub findings, ADR-10, and adoption roadmap
Comparative analysis of agentkit-forge sync engine vs Mystira.workspace
hand-authored .agents/ pattern. Documents 5-phase adoption roadmap to
converge both approaches: .agents/ as sync target, reflective guards,
.readme.yaml generation, cross-session traces, and schema formalisation.
Includes regenerated sync output (updated timestamps across all tools).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs(architecture): add competitive landscape and strategic research report
Comprehensive analysis of…
* Add start command: new user entry point with state detection (#387)
* fix(commands): add AskUserQuestion to VALID_TOOLS and /start command
The /start command session got stuck because AskUserQuestion was not
included in the allowed-tools whitelist. This fix addresses three issues:
1. VALID_TOOLS in spec-validator was missing AskUserQuestion, TodoWrite,
Agent, and NotebookEdit — preventing commands from declaring these
Claude Code built-in tools in their allowed-tools.
2. The /start command template now explicitly includes AskUserQuestion
in its allowed-tools frontmatter and instructs the agent to use it
for interactive guided choices (Phase 3).
3. Added /start command spec to commands.yaml with AskUserQuestion as
a declared tool dependency.
Also adds a test case validating all four newly-added tools are accepted
by the spec validator.
https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M
* fix(commands): remove unrendered Handlebars comment from start.md output
The generated .claude/commands/start.md contained a raw {{! ... }}
Handlebars comment that was not processed by the sync engine. Remove it
so the generated output is clean Markdown.
https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M
---------
* Add configurable prefix to kits commands (#388)
* feat(sync): add configurable command prefix for generated slash commands
Add `commandPrefix` setting to overlay settings that namespaces all
generated slash commands across platforms:
- Claude Code: subdirectory strategy (kits/check.md → /project:kits:check)
- Cursor/Windsurf/Copilot/Codex: filename prefix (kits-check.md → /kits-check)
- Team commands excluded from prefixing (already namespaced)
Changes:
- Add resolveCommandPath() helper with subdirectory/filename strategies
- Update syncClaudeCommands, syncClaudeSkills, syncCursorCommands,
syncWindsurfCommands, syncCopilotPrompts, syncCodexSkills
- Add commandPrefix to vars from overlay settings
- Add commandPrefixedName to buildCommandVars
- Add 16 unit + integration tests (all pass, 93 existing tests unaffected)
Default is null (no prefix) for full backwards compatibility.
https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p
* fix(sync): address review findings for command prefix
- Remove unused afterAll import from test file
- Add clarifying comment that non-spec command files are also prefixed
- Add 2 integration tests verifying commandPrefixedName template variable
renders correctly with and without prefix
https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p
---------
* fix(ci): CI remediation — package manager, review findings, test stability (#390)
* fix(ci): resolve 7 bugs from project review
- BUG-001: Replace flaky discover test with controlled temp fixture
- BUG-002: Run prettier --write to fix formatting drift
- BUG-003: Add form-template detection skip in issue label validation
- BUG-005: Change claude.yml to self-hosted runner
- BUG-006: Align branch protection required status checks with project.yaml
- BUG-007: Fix command injection in resolve-merge.sh (use grep -F)
* docs: update changelog, add planning registry review findings
- Add changelog entries for Wave 1-3 fixes (Added/Changed/Fixed/Removed)
- Add Project Review Findings section to planning registry (PR-001 to PR-014)
- Update planning docs after sync merge
* feat(review): add --generate-plans flag to project-review command
Add Phase 2.5 plan generation after project review findings. When
--generate-plans is passed (default: true), scaffold plan files from
critical/high findings into docs/planning/review-findings/.
Also includes sync cleanup of stale cursor/windsurf settings.
* chore(sync): regenerate all outputs after project review fixes
* feat(cli): dynamic flag loading from commands.yaml + context-aware template hook
- Replace ~200 lines of hardcoded VALID_FLAGS/FLAG_TYPES with loadCommandFlags()
that reads flag definitions from commands.yaml at startup
- CLI_INTERNAL_FLAGS/CLI_INTERNAL_FLAG_TYPES cover commands not in commands.yaml
- Self-validation warns at startup if any flag is missing a type definition
- Update cli.test.mjs to validate CLI_INTERNAL_FLAGS consistency
- Fix scaffold-once orphan bug: carry forward manifest entries for files
skipped by scaffold-once so orphan cleanup does not delete them
- Make protect-templates hook context-aware: skip protection in the
agentkit-forge source repo (detected via package.json name) so
maintainer agents can edit templates; block only in downstream repos
* feat(sync): add managed-mode script templates for downstream repos
Add 14 script templates (.agentkit/templates/scripts/) with `managed`
scaffold mode so downstream repos receive script updates via three-way
merge while preserving local customizations.
Templates include: create-doc, update-changelog, validate-documentation,
validate-numbering, check-documentation-requirement, sync-issues,
sync-split-pr, setup-agentkit-branch-governance, and resolve-merge
(both .sh and .ps1 variants where applicable).
Parameterized templates use {{defaultBranch}} and branch protection
variables from project.yaml. Engine wired via syncScripts() under
doc-scaffolding feature gate.
* feat(teams): add TeamForge meta-team for agent team creation (cogmesh #130)
Add the TEAMFORGE meta-team (T11) — a structured pipeline for creating,
validating, and deploying new agent team specifications. Adapted from
cogmesh #130 with a simplified 6-agent pipeline:
- input-clarifier: assess requests, extract constraints
- mission-definer: lock team definition (ID, scope, accepts)
- role-architect: design agent roles and dependencies
- prompt-engineer: write agent descriptions and rules
- flow-designer: design team command and integration points
- team-validator: quality gate for spec consistency
Includes /team-forge command with --task flag (create-team, validate-team,
audit-teams, update-team) and planning doc.
* feat(teams): add Strategic Ops team for cross-project coordination
Add the STRATEGIC OPS team (T12) — handles framework governance,
portfolio analysis, adoption strategy, impact assessment, and release
coordination across all repos using AgentKit Forge.
5-agent pipeline:
- portfolio-analyst: inventory repos, detect drift, adoption metrics
- governance-advisor: versioning strategy, breaking change protocols
- adoption-strategist: onboarding, migration paths, rollout plans
- impact-assessor: blast radius analysis for template/spec changes
- release-coordinator: version bumps, sync waves, release comms
Includes /team-strategic-ops command with --task and --scope flags.
* feat(agents): add agent/team relationship matrix analysis engine + scripts
Add comprehensive agent/team relationship analysis with 8 cross-reference
matrices and 10 supplementary analyses (orphans, cycles, bottlenecks,
reachability, critical path, notification amplifiers, etc.).
- Fix YAML structure: strategic-ops agents now under own top-level key
- Add explicit agents: lists to forge + strategic-ops teams in teams.yaml
- Add consolidation detection responsibilities to portfolio-analyst
- Create agent-analysis.mjs engine module (loadFullAgentGraph + renderers)
- Wire analyze-agents CLI command with --output/--matrix/--format flags
- Add managed-scaffold script templates (bash + PowerShell)
- Integrate into sync pipeline (auto-regenerates matrix on spec changes)
- Add 33 tests covering all matrices, analyses, and edge cases
* chore: update documentation files and add plan template
- Add trailing newlines to Cursor command documentation files for consistency
- Add new plan template files for project planning
- Improve markdown table formatting in Claude skills documentation
- Remove obsolete .clinerules/testing.md file
- Update various rule files with better formatting and advisory rule alignment
* feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14)
- Add spec-compliance-auditor to operations category (quality team) — closes
the feedback loop between agent specs and actual behavior
- Add Cost Ops team (T14) with 5 agents: model-economist,
token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter,
cost-ops-monitor
- Add ai-cost-ops rules domain with 6 conventions (model routing, token
budgets, caching, batch APIs, vendor abstraction, credit tracking)
- Add team-cost-ops command with --task, --period, --provider flags
- Update notification chains: data→cost-ops-monitor, infra→model-economist,
retrospective-analyst→spec-compliance-auditor
- Add intake routes: cost-ops, agent-performance
* fix(teams): add implement to cost-ops team accepts list
Resolves agent/team accepts mismatch — token-efficiency-engineer accepts
implement but the team definition only had investigate/review/plan/document.
* feat(cost-ops): add multi-provider infra cost ticket to backlog
Add detailed planning ticket for multi-provider infrastructure cost
normalisation, routing, and cost-agent integration. Covers 9 providers
(Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS,
GCP) with 3-phase delivery plan and cross-team dependency tracking.
* fix(templates): resolve PR review comments from CodeRabbit
- Fix protect-templates.sh: package name check uses correct
"agentkit-forge-runtime" instead of "agentkit-forge"
- Fix protect-templates.ps1: malformed path (missing separator before
.agentkit) and same package name correction
- Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS
require() syntax used in the inline Node script
- Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder
- Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left
by sync engine, keeping user formatting + implement in cost-ops
* feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents
Enable web research capabilities for cost-ops team:
- Add WebSearch and WebFetch to /team-cost-ops allowed-tools
- Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst,
and grant-hunter agent preferred-tools
- Add web intake expansion ticket (P2) for MCP crawler, Puppeteer
integration, automated pricing refresh, and cross-session persistence
- Regenerate sync outputs
* feat(cost-ops): add Cost Ops team, agents, and multi-provider cost ticket (#364)
* feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14)
- Add spec-compliance-auditor to operations category (quality team) — closes
the feedback loop between agent specs and actual behavior
- Add Cost Ops team (T14) with 5 agents: model-economist,
token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter,
cost-ops-monitor
- Add ai-cost-ops rules domain with 6 conventions (model routing, token
budgets, caching, batch APIs, vendor abstraction, credit tracking)
- Add team-cost-ops command with --task, --period, --provider flags
- Update notification chains: data→cost-ops-monitor, infra→model-economist,
retrospective-analyst→spec-compliance-auditor
- Add intake routes: cost-ops, agent-performance
* fix(teams): add implement to cost-ops team accepts list
Resolves agent/team accepts mismatch — token-efficiency-engineer accepts
implement but the team definition only had investigate/review/plan/document.
* feat(cost-ops): add multi-provider infra cost ticket to backlog
Add detailed planning ticket for multi-provider infrastructure cost
normalisation, routing, and cost-agent integration. Covers 9 providers
(Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS,
GCP) with 3-phase delivery plan and cross-team dependency tracking.
* fix(templates): resolve PR review comments from CodeRabbit
- Fix protect-templates.sh: package name check uses correct
"agentkit-forge-runtime" instead of "agentkit-forge"
- Fix protect-templates.ps1: malformed path (missing separator before
.agentkit) and same package name correction
- Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS
require() syntax used in the inline Node script
- Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder
- Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left
by sync engine, keeping user formatting + implement in cost-ops
* feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents (#365)
Enable web research capabilities for cost-ops team:
- Add WebSearch and WebFetch to /team-cost-ops allowed-tools
- Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst,
and grant-hunter agent preferred-tools
- Add web intake expansion ticket (P2) for MCP crawler, Puppeteer
integration, automated pricing refresh, and cross-session persistence
- Regenerate sync outputs
---------
* fix(teams): address CodeRabbit review findings on strategic-ops PR
- Lazy-load js-yaml in cli.mjs after ensureDependencies() to prevent
crash when node_modules is missing
- Convert YAML frontmatter to PowerShell comment blocks in all 6 PS1
templates to fix invalid PowerShell syntax
- Fix protect-templates hook path: use 3 parent traversals to reach
.agentkit/package.json from hooks directory
- Remove schema-invalid 'phase' field from ai-cost-ops rule domain
- Narrow strategic-ops scope: replace **/* catch-all with specific files
- Add strategic-ops to cost-ops handoff-chain for consistency
- Add Write tool to spec-compliance-auditor, vendor-arbitrage-analyst,
and grant-hunter agents
- Fix glob matching in resolve-merge.sh (use regex instead of broken
sed strip)
- Add merge failure vs conflict detection in resolve-merge.ps1
- Add branch existence check in setup-agentkit-branch-governance scripts
- Add gh CLI preflight check in sync-split-pr.ps1
- Deduplicate branch protection loop when defaultBranch is 'main'
- Fix applies-to glob: docs/planning/cost/** → docs/planning/cost-governance/**
- Fix non-canonical doc paths in intake-agent-proposal.md
- Add changelog entries for new teams, agents, and analysis engine
- Resolve AGENT_TEAMS.md merge conflict (accept narrowed scope)
- Run prettier on all modified files
* fix(templates): add gh auth preflight and changelog divider handling
- sync-split-pr.ps1: add gh auth status check before side effects
- update-changelog.ps1: stop before --- divider when appending entries
Addresses CodeRabbit review comments #7 and #13 on PR #356.
* fix(sync): set executable permission on analyze-agents.sh
Linux CI sync produces +x permissions; align local to match.
* fix(templates): address CodeRabbit review round 3-4 findings
- Fix YAML frontmatter in copilot agent template: use double quotes
for description field to handle apostrophes (CRITICAL)
- Fix protect-templates.sh/ps1 path traversal: correct parent
directory count for .agentkit/package.json source repo detection
- Add $PSNativeCommandUseErrorActionPreference to sync-split-pr.ps1
so native command failures (git, pnpm, gh) are treated as fatal
- Replace try/catch with $LASTEXITCODE check for gh auth status
- Deduplicate branch loop in setup-agentkit-branch-governance.sh
when defaultBranch equals 'main'
- Fix duplicate verification echo lines in governance scripts
* style(docs): fix prettier formatting on planning documents
Run prettier --write on web-intake-expansion.md and
intake-agent-proposal.md to fix CI formatting check.
* fix(tests): isolate render target gating tests with fresh temp dirs
Tests in the "render target gating" describe block shared a single temp
directory via beforeAll/afterAll. The first test ran --only claude
(generating .claude/ files), and the second ran --only warp expecting no
Claude files — but leftovers from test 1 caused the assertion to fail.
Changing to beforeEach/afterEach gives each test a clean directory.
Closes #377
* feat(commands): add /start command as new user entry point
Adds a context-aware triage command that detects repository state
(fresh clone, post-discovery, mid-session, uncommitted work) and
guides users to the right command or team for their goal.
Includes team routing table, 4 contextual flows, and decision
guidance for when users don't know which team to use.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* refactor(commands): add Arguments and State Management sections to /start
Addresses TEAMFORGE validation findings:
- Add dedicated Arguments section documenting $ARGUMENTS handling
- Add State Management section (reads/writes inventory)
- Fix frontmatter: remove misleading generated_by field
- Add explicit "manually authored" comment header
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): add /start to spec and template for cross-repo generation
Moves /start from a hand-authored command to a proper spec-driven,
sync-generated command available to any repo that adopts AgentKit Forge.
- Add start command definition to commands.yaml (no feature gate — always on)
- Create start.md template in .agentkit/templates/claude/commands/
- Add /start to CLAUDE.md Quick Reference table template
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after adding /start command
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): make /start team routing dynamic instead of hardcoded
Replace the static team routing table with dynamic discovery:
1. Read AGENT_TEAMS.md (from /discover) at runtime
2. Fall back to .agentkit/spec/teams.yaml
3. Fall back to /team-* command frontmatter
This ensures /start always reflects the actual teams configured
in any repo, rather than a hardcoded list that could go stale.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after dynamic routing change
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add interactive TUI entry point with hybrid UI
Replace static markdown output with an ink-based terminal UI that
combines two modes: a guided conversation flow for first-run users
and a fuzzy-searchable command palette for returning users. A
persistent status bar shows repo state at a glance (branch, phase,
backlog count, working tree status).
- Context detection module mirrors /start Phase 1 signals
- ConversationFlow: branching dialogue tree (choose-your-own-adventure)
- CommandPalette: fuzzy search with context-ranked star recommendations
- StatusBar: tmux-style persistent strip with color-coded segments
- Supports --json flag for scripting/piping
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add test suite, error handling, and refactor for production readiness
- Add vitest test infrastructure with 102 tests across 7 files
- Coverage: 95.58% statements, 90.81% branches, 96.72% functions
- Extract conversation tree to separate config module for testability
- Add error boundary to App component for graceful error display
- Add --help flag with usage documentation
- Add TTY detection with JSON fallback for non-interactive environments
- Add SIGINT/SIGTERM signal handling for clean exit
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: add coverage to gitignore, include plan and workspace config
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — unused code, git cwd, magic numbers
- Call exit() after command selection so Ink process terminates
- Remove unused ctx prop from Header component
- Fix git commands to use -C flag with root path parameter
- Extract dumpContextJson() helper to deduplicate JSON output logic
- Add comment explaining hardcoded team filter exclusion
- Replace magic numbers with named constants (FUSE_THRESHOLD,
RECOMMENDED_SCORE, MAX_BRANCH_LENGTH)
- Remove unused ink-spinner dependency
- Add test verifying git -C flag passes root correctly
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — security, correctness, test quality
- CRITICAL: Replace execSync shell interpolation with execFileSync to
prevent command injection via root parameter in detect.js
- CRITICAL: Remove phantom --external:ink-spinner from build script and
switch npx to direct esbuild invocation
- HIGH: Fix exit race condition — use useEffect instead of setTimeout
- HIGH: Wire up onSelect callback in ConversationFlow so Guide mode
triggers the result screen in App
- HIGH: Destructure and accept ctx prop in ConversationFlow
- HIGH: Add back-navigation (Escape) in ConversationFlow
- HIGH: Guard against undefined team.focus in commands.js tags
- MEDIUM: Use functional setCursor form to avoid stale closures
- MEDIUM: Key commandIndices Map by string id instead of object identity
- MEDIUM: Improve parseTeams header detection (drop first row approach)
- MEDIUM: Filter completed/done/closed items from backlogCount
- MEDIUM: Extract shared makeCtx test utility across all test files
- MEDIUM: Add null guard to StatusBar truncate helper
- LOW: Validate orchestratorPhase is a number in range 1-5
- LOW: Fix pnpm-workspace.yaml list syntax
- Replace all setTimeout in tests with vi.waitFor deterministic waits
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(engine): add pre-sync commit guard and interactive apply mode
Adds two safety features to the sync pipeline:
1. Pre-sync commit guard: Detects uncommitted changes in protected
directories (.agentkit/engines, spec, overlays) before sync runs.
In TTY mode, prompts to abort, stash, or continue. In non-TTY
mode (CI), prints a warning and proceeds.
2. Interactive apply mode: After rendering, shows a change summary
and prompts: apply all / skip all / prompt each file. Per-file
prompt supports show-diff and apply-all-remaining. Default in
TTY; bypassed with --yes, --no-prompt, or --force.
New module: sync-guard.mjs with 4 exported functions and 7 tests.
New CLI flags: --yes, --no-prompt for non-interactive sync.
* chore(sync): regenerate outputs after branch merges
* chore(sync): regenerate outputs after merge of new-user-entry-point
* feat(engine): add configurable package manager and fix review findings
- Add `stack.packageManager` field to project.yaml (pnpm | npm | yarn)
- Derive helper template vars (pmInstall, pmRun, pmExec, pmLockfile, etc.)
- Update CLAUDE.md template and hook/workflow templates to use {{packageManager}}
- Fix sync-guard to exclude .agentkit/spec from protected dirs and add try/catch
- Remove duplicate cost-ops team definition from teams.yaml
- Pin all dependency versions in package.json (remove ^ prefixes)
- Add vitest coverage thresholds (80% statements/branches/functions/lines)
- Fix src/start/ code quality: null guards, exit delay, error boundaries
- Harden consolidate-branches.sh: self-resolution guard, stash restore
- Regenerate all 533 output files via agentkit sync
* chore(engine): add brand color palette variables to sync vars
* fix(ci): fix test race condition, workspace config, and lockfile
- Fix ConversationFlow test: wait for 'Got it' before asserting hint text
- Add packages field to pnpm-workspace.yaml for proper workspace resolution
- Regenerate lockfile after version pinning (removed ^ prefixes)
- Remove accidental .agentkit/templates/src/ artifacts
* fix(start): add event loop yields to ConversationFlow tests
ink-select-input needs setImmediate yields after a new menu renders
before it can process ENTER keypresses. Without this, the second ENTER
in leaf-selection tests was swallowed, causing intermittent failures.
---------
* fix(spec): correct githubSlug to phoenixvc/agentkit-forge (#391)
* Add entry point for new framework users (#389)
* feat(commands): add /start command as new user entry point
Adds a context-aware triage command that detects repository state
(fresh clone, post-discovery, mid-session, uncommitted work) and
guides users to the right command or team for their goal.
Includes team routing table, 4 contextual flows, and decision
guidance for when users don't know which team to use.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* refactor(commands): add Arguments and State Management sections to /start
Addresses TEAMFORGE validation findings:
- Add dedicated Arguments section documenting $ARGUMENTS handling
- Add State Management section (reads/writes inventory)
- Fix frontmatter: remove misleading generated_by field
- Add explicit "manually authored" comment header
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): add /start to spec and template for cross-repo generation
Moves /start from a hand-authored command to a proper spec-driven,
sync-generated command available to any repo that adopts AgentKit Forge.
- Add start command definition to commands.yaml (no feature gate — always on)
- Create start.md template in .agentkit/templates/claude/commands/
- Add /start to CLAUDE.md Quick Reference table template
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after adding /start command
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): make /start team routing dynamic instead of hardcoded
Replace the static team routing table with dynamic discovery:
1. Read AGENT_TEAMS.md (from /discover) at runtime
2. Fall back to .agentkit/spec/teams.yaml
3. Fall back to /team-* command frontmatter
This ensures /start always reflects the actual teams configured
in any repo, rather than a hardcoded list that could go stale.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after dynamic routing change
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add interactive TUI entry point with hybrid UI
Replace static markdown output with an ink-based terminal UI that
combines two modes: a guided conversation flow for first-run users
and a fuzzy-searchable command palette for returning users. A
persistent status bar shows repo state at a glance (branch, phase,
backlog count, working tree status).
- Context detection module mirrors /start Phase 1 signals
- ConversationFlow: branching dialogue tree (choose-your-own-adventure)
- CommandPalette: fuzzy search with context-ranked star recommendations
- StatusBar: tmux-style persistent strip with color-coded segments
- Supports --json flag for scripting/piping
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add test suite, error handling, and refactor for production readiness
- Add vitest test infrastructure with 102 tests across 7 files
- Coverage: 95.58% statements, 90.81% branches, 96.72% functions
- Extract conversation tree to separate config module for testability
- Add error boundary to App component for graceful error display
- Add --help flag with usage documentation
- Add TTY detection with JSON fallback for non-interactive environments
- Add SIGINT/SIGTERM signal handling for clean exit
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: add coverage to gitignore, include plan and workspace config
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — unused code, git cwd, magic numbers
- Call exit() after command selection so Ink process terminates
- Remove unused ctx prop from Header component
- Fix git commands to use -C flag with root path parameter
- Extract dumpContextJson() helper to deduplicate JSON output logic
- Add comment explaining hardcoded team filter exclusion
- Replace magic numbers with named constants (FUSE_THRESHOLD,
RECOMMENDED_SCORE, MAX_BRANCH_LENGTH)
- Remove unused ink-spinner dependency
- Add test verifying git -C flag passes root correctly
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — security, correctness, test quality
- CRITICAL: Replace execSync shell interpolation with execFileSync to
prevent command injection via root parameter in detect.js
- CRITICAL: Remove phantom --external:ink-spinner from build script and
switch npx to direct esbuild invocation
- HIGH: Fix exit race condition — use useEffect instead of setTimeout
- HIGH: Wire up onSelect callback in ConversationFlow so Guide mode
triggers the result screen in App
- HIGH: Destructure and accept ctx prop in ConversationFlow
- HIGH: Add back-navigation (Escape) in ConversationFlow
- HIGH: Guard against undefined team.focus in commands.js tags
- MEDIUM: Use functional setCursor form to avoid stale closures
- MEDIUM: Key commandIndices Map by string id instead of object identity
- MEDIUM: Improve parseTeams header detection (drop first row approach)
- MEDIUM: Filter completed/done/closed items from backlogCount
- MEDIUM: Extract shared makeCtx test utility across all test files
- MEDIUM: Add null guard to StatusBar truncate helper
- LOW: Validate orchestratorPhase is a number in range 1-5
- LOW: Fix pnpm-workspace.yaml list syntax
- Replace all setTimeout in tests with vi.waitFor deterministic waits
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* test(start): add coverage for result screen exit path
Add App-level test that navigates through ConversationFlow to a leaf
node and verifies the result screen text is rendered before exit().
Confirms the synchronous useEffect exit is safe — React commits the
render (Ink captures the frame) before useEffect fires.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: update generated sync output timestamps
Generated files updated with current sync date from dev merge.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
---------
* fix: caldues heuristics (#398)
* feat: complete revisit of agents (#399) (#400)
* Add start command: new user entry point with state detection (#387)
* fix(commands): add AskUserQuestion to VALID_TOOLS and /start command
The /start command session got stuck because AskUserQuestion was not
included in the allowed-tools whitelist. This fix addresses three issues:
1. VALID_TOOLS in spec-validator was missing AskUserQuestion, TodoWrite,
Agent, and NotebookEdit — preventing commands from declaring these
Claude Code built-in tools in their allowed-tools.
2. The /start command template now explicitly includes AskUserQuestion
in its allowed-tools frontmatter and instructs the agent to use it
for interactive guided choices (Phase 3).
3. Added /start command spec to commands.yaml with AskUserQuestion as
a declared tool dependency.
Also adds a test case validating all four newly-added tools are accepted
by the spec validator.
https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M
* fix(commands): remove unrendered Handlebars comment from start.md output
The generated .claude/commands/start.md contained a raw {{! ... }}
Handlebars comment that was not processed by the sync engine. Remove it
so the generated output is clean Markdown.
https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M
---------
* Add configurable prefix to kits commands (#388)
* feat(sync): add configurable command prefix for generated slash commands
Add `commandPrefix` setting to overlay settings that namespaces all
generated slash commands across platforms:
- Claude Code: subdirectory strategy (kits/check.md → /project:kits:check)
- Cursor/Windsurf/Copilot/Codex: filename prefix (kits-check.md → /kits-check)
- Team commands excluded from prefixing (already namespaced)
Changes:
- Add resolveCommandPath() helper with subdirectory/filename strategies
- Update syncClaudeCommands, syncClaudeSkills, syncCursorCommands,
syncWindsurfCommands, syncCopilotPrompts, syncCodexSkills
- Add commandPrefix to vars from overlay settings
- Add commandPrefixedName to buildCommandVars
- Add 16 unit + integration tests (all pass, 93 existing tests unaffected)
Default is null (no prefix) for full backwards compatibility.
https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p
* fix(sync): address review findings for command prefix
- Remove unused afterAll import from test file
- Add clarifying comment that non-spec command files are also prefixed
- Add 2 integration tests verifying commandPrefixedName template variable
renders correctly with and without prefix
https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p
---------
* fix(ci): CI remediation — package manager, review findings, test stability (#390)
* fix(ci): resolve 7 bugs from project review
- BUG-001: Replace flaky discover test with controlled temp fixture
- BUG-002: Run prettier --write to fix formatting drift
- BUG-003: Add form-template detection skip in issue label validation
- BUG-005: Change claude.yml to self-hosted runner
- BUG-006: Align branch protection required status checks with project.yaml
- BUG-007: Fix command injection in resolve-merge.sh (use grep -F)
* docs: update changelog, add planning registry review findings
- Add changelog entries for Wave 1-3 fixes (Added/Changed/Fixed/Removed)
- Add Project Review Findings section to planning registry (PR-001 to PR-014)
- Update planning docs after sync merge
* feat(review): add --generate-plans flag to project-review command
Add Phase 2.5 plan generation after project review findings. When
--generate-plans is passed (default: true), scaffold plan files from
critical/high findings into docs/planning/review-findings/.
Also includes sync cleanup of stale cursor/windsurf settings.
* chore(sync): regenerate all outputs after project review fixes
* feat(cli): dynamic flag loading from commands.yaml + context-aware template hook
- Replace ~200 lines of hardcoded VALID_FLAGS/FLAG_TYPES with loadCommandFlags()
that reads flag definitions from commands.yaml at startup
- CLI_INTERNAL_FLAGS/CLI_INTERNAL_FLAG_TYPES cover commands not in commands.yaml
- Self-validation warns at startup if any flag is missing a type definition
- Update cli.test.mjs to validate CLI_INTERNAL_FLAGS consistency
- Fix scaffold-once orphan bug: carry forward manifest entries for files
skipped by scaffold-once so orphan cleanup does not delete them
- Make protect-templates hook context-aware: skip protection in the
agentkit-forge source repo (detected via package.json name) so
maintainer agents can edit templates; block only in downstream repos
* feat(sync): add managed-mode script templates for downstream repos
Add 14 script templates (.agentkit/templates/scripts/) with `managed`
scaffold mode so downstream repos receive script updates via three-way
merge while preserving local customizations.
Templates include: create-doc, update-changelog, validate-documentation,
validate-numbering, check-documentation-requirement, sync-issues,
sync-split-pr, setup-agentkit-branch-governance, and resolve-merge
(both .sh and .ps1 variants where applicable).
Parameterized templates use {{defaultBranch}} and branch protection
variables from project.yaml. Engine wired via syncScripts() under
doc-scaffolding feature gate.
* feat(teams): add TeamForge meta-team for agent team creation (cogmesh #130)
Add the TEAMFORGE meta-team (T11) — a structured pipeline for creating,
validating, and deploying new agent team specifications. Adapted from
cogmesh #130 with a simplified 6-agent pipeline:
- input-clarifier: assess requests, extract constraints
- mission-definer: lock team definition (ID, scope, accepts)
- role-architect: design agent roles and dependencies
- prompt-engineer: write agent descriptions and rules
- flow-designer: design team command and integration points
- team-validator: quality gate for spec consistency
Includes /team-forge command with --task flag (create-team, validate-team,
audit-teams, update-team) and planning doc.
* feat(teams): add Strategic Ops team for cross-project coordination
Add the STRATEGIC OPS team (T12) — handles framework governance,
portfolio analysis, adoption strategy, impact assessment, and release
coordination across all repos using AgentKit Forge.
5-agent pipeline:
- portfolio-analyst: inventory repos, detect drift, adoption metrics
- governance-advisor: versioning strategy, breaking change protocols
- adoption-strategist: onboarding, migration paths, rollout plans
- impact-assessor: blast radius analysis for template/spec changes
- release-coordinator: version bumps, sync waves, release comms
Includes /team-strategic-ops command with --task and --scope flags.
* feat(agents): add agent/team relationship matrix analysis engine + scripts
Add comprehensive agent/team relationship analysis with 8 cross-reference
matrices and 10 supplementary analyses (orphans, cycles, bottlenecks,
reachability, critical path, notification amplifiers, etc.).
- Fix YAML structure: strategic-ops agents now under own top-level key
- Add explicit agents: lists to forge + strategic-ops teams in teams.yaml
- Add consolidation detection responsibilities to portfolio-analyst
- Create agent-analysis.mjs engine module (loadFullAgentGraph + renderers)
- Wire analyze-agents CLI command with --output/--matrix/--format flags
- Add managed-scaffold script templates (bash + PowerShell)
- Integrate into sync pipeline (auto-regenerates matrix on spec changes)
- Add 33 tests covering all matrices, analyses, and edge cases
* chore: update documentation files and add plan template
- Add trailing newlines to Cursor command documentation files for consistency
- Add new plan template files for project planning
- Improve markdown table formatting in Claude skills documentation
- Remove obsolete .clinerules/testing.md file
- Update various rule files with better formatting and advisory rule alignment
* feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14)
- Add spec-compliance-auditor to operations category (quality team) — closes
the feedback loop between agent specs and actual behavior
- Add Cost Ops team (T14) with 5 agents: model-economist,
token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter,
cost-ops-monitor
- Add ai-cost-ops rules domain with 6 conventions (model routing, token
budgets, caching, batch APIs, vendor abstraction, credit tracking)
- Add team-cost-ops command with --task, --period, --provider flags
- Update notification chains: data→cost-ops-monitor, infra→model-economist,
retrospective-analyst→spec-compliance-auditor
- Add intake routes: cost-ops, agent-performance
* fix(teams): add implement to cost-ops team accepts list
Resolves agent/team accepts mismatch — token-efficiency-engineer accepts
implement but the team definition only had investigate/review/plan/document.
* feat(cost-ops): add multi-provider infra cost ticket to backlog
Add detailed planning ticket for multi-provider infrastructure cost
normalisation, routing, and cost-agent integration. Covers 9 providers
(Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS,
GCP) with 3-phase delivery plan and cross-team dependency tracking.
* fix(templates): resolve PR review comments from CodeRabbit
- Fix protect-templates.sh: package name check uses correct
"agentkit-forge-runtime" instead of "agentkit-forge"
- Fix protect-templates.ps1: malformed path (missing separator before
.agentkit) and same package name correction
- Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS
require() syntax used in the inline Node script
- Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder
- Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left
by sync engine, keeping user formatting + implement in cost-ops
* feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents
Enable web research capabilities for cost-ops team:
- Add WebSearch and WebFetch to /team-cost-ops allowed-tools
- Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst,
and grant-hunter agent preferred-tools
- Add web intake expansion ticket (P2) for MCP crawler, Puppeteer
integration, automated pricing refresh, and cross-session persistence
- Regenerate sync outputs
* feat(cost-ops): add Cost Ops team, agents, and multi-provider cost ticket (#364)
* feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14)
- Add spec-compliance-auditor to operations category (quality team) — closes
the feedback loop between agent specs and actual behavior
- Add Cost Ops team (T14) with 5 agents: model-economist,
token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter,
cost-ops-monitor
- Add ai-cost-ops rules domain with 6 conventions (model routing, token
budgets, caching, batch APIs, vendor abstraction, credit tracking)
- Add team-cost-ops command with --task, --period, --provider flags
- Update notification chains: data→cost-ops-monitor, infra→model-economist,
retrospective-analyst→spec-compliance-auditor
- Add intake routes: cost-ops, agent-performance
* fix(teams): add implement to cost-ops team accepts list
Resolves agent/team accepts mismatch — token-efficiency-engineer accepts
implement but the team definition only had investigate/review/plan/document.
* feat(cost-ops): add multi-provider infra cost ticket to backlog
Add detailed planning ticket for multi-provider infrastructure cost
normalisation, routing, and cost-agent integration. Covers 9 providers
(Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS,
GCP) with 3-phase delivery plan and cross-team dependency tracking.
* fix(templates): resolve PR review comments from CodeRabbit
- Fix protect-templates.sh: package name check uses correct
"agentkit-forge-runtime" instead of "agentkit-forge"
- Fix protect-templates.ps1: malformed path (missing separator before
.agentkit) and same package name correction
- Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS
require() syntax used in the inline Node script
- Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder
- Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left
by sync engine, keeping user formatting + implement in cost-ops
* feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents (#365)
Enable web research capabilities for cost-ops team:
- Add WebSearch and WebFetch to /team-cost-ops allowed-tools
- Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst,
and grant-hunter agent preferred-tools
- Add web intake expansion ticket (P2) for MCP crawler, Puppeteer
integration, automated pricing refresh, and cross-session persistence
- Regenerate sync outputs
---------
* fix(teams): address CodeRabbit review findings on strategic-ops PR
- Lazy-load js-yaml in cli.mjs after ensureDependencies() to prevent
crash when node_modules is missing
- Convert YAML frontmatter to PowerShell comment blocks in all 6 PS1
templates to fix invalid PowerShell syntax
- Fix protect-templates hook path: use 3 parent traversals to reach
.agentkit/package.json from hooks directory
- Remove schema-invalid 'phase' field from ai-cost-ops rule domain
- Narrow strategic-ops scope: replace **/* catch-all with specific files
- Add strategic-ops to cost-ops handoff-chain for consistency
- Add Write tool to spec-compliance-auditor, vendor-arbitrage-analyst,
and grant-hunter agents
- Fix glob matching in resolve-merge.sh (use regex instead of broken
sed strip)
- Add merge failure vs conflict detection in resolve-merge.ps1
- Add branch existence check in setup-agentkit-branch-governance scripts
- Add gh CLI preflight check in sync-split-pr.ps1
- Deduplicate branch protection loop when defaultBranch is 'main'
- Fix applies-to glob: docs/planning/cost/** → docs/planning/cost-governance/**
- Fix non-canonical doc paths in intake-agent-proposal.md
- Add changelog entries for new teams, agents, and analysis engine
- Resolve AGENT_TEAMS.md merge conflict (accept narrowed scope)
- Run prettier on all modified files
* fix(templates): add gh auth preflight and changelog divider handling
- sync-split-pr.ps1: add gh auth status check before side effects
- update-changelog.ps1: stop before --- divider when appending entries
Addresses CodeRabbit review comments #7 and #13 on PR #356.
* fix(sync): set executable permission on analyze-agents.sh
Linux CI sync produces +x permissions; align local to match.
* fix(templates): address CodeRabbit review round 3-4 findings
- Fix YAML frontmatter in copilot agent template: use double quotes
for description field to handle apostrophes (CRITICAL)
- Fix protect-templates.sh/ps1 path traversal: correct parent
directory count for .agentkit/package.json source repo detection
- Add $PSNativeCommandUseErrorActionPreference to sync-split-pr.ps1
so native command failures (git, pnpm, gh) are treated as fatal
- Replace try/catch with $LASTEXITCODE check for gh auth status
- Deduplicate branch loop in setup-agentkit-branch-governance.sh
when defaultBranch equals 'main'
- Fix duplicate verification echo lines in governance scripts
* style(docs): fix prettier formatting on planning documents
Run prettier --write on web-intake-expansion.md and
intake-agent-proposal.md to fix CI formatting check.
* fix(tests): isolate render target gating tests with fresh temp dirs
Tests in the "render target gating" describe block shared a single temp
directory via beforeAll/afterAll. The first test ran --only claude
(generating .claude/ files), and the second ran --only warp expecting no
Claude files — but leftovers from test 1 caused the assertion to fail.
Changing to beforeEach/afterEach gives each test a clean directory.
Closes #377
* feat(commands): add /start command as new user entry point
Adds a context-aware triage command that detects repository state
(fresh clone, post-discovery, mid-session, uncommitted work) and
guides users to the right command or team for their goal.
Includes team routing table, 4 contextual flows, and decision
guidance for when users don't know which team to use.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* refactor(commands): add Arguments and State Management sections to /start
Addresses TEAMFORGE validation findings:
- Add dedicated Arguments section documenting $ARGUMENTS handling
- Add State Management section (reads/writes inventory)
- Fix frontmatter: remove misleading generated_by field
- Add explicit "manually authored" comment header
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): add /start to spec and template for cross-repo generation
Moves /start from a hand-authored command to a proper spec-driven,
sync-generated command available to any repo that adopts AgentKit Forge.
- Add start command definition to commands.yaml (no feature gate — always on)
- Create start.md template in .agentkit/templates/claude/commands/
- Add /start to CLAUDE.md Quick Reference table template
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after adding /start command
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): make /start team routing dynamic instead of hardcoded
Replace the static team routing table with dynamic discovery:
1. Read AGENT_TEAMS.md (from /discover) at runtime
2. Fall back to .agentkit/spec/teams.yaml
3. Fall back to /team-* command frontmatter
This ensures /start always reflects the actual teams configured
in any repo, rather than a hardcoded list that could go stale.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after dynamic routing change
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add interactive TUI entry point with hybrid UI
Replace static markdown output with an ink-based terminal UI that
combines two modes: a guided conversation flow for first-run users
and a fuzzy-searchable command palette for returning users. A
persistent status bar shows repo state at a glance (branch, phase,
backlog count, working tree status).
- Context detection module mirrors /start Phase 1 signals
- ConversationFlow: branching dialogue tree (choose-your-own-adventure)
- CommandPalette: fuzzy search with context-ranked star recommendations
- StatusBar: tmux-style persistent strip with color-coded segments
- Supports --json flag for scripting/piping
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add test suite, error handling, and refactor for production readiness
- Add vitest test infrastructure with 102 tests across 7 files
- Coverage: 95.58% statements, 90.81% branches, 96.72% functions
- Extract conversation tree to separate config module for testability
- Add error boundary to App component for graceful error display
- Add --help flag with usage documentation
- Add TTY detection with JSON fallback for non-interactive environments
- Add SIGINT/SIGTERM signal handling for clean exit
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: add coverage to gitignore, include plan and workspace config
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — unused code, git cwd, magic numbers
- Call exit() after command selection so Ink process terminates
- Remove unused ctx prop from Header component
- Fix git commands to use -C flag with root path parameter
- Extract dumpContextJson() helper to deduplicate JSON output logic
- Add comment explaining hardcoded team filter exclusion
- Replace magic numbers with named constants (FUSE_THRESHOLD,
RECOMMENDED_SCORE, MAX_BRANCH_LENGTH)
- Remove unused ink-spinner dependency
- Add test verifying git -C flag passes root correctly
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — security, correctness, test quality
- CRITICAL: Replace execSync shell interpolation with execFileSync to
prevent command injection via root parameter in detect.js
- CRITICAL: Remove phantom --external:ink-spinner from build script and
switch npx to direct esbuild invocation
- HIGH: Fix exit race condition — use useEffect instead of setTimeout
- HIGH: Wire up onSelect callback in ConversationFlow so Guide mode
triggers the result screen in App
- HIGH: Destructure and accept ctx prop in ConversationFlow
- HIGH: Add back-navigation (Escape) in ConversationFlow
- HIGH: Guard against undefined team.focus in commands.js tags
- MEDIUM: Use functional setCursor form to avoid stale closures
- MEDIUM: Key commandIndices Map by string id instead of object identity
- MEDIUM: Improve parseTeams header detection (drop first row approach)
- MEDIUM: Filter completed/done/closed items from backlogCount
- MEDIUM: Extract shared makeCtx test utility across all test files
- MEDIUM: Add null guard to StatusBar truncate helper
- LOW: Validate orchestratorPhase is a number in range 1-5
- LOW: Fix pnpm-workspace.yaml list syntax
- Replace all setTimeout in tests with vi.waitFor deterministic waits
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(engine): add pre-sync commit guard and interactive apply mode
Adds two safety features to the sync pipeline:
1. Pre-sync commit guard: Detects uncommitted changes in protected
directories (.agentkit/engines, spec, overlays) before sync runs.
In TTY mode, prompts to abort, stash, or continue. In non-TTY
mode (CI), prints a warning and proceeds.
2. Interactive apply mode: After rendering, shows a change summary
and prompts: apply all / skip all / prompt each file. Per-file
prompt supports show-diff and apply-all-remaining. Default in
TTY; bypassed with --yes, --no-prompt, or --force.
New module: sync-guard.mjs with 4 exported functions and 7 tests.
New CLI flags: --yes, --no-prompt for non-interactive sync.
* chore(sync): regenerate outputs after branch merges
* chore(sync): regenerate outputs after merge of new-user-entry-point
* feat(engine): add configurable package manager and fix review findings
- Add `stack.packageManager` field to project.yaml (pnpm | npm | yarn)
- Derive helper template vars (pmInstall, pmRun, pmExec, pmLockfile, etc.)
- Update CLAUDE.md template and hook/workflow templates to use {{packageManager}}
- Fix sync-guard to exclude .agentkit/spec from protected dirs and add try/catch
- Remove duplicate cost-ops team definition from teams.yaml
- Pin all dependency versions in package.json (remove ^ prefixes)
- Add vitest coverage thresholds (80% statements/branches/functions/lines)
- Fix src/start/ code quality: null guards, exit delay, error boundaries
- Harden consolidate-branches.sh: self-resolution guard, stash restore
- Regenerate all 533 output files via agentkit sync
* chore(engine): add brand color palette variables to sync vars
* fix(ci): fix test race condition, workspace config, and lockfile
- Fix ConversationFlow test: wait for 'Got it' before asserting hint text
- Add packages field to pnpm-workspace.yaml for proper workspace resolution
- Regenerate lockfile after version pinning (removed ^ prefixes)
- Remove accidental .agentkit/templates/src/ artifacts
* fix(start): add event loop yields to ConversationFlow tests
ink-select-input needs setImmediate yields after a new menu renders
before it can process ENTER keypresses. Without this, the second ENTER
in leaf-selection tests was swallowed, causing intermittent failures.
---------
* fix(spec): correct githubSlug to phoenixvc/agentkit-forge (#391)
* Add entry point for new framework users (#389)
* feat(commands): add /start command as new user entry point
Adds a context-aware triage command that detects repository state
(fresh clone, post-discovery, mid-session, uncommitted work) and
guides users to the right command or team for their goal.
Includes team routing table, 4 contextual flows, and decision
guidance for when users don't know which team to use.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* refactor(commands): add Arguments and State Management sections to /start
Addresses TEAMFORGE validation findings:
- Add dedicated Arguments section documenting $ARGUMENTS handling
- Add State Management section (reads/writes inventory)
- Fix frontmatter: remove misleading generated_by field
- Add explicit "manually authored" comment header
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): add /start to spec and template for cross-repo generation
Moves /start from a hand-authored command to a proper spec-driven,
sync-generated command available to any repo that adopts AgentKit Forge.
- Add start command definition to commands.yaml (no feature gate — always on)
- Create start.md template in .agentkit/templates/claude/commands/
- Add /start to CLAUDE.md Quick Reference table template
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after adding /start command
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): make /start team routing dynamic instead of hardcoded
Replace the static team routing table with dynamic discovery:
1. Read AGENT_TEAMS.md (from /discover) at runtime
2. Fall back to .agentkit/spec/teams.yaml
3. Fall back to /team-* command frontmatter
This ensures /start always reflects the actual teams configured
in any repo, rather than a hardcoded list that could go stale.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after dynamic routing change
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add interactive TUI entry point with hybrid UI
Replace static markdown output with an ink-based terminal UI that
combines two modes: a guided conversation flow for first-run users
and a fuzzy-searchable command palette for returning users. A
persistent status bar shows repo state at a glance (branch, phase,
backlog count, working tree status).
- Context detection module mirrors /start Phase 1 signals
- ConversationFlow: branching dialogue tree (choose-your-own-adventure)
- CommandPalette: fuzzy search with context-ranked star recommendations
- StatusBar: tmux-style persistent strip with color-coded segments
- Supports --json flag for scripting/piping
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add test suite, error handling, and refactor for production readiness
- Add vitest test infrastructure with 102 tests across 7 files
- Coverage: 95.58% statements, 90.81% branches, 96.72% functions
- Extract conversation tree to separate config module for testability
- Add error boundary to App component for graceful error display
- Add --help flag with usage documentation
- Add TTY detection with JSON fallback for non-interactive environments
- Add SIGINT/SIGTERM signal handling for clean exit
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: add coverage to gitignore, include plan and workspace config
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — unused code, git cwd, magic numbers
- Call exit() after command selection so Ink process terminates
- Remove unused ctx prop from Header component
- Fix git commands to use -C flag with root path parameter
- Extract dumpContextJson() helper to deduplicate JSON output logic
- Add comment explaining hardcoded team filter exclusion
- Replace magic numbers with named constants (FUSE_THRESHOLD,
RECOMMENDED_SCORE, MAX_BRANCH_LENGTH)
- Remove unused ink-spinner dependency
- Add test verifying git -C flag passes root correctly
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — security, correctness, test quality
- CRITICAL: Replace execSync shell interpolation with execFileSync to
prevent command injection via root parameter in detect.js
- CRITICAL: Remove phantom --external:ink-spinner from build script and
switch npx to direct esbuild invocation
- HIGH: Fix exit race condition — use useEffect instead of setTimeout
- HIGH: Wire up onSelect callback in ConversationFlow so Guide mode
triggers the result screen in App
- HIGH: Destructure and accept ctx prop in ConversationFlow
- HIGH: Add back-navigation (Escape) in ConversationFlow
- HIGH: Guard against undefined team.focus in commands.js tags
- MEDIUM: Use functional setCursor form to avoid stale closures
- MEDIUM: Key commandIndices Map by string id instead of object identity
- MEDIUM: Improve parseTeams header detection (drop first row approach)
- MEDIUM: Filter completed/done/closed items from backlogCount
- MEDIUM: Extract shared makeCtx test utility across all test files
- MEDIUM: Add null guard to StatusBar truncate helper
- LOW: Validate orchestratorPhase is a number in range 1-5
- LOW: Fix pnpm-workspace.yaml list syntax
- Replace all setTimeout in tests with vi.waitFor deterministic waits
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* test(start): add coverage for result screen exit path
Add App-level test that navigates through ConversationFlow to a leaf
node and verifies the result screen text is rendered before exit().
Confirms the synchronous useEffect exit is safe — React commits the
render (Ink captures the frame) before useEffect fires.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: update generated sync output timestamps
Generated files updated with current sync date from dev merge.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
---------
* fix: caldues heuristics (#398)
---------
* fix(quality): resolve all lint and format errors
- Fix Prettier formatting across engine src and start components
- Resolve 381 markdown lint errors (MD040, MD024, MD036, MD029, MD022, MD001)
- Add markdownlint config rules for intentional doc patterns
- Add .claude/worktrees to prettierignore to exclude external branches
- Enable markdownlint MD024/MD026 for duplicate headings and trailing colons
All quality checks now pass: Prettier (0 errors), Markdown lint (0 errors), Tests (111/111), Build (28.9kb)
* I'll update the last_updated field in all the files from '2026-03-12' to '2026-03-13'. This appears to be a routine timestamp update across all the AgentKit Forge generated files.
* docs: add AgentKit Forge sync feedback
Add detailed feedback on AgentKit Forge v3.1.0 integration, focusing on:
- Windows line-ending issues and multi-editor sync behavior
- Documentation scaffold-once limitations and override challenges
- Unresolved placeholder warnings lacking diagnostics
- Windows-specific pnpm execution problems
* docs: update CLAUDE.md with repository-specific editing guidelines
Clarified that modifications to `.agentkit` files are permitted in the agentkit-forge repository, while upstream directories remain protected. This ensures users understand the editing boundaries for project configuration and template files.
* docs(claude): allow .agentkit edits in this repo (NB for framework dev)
Made-with: Cursor
* chore(sync): regenerate outputs after agentkit:sync
Made-with: Cursor
* Fix/generated files and conflict markers (#427)
* fix(infra): resolve container app fqdn attribute and format code
* chore(sync): update AGENT_BACKLOG.md and other files for task management
- Enhanced AGENT_BACKLOG.md with detailed task scopes for CI pipeline configuration and test framework setup.
- Added new docker-compose.yml for local/staging validation of the framework.
- Updated CONTRIBUTING.md to include documentation hub link in the Discovery phase.
- Introduced README.md files in db, infra, and migrations directories to clarify their purpose for adopters.
- Added API conventions documentation to guide adopters on structuring their APIs.
- Created implementation plan for state management improvements and added relevant tests.
- Regenerated outputs across various files to reflect recent changes and ensure consistency.
* chore(ci): reduce CodeQL to weekly + manual only (#430)
* chore(ci): reduce CodeQL to weekly schedule + manual trigger
Removes push and pull_request triggers to reduce GitHub Actions costs.
Scans were running on every PR including Renovate dependency updates.
* Potential fix for pull request finding
---------
* docs(architecture): add tool-neutral agent hub findings, ADR-10, and adoption roadmap (#428)
* docs(architecture): add tool-neutral agent hub findings, ADR-10, and adoption roadmap
Comparative analysis of agentkit-forge sync engine vs Mystira.workspace
hand-authored .agents/ pattern. Documents 5-phase adoption roadmap to
converge both approaches: .agents/ as sync target, reflective guards,
.readme.yaml generation, cross-session traces, and schema formalisation.
Includes regenerated sync output (updated timestamps across all tools).
* docs(architecture): add competitive landscape and strategic research report
Comprehensive analysis of…
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
… scaffold policy enhancements
* Add start command: new user entry point with state detection (#387)
* fix(commands): add AskUserQuestion to VALID_TOOLS and /start command
The /start command session got stuck because AskUserQuestion was not
included in the allowed-tools whitelist. This fix addresses three issues:
1. VALID_TOOLS in spec-validator was missing AskUserQuestion, TodoWrite,
Agent, and NotebookEdit — preventing commands from declaring these
Claude Code built-in tools in their allowed-tools.
2. The /start command template now explicitly includes AskUserQuestion
in its allowed-tools frontmatter and instructs the agent to use it
for interactive guided choices (Phase 3).
3. Added /start command spec to commands.yaml with AskUserQuestion as
a declared tool dependency.
Also adds a test case validating all four newly-added tools are accepted
by the spec validator.
https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M
* fix(commands): remove unrendered Handlebars comment from start.md output
The generated .claude/commands/start.md contained a raw {{! ... }}
Handlebars comment that was not processed by the sync engine. Remove it
so the generated output is clean Markdown.
https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Add configurable prefix to kits commands (#388)
* feat(sync): add configurable command prefix for generated slash commands
Add `commandPrefix` setting to overlay settings that namespaces all
generated slash commands across platforms:
- Claude Code: subdirectory strategy (kits/check.md → /project:kits:check)
- Cursor/Windsurf/Copilot/Codex: filename prefix (kits-check.md → /kits-check)
- Team commands excluded from prefixing (already namespaced)
Changes:
- Add resolveCommandPath() helper with subdirectory/filename strategies
- Update syncClaudeCommands, syncClaudeSkills, syncCursorCommands,
syncWindsurfCommands, syncCopilotPrompts, syncCodexSkills
- Add commandPrefix to vars from overlay settings
- Add commandPrefixedName to buildCommandVars
- Add 16 unit + integration tests (all pass, 93 existing tests unaffected)
Default is null (no prefix) for full backwards compatibility.
https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p
* fix(sync): address review findings for command prefix
- Remove unused afterAll import from test file
- Add clarifying comment that non-spec command files are also prefixed
- Add 2 integration tests verifying commandPrefixedName template variable
renders correctly with and without prefix
https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p
---------
Co-authored-by: Claude <noreply@anthropic.com>
* fix(ci): CI remediation — package manager, review findings, test stability (#390)
* fix(ci): resolve 7 bugs from project review
- BUG-001: Replace flaky discover test with controlled temp fixture
- BUG-002: Run prettier --write to fix formatting drift
- BUG-003: Add form-template detection skip in issue label validation
- BUG-005: Change claude.yml to self-hosted runner
- BUG-006: Align branch protection required status checks with project.yaml
- BUG-007: Fix command injection in resolve-merge.sh (use grep -F)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: update changelog, add planning registry review findings
- Add changelog entries for Wave 1-3 fixes (Added/Changed/Fixed/Removed)
- Add Project Review Findings section to planning registry (PR-001 to PR-014)
- Update planning docs after sync merge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(review): add --generate-plans flag to project-review command
Add Phase 2.5 plan generation after project review findings. When
--generate-plans is passed (default: true), scaffold plan files from
critical/high findings into docs/planning/review-findings/.
Also includes sync cleanup of stale cursor/windsurf settings.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore(sync): regenerate all outputs after project review fixes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(cli): dynamic flag loading from commands.yaml + context-aware template hook
- Replace ~200 lines of hardcoded VALID_FLAGS/FLAG_TYPES with loadCommandFlags()
that reads flag definitions from commands.yaml at startup
- CLI_INTERNAL_FLAGS/CLI_INTERNAL_FLAG_TYPES cover commands not in commands.yaml
- Self-validation warns at startup if any flag is missing a type definition
- Update cli.test.mjs to validate CLI_INTERNAL_FLAGS consistency
- Fix scaffold-once orphan bug: carry forward manifest entries for files
skipped by scaffold-once so orphan cleanup does not delete them
- Make protect-templates hook context-aware: skip protection in the
agentkit-forge source repo (detected via package.json name) so
maintainer agents can edit templates; block only in downstream repos
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(sync): add managed-mode script templates for downstream repos
Add 14 script templates (.agentkit/templates/scripts/) with `managed`
scaffold mode so downstream repos receive script updates via three-way
merge while preserving local customizations.
Templates include: create-doc, update-changelog, validate-documentation,
validate-numbering, check-documentation-requirement, sync-issues,
sync-split-pr, setup-agentkit-branch-governance, and resolve-merge
(both .sh and .ps1 variants where applicable).
Parameterized templates use {{defaultBranch}} and branch protection
variables from project.yaml. Engine wired via syncScripts() under
doc-scaffolding feature gate.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(teams): add TeamForge meta-team for agent team creation (cogmesh #130)
Add the TEAMFORGE meta-team (T11) — a structured pipeline for creating,
validating, and deploying new agent team specifications. Adapted from
cogmesh #130 with a simplified 6-agent pipeline:
- input-clarifier: assess requests, extract constraints
- mission-definer: lock team definition (ID, scope, accepts)
- role-architect: design agent roles and dependencies
- prompt-engineer: write agent descriptions and rules
- flow-designer: design team command and integration points
- team-validator: quality gate for spec consistency
Includes /team-forge command with --task flag (create-team, validate-team,
audit-teams, update-team) and planning doc.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(teams): add Strategic Ops team for cross-project coordination
Add the STRATEGIC OPS team (T12) — handles framework governance,
portfolio analysis, adoption strategy, impact assessment, and release
coordination across all repos using AgentKit Forge.
5-agent pipeline:
- portfolio-analyst: inventory repos, detect drift, adoption metrics
- governance-advisor: versioning strategy, breaking change protocols
- adoption-strategist: onboarding, migration paths, rollout plans
- impact-assessor: blast radius analysis for template/spec changes
- release-coordinator: version bumps, sync waves, release comms
Includes /team-strategic-ops command with --task and --scope flags.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(agents): add agent/team relationship matrix analysis engine + scripts
Add comprehensive agent/team relationship analysis with 8 cross-reference
matrices and 10 supplementary analyses (orphans, cycles, bottlenecks,
reachability, critical path, notification amplifiers, etc.).
- Fix YAML structure: strategic-ops agents now under own top-level key
- Add explicit agents: lists to forge + strategic-ops teams in teams.yaml
- Add consolidation detection responsibilities to portfolio-analyst
- Create agent-analysis.mjs engine module (loadFullAgentGraph + renderers)
- Wire analyze-agents CLI command with --output/--matrix/--format flags
- Add managed-scaffold script templates (bash + PowerShell)
- Integrate into sync pipeline (auto-regenerates matrix on spec changes)
- Add 33 tests covering all matrices, analyses, and edge cases
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: update documentation files and add plan template
- Add trailing newlines to Cursor command documentation files for consistency
- Add new plan template files for project planning
- Improve markdown table formatting in Claude skills documentation
- Remove obsolete .clinerules/testing.md file
- Update various rule files with better formatting and advisory rule alignment
* feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14)
- Add spec-compliance-auditor to operations category (quality team) — closes
the feedback loop between agent specs and actual behavior
- Add Cost Ops team (T14) with 5 agents: model-economist,
token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter,
cost-ops-monitor
- Add ai-cost-ops rules domain with 6 conventions (model routing, token
budgets, caching, batch APIs, vendor abstraction, credit tracking)
- Add team-cost-ops command with --task, --period, --provider flags
- Update notification chains: data→cost-ops-monitor, infra→model-economist,
retrospective-analyst→spec-compliance-auditor
- Add intake routes: cost-ops, agent-performance
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(teams): add implement to cost-ops team accepts list
Resolves agent/team accepts mismatch — token-efficiency-engineer accepts
implement but the team definition only had investigate/review/plan/document.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(cost-ops): add multi-provider infra cost ticket to backlog
Add detailed planning ticket for multi-provider infrastructure cost
normalisation, routing, and cost-agent integration. Covers 9 providers
(Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS,
GCP) with 3-phase delivery plan and cross-team dependency tracking.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(templates): resolve PR review comments from CodeRabbit
- Fix protect-templates.sh: package name check uses correct
"agentkit-forge-runtime" instead of "agentkit-forge"
- Fix protect-templates.ps1: malformed path (missing separator before
.agentkit) and same package name correction
- Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS
require() syntax used in the inline Node script
- Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder
- Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left
by sync engine, keeping user formatting + implement in cost-ops
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents
Enable web research capabilities for cost-ops team:
- Add WebSearch and WebFetch to /team-cost-ops allowed-tools
- Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst,
and grant-hunter agent preferred-tools
- Add web intake expansion ticket (P2) for MCP crawler, Puppeteer
integration, automated pricing refresh, and cross-session persistence
- Regenerate sync outputs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(cost-ops): add Cost Ops team, agents, and multi-provider cost ticket (#364)
* feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14)
- Add spec-compliance-auditor to operations category (quality team) — closes
the feedback loop between agent specs and actual behavior
- Add Cost Ops team (T14) with 5 agents: model-economist,
token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter,
cost-ops-monitor
- Add ai-cost-ops rules domain with 6 conventions (model routing, token
budgets, caching, batch APIs, vendor abstraction, credit tracking)
- Add team-cost-ops command with --task, --period, --provider flags
- Update notification chains: data→cost-ops-monitor, infra→model-economist,
retrospective-analyst→spec-compliance-auditor
- Add intake routes: cost-ops, agent-performance
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(teams): add implement to cost-ops team accepts list
Resolves agent/team accepts mismatch — token-efficiency-engineer accepts
implement but the team definition only had investigate/review/plan/document.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(cost-ops): add multi-provider infra cost ticket to backlog
Add detailed planning ticket for multi-provider infrastructure cost
normalisation, routing, and cost-agent integration. Covers 9 providers
(Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS,
GCP) with 3-phase delivery plan and cross-team dependency tracking.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(templates): resolve PR review comments from CodeRabbit
- Fix protect-templates.sh: package name check uses correct
"agentkit-forge-runtime" instead of "agentkit-forge"
- Fix protect-templates.ps1: malformed path (missing separator before
.agentkit) and same package name correction
- Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS
require() syntax used in the inline Node script
- Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder
- Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left
by sync engine, keeping user formatting + implement in cost-ops
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents (#365)
Enable web research capabilities for cost-ops team:
- Add WebSearch and WebFetch to /team-cost-ops allowed-tools
- Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst,
and grant-hunter agent preferred-tools
- Add web intake expansion ticket (P2) for MCP crawler, Puppeteer
integration, automated pricing refresh, and cross-session persistence
- Regenerate sync outputs
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix(teams): address CodeRabbit review findings on strategic-ops PR
- Lazy-load js-yaml in cli.mjs after ensureDependencies() to prevent
crash when node_modules is missing
- Convert YAML frontmatter to PowerShell comment blocks in all 6 PS1
templates to fix invalid PowerShell syntax
- Fix protect-templates hook path: use 3 parent traversals to reach
.agentkit/package.json from hooks directory
- Remove schema-invalid 'phase' field from ai-cost-ops rule domain
- Narrow strategic-ops scope: replace **/* catch-all with specific files
- Add strategic-ops to cost-ops handoff-chain for consistency
- Add Write tool to spec-compliance-auditor, vendor-arbitrage-analyst,
and grant-hunter agents
- Fix glob matching in resolve-merge.sh (use regex instead of broken
sed strip)
- Add merge failure vs conflict detection in resolve-merge.ps1
- Add branch existence check in setup-agentkit-branch-governance scripts
- Add gh CLI preflight check in sync-split-pr.ps1
- Deduplicate branch protection loop when defaultBranch is 'main'
- Fix applies-to glob: docs/planning/cost/** → docs/planning/cost-governance/**
- Fix non-canonical doc paths in intake-agent-proposal.md
- Add changelog entries for new teams, agents, and analysis engine
- Resolve AGENT_TEAMS.md merge conflict (accept narrowed scope)
- Run prettier on all modified files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(templates): add gh auth preflight and changelog divider handling
- sync-split-pr.ps1: add gh auth status check before side effects
- update-changelog.ps1: stop before --- divider when appending entries
Addresses CodeRabbit review comments #7 and #13 on PR #356.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(sync): set executable permission on analyze-agents.sh
Linux CI sync produces +x permissions; align local to match.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(templates): address CodeRabbit review round 3-4 findings
- Fix YAML frontmatter in copilot agent template: use double quotes
for description field to handle apostrophes (CRITICAL)
- Fix protect-templates.sh/ps1 path traversal: correct parent
directory count for .agentkit/package.json source repo detection
- Add $PSNativeCommandUseErrorActionPreference to sync-split-pr.ps1
so native command failures (git, pnpm, gh) are treated as fatal
- Replace try/catch with $LASTEXITCODE check for gh auth status
- Deduplicate branch loop in setup-agentkit-branch-governance.sh
when defaultBranch equals 'main'
- Fix duplicate verification echo lines in governance scripts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* style(docs): fix prettier formatting on planning documents
Run prettier --write on web-intake-expansion.md and
intake-agent-proposal.md to fix CI formatting check.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(tests): isolate render target gating tests with fresh temp dirs
Tests in the "render target gating" describe block shared a single temp
directory via beforeAll/afterAll. The first test ran --only claude
(generating .claude/ files), and the second ran --only warp expecting no
Claude files — but leftovers from test 1 caused the assertion to fail.
Changing to beforeEach/afterEach gives each test a clean directory.
Closes #377
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(commands): add /start command as new user entry point
Adds a context-aware triage command that detects repository state
(fresh clone, post-discovery, mid-session, uncommitted work) and
guides users to the right command or team for their goal.
Includes team routing table, 4 contextual flows, and decision
guidance for when users don't know which team to use.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* refactor(commands): add Arguments and State Management sections to /start
Addresses TEAMFORGE validation findings:
- Add dedicated Arguments section documenting $ARGUMENTS handling
- Add State Management section (reads/writes inventory)
- Fix frontmatter: remove misleading generated_by field
- Add explicit "manually authored" comment header
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): add /start to spec and template for cross-repo generation
Moves /start from a hand-authored command to a proper spec-driven,
sync-generated command available to any repo that adopts AgentKit Forge.
- Add start command definition to commands.yaml (no feature gate — always on)
- Create start.md template in .agentkit/templates/claude/commands/
- Add /start to CLAUDE.md Quick Reference table template
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after adding /start command
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): make /start team routing dynamic instead of hardcoded
Replace the static team routing table with dynamic discovery:
1. Read AGENT_TEAMS.md (from /discover) at runtime
2. Fall back to .agentkit/spec/teams.yaml
3. Fall back to /team-* command frontmatter
This ensures /start always reflects the actual teams configured
in any repo, rather than a hardcoded list that could go stale.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after dynamic routing change
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add interactive TUI entry point with hybrid UI
Replace static markdown output with an ink-based terminal UI that
combines two modes: a guided conversation flow for first-run users
and a fuzzy-searchable command palette for returning users. A
persistent status bar shows repo state at a glance (branch, phase,
backlog count, working tree status).
- Context detection module mirrors /start Phase 1 signals
- ConversationFlow: branching dialogue tree (choose-your-own-adventure)
- CommandPalette: fuzzy search with context-ranked star recommendations
- StatusBar: tmux-style persistent strip with color-coded segments
- Supports --json flag for scripting/piping
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add test suite, error handling, and refactor for production readiness
- Add vitest test infrastructure with 102 tests across 7 files
- Coverage: 95.58% statements, 90.81% branches, 96.72% functions
- Extract conversation tree to separate config module for testability
- Add error boundary to App component for graceful error display
- Add --help flag with usage documentation
- Add TTY detection with JSON fallback for non-interactive environments
- Add SIGINT/SIGTERM signal handling for clean exit
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: add coverage to gitignore, include plan and workspace config
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — unused code, git cwd, magic numbers
- Call exit() after command selection so Ink process terminates
- Remove unused ctx prop from Header component
- Fix git commands to use -C flag with root path parameter
- Extract dumpContextJson() helper to deduplicate JSON output logic
- Add comment explaining hardcoded team filter exclusion
- Replace magic numbers with named constants (FUSE_THRESHOLD,
RECOMMENDED_SCORE, MAX_BRANCH_LENGTH)
- Remove unused ink-spinner dependency
- Add test verifying git -C flag passes root correctly
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — security, correctness, test quality
- CRITICAL: Replace execSync shell interpolation with execFileSync to
prevent command injection via root parameter in detect.js
- CRITICAL: Remove phantom --external:ink-spinner from build script and
switch npx to direct esbuild invocation
- HIGH: Fix exit race condition — use useEffect instead of setTimeout
- HIGH: Wire up onSelect callback in ConversationFlow so Guide mode
triggers the result screen in App
- HIGH: Destructure and accept ctx prop in ConversationFlow
- HIGH: Add back-navigation (Escape) in ConversationFlow
- HIGH: Guard against undefined team.focus in commands.js tags
- MEDIUM: Use functional setCursor form to avoid stale closures
- MEDIUM: Key commandIndices Map by string id instead of object identity
- MEDIUM: Improve parseTeams header detection (drop first row approach)
- MEDIUM: Filter completed/done/closed items from backlogCount
- MEDIUM: Extract shared makeCtx test utility across all test files
- MEDIUM: Add null guard to StatusBar truncate helper
- LOW: Validate orchestratorPhase is a number in range 1-5
- LOW: Fix pnpm-workspace.yaml list syntax
- Replace all setTimeout in tests with vi.waitFor deterministic waits
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(engine): add pre-sync commit guard and interactive apply mode
Adds two safety features to the sync pipeline:
1. Pre-sync commit guard: Detects uncommitted changes in protected
directories (.agentkit/engines, spec, overlays) before sync runs.
In TTY mode, prompts to abort, stash, or continue. In non-TTY
mode (CI), prints a warning and proceeds.
2. Interactive apply mode: After rendering, shows a change summary
and prompts: apply all / skip all / prompt each file. Per-file
prompt supports show-diff and apply-all-remaining. Default in
TTY; bypassed with --yes, --no-prompt, or --force.
New module: sync-guard.mjs with 4 exported functions and 7 tests.
New CLI flags: --yes, --no-prompt for non-interactive sync.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore(sync): regenerate outputs after branch merges
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore(sync): regenerate outputs after merge of new-user-entry-point
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(engine): add configurable package manager and fix review findings
- Add `stack.packageManager` field to project.yaml (pnpm | npm | yarn)
- Derive helper template vars (pmInstall, pmRun, pmExec, pmLockfile, etc.)
- Update CLAUDE.md template and hook/workflow templates to use {{packageManager}}
- Fix sync-guard to exclude .agentkit/spec from protected dirs and add try/catch
- Remove duplicate cost-ops team definition from teams.yaml
- Pin all dependency versions in package.json (remove ^ prefixes)
- Add vitest coverage thresholds (80% statements/branches/functions/lines)
- Fix src/start/ code quality: null guards, exit delay, error boundaries
- Harden consolidate-branches.sh: self-resolution guard, stash restore
- Regenerate all 533 output files via agentkit sync
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore(engine): add brand color palette variables to sync vars
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(ci): fix test race condition, workspace config, and lockfile
- Fix ConversationFlow test: wait for 'Got it' before asserting hint text
- Add packages field to pnpm-workspace.yaml for proper workspace resolution
- Regenerate lockfile after version pinning (removed ^ prefixes)
- Remove accidental .agentkit/templates/src/ artifacts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(start): add event loop yields to ConversationFlow tests
ink-select-input needs setImmediate yields after a new menu renders
before it can process ENTER keypresses. Without this, the second ENTER
in leaf-selection tests was swallowed, causing intermittent failures.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix(spec): correct githubSlug to phoenixvc/agentkit-forge (#391)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Add entry point for new framework users (#389)
* feat(commands): add /start command as new user entry point
Adds a context-aware triage command that detects repository state
(fresh clone, post-discovery, mid-session, uncommitted work) and
guides users to the right command or team for their goal.
Includes team routing table, 4 contextual flows, and decision
guidance for when users don't know which team to use.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* refactor(commands): add Arguments and State Management sections to /start
Addresses TEAMFORGE validation findings:
- Add dedicated Arguments section documenting $ARGUMENTS handling
- Add State Management section (reads/writes inventory)
- Fix frontmatter: remove misleading generated_by field
- Add explicit "manually authored" comment header
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): add /start to spec and template for cross-repo generation
Moves /start from a hand-authored command to a proper spec-driven,
sync-generated command available to any repo that adopts AgentKit Forge.
- Add start command definition to commands.yaml (no feature gate — always on)
- Create start.md template in .agentkit/templates/claude/commands/
- Add /start to CLAUDE.md Quick Reference table template
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after adding /start command
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): make /start team routing dynamic instead of hardcoded
Replace the static team routing table with dynamic discovery:
1. Read AGENT_TEAMS.md (from /discover) at runtime
2. Fall back to .agentkit/spec/teams.yaml
3. Fall back to /team-* command frontmatter
This ensures /start always reflects the actual teams configured
in any repo, rather than a hardcoded list that could go stale.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after dynamic routing change
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add interactive TUI entry point with hybrid UI
Replace static markdown output with an ink-based terminal UI that
combines two modes: a guided conversation flow for first-run users
and a fuzzy-searchable command palette for returning users. A
persistent status bar shows repo state at a glance (branch, phase,
backlog count, working tree status).
- Context detection module mirrors /start Phase 1 signals
- ConversationFlow: branching dialogue tree (choose-your-own-adventure)
- CommandPalette: fuzzy search with context-ranked star recommendations
- StatusBar: tmux-style persistent strip with color-coded segments
- Supports --json flag for scripting/piping
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add test suite, error handling, and refactor for production readiness
- Add vitest test infrastructure with 102 tests across 7 files
- Coverage: 95.58% statements, 90.81% branches, 96.72% functions
- Extract conversation tree to separate config module for testability
- Add error boundary to App component for graceful error display
- Add --help flag with usage documentation
- Add TTY detection with JSON fallback for non-interactive environments
- Add SIGINT/SIGTERM signal handling for clean exit
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: add coverage to gitignore, include plan and workspace config
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — unused code, git cwd, magic numbers
- Call exit() after command selection so Ink process terminates
- Remove unused ctx prop from Header component
- Fix git commands to use -C flag with root path parameter
- Extract dumpContextJson() helper to deduplicate JSON output logic
- Add comment explaining hardcoded team filter exclusion
- Replace magic numbers with named constants (FUSE_THRESHOLD,
RECOMMENDED_SCORE, MAX_BRANCH_LENGTH)
- Remove unused ink-spinner dependency
- Add test verifying git -C flag passes root correctly
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — security, correctness, test quality
- CRITICAL: Replace execSync shell interpolation with execFileSync to
prevent command injection via root parameter in detect.js
- CRITICAL: Remove phantom --external:ink-spinner from build script and
switch npx to direct esbuild invocation
- HIGH: Fix exit race condition — use useEffect instead of setTimeout
- HIGH: Wire up onSelect callback in ConversationFlow so Guide mode
triggers the result screen in App
- HIGH: Destructure and accept ctx prop in ConversationFlow
- HIGH: Add back-navigation (Escape) in ConversationFlow
- HIGH: Guard against undefined team.focus in commands.js tags
- MEDIUM: Use functional setCursor form to avoid stale closures
- MEDIUM: Key commandIndices Map by string id instead of object identity
- MEDIUM: Improve parseTeams header detection (drop first row approach)
- MEDIUM: Filter completed/done/closed items from backlogCount
- MEDIUM: Extract shared makeCtx test utility across all test files
- MEDIUM: Add null guard to StatusBar truncate helper
- LOW: Validate orchestratorPhase is a number in range 1-5
- LOW: Fix pnpm-workspace.yaml list syntax
- Replace all setTimeout in tests with vi.waitFor deterministic waits
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* test(start): add coverage for result screen exit path
Add App-level test that navigates through ConversationFlow to a leaf
node and verifies the result screen text is rendered before exit().
Confirms the synchronous useEffect exit is safe — React commits the
render (Ink captures the frame) before useEffect fires.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: update generated sync output timestamps
Generated files updated with current sync date from dev merge.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
---------
Co-authored-by: Claude <noreply@anthropic.com>
* fix: caldues heuristics (#398)
* feat: complete revisit of agents (#399) (#400)
* Add start command: new user entry point with state detection (#387)
* fix(commands): add AskUserQuestion to VALID_TOOLS and /start command
The /start command session got stuck because AskUserQuestion was not
included in the allowed-tools whitelist. This fix addresses three issues:
1. VALID_TOOLS in spec-validator was missing AskUserQuestion, TodoWrite,
Agent, and NotebookEdit — preventing commands from declaring these
Claude Code built-in tools in their allowed-tools.
2. The /start command template now explicitly includes AskUserQuestion
in its allowed-tools frontmatter and instructs the agent to use it
for interactive guided choices (Phase 3).
3. Added /start command spec to commands.yaml with AskUserQuestion as
a declared tool dependency.
Also adds a test case validating all four newly-added tools are accepted
by the spec validator.
https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M
* fix(commands): remove unrendered Handlebars comment from start.md output
The generated .claude/commands/start.md contained a raw {{! ... }}
Handlebars comment that was not processed by the sync engine. Remove it
so the generated output is clean Markdown.
https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M
---------
* Add configurable prefix to kits commands (#388)
* feat(sync): add configurable command prefix for generated slash commands
Add `commandPrefix` setting to overlay settings that namespaces all
generated slash commands across platforms:
- Claude Code: subdirectory strategy (kits/check.md → /project:kits:check)
- Cursor/Windsurf/Copilot/Codex: filename prefix (kits-check.md → /kits-check)
- Team commands excluded from prefixing (already namespaced)
Changes:
- Add resolveCommandPath() helper with subdirectory/filename strategies
- Update syncClaudeCommands, syncClaudeSkills, syncCursorCommands,
syncWindsurfCommands, syncCopilotPrompts, syncCodexSkills
- Add commandPrefix to vars from overlay settings
- Add commandPrefixedName to buildCommandVars
- Add 16 unit + integration tests (all pass, 93 existing tests unaffected)
Default is null (no prefix) for full backwards compatibility.
https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p
* fix(sync): address review findings for command prefix
- Remove unused afterAll import from test file
- Add clarifying comment that non-spec command files are also prefixed
- Add 2 integration tests verifying commandPrefixedName template variable
renders correctly with and without prefix
https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p
---------
* fix(ci): CI remediation — package manager, review findings, test stability (#390)
* fix(ci): resolve 7 bugs from project review
- BUG-001: Replace flaky discover test with controlled temp fixture
- BUG-002: Run prettier --write to fix formatting drift
- BUG-003: Add form-template detection skip in issue label validation
- BUG-005: Change claude.yml to self-hosted runner
- BUG-006: Align branch protection required status checks with project.yaml
- BUG-007: Fix command injection in resolve-merge.sh (use grep -F)
* docs: update changelog, add planning registry review findings
- Add changelog entries for Wave 1-3 fixes (Added/Changed/Fixed/Removed)
- Add Project Review Findings section to planning registry (PR-001 to PR-014)
- Update planning docs after sync merge
* feat(review): add --generate-plans flag to project-review command
Add Phase 2.5 plan generation after project review findings. When
--generate-plans is passed (default: true), scaffold plan files from
critical/high findings into docs/planning/review-findings/.
Also includes sync cleanup of stale cursor/windsurf settings.
* chore(sync): regenerate all outputs after project review fixes
* feat(cli): dynamic flag loading from commands.yaml + context-aware template hook
- Replace ~200 lines of hardcoded VALID_FLAGS/FLAG_TYPES with loadCommandFlags()
that reads flag definitions from commands.yaml at startup
- CLI_INTERNAL_FLAGS/CLI_INTERNAL_FLAG_TYPES cover commands not in commands.yaml
- Self-validation warns at startup if any flag is missing a type definition
- Update cli.test.mjs to validate CLI_INTERNAL_FLAGS consistency
- Fix scaffold-once orphan bug: carry forward manifest entries for files
skipped by scaffold-once so orphan cleanup does not delete them
- Make protect-templates hook context-aware: skip protection in the
agentkit-forge source repo (detected via package.json name) so
maintainer agents can edit templates; block only in downstream repos
* feat(sync): add managed-mode script templates for downstream repos
Add 14 script templates (.agentkit/templates/scripts/) with `managed`
scaffold mode so downstream repos receive script updates via three-way
merge while preserving local customizations.
Templates include: create-doc, update-changelog, validate-documentation,
validate-numbering, check-documentation-requirement, sync-issues,
sync-split-pr, setup-agentkit-branch-governance, and resolve-merge
(both .sh and .ps1 variants where applicable).
Parameterized templates use {{defaultBranch}} and branch protection
variables from project.yaml. Engine wired via syncScripts() under
doc-scaffolding feature gate.
* feat(teams): add TeamForge meta-team for agent team creation (cogmesh #130)
Add the TEAMFORGE meta-team (T11) — a structured pipeline for creating,
validating, and deploying new agent team specifications. Adapted from
cogmesh #130 with a simplified 6-agent pipeline:
- input-clarifier: assess requests, extract constraints
- mission-definer: lock team definition (ID, scope, accepts)
- role-architect: design agent roles and dependencies
- prompt-engineer: write agent descriptions and rules
- flow-designer: design team command and integration points
- team-validator: quality gate for spec consistency
Includes /team-forge command with --task flag (create-team, validate-team,
audit-teams, update-team) and planning doc.
* feat(teams): add Strategic Ops team for cross-project coordination
Add the STRATEGIC OPS team (T12) — handles framework governance,
portfolio analysis, adoption strategy, impact assessment, and release
coordination across all repos using AgentKit Forge.
5-agent pipeline:
- portfolio-analyst: inventory repos, detect drift, adoption metrics
- governance-advisor: versioning strategy, breaking change protocols
- adoption-strategist: onboarding, migration paths, rollout plans
- impact-assessor: blast radius analysis for template/spec changes
- release-coordinator: version bumps, sync waves, release comms
Includes /team-strategic-ops command with --task and --scope flags.
* feat(agents): add agent/team relationship matrix analysis engine + scripts
Add comprehensive agent/team relationship analysis with 8 cross-reference
matrices and 10 supplementary analyses (orphans, cycles, bottlenecks,
reachability, critical path, notification amplifiers, etc.).
- Fix YAML structure: strategic-ops agents now under own top-level key
- Add explicit agents: lists to forge + strategic-ops teams in teams.yaml
- Add consolidation detection responsibilities to portfolio-analyst
- Create agent-analysis.mjs engine module (loadFullAgentGraph + renderers)
- Wire analyze-agents CLI command with --output/--matrix/--format flags
- Add managed-scaffold script templates (bash + PowerShell)
- Integrate into sync pipeline (auto-regenerates matrix on spec changes)
- Add 33 tests covering all matrices, analyses, and edge cases
* chore: update documentation files and add plan template
- Add trailing newlines to Cursor command documentation files for consistency
- Add new plan template files for project planning
- Improve markdown table formatting in Claude skills documentation
- Remove obsolete .clinerules/testing.md file
- Update various rule files with better formatting and advisory rule alignment
* feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14)
- Add spec-compliance-auditor to operations category (quality team) — closes
the feedback loop between agent specs and actual behavior
- Add Cost Ops team (T14) with 5 agents: model-economist,
token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter,
cost-ops-monitor
- Add ai-cost-ops rules domain with 6 conventions (model routing, token
budgets, caching, batch APIs, vendor abstraction, credit tracking)
- Add team-cost-ops command with --task, --period, --provider flags
- Update notification chains: data→cost-ops-monitor, infra→model-economist,
retrospective-analyst→spec-compliance-auditor
- Add intake routes: cost-ops, agent-performance
* fix(teams): add implement to cost-ops team accepts list
Resolves agent/team accepts mismatch — token-efficiency-engineer accepts
implement but the team definition only had investigate/review/plan/document.
* feat(cost-ops): add multi-provider infra cost ticket to backlog
Add detailed planning ticket for multi-provider infrastructure cost
normalisation, routing, and cost-agent integration. Covers 9 providers
(Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS,
GCP) with 3-phase delivery plan and cross-team dependency tracking.
* fix(templates): resolve PR review comments from CodeRabbit
- Fix protect-templates.sh: package name check uses correct
"agentkit-forge-runtime" instead of "agentkit-forge"
- Fix protect-templates.ps1: malformed path (missing separator before
.agentkit) and same package name correction
- Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS
require() syntax used in the inline Node script
- Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder
- Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left
by sync engine, keeping user formatting + implement in cost-ops
* feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents
Enable web research capabilities for cost-ops team:
- Add WebSearch and WebFetch to /team-cost-ops allowed-tools
- Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst,
and grant-hunter agent preferred-tools
- Add web intake expansion ticket (P2) for MCP crawler, Puppeteer
integration, automated pricing refresh, and cross-session persistence
- Regenerate sync outputs
* feat(cost-ops): add Cost Ops team, agents, and multi-provider cost ticket (#364)
* feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14)
- Add spec-compliance-auditor to operations category (quality team) — closes
the feedback loop between agent specs and actual behavior
- Add Cost Ops team (T14) with 5 agents: model-economist,
token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter,
cost-ops-monitor
- Add ai-cost-ops rules domain with 6 conventions (model routing, token
budgets, caching, batch APIs, vendor abstraction, credit tracking)
- Add team-cost-ops command with --task, --period, --provider flags
- Update notification chains: data→cost-ops-monitor, infra→model-economist,
retrospective-analyst→spec-compliance-auditor
- Add intake routes: cost-ops, agent-performance
* fix(teams): add implement to cost-ops team accepts list
Resolves agent/team accepts mismatch — token-efficiency-engineer accepts
implement but the team definition only had investigate/review/plan/document.
* feat(cost-ops): add multi-provider infra cost ticket to backlog
Add detailed planning ticket for multi-provider infrastructure cost
normalisation, routing, and cost-agent integration. Covers 9 providers
(Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS,
GCP) with 3-phase delivery plan and cross-team dependency tracking.
* fix(templates): resolve PR review comments from CodeRabbit
- Fix protect-templates.sh: package name check uses correct
"agentkit-forge-runtime" instead of "agentkit-forge"
- Fix protect-templates.ps1: malformed path (missing separator before
.agentkit) and same package name correction
- Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS
require() syntax used in the inline Node script
- Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder
- Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left
by sync engine, keeping user formatting + implement in cost-ops
* feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents (#365)
Enable web research capabilities for cost-ops team:
- Add WebSearch and WebFetch to /team-cost-ops allowed-tools
- Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst,
and grant-hunter agent preferred-tools
- Add web intake expansion ticket (P2) for MCP crawler, Puppeteer
integration, automated pricing refresh, and cross-session persistence
- Regenerate sync outputs
---------
* fix(teams): address CodeRabbit review findings on strategic-ops PR
- Lazy-load js-yaml in cli.mjs after ensureDependencies() to prevent
crash when node_modules is missing
- Convert YAML frontmatter to PowerShell comment blocks in all 6 PS1
templates to fix invalid PowerShell syntax
- Fix protect-templates hook path: use 3 parent traversals to reach
.agentkit/package.json from hooks directory
- Remove schema-invalid 'phase' field from ai-cost-ops rule domain
- Narrow strategic-ops scope: replace **/* catch-all with specific files
- Add strategic-ops to cost-ops handoff-chain for consistency
- Add Write tool to spec-compliance-auditor, vendor-arbitrage-analyst,
and grant-hunter agents
- Fix glob matching in resolve-merge.sh (use regex instead of broken
sed strip)
- Add merge failure vs conflict detection in resolve-merge.ps1
- Add branch existence check in setup-agentkit-branch-governance scripts
- Add gh CLI preflight check in sync-split-pr.ps1
- Deduplicate branch protection loop when defaultBranch is 'main'
- Fix applies-to glob: docs/planning/cost/** → docs/planning/cost-governance/**
- Fix non-canonical doc paths in intake-agent-proposal.md
- Add changelog entries for new teams, agents, and analysis engine
- Resolve AGENT_TEAMS.md merge conflict (accept narrowed scope)
- Run prettier on all modified files
* fix(templates): add gh auth preflight and changelog divider handling
- sync-split-pr.ps1: add gh auth status check before side effects
- update-changelog.ps1: stop before --- divider when appending entries
Addresses CodeRabbit review comments #7 and #13 on PR #356.
* fix(sync): set executable permission on analyze-agents.sh
Linux CI sync produces +x permissions; align local to match.
* fix(templates): address CodeRabbit review round 3-4 findings
- Fix YAML frontmatter in copilot agent template: use double quotes
for description field to handle apostrophes (CRITICAL)
- Fix protect-templates.sh/ps1 path traversal: correct parent
directory count for .agentkit/package.json source repo detection
- Add $PSNativeCommandUseErrorActionPreference to sync-split-pr.ps1
so native command failures (git, pnpm, gh) are treated as fatal
- Replace try/catch with $LASTEXITCODE check for gh auth status
- Deduplicate branch loop in setup-agentkit-branch-governance.sh
when defaultBranch equals 'main'
- Fix duplicate verification echo lines in governance scripts
* style(docs): fix prettier formatting on planning documents
Run prettier --write on web-intake-expansion.md and
intake-agent-proposal.md to fix CI formatting check.
* fix(tests): isolate render target gating tests with fresh temp dirs
Tests in the "render target gating" describe block shared a single temp
directory via beforeAll/afterAll. The first test ran --only claude
(generating .claude/ files), and the second ran --only warp expecting no
Claude files — but leftovers from test 1 caused the assertion to fail.
Changing to beforeEach/afterEach gives each test a clean directory.
Closes #377
* feat(commands): add /start command as new user entry point
Adds a context-aware triage command that detects repository state
(fresh clone, post-discovery, mid-session, uncommitted work) and
guides users to the right command or team for their goal.
Includes team routing table, 4 contextual flows, and decision
guidance for when users don't know which team to use.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* refactor(commands): add Arguments and State Management sections to /start
Addresses TEAMFORGE validation findings:
- Add dedicated Arguments section documenting $ARGUMENTS handling
- Add State Management section (reads/writes inventory)
- Fix frontmatter: remove misleading generated_by field
- Add explicit "manually authored" comment header
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): add /start to spec and template for cross-repo generation
Moves /start from a hand-authored command to a proper spec-driven,
sync-generated command available to any repo that adopts AgentKit Forge.
- Add start command definition to commands.yaml (no feature gate — always on)
- Create start.md template in .agentkit/templates/claude/commands/
- Add /start to CLAUDE.md Quick Reference table template
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after adding /start command
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): make /start team routing dynamic instead of hardcoded
Replace the static team routing table with dynamic discovery:
1. Read AGENT_TEAMS.md (from /discover) at runtime
2. Fall back to .agentkit/spec/teams.yaml
3. Fall back to /team-* command frontmatter
This ensures /start always reflects the actual teams configured
in any repo, rather than a hardcoded list that could go stale.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after dynamic routing change
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add interactive TUI entry point with hybrid UI
Replace static markdown output with an ink-based terminal UI that
combines two modes: a guided conversation flow for first-run users
and a fuzzy-searchable command palette for returning users. A
persistent status bar shows repo state at a glance (branch, phase,
backlog count, working tree status).
- Context detection module mirrors /start Phase 1 signals
- ConversationFlow: branching dialogue tree (choose-your-own-adventure)
- CommandPalette: fuzzy search with context-ranked star recommendations
- StatusBar: tmux-style persistent strip with color-coded segments
- Supports --json flag for scripting/piping
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add test suite, error handling, and refactor for production readiness
- Add vitest test infrastructure with 102 tests across 7 files
- Coverage: 95.58% statements, 90.81% branches, 96.72% functions
- Extract conversation tree to separate config module for testability
- Add error boundary to App component for graceful error display
- Add --help flag with usage documentation
- Add TTY detection with JSON fallback for non-interactive environments
- Add SIGINT/SIGTERM signal handling for clean exit
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: add coverage to gitignore, include plan and workspace config
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — unused code, git cwd, magic numbers
- Call exit() after command selection so Ink process terminates
- Remove unused ctx prop from Header component
- Fix git commands to use -C flag with root path parameter
- Extract dumpContextJson() helper to deduplicate JSON output logic
- Add comment explaining hardcoded team filter exclusion
- Replace magic numbers with named constants (FUSE_THRESHOLD,
RECOMMENDED_SCORE, MAX_BRANCH_LENGTH)
- Remove unused ink-spinner dependency
- Add test verifying git -C flag passes root correctly
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — security, correctness, test quality
- CRITICAL: Replace execSync shell interpolation with execFileSync to
prevent command injection via root parameter in detect.js
- CRITICAL: Remove phantom --external:ink-spinner from build script and
switch npx to direct esbuild invocation
- HIGH: Fix exit race condition — use useEffect instead of setTimeout
- HIGH: Wire up onSelect callback in ConversationFlow so Guide mode
triggers the result screen in App
- HIGH: Destructure and accept ctx prop in ConversationFlow
- HIGH: Add back-navigation (Escape) in ConversationFlow
- HIGH: Guard against undefined team.focus in commands.js tags
- MEDIUM: Use functional setCursor form to avoid stale closures
- MEDIUM: Key commandIndices Map by string id instead of object identity
- MEDIUM: Improve parseTeams header detection (drop first row approach)
- MEDIUM: Filter completed/done/closed items from backlogCount
- MEDIUM: Extract shared makeCtx test utility across all test files
- MEDIUM: Add null guard to StatusBar truncate helper
- LOW: Validate orchestratorPhase is a number in range 1-5
- LOW: Fix pnpm-workspace.yaml list syntax
- Replace all setTimeout in tests with vi.waitFor deterministic waits
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(engine): add pre-sync commit guard and interactive apply mode
Adds two safety features to the sync pipeline:
1. Pre-sync commit guard: Detects uncommitted changes in protected
directories (.agentkit/engines, spec, overlays) before sync runs.
In TTY mode, prompts to abort, stash, or continue. In non-TTY
mode (CI), prints a warning and proceeds.
2. Interactive apply mode: After rendering, shows a change summary
and prompts: apply all / skip all / prompt each file. Per-file
prompt supports show-diff and apply-all-remaining. Default in
TTY; bypassed with --yes, --no-prompt, or --force.
New module: sync-guard.mjs with 4 exported functions and 7 tests.
New CLI flags: --yes, --no-prompt for non-interactive sync.
* chore(sync): regenerate outputs after branch merges
* chore(sync): regenerate outputs after merge of new-user-entry-point
* feat(engine): add configurable package manager and fix review findings
- Add `stack.packageManager` field to project.yaml (pnpm | npm | yarn)
- Derive helper template vars (pmInstall, pmRun, pmExec, pmLockfile, etc.)
- Update CLAUDE.md template and hook/workflow templates to use {{packageManager}}
- Fix sync-guard to exclude .agentkit/spec from protected dirs and add try/catch
- Remove duplicate cost-ops team definition from teams.yaml
- Pin all dependency versions in package.json (remove ^ prefixes)
- Add vitest coverage thresholds (80% statements/branches/functions/lines)
- Fix src/start/ code quality: null guards, exit delay, error boundaries
- Harden consolidate-branches.sh: self-resolution guard, stash restore
- Regenerate all 533 output files via agentkit sync
* chore(engine): add brand color palette variables to sync vars
* fix(ci): fix test race condition, workspace config, and lockfile
- Fix ConversationFlow test: wait for 'Got it' before asserting hint text
- Add packages field to pnpm-workspace.yaml for proper workspace resolution
- Regenerate lockfile after version pinning (removed ^ prefixes)
- Remove accidental .agentkit/templates/src/ artifacts
* fix(start): add event loop yields to ConversationFlow tests
ink-select-input needs setImmediate yields after a new menu renders
before it can process ENTER keypresses. Without this, the second ENTER
in leaf-selection tests was swallowed, causing intermittent failures.
---------
* fix(spec): correct githubSlug to phoenixvc/agentkit-forge (#391)
* Add entry point for new framework users (#389)
* feat(commands): add /start command as new user entry point
Adds a context-aware triage command that detects repository state
(fresh clone, post-discovery, mid-session, uncommitted work) and
guides users to the right command or team for their goal.
Includes team routing table, 4 contextual flows, and decision
guidance for when users don't know which team to use.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* refactor(commands): add Arguments and State Management sections to /start
Addresses TEAMFORGE validation findings:
- Add dedicated Arguments section documenting $ARGUMENTS handling
- Add State Management section (reads/writes inventory)
- Fix frontmatter: remove misleading generated_by field
- Add explicit "manually authored" comment header
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): add /start to spec and template for cross-repo generation
Moves /start from a hand-authored command to a proper spec-driven,
sync-generated command available to any repo that adopts AgentKit Forge.
- Add start command definition to commands.yaml (no feature gate — always on)
- Create start.md template in .agentkit/templates/claude/commands/
- Add /start to CLAUDE.md Quick Reference table template
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after adding /start command
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(commands): make /start team routing dynamic instead of hardcoded
Replace the static team routing table with dynamic discovery:
1. Read AGENT_TEAMS.md (from /discover) at runtime
2. Fall back to .agentkit/spec/teams.yaml
3. Fall back to /team-* command frontmatter
This ensures /start always reflects the actual teams configured
in any repo, rather than a hardcoded list that could go stale.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore(sync): regenerate outputs after dynamic routing change
Generated by: pnpm -C .agentkit agentkit:sync
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add interactive TUI entry point with hybrid UI
Replace static markdown output with an ink-based terminal UI that
combines two modes: a guided conversation flow for first-run users
and a fuzzy-searchable command palette for returning users. A
persistent status bar shows repo state at a glance (branch, phase,
backlog count, working tree status).
- Context detection module mirrors /start Phase 1 signals
- ConversationFlow: branching dialogue tree (choose-your-own-adventure)
- CommandPalette: fuzzy search with context-ranked star recommendations
- StatusBar: tmux-style persistent strip with color-coded segments
- Supports --json flag for scripting/piping
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* feat(start): add test suite, error handling, and refactor for production readiness
- Add vitest test infrastructure with 102 tests across 7 files
- Coverage: 95.58% statements, 90.81% branches, 96.72% functions
- Extract conversation tree to separate config module for testability
- Add error boundary to App component for graceful error display
- Add --help flag with usage documentation
- Add TTY detection with JSON fallback for non-interactive environments
- Add SIGINT/SIGTERM signal handling for clean exit
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: add coverage to gitignore, include plan and workspace config
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — unused code, git cwd, magic numbers
- Call exit() after command selection so Ink process terminates
- Remove unused ctx prop from Header component
- Fix git commands to use -C flag with root path parameter
- Extract dumpContextJson() helper to deduplicate JSON output logic
- Add comment explaining hardcoded team filter exclusion
- Replace magic numbers with named constants (FUSE_THRESHOLD,
RECOMMENDED_SCORE, MAX_BRANCH_LENGTH)
- Remove unused ink-spinner dependency
- Add test verifying git -C flag passes root correctly
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* fix(start): address review findings — security, correctness, test quality
- CRITICAL: Replace execSync shell interpolation with execFileSync to
prevent command injection via root parameter in detect.js
- CRITICAL: Remove phantom --external:ink-spinner from build script and
switch npx to direct esbuild invocation
- HIGH: Fix exit race condition — use useEffect instead of setTimeout
- HIGH: Wire up onSelect callback in ConversationFlow so Guide mode
triggers the result screen in App
- HIGH: Destructure and accept ctx prop in ConversationFlow
- HIGH: Add back-navigation (Escape) in ConversationFlow
- HIGH: Guard against undefined team.focus in commands.js tags
- MEDIUM: Use functional setCursor form to avoid stale closures
- MEDIUM: Key commandIndices Map by string id instead of object identity
- MEDIUM: Improve parseTeams header detection (drop first row approach)
- MEDIUM: Filter completed/done/closed items from backlogCount
- MEDIUM: Extract shared makeCtx test utility across all test files
- MEDIUM: Add null guard to StatusBar truncate helper
- LOW: Validate orchestratorPhase is a number in range 1-5
- LOW: Fix pnpm-workspace.yaml list syntax
- Replace all setTimeout in tests with vi.waitFor deterministic waits
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* test(start): add coverage for result screen exit path
Add App-level test that navigates through ConversationFlow to a leaf
node and verifies the result screen text is rendered before exit().
Confirms the synchronous useEffect exit is safe — React commits the
render (Ink captures the frame) before useEffect fires.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
* chore: update generated sync output timestamps
Generated files updated with current sync date from dev merge.
https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW
---------
* fix: caldues heuristics (#398)
---------
Co-authored-by: Claude <noreply@anthropic.com>
* fix(quality): resolve all lint and format errors
- Fix Prettier formatting across engine src and start components
- Resolve 381 markdown lint errors (MD040, MD024, MD036, MD029, MD022, MD001)
- Add markdownlint config rules for intentional doc patterns
- Add .claude/worktrees to prettierignore to exclude external branches
- Enable markdownlint MD024/MD026 for duplicate headings and trailing colons
All quality checks now pass: Prettier (0 errors), Markdown lint (0 errors), Tests (111/111), Build (28.9kb)
* I'll update the last_updated field in all the files from '2026-03-12' to '2026-03-13'. This appears to be a routine timestamp update across all the AgentKit Forge generated files.
* docs: add AgentKit Forge sync feedback
Add detailed feedback on AgentKit Forge v3.1.0 integration, focusing on:
- Windows line-ending issues and multi-editor sync behavior
- Documentation scaffold-once limitations and override challenges
- Unresolved placeholder warnings lacking diagnostics
- Windows-specific pnpm execution problems
* docs: update CLAUDE.md with repository-specific editing guidelines
Clarified that modifications to `.agentkit` files are permitted in the agentkit-forge repository, while upstream directories remain protected. This ensures users understand the editing boundaries for project configuration and template files.
* docs(claude): allow .agentkit edits in this repo (NB for framework dev)
Made-with: Cursor
* chore(sync): regenerate outputs after agentkit:sync
Made-with: Cursor
* Fix/generated files and conflict markers (#427)
* fix(infra): resolve container app fqdn attribute and format code
* chore(sync): update AGENT_BACKLOG.md and other files for task management
- Enhanced AGENT_BACKLOG.md with detailed task scopes for CI pipeline configuration and test framework setup.
- Added new docker-compose.yml for local/staging validation of the framework.
- Updated CONTRIBUTING.md to include documentation hub link in the Discovery phase.
- Introduced README.md files in db, infra, and migrations directories to clarify their purpose for adopters.
- Added API conventions documentation to guide adopters on structuring their APIs.
- Created implementation plan for state management improvements and added relevant tests.
- Regenerated outputs across various files to reflect recent changes and ensure consistency.
* chore(ci): reduce CodeQL to weekly + manual only (#430)
* chore(ci): reduce CodeQL to weekly schedule + manual trigger
Removes push and pull_request triggers to reduce GitHub Actions costs.
Scans were running on every PR including Renovate dependency updates.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* docs(architecture): add tool-neutral agent hub findings, ADR-10, and adoption roadmap (#428)
* docs(architecture): add tool-neutral agent hub findings, ADR-10, and adoption roadmap
Comparative analysis of agentkit-forge sync engine vs Mystira.workspace
hand-authored .agents/ pattern. Documents 5-phase adoption roadmap to
converge both approaches: .agents/ as sync target, reflective guards,
.readme.yaml generation, cross-session traces, and schema formalisation.
Includes regenerated sync output (updated timestamps across all tools).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs(architecture): add competi…
… scaffold policy enhancements (#474) * Add start command: new user entry point with state detection (#387) * fix(commands): add AskUserQuestion to VALID_TOOLS and /start command The /start command session got stuck because AskUserQuestion was not included in the allowed-tools whitelist. This fix addresses three issues: 1. VALID_TOOLS in spec-validator was missing AskUserQuestion, TodoWrite, Agent, and NotebookEdit — preventing commands from declaring these Claude Code built-in tools in their allowed-tools. 2. The /start command template now explicitly includes AskUserQuestion in its allowed-tools frontmatter and instructs the agent to use it for interactive guided choices (Phase 3). 3. Added /start command spec to commands.yaml with AskUserQuestion as a declared tool dependency. Also adds a test case validating all four newly-added tools are accepted by the spec validator. https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M * fix(commands): remove unrendered Handlebars comment from start.md output The generated .claude/commands/start.md contained a raw {{! ... }} Handlebars comment that was not processed by the sync engine. Remove it so the generated output is clean Markdown. https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M --------- * Add configurable prefix to kits commands (#388) * feat(sync): add configurable command prefix for generated slash commands Add `commandPrefix` setting to overlay settings that namespaces all generated slash commands across platforms: - Claude Code: subdirectory strategy (kits/check.md → /project:kits:check) - Cursor/Windsurf/Copilot/Codex: filename prefix (kits-check.md → /kits-check) - Team commands excluded from prefixing (already namespaced) Changes: - Add resolveCommandPath() helper with subdirectory/filename strategies - Update syncClaudeCommands, syncClaudeSkills, syncCursorCommands, syncWindsurfCommands, syncCopilotPrompts, syncCodexSkills - Add commandPrefix to vars from overlay settings - Add commandPrefixedName to buildCommandVars - Add 16 unit + integration tests (all pass, 93 existing tests unaffected) Default is null (no prefix) for full backwards compatibility. https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p * fix(sync): address review findings for command prefix - Remove unused afterAll import from test file - Add clarifying comment that non-spec command files are also prefixed - Add 2 integration tests verifying commandPrefixedName template variable renders correctly with and without prefix https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p --------- * fix(ci): CI remediation — package manager, review findings, test stability (#390) * fix(ci): resolve 7 bugs from project review - BUG-001: Replace flaky discover test with controlled temp fixture - BUG-002: Run prettier --write to fix formatting drift - BUG-003: Add form-template detection skip in issue label validation - BUG-005: Change claude.yml to self-hosted runner - BUG-006: Align branch protection required status checks with project.yaml - BUG-007: Fix command injection in resolve-merge.sh (use grep -F) * docs: update changelog, add planning registry review findings - Add changelog entries for Wave 1-3 fixes (Added/Changed/Fixed/Removed) - Add Project Review Findings section to planning registry (PR-001 to PR-014) - Update planning docs after sync merge * feat(review): add --generate-plans flag to project-review command Add Phase 2.5 plan generation after project review findings. When --generate-plans is passed (default: true), scaffold plan files from critical/high findings into docs/planning/review-findings/. Also includes sync cleanup of stale cursor/windsurf settings. * chore(sync): regenerate all outputs after project review fixes * feat(cli): dynamic flag loading from commands.yaml + context-aware template hook - Replace ~200 lines of hardcoded VALID_FLAGS/FLAG_TYPES with loadCommandFlags() that reads flag definitions from commands.yaml at startup - CLI_INTERNAL_FLAGS/CLI_INTERNAL_FLAG_TYPES cover commands not in commands.yaml - Self-validation warns at startup if any flag is missing a type definition - Update cli.test.mjs to validate CLI_INTERNAL_FLAGS consistency - Fix scaffold-once orphan bug: carry forward manifest entries for files skipped by scaffold-once so orphan cleanup does not delete them - Make protect-templates hook context-aware: skip protection in the agentkit-forge source repo (detected via package.json name) so maintainer agents can edit templates; block only in downstream repos * feat(sync): add managed-mode script templates for downstream repos Add 14 script templates (.agentkit/templates/scripts/) with `managed` scaffold mode so downstream repos receive script updates via three-way merge while preserving local customizations. Templates include: create-doc, update-changelog, validate-documentation, validate-numbering, check-documentation-requirement, sync-issues, sync-split-pr, setup-agentkit-branch-governance, and resolve-merge (both .sh and .ps1 variants where applicable). Parameterized templates use {{defaultBranch}} and branch protection variables from project.yaml. Engine wired via syncScripts() under doc-scaffolding feature gate. * feat(teams): add TeamForge meta-team for agent team creation (cogmesh #130) Add the TEAMFORGE meta-team (T11) — a structured pipeline for creating, validating, and deploying new agent team specifications. Adapted from cogmesh #130 with a simplified 6-agent pipeline: - input-clarifier: assess requests, extract constraints - mission-definer: lock team definition (ID, scope, accepts) - role-architect: design agent roles and dependencies - prompt-engineer: write agent descriptions and rules - flow-designer: design team command and integration points - team-validator: quality gate for spec consistency Includes /team-forge command with --task flag (create-team, validate-team, audit-teams, update-team) and planning doc. * feat(teams): add Strategic Ops team for cross-project coordination Add the STRATEGIC OPS team (T12) — handles framework governance, portfolio analysis, adoption strategy, impact assessment, and release coordination across all repos using AgentKit Forge. 5-agent pipeline: - portfolio-analyst: inventory repos, detect drift, adoption metrics - governance-advisor: versioning strategy, breaking change protocols - adoption-strategist: onboarding, migration paths, rollout plans - impact-assessor: blast radius analysis for template/spec changes - release-coordinator: version bumps, sync waves, release comms Includes /team-strategic-ops command with --task and --scope flags. * feat(agents): add agent/team relationship matrix analysis engine + scripts Add comprehensive agent/team relationship analysis with 8 cross-reference matrices and 10 supplementary analyses (orphans, cycles, bottlenecks, reachability, critical path, notification amplifiers, etc.). - Fix YAML structure: strategic-ops agents now under own top-level key - Add explicit agents: lists to forge + strategic-ops teams in teams.yaml - Add consolidation detection responsibilities to portfolio-analyst - Create agent-analysis.mjs engine module (loadFullAgentGraph + renderers) - Wire analyze-agents CLI command with --output/--matrix/--format flags - Add managed-scaffold script templates (bash + PowerShell) - Integrate into sync pipeline (auto-regenerates matrix on spec changes) - Add 33 tests covering all matrices, analyses, and edge cases * chore: update documentation files and add plan template - Add trailing newlines to Cursor command documentation files for consistency - Add new plan template files for project planning - Improve markdown table formatting in Claude skills documentation - Remove obsolete .clinerules/testing.md file - Update various rule files with better formatting and advisory rule alignment * feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14) - Add spec-compliance-auditor to operations category (quality team) — closes the feedback loop between agent specs and actual behavior - Add Cost Ops team (T14) with 5 agents: model-economist, token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter, cost-ops-monitor - Add ai-cost-ops rules domain with 6 conventions (model routing, token budgets, caching, batch APIs, vendor abstraction, credit tracking) - Add team-cost-ops command with --task, --period, --provider flags - Update notification chains: data→cost-ops-monitor, infra→model-economist, retrospective-analyst→spec-compliance-auditor - Add intake routes: cost-ops, agent-performance * fix(teams): add implement to cost-ops team accepts list Resolves agent/team accepts mismatch — token-efficiency-engineer accepts implement but the team definition only had investigate/review/plan/document. * feat(cost-ops): add multi-provider infra cost ticket to backlog Add detailed planning ticket for multi-provider infrastructure cost normalisation, routing, and cost-agent integration. Covers 9 providers (Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS, GCP) with 3-phase delivery plan and cross-team dependency tracking. * fix(templates): resolve PR review comments from CodeRabbit - Fix protect-templates.sh: package name check uses correct "agentkit-forge-runtime" instead of "agentkit-forge" - Fix protect-templates.ps1: malformed path (missing separator before .agentkit) and same package name correction - Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS require() syntax used in the inline Node script - Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder - Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left by sync engine, keeping user formatting + implement in cost-ops * feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents Enable web research capabilities for cost-ops team: - Add WebSearch and WebFetch to /team-cost-ops allowed-tools - Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst, and grant-hunter agent preferred-tools - Add web intake expansion ticket (P2) for MCP crawler, Puppeteer integration, automated pricing refresh, and cross-session persistence - Regenerate sync outputs * feat(cost-ops): add Cost Ops team, agents, and multi-provider cost ticket (#364) * feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14) - Add spec-compliance-auditor to operations category (quality team) — closes the feedback loop between agent specs and actual behavior - Add Cost Ops team (T14) with 5 agents: model-economist, token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter, cost-ops-monitor - Add ai-cost-ops rules domain with 6 conventions (model routing, token budgets, caching, batch APIs, vendor abstraction, credit tracking) - Add team-cost-ops command with --task, --period, --provider flags - Update notification chains: data→cost-ops-monitor, infra→model-economist, retrospective-analyst→spec-compliance-auditor - Add intake routes: cost-ops, agent-performance * fix(teams): add implement to cost-ops team accepts list Resolves agent/team accepts mismatch — token-efficiency-engineer accepts implement but the team definition only had investigate/review/plan/document. * feat(cost-ops): add multi-provider infra cost ticket to backlog Add detailed planning ticket for multi-provider infrastructure cost normalisation, routing, and cost-agent integration. Covers 9 providers (Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS, GCP) with 3-phase delivery plan and cross-team dependency tracking. * fix(templates): resolve PR review comments from CodeRabbit - Fix protect-templates.sh: package name check uses correct "agentkit-forge-runtime" instead of "agentkit-forge" - Fix protect-templates.ps1: malformed path (missing separator before .agentkit) and same package name correction - Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS require() syntax used in the inline Node script - Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder - Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left by sync engine, keeping user formatting + implement in cost-ops * feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents (#365) Enable web research capabilities for cost-ops team: - Add WebSearch and WebFetch to /team-cost-ops allowed-tools - Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst, and grant-hunter agent preferred-tools - Add web intake expansion ticket (P2) for MCP crawler, Puppeteer integration, automated pricing refresh, and cross-session persistence - Regenerate sync outputs --------- * fix(teams): address CodeRabbit review findings on strategic-ops PR - Lazy-load js-yaml in cli.mjs after ensureDependencies() to prevent crash when node_modules is missing - Convert YAML frontmatter to PowerShell comment blocks in all 6 PS1 templates to fix invalid PowerShell syntax - Fix protect-templates hook path: use 3 parent traversals to reach .agentkit/package.json from hooks directory - Remove schema-invalid 'phase' field from ai-cost-ops rule domain - Narrow strategic-ops scope: replace **/* catch-all with specific files - Add strategic-ops to cost-ops handoff-chain for consistency - Add Write tool to spec-compliance-auditor, vendor-arbitrage-analyst, and grant-hunter agents - Fix glob matching in resolve-merge.sh (use regex instead of broken sed strip) - Add merge failure vs conflict detection in resolve-merge.ps1 - Add branch existence check in setup-agentkit-branch-governance scripts - Add gh CLI preflight check in sync-split-pr.ps1 - Deduplicate branch protection loop when defaultBranch is 'main' - Fix applies-to glob: docs/planning/cost/** → docs/planning/cost-governance/** - Fix non-canonical doc paths in intake-agent-proposal.md - Add changelog entries for new teams, agents, and analysis engine - Resolve AGENT_TEAMS.md merge conflict (accept narrowed scope) - Run prettier on all modified files * fix(templates): add gh auth preflight and changelog divider handling - sync-split-pr.ps1: add gh auth status check before side effects - update-changelog.ps1: stop before --- divider when appending entries Addresses CodeRabbit review comments #7 and #13 on PR #356. * fix(sync): set executable permission on analyze-agents.sh Linux CI sync produces +x permissions; align local to match. * fix(templates): address CodeRabbit review round 3-4 findings - Fix YAML frontmatter in copilot agent template: use double quotes for description field to handle apostrophes (CRITICAL) - Fix protect-templates.sh/ps1 path traversal: correct parent directory count for .agentkit/package.json source repo detection - Add $PSNativeCommandUseErrorActionPreference to sync-split-pr.ps1 so native command failures (git, pnpm, gh) are treated as fatal - Replace try/catch with $LASTEXITCODE check for gh auth status - Deduplicate branch loop in setup-agentkit-branch-governance.sh when defaultBranch equals 'main' - Fix duplicate verification echo lines in governance scripts * style(docs): fix prettier formatting on planning documents Run prettier --write on web-intake-expansion.md and intake-agent-proposal.md to fix CI formatting check. * fix(tests): isolate render target gating tests with fresh temp dirs Tests in the "render target gating" describe block shared a single temp directory via beforeAll/afterAll. The first test ran --only claude (generating .claude/ files), and the second ran --only warp expecting no Claude files — but leftovers from test 1 caused the assertion to fail. Changing to beforeEach/afterEach gives each test a clean directory. Closes #377 * feat(commands): add /start command as new user entry point Adds a context-aware triage command that detects repository state (fresh clone, post-discovery, mid-session, uncommitted work) and guides users to the right command or team for their goal. Includes team routing table, 4 contextual flows, and decision guidance for when users don't know which team to use. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * refactor(commands): add Arguments and State Management sections to /start Addresses TEAMFORGE validation findings: - Add dedicated Arguments section documenting $ARGUMENTS handling - Add State Management section (reads/writes inventory) - Fix frontmatter: remove misleading generated_by field - Add explicit "manually authored" comment header https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): add /start to spec and template for cross-repo generation Moves /start from a hand-authored command to a proper spec-driven, sync-generated command available to any repo that adopts AgentKit Forge. - Add start command definition to commands.yaml (no feature gate — always on) - Create start.md template in .agentkit/templates/claude/commands/ - Add /start to CLAUDE.md Quick Reference table template https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after adding /start command Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): make /start team routing dynamic instead of hardcoded Replace the static team routing table with dynamic discovery: 1. Read AGENT_TEAMS.md (from /discover) at runtime 2. Fall back to .agentkit/spec/teams.yaml 3. Fall back to /team-* command frontmatter This ensures /start always reflects the actual teams configured in any repo, rather than a hardcoded list that could go stale. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after dynamic routing change Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add interactive TUI entry point with hybrid UI Replace static markdown output with an ink-based terminal UI that combines two modes: a guided conversation flow for first-run users and a fuzzy-searchable command palette for returning users. A persistent status bar shows repo state at a glance (branch, phase, backlog count, working tree status). - Context detection module mirrors /start Phase 1 signals - ConversationFlow: branching dialogue tree (choose-your-own-adventure) - CommandPalette: fuzzy search with context-ranked star recommendations - StatusBar: tmux-style persistent strip with color-coded segments - Supports --json flag for scripting/piping https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add test suite, error handling, and refactor for production readiness - Add vitest test infrastructure with 102 tests across 7 files - Coverage: 95.58% statements, 90.81% branches, 96.72% functions - Extract conversation tree to separate config module for testability - Add error boundary to App component for graceful error display - Add --help flag with usage documentation - Add TTY detection with JSON fallback for non-interactive environments - Add SIGINT/SIGTERM signal handling for clean exit https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore: add coverage to gitignore, include plan and workspace config https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — unused code, git cwd, magic numbers - Call exit() after command selection so Ink process terminates - Remove unused ctx prop from Header component - Fix git commands to use -C flag with root path parameter - Extract dumpContextJson() helper to deduplicate JSON output logic - Add comment explaining hardcoded team filter exclusion - Replace magic numbers with named constants (FUSE_THRESHOLD, RECOMMENDED_SCORE, MAX_BRANCH_LENGTH) - Remove unused ink-spinner dependency - Add test verifying git -C flag passes root correctly https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — security, correctness, test quality - CRITICAL: Replace execSync shell interpolation with execFileSync to prevent command injection via root parameter in detect.js - CRITICAL: Remove phantom --external:ink-spinner from build script and switch npx to direct esbuild invocation - HIGH: Fix exit race condition — use useEffect instead of setTimeout - HIGH: Wire up onSelect callback in ConversationFlow so Guide mode triggers the result screen in App - HIGH: Destructure and accept ctx prop in ConversationFlow - HIGH: Add back-navigation (Escape) in ConversationFlow - HIGH: Guard against undefined team.focus in commands.js tags - MEDIUM: Use functional setCursor form to avoid stale closures - MEDIUM: Key commandIndices Map by string id instead of object identity - MEDIUM: Improve parseTeams header detection (drop first row approach) - MEDIUM: Filter completed/done/closed items from backlogCount - MEDIUM: Extract shared makeCtx test utility across all test files - MEDIUM: Add null guard to StatusBar truncate helper - LOW: Validate orchestratorPhase is a number in range 1-5 - LOW: Fix pnpm-workspace.yaml list syntax - Replace all setTimeout in tests with vi.waitFor deterministic waits https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(engine): add pre-sync commit guard and interactive apply mode Adds two safety features to the sync pipeline: 1. Pre-sync commit guard: Detects uncommitted changes in protected directories (.agentkit/engines, spec, overlays) before sync runs. In TTY mode, prompts to abort, stash, or continue. In non-TTY mode (CI), prints a warning and proceeds. 2. Interactive apply mode: After rendering, shows a change summary and prompts: apply all / skip all / prompt each file. Per-file prompt supports show-diff and apply-all-remaining. Default in TTY; bypassed with --yes, --no-prompt, or --force. New module: sync-guard.mjs with 4 exported functions and 7 tests. New CLI flags: --yes, --no-prompt for non-interactive sync. * chore(sync): regenerate outputs after branch merges * chore(sync): regenerate outputs after merge of new-user-entry-point * feat(engine): add configurable package manager and fix review findings - Add `stack.packageManager` field to project.yaml (pnpm | npm | yarn) - Derive helper template vars (pmInstall, pmRun, pmExec, pmLockfile, etc.) - Update CLAUDE.md template and hook/workflow templates to use {{packageManager}} - Fix sync-guard to exclude .agentkit/spec from protected dirs and add try/catch - Remove duplicate cost-ops team definition from teams.yaml - Pin all dependency versions in package.json (remove ^ prefixes) - Add vitest coverage thresholds (80% statements/branches/functions/lines) - Fix src/start/ code quality: null guards, exit delay, error boundaries - Harden consolidate-branches.sh: self-resolution guard, stash restore - Regenerate all 533 output files via agentkit sync * chore(engine): add brand color palette variables to sync vars * fix(ci): fix test race condition, workspace config, and lockfile - Fix ConversationFlow test: wait for 'Got it' before asserting hint text - Add packages field to pnpm-workspace.yaml for proper workspace resolution - Regenerate lockfile after version pinning (removed ^ prefixes) - Remove accidental .agentkit/templates/src/ artifacts * fix(start): add event loop yields to ConversationFlow tests ink-select-input needs setImmediate yields after a new menu renders before it can process ENTER keypresses. Without this, the second ENTER in leaf-selection tests was swallowed, causing intermittent failures. --------- * fix(spec): correct githubSlug to phoenixvc/agentkit-forge (#391) * Add entry point for new framework users (#389) * feat(commands): add /start command as new user entry point Adds a context-aware triage command that detects repository state (fresh clone, post-discovery, mid-session, uncommitted work) and guides users to the right command or team for their goal. Includes team routing table, 4 contextual flows, and decision guidance for when users don't know which team to use. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * refactor(commands): add Arguments and State Management sections to /start Addresses TEAMFORGE validation findings: - Add dedicated Arguments section documenting $ARGUMENTS handling - Add State Management section (reads/writes inventory) - Fix frontmatter: remove misleading generated_by field - Add explicit "manually authored" comment header https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): add /start to spec and template for cross-repo generation Moves /start from a hand-authored command to a proper spec-driven, sync-generated command available to any repo that adopts AgentKit Forge. - Add start command definition to commands.yaml (no feature gate — always on) - Create start.md template in .agentkit/templates/claude/commands/ - Add /start to CLAUDE.md Quick Reference table template https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after adding /start command Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): make /start team routing dynamic instead of hardcoded Replace the static team routing table with dynamic discovery: 1. Read AGENT_TEAMS.md (from /discover) at runtime 2. Fall back to .agentkit/spec/teams.yaml 3. Fall back to /team-* command frontmatter This ensures /start always reflects the actual teams configured in any repo, rather than a hardcoded list that could go stale. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after dynamic routing change Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add interactive TUI entry point with hybrid UI Replace static markdown output with an ink-based terminal UI that combines two modes: a guided conversation flow for first-run users and a fuzzy-searchable command palette for returning users. A persistent status bar shows repo state at a glance (branch, phase, backlog count, working tree status). - Context detection module mirrors /start Phase 1 signals - ConversationFlow: branching dialogue tree (choose-your-own-adventure) - CommandPalette: fuzzy search with context-ranked star recommendations - StatusBar: tmux-style persistent strip with color-coded segments - Supports --json flag for scripting/piping https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add test suite, error handling, and refactor for production readiness - Add vitest test infrastructure with 102 tests across 7 files - Coverage: 95.58% statements, 90.81% branches, 96.72% functions - Extract conversation tree to separate config module for testability - Add error boundary to App component for graceful error display - Add --help flag with usage documentation - Add TTY detection with JSON fallback for non-interactive environments - Add SIGINT/SIGTERM signal handling for clean exit https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore: add coverage to gitignore, include plan and workspace config https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — unused code, git cwd, magic numbers - Call exit() after command selection so Ink process terminates - Remove unused ctx prop from Header component - Fix git commands to use -C flag with root path parameter - Extract dumpContextJson() helper to deduplicate JSON output logic - Add comment explaining hardcoded team filter exclusion - Replace magic numbers with named constants (FUSE_THRESHOLD, RECOMMENDED_SCORE, MAX_BRANCH_LENGTH) - Remove unused ink-spinner dependency - Add test verifying git -C flag passes root correctly https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — security, correctness, test quality - CRITICAL: Replace execSync shell interpolation with execFileSync to prevent command injection via root parameter in detect.js - CRITICAL: Remove phantom --external:ink-spinner from build script and switch npx to direct esbuild invocation - HIGH: Fix exit race condition — use useEffect instead of setTimeout - HIGH: Wire up onSelect callback in ConversationFlow so Guide mode triggers the result screen in App - HIGH: Destructure and accept ctx prop in ConversationFlow - HIGH: Add back-navigation (Escape) in ConversationFlow - HIGH: Guard against undefined team.focus in commands.js tags - MEDIUM: Use functional setCursor form to avoid stale closures - MEDIUM: Key commandIndices Map by string id instead of object identity - MEDIUM: Improve parseTeams header detection (drop first row approach) - MEDIUM: Filter completed/done/closed items from backlogCount - MEDIUM: Extract shared makeCtx test utility across all test files - MEDIUM: Add null guard to StatusBar truncate helper - LOW: Validate orchestratorPhase is a number in range 1-5 - LOW: Fix pnpm-workspace.yaml list syntax - Replace all setTimeout in tests with vi.waitFor deterministic waits https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * test(start): add coverage for result screen exit path Add App-level test that navigates through ConversationFlow to a leaf node and verifies the result screen text is rendered before exit(). Confirms the synchronous useEffect exit is safe — React commits the render (Ink captures the frame) before useEffect fires. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore: update generated sync output timestamps Generated files updated with current sync date from dev merge. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW --------- * fix: caldues heuristics (#398) * feat: complete revisit of agents (#399) (#400) * Add start command: new user entry point with state detection (#387) * fix(commands): add AskUserQuestion to VALID_TOOLS and /start command The /start command session got stuck because AskUserQuestion was not included in the allowed-tools whitelist. This fix addresses three issues: 1. VALID_TOOLS in spec-validator was missing AskUserQuestion, TodoWrite, Agent, and NotebookEdit — preventing commands from declaring these Claude Code built-in tools in their allowed-tools. 2. The /start command template now explicitly includes AskUserQuestion in its allowed-tools frontmatter and instructs the agent to use it for interactive guided choices (Phase 3). 3. Added /start command spec to commands.yaml with AskUserQuestion as a declared tool dependency. Also adds a test case validating all four newly-added tools are accepted by the spec validator. https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M * fix(commands): remove unrendered Handlebars comment from start.md output The generated .claude/commands/start.md contained a raw {{! ... }} Handlebars comment that was not processed by the sync engine. Remove it so the generated output is clean Markdown. https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M --------- * Add configurable prefix to kits commands (#388) * feat(sync): add configurable command prefix for generated slash commands Add `commandPrefix` setting to overlay settings that namespaces all generated slash commands across platforms: - Claude Code: subdirectory strategy (kits/check.md → /project:kits:check) - Cursor/Windsurf/Copilot/Codex: filename prefix (kits-check.md → /kits-check) - Team commands excluded from prefixing (already namespaced) Changes: - Add resolveCommandPath() helper with subdirectory/filename strategies - Update syncClaudeCommands, syncClaudeSkills, syncCursorCommands, syncWindsurfCommands, syncCopilotPrompts, syncCodexSkills - Add commandPrefix to vars from overlay settings - Add commandPrefixedName to buildCommandVars - Add 16 unit + integration tests (all pass, 93 existing tests unaffected) Default is null (no prefix) for full backwards compatibility. https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p * fix(sync): address review findings for command prefix - Remove unused afterAll import from test file - Add clarifying comment that non-spec command files are also prefixed - Add 2 integration tests verifying commandPrefixedName template variable renders correctly with and without prefix https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p --------- * fix(ci): CI remediation — package manager, review findings, test stability (#390) * fix(ci): resolve 7 bugs from project review - BUG-001: Replace flaky discover test with controlled temp fixture - BUG-002: Run prettier --write to fix formatting drift - BUG-003: Add form-template detection skip in issue label validation - BUG-005: Change claude.yml to self-hosted runner - BUG-006: Align branch protection required status checks with project.yaml - BUG-007: Fix command injection in resolve-merge.sh (use grep -F) * docs: update changelog, add planning registry review findings - Add changelog entries for Wave 1-3 fixes (Added/Changed/Fixed/Removed) - Add Project Review Findings section to planning registry (PR-001 to PR-014) - Update planning docs after sync merge * feat(review): add --generate-plans flag to project-review command Add Phase 2.5 plan generation after project review findings. When --generate-plans is passed (default: true), scaffold plan files from critical/high findings into docs/planning/review-findings/. Also includes sync cleanup of stale cursor/windsurf settings. * chore(sync): regenerate all outputs after project review fixes * feat(cli): dynamic flag loading from commands.yaml + context-aware template hook - Replace ~200 lines of hardcoded VALID_FLAGS/FLAG_TYPES with loadCommandFlags() that reads flag definitions from commands.yaml at startup - CLI_INTERNAL_FLAGS/CLI_INTERNAL_FLAG_TYPES cover commands not in commands.yaml - Self-validation warns at startup if any flag is missing a type definition - Update cli.test.mjs to validate CLI_INTERNAL_FLAGS consistency - Fix scaffold-once orphan bug: carry forward manifest entries for files skipped by scaffold-once so orphan cleanup does not delete them - Make protect-templates hook context-aware: skip protection in the agentkit-forge source repo (detected via package.json name) so maintainer agents can edit templates; block only in downstream repos * feat(sync): add managed-mode script templates for downstream repos Add 14 script templates (.agentkit/templates/scripts/) with `managed` scaffold mode so downstream repos receive script updates via three-way merge while preserving local customizations. Templates include: create-doc, update-changelog, validate-documentation, validate-numbering, check-documentation-requirement, sync-issues, sync-split-pr, setup-agentkit-branch-governance, and resolve-merge (both .sh and .ps1 variants where applicable). Parameterized templates use {{defaultBranch}} and branch protection variables from project.yaml. Engine wired via syncScripts() under doc-scaffolding feature gate. * feat(teams): add TeamForge meta-team for agent team creation (cogmesh #130) Add the TEAMFORGE meta-team (T11) — a structured pipeline for creating, validating, and deploying new agent team specifications. Adapted from cogmesh #130 with a simplified 6-agent pipeline: - input-clarifier: assess requests, extract constraints - mission-definer: lock team definition (ID, scope, accepts) - role-architect: design agent roles and dependencies - prompt-engineer: write agent descriptions and rules - flow-designer: design team command and integration points - team-validator: quality gate for spec consistency Includes /team-forge command with --task flag (create-team, validate-team, audit-teams, update-team) and planning doc. * feat(teams): add Strategic Ops team for cross-project coordination Add the STRATEGIC OPS team (T12) — handles framework governance, portfolio analysis, adoption strategy, impact assessment, and release coordination across all repos using AgentKit Forge. 5-agent pipeline: - portfolio-analyst: inventory repos, detect drift, adoption metrics - governance-advisor: versioning strategy, breaking change protocols - adoption-strategist: onboarding, migration paths, rollout plans - impact-assessor: blast radius analysis for template/spec changes - release-coordinator: version bumps, sync waves, release comms Includes /team-strategic-ops command with --task and --scope flags. * feat(agents): add agent/team relationship matrix analysis engine + scripts Add comprehensive agent/team relationship analysis with 8 cross-reference matrices and 10 supplementary analyses (orphans, cycles, bottlenecks, reachability, critical path, notification amplifiers, etc.). - Fix YAML structure: strategic-ops agents now under own top-level key - Add explicit agents: lists to forge + strategic-ops teams in teams.yaml - Add consolidation detection responsibilities to portfolio-analyst - Create agent-analysis.mjs engine module (loadFullAgentGraph + renderers) - Wire analyze-agents CLI command with --output/--matrix/--format flags - Add managed-scaffold script templates (bash + PowerShell) - Integrate into sync pipeline (auto-regenerates matrix on spec changes) - Add 33 tests covering all matrices, analyses, and edge cases * chore: update documentation files and add plan template - Add trailing newlines to Cursor command documentation files for consistency - Add new plan template files for project planning - Improve markdown table formatting in Claude skills documentation - Remove obsolete .clinerules/testing.md file - Update various rule files with better formatting and advisory rule alignment * feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14) - Add spec-compliance-auditor to operations category (quality team) — closes the feedback loop between agent specs and actual behavior - Add Cost Ops team (T14) with 5 agents: model-economist, token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter, cost-ops-monitor - Add ai-cost-ops rules domain with 6 conventions (model routing, token budgets, caching, batch APIs, vendor abstraction, credit tracking) - Add team-cost-ops command with --task, --period, --provider flags - Update notification chains: data→cost-ops-monitor, infra→model-economist, retrospective-analyst→spec-compliance-auditor - Add intake routes: cost-ops, agent-performance * fix(teams): add implement to cost-ops team accepts list Resolves agent/team accepts mismatch — token-efficiency-engineer accepts implement but the team definition only had investigate/review/plan/document. * feat(cost-ops): add multi-provider infra cost ticket to backlog Add detailed planning ticket for multi-provider infrastructure cost normalisation, routing, and cost-agent integration. Covers 9 providers (Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS, GCP) with 3-phase delivery plan and cross-team dependency tracking. * fix(templates): resolve PR review comments from CodeRabbit - Fix protect-templates.sh: package name check uses correct "agentkit-forge-runtime" instead of "agentkit-forge" - Fix protect-templates.ps1: malformed path (missing separator before .agentkit) and same package name correction - Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS require() syntax used in the inline Node script - Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder - Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left by sync engine, keeping user formatting + implement in cost-ops * feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents Enable web research capabilities for cost-ops team: - Add WebSearch and WebFetch to /team-cost-ops allowed-tools - Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst, and grant-hunter agent preferred-tools - Add web intake expansion ticket (P2) for MCP crawler, Puppeteer integration, automated pricing refresh, and cross-session persistence - Regenerate sync outputs * feat(cost-ops): add Cost Ops team, agents, and multi-provider cost ticket (#364) * feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14) - Add spec-compliance-auditor to operations category (quality team) — closes the feedback loop between agent specs and actual behavior - Add Cost Ops team (T14) with 5 agents: model-economist, token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter, cost-ops-monitor - Add ai-cost-ops rules domain with 6 conventions (model routing, token budgets, caching, batch APIs, vendor abstraction, credit tracking) - Add team-cost-ops command with --task, --period, --provider flags - Update notification chains: data→cost-ops-monitor, infra→model-economist, retrospective-analyst→spec-compliance-auditor - Add intake routes: cost-ops, agent-performance * fix(teams): add implement to cost-ops team accepts list Resolves agent/team accepts mismatch — token-efficiency-engineer accepts implement but the team definition only had investigate/review/plan/document. * feat(cost-ops): add multi-provider infra cost ticket to backlog Add detailed planning ticket for multi-provider infrastructure cost normalisation, routing, and cost-agent integration. Covers 9 providers (Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS, GCP) with 3-phase delivery plan and cross-team dependency tracking. * fix(templates): resolve PR review comments from CodeRabbit - Fix protect-templates.sh: package name check uses correct "agentkit-forge-runtime" instead of "agentkit-forge" - Fix protect-templates.ps1: malformed path (missing separator before .agentkit) and same package name correction - Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS require() syntax used in the inline Node script - Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder - Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left by sync engine, keeping user formatting + implement in cost-ops * feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents (#365) Enable web research capabilities for cost-ops team: - Add WebSearch and WebFetch to /team-cost-ops allowed-tools - Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst, and grant-hunter agent preferred-tools - Add web intake expansion ticket (P2) for MCP crawler, Puppeteer integration, automated pricing refresh, and cross-session persistence - Regenerate sync outputs --------- * fix(teams): address CodeRabbit review findings on strategic-ops PR - Lazy-load js-yaml in cli.mjs after ensureDependencies() to prevent crash when node_modules is missing - Convert YAML frontmatter to PowerShell comment blocks in all 6 PS1 templates to fix invalid PowerShell syntax - Fix protect-templates hook path: use 3 parent traversals to reach .agentkit/package.json from hooks directory - Remove schema-invalid 'phase' field from ai-cost-ops rule domain - Narrow strategic-ops scope: replace **/* catch-all with specific files - Add strategic-ops to cost-ops handoff-chain for consistency - Add Write tool to spec-compliance-auditor, vendor-arbitrage-analyst, and grant-hunter agents - Fix glob matching in resolve-merge.sh (use regex instead of broken sed strip) - Add merge failure vs conflict detection in resolve-merge.ps1 - Add branch existence check in setup-agentkit-branch-governance scripts - Add gh CLI preflight check in sync-split-pr.ps1 - Deduplicate branch protection loop when defaultBranch is 'main' - Fix applies-to glob: docs/planning/cost/** → docs/planning/cost-governance/** - Fix non-canonical doc paths in intake-agent-proposal.md - Add changelog entries for new teams, agents, and analysis engine - Resolve AGENT_TEAMS.md merge conflict (accept narrowed scope) - Run prettier on all modified files * fix(templates): add gh auth preflight and changelog divider handling - sync-split-pr.ps1: add gh auth status check before side effects - update-changelog.ps1: stop before --- divider when appending entries Addresses CodeRabbit review comments #7 and #13 on PR #356. * fix(sync): set executable permission on analyze-agents.sh Linux CI sync produces +x permissions; align local to match. * fix(templates): address CodeRabbit review round 3-4 findings - Fix YAML frontmatter in copilot agent template: use double quotes for description field to handle apostrophes (CRITICAL) - Fix protect-templates.sh/ps1 path traversal: correct parent directory count for .agentkit/package.json source repo detection - Add $PSNativeCommandUseErrorActionPreference to sync-split-pr.ps1 so native command failures (git, pnpm, gh) are treated as fatal - Replace try/catch with $LASTEXITCODE check for gh auth status - Deduplicate branch loop in setup-agentkit-branch-governance.sh when defaultBranch equals 'main' - Fix duplicate verification echo lines in governance scripts * style(docs): fix prettier formatting on planning documents Run prettier --write on web-intake-expansion.md and intake-agent-proposal.md to fix CI formatting check. * fix(tests): isolate render target gating tests with fresh temp dirs Tests in the "render target gating" describe block shared a single temp directory via beforeAll/afterAll. The first test ran --only claude (generating .claude/ files), and the second ran --only warp expecting no Claude files — but leftovers from test 1 caused the assertion to fail. Changing to beforeEach/afterEach gives each test a clean directory. Closes #377 * feat(commands): add /start command as new user entry point Adds a context-aware triage command that detects repository state (fresh clone, post-discovery, mid-session, uncommitted work) and guides users to the right command or team for their goal. Includes team routing table, 4 contextual flows, and decision guidance for when users don't know which team to use. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * refactor(commands): add Arguments and State Management sections to /start Addresses TEAMFORGE validation findings: - Add dedicated Arguments section documenting $ARGUMENTS handling - Add State Management section (reads/writes inventory) - Fix frontmatter: remove misleading generated_by field - Add explicit "manually authored" comment header https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): add /start to spec and template for cross-repo generation Moves /start from a hand-authored command to a proper spec-driven, sync-generated command available to any repo that adopts AgentKit Forge. - Add start command definition to commands.yaml (no feature gate — always on) - Create start.md template in .agentkit/templates/claude/commands/ - Add /start to CLAUDE.md Quick Reference table template https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after adding /start command Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): make /start team routing dynamic instead of hardcoded Replace the static team routing table with dynamic discovery: 1. Read AGENT_TEAMS.md (from /discover) at runtime 2. Fall back to .agentkit/spec/teams.yaml 3. Fall back to /team-* command frontmatter This ensures /start always reflects the actual teams configured in any repo, rather than a hardcoded list that could go stale. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after dynamic routing change Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add interactive TUI entry point with hybrid UI Replace static markdown output with an ink-based terminal UI that combines two modes: a guided conversation flow for first-run users and a fuzzy-searchable command palette for returning users. A persistent status bar shows repo state at a glance (branch, phase, backlog count, working tree status). - Context detection module mirrors /start Phase 1 signals - ConversationFlow: branching dialogue tree (choose-your-own-adventure) - CommandPalette: fuzzy search with context-ranked star recommendations - StatusBar: tmux-style persistent strip with color-coded segments - Supports --json flag for scripting/piping https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add test suite, error handling, and refactor for production readiness - Add vitest test infrastructure with 102 tests across 7 files - Coverage: 95.58% statements, 90.81% branches, 96.72% functions - Extract conversation tree to separate config module for testability - Add error boundary to App component for graceful error display - Add --help flag with usage documentation - Add TTY detection with JSON fallback for non-interactive environments - Add SIGINT/SIGTERM signal handling for clean exit https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore: add coverage to gitignore, include plan and workspace config https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — unused code, git cwd, magic numbers - Call exit() after command selection so Ink process terminates - Remove unused ctx prop from Header component - Fix git commands to use -C flag with root path parameter - Extract dumpContextJson() helper to deduplicate JSON output logic - Add comment explaining hardcoded team filter exclusion - Replace magic numbers with named constants (FUSE_THRESHOLD, RECOMMENDED_SCORE, MAX_BRANCH_LENGTH) - Remove unused ink-spinner dependency - Add test verifying git -C flag passes root correctly https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — security, correctness, test quality - CRITICAL: Replace execSync shell interpolation with execFileSync to prevent command injection via root parameter in detect.js - CRITICAL: Remove phantom --external:ink-spinner from build script and switch npx to direct esbuild invocation - HIGH: Fix exit race condition — use useEffect instead of setTimeout - HIGH: Wire up onSelect callback in ConversationFlow so Guide mode triggers the result screen in App - HIGH: Destructure and accept ctx prop in ConversationFlow - HIGH: Add back-navigation (Escape) in ConversationFlow - HIGH: Guard against undefined team.focus in commands.js tags - MEDIUM: Use functional setCursor form to avoid stale closures - MEDIUM: Key commandIndices Map by string id instead of object identity - MEDIUM: Improve parseTeams header detection (drop first row approach) - MEDIUM: Filter completed/done/closed items from backlogCount - MEDIUM: Extract shared makeCtx test utility across all test files - MEDIUM: Add null guard to StatusBar truncate helper - LOW: Validate orchestratorPhase is a number in range 1-5 - LOW: Fix pnpm-workspace.yaml list syntax - Replace all setTimeout in tests with vi.waitFor deterministic waits https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(engine): add pre-sync commit guard and interactive apply mode Adds two safety features to the sync pipeline: 1. Pre-sync commit guard: Detects uncommitted changes in protected directories (.agentkit/engines, spec, overlays) before sync runs. In TTY mode, prompts to abort, stash, or continue. In non-TTY mode (CI), prints a warning and proceeds. 2. Interactive apply mode: After rendering, shows a change summary and prompts: apply all / skip all / prompt each file. Per-file prompt supports show-diff and apply-all-remaining. Default in TTY; bypassed with --yes, --no-prompt, or --force. New module: sync-guard.mjs with 4 exported functions and 7 tests. New CLI flags: --yes, --no-prompt for non-interactive sync. * chore(sync): regenerate outputs after branch merges * chore(sync): regenerate outputs after merge of new-user-entry-point * feat(engine): add configurable package manager and fix review findings - Add `stack.packageManager` field to project.yaml (pnpm | npm | yarn) - Derive helper template vars (pmInstall, pmRun, pmExec, pmLockfile, etc.) - Update CLAUDE.md template and hook/workflow templates to use {{packageManager}} - Fix sync-guard to exclude .agentkit/spec from protected dirs and add try/catch - Remove duplicate cost-ops team definition from teams.yaml - Pin all dependency versions in package.json (remove ^ prefixes) - Add vitest coverage thresholds (80% statements/branches/functions/lines) - Fix src/start/ code quality: null guards, exit delay, error boundaries - Harden consolidate-branches.sh: self-resolution guard, stash restore - Regenerate all 533 output files via agentkit sync * chore(engine): add brand color palette variables to sync vars * fix(ci): fix test race condition, workspace config, and lockfile - Fix ConversationFlow test: wait for 'Got it' before asserting hint text - Add packages field to pnpm-workspace.yaml for proper workspace resolution - Regenerate lockfile after version pinning (removed ^ prefixes) - Remove accidental .agentkit/templates/src/ artifacts * fix(start): add event loop yields to ConversationFlow tests ink-select-input needs setImmediate yields after a new menu renders before it can process ENTER keypresses. Without this, the second ENTER in leaf-selection tests was swallowed, causing intermittent failures. --------- * fix(spec): correct githubSlug to phoenixvc/agentkit-forge (#391) * Add entry point for new framework users (#389) * feat(commands): add /start command as new user entry point Adds a context-aware triage command that detects repository state (fresh clone, post-discovery, mid-session, uncommitted work) and guides users to the right command or team for their goal. Includes team routing table, 4 contextual flows, and decision guidance for when users don't know which team to use. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * refactor(commands): add Arguments and State Management sections to /start Addresses TEAMFORGE validation findings: - Add dedicated Arguments section documenting $ARGUMENTS handling - Add State Management section (reads/writes inventory) - Fix frontmatter: remove misleading generated_by field - Add explicit "manually authored" comment header https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): add /start to spec and template for cross-repo generation Moves /start from a hand-authored command to a proper spec-driven, sync-generated command available to any repo that adopts AgentKit Forge. - Add start command definition to commands.yaml (no feature gate — always on) - Create start.md template in .agentkit/templates/claude/commands/ - Add /start to CLAUDE.md Quick Reference table template https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after adding /start command Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): make /start team routing dynamic instead of hardcoded Replace the static team routing table with dynamic discovery: 1. Read AGENT_TEAMS.md (from /discover) at runtime 2. Fall back to .agentkit/spec/teams.yaml 3. Fall back to /team-* command frontmatter This ensures /start always reflects the actual teams configured in any repo, rather than a hardcoded list that could go stale. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after dynamic routing change Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add interactive TUI entry point with hybrid UI Replace static markdown output with an ink-based terminal UI that combines two modes: a guided conversation flow for first-run users and a fuzzy-searchable command palette for returning users. A persistent status bar shows repo state at a glance (branch, phase, backlog count, working tree status). - Context detection module mirrors /start Phase 1 signals - ConversationFlow: branching dialogue tree (choose-your-own-adventure) - CommandPalette: fuzzy search with context-ranked star recommendations - StatusBar: tmux-style persistent strip with color-coded segments - Supports --json flag for scripting/piping https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add test suite, error handling, and refactor for production readiness - Add vitest test infrastructure with 102 tests across 7 files - Coverage: 95.58% statements, 90.81% branches, 96.72% functions - Extract conversation tree to separate config module for testability - Add error boundary to App component for graceful error display - Add --help flag with usage documentation - Add TTY detection with JSON fallback for non-interactive environments - Add SIGINT/SIGTERM signal handling for clean exit https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore: add coverage to gitignore, include plan and workspace config https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — unused code, git cwd, magic numbers - Call exit() after command selection so Ink process terminates - Remove unused ctx prop from Header component - Fix git commands to use -C flag with root path parameter - Extract dumpContextJson() helper to deduplicate JSON output logic - Add comment explaining hardcoded team filter exclusion - Replace magic numbers with named constants (FUSE_THRESHOLD, RECOMMENDED_SCORE, MAX_BRANCH_LENGTH) - Remove unused ink-spinner dependency - Add test verifying git -C flag passes root correctly https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — security, correctness, test quality - CRITICAL: Replace execSync shell interpolation with execFileSync to prevent command injection via root parameter in detect.js - CRITICAL: Remove phantom --external:ink-spinner from build script and switch npx to direct esbuild invocation - HIGH: Fix exit race condition — use useEffect instead of setTimeout - HIGH: Wire up onSelect callback in ConversationFlow so Guide mode triggers the result screen in App - HIGH: Destructure and accept ctx prop in ConversationFlow - HIGH: Add back-navigation (Escape) in ConversationFlow - HIGH: Guard against undefined team.focus in commands.js tags - MEDIUM: Use functional setCursor form to avoid stale closures - MEDIUM: Key commandIndices Map by string id instead of object identity - MEDIUM: Improve parseTeams header detection (drop first row approach) - MEDIUM: Filter completed/done/closed items from backlogCount - MEDIUM: Extract shared makeCtx test utility across all test files - MEDIUM: Add null guard to StatusBar truncate helper - LOW: Validate orchestratorPhase is a number in range 1-5 - LOW: Fix pnpm-workspace.yaml list syntax - Replace all setTimeout in tests with vi.waitFor deterministic waits https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * test(start): add coverage for result screen exit path Add App-level test that navigates through ConversationFlow to a leaf node and verifies the result screen text is rendered before exit(). Confirms the synchronous useEffect exit is safe — React commits the render (Ink captures the frame) before useEffect fires. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore: update generated sync output timestamps Generated files updated with current sync date from dev merge. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW --------- * fix: caldues heuristics (#398) --------- * fix(quality): resolve all lint and format errors - Fix Prettier formatting across engine src and start components - Resolve 381 markdown lint errors (MD040, MD024, MD036, MD029, MD022, MD001) - Add markdownlint config rules for intentional doc patterns - Add .claude/worktrees to prettierignore to exclude external branches - Enable markdownlint MD024/MD026 for duplicate headings and trailing colons All quality checks now pass: Prettier (0 errors), Markdown lint (0 errors), Tests (111/111), Build (28.9kb) * I'll update the last_updated field in all the files from '2026-03-12' to '2026-03-13'. This appears to be a routine timestamp update across all the AgentKit Forge generated files. * docs: add AgentKit Forge sync feedback Add detailed feedback on AgentKit Forge v3.1.0 integration, focusing on: - Windows line-ending issues and multi-editor sync behavior - Documentation scaffold-once limitations and override challenges - Unresolved placeholder warnings lacking diagnostics - Windows-specific pnpm execution problems * docs: update CLAUDE.md with repository-specific editing guidelines Clarified that modifications to `.agentkit` files are permitted in the agentkit-forge repository, while upstream directories remain protected. This ensures users understand the editing boundaries for project configuration and template files. * docs(claude): allow .agentkit edits in this repo (NB for framework dev) Made-with: Cursor * chore(sync): regenerate outputs after agentkit:sync Made-with: Cursor * Fix/generated files and conflict markers (#427) * fix(infra): resolve container app fqdn attribute and format code * chore(sync): update AGENT_BACKLOG.md and other files for task management - Enhanced AGENT_BACKLOG.md with detailed task scopes for CI pipeline configuration and test framework setup. - Added new docker-compose.yml for local/staging validation of the framework. - Updated CONTRIBUTING.md to include documentation hub link in the Discovery phase. - Introduced README.md files in db, infra, and migrations directories to clarify their purpose for adopters. - Added API conventions documentation to guide adopters on structuring their APIs. - Created implementation plan for state management improvements and added relevant tests. - Regenerated outputs across various files to reflect recent changes and ensure consistency. * chore(ci): reduce CodeQL to weekly + manual only (#430) * chore(ci): reduce CodeQL to weekly schedule + manual trigger Removes push and pull_request triggers to reduce GitHub Actions costs. Scans were running on every PR including Renovate dependency updates. * Potential fix for pull request finding --------- * docs(architecture): add tool-neutral agent hub findings, ADR-10, and adoption roadmap (#428) * docs(architecture): add tool-neutral agent hub findings, ADR-10, and adoption roadmap Comparative analysis of agentkit-forge sync engine vs Mystira.workspace hand-authored .agents/ pattern. Documents 5-phase adoption roadmap to converge both approaches: .agents/ as sync target, reflective guards, .readme.yaml generation, cross-session traces, and schema formalisation. Includes regenerated sync output (updated timestamps across all tools). * docs(architecture): add competi… Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
…nores (#507) * Add start command: new user entry point with state detection (#387) * fix(commands): add AskUserQuestion to VALID_TOOLS and /start command The /start command session got stuck because AskUserQuestion was not included in the allowed-tools whitelist. This fix addresses three issues: 1. VALID_TOOLS in spec-validator was missing AskUserQuestion, TodoWrite, Agent, and NotebookEdit — preventing commands from declaring these Claude Code built-in tools in their allowed-tools. 2. The /start command template now explicitly includes AskUserQuestion in its allowed-tools frontmatter and instructs the agent to use it for interactive guided choices (Phase 3). 3. Added /start command spec to commands.yaml with AskUserQuestion as a declared tool dependency. Also adds a test case validating all four newly-added tools are accepted by the spec validator. https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M * fix(commands): remove unrendered Handlebars comment from start.md output The generated .claude/commands/start.md contained a raw {{! ... }} Handlebars comment that was not processed by the sync engine. Remove it so the generated output is clean Markdown. https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M --------- Co-authored-by: Claude <noreply@anthropic.com> * Add configurable prefix to kits commands (#388) * feat(sync): add configurable command prefix for generated slash commands Add `commandPrefix` setting to overlay settings that namespaces all generated slash commands across platforms: - Claude Code: subdirectory strategy (kits/check.md → /project:kits:check) - Cursor/Windsurf/Copilot/Codex: filename prefix (kits-check.md → /kits-check) - Team commands excluded from prefixing (already namespaced) Changes: - Add resolveCommandPath() helper with subdirectory/filename strategies - Update syncClaudeCommands, syncClaudeSkills, syncCursorCommands, syncWindsurfCommands, syncCopilotPrompts, syncCodexSkills - Add commandPrefix to vars from overlay settings - Add commandPrefixedName to buildCommandVars - Add 16 unit + integration tests (all pass, 93 existing tests unaffected) Default is null (no prefix) for full backwards compatibility. https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p * fix(sync): address review findings for command prefix - Remove unused afterAll import from test file - Add clarifying comment that non-spec command files are also prefixed - Add 2 integration tests verifying commandPrefixedName template variable renders correctly with and without prefix https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p --------- Co-authored-by: Claude <noreply@anthropic.com> * fix(ci): CI remediation — package manager, review findings, test stability (#390) * fix(ci): resolve 7 bugs from project review - BUG-001: Replace flaky discover test with controlled temp fixture - BUG-002: Run prettier --write to fix formatting drift - BUG-003: Add form-template detection skip in issue label validation - BUG-005: Change claude.yml to self-hosted runner - BUG-006: Align branch protection required status checks with project.yaml - BUG-007: Fix command injection in resolve-merge.sh (use grep -F) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: update changelog, add planning registry review findings - Add changelog entries for Wave 1-3 fixes (Added/Changed/Fixed/Removed) - Add Project Review Findings section to planning registry (PR-001 to PR-014) - Update planning docs after sync merge Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(review): add --generate-plans flag to project-review command Add Phase 2.5 plan generation after project review findings. When --generate-plans is passed (default: true), scaffold plan files from critical/high findings into docs/planning/review-findings/. Also includes sync cleanup of stale cursor/windsurf settings. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore(sync): regenerate all outputs after project review fixes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(cli): dynamic flag loading from commands.yaml + context-aware template hook - Replace ~200 lines of hardcoded VALID_FLAGS/FLAG_TYPES with loadCommandFlags() that reads flag definitions from commands.yaml at startup - CLI_INTERNAL_FLAGS/CLI_INTERNAL_FLAG_TYPES cover commands not in commands.yaml - Self-validation warns at startup if any flag is missing a type definition - Update cli.test.mjs to validate CLI_INTERNAL_FLAGS consistency - Fix scaffold-once orphan bug: carry forward manifest entries for files skipped by scaffold-once so orphan cleanup does not delete them - Make protect-templates hook context-aware: skip protection in the agentkit-forge source repo (detected via package.json name) so maintainer agents can edit templates; block only in downstream repos Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(sync): add managed-mode script templates for downstream repos Add 14 script templates (.agentkit/templates/scripts/) with `managed` scaffold mode so downstream repos receive script updates via three-way merge while preserving local customizations. Templates include: create-doc, update-changelog, validate-documentation, validate-numbering, check-documentation-requirement, sync-issues, sync-split-pr, setup-agentkit-branch-governance, and resolve-merge (both .sh and .ps1 variants where applicable). Parameterized templates use {{defaultBranch}} and branch protection variables from project.yaml. Engine wired via syncScripts() under doc-scaffolding feature gate. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(teams): add TeamForge meta-team for agent team creation (cogmesh #130) Add the TEAMFORGE meta-team (T11) — a structured pipeline for creating, validating, and deploying new agent team specifications. Adapted from cogmesh #130 with a simplified 6-agent pipeline: - input-clarifier: assess requests, extract constraints - mission-definer: lock team definition (ID, scope, accepts) - role-architect: design agent roles and dependencies - prompt-engineer: write agent descriptions and rules - flow-designer: design team command and integration points - team-validator: quality gate for spec consistency Includes /team-forge command with --task flag (create-team, validate-team, audit-teams, update-team) and planning doc. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(teams): add Strategic Ops team for cross-project coordination Add the STRATEGIC OPS team (T12) — handles framework governance, portfolio analysis, adoption strategy, impact assessment, and release coordination across all repos using AgentKit Forge. 5-agent pipeline: - portfolio-analyst: inventory repos, detect drift, adoption metrics - governance-advisor: versioning strategy, breaking change protocols - adoption-strategist: onboarding, migration paths, rollout plans - impact-assessor: blast radius analysis for template/spec changes - release-coordinator: version bumps, sync waves, release comms Includes /team-strategic-ops command with --task and --scope flags. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(agents): add agent/team relationship matrix analysis engine + scripts Add comprehensive agent/team relationship analysis with 8 cross-reference matrices and 10 supplementary analyses (orphans, cycles, bottlenecks, reachability, critical path, notification amplifiers, etc.). - Fix YAML structure: strategic-ops agents now under own top-level key - Add explicit agents: lists to forge + strategic-ops teams in teams.yaml - Add consolidation detection responsibilities to portfolio-analyst - Create agent-analysis.mjs engine module (loadFullAgentGraph + renderers) - Wire analyze-agents CLI command with --output/--matrix/--format flags - Add managed-scaffold script templates (bash + PowerShell) - Integrate into sync pipeline (auto-regenerates matrix on spec changes) - Add 33 tests covering all matrices, analyses, and edge cases Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: update documentation files and add plan template - Add trailing newlines to Cursor command documentation files for consistency - Add new plan template files for project planning - Improve markdown table formatting in Claude skills documentation - Remove obsolete .clinerules/testing.md file - Update various rule files with better formatting and advisory rule alignment * feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14) - Add spec-compliance-auditor to operations category (quality team) — closes the feedback loop between agent specs and actual behavior - Add Cost Ops team (T14) with 5 agents: model-economist, token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter, cost-ops-monitor - Add ai-cost-ops rules domain with 6 conventions (model routing, token budgets, caching, batch APIs, vendor abstraction, credit tracking) - Add team-cost-ops command with --task, --period, --provider flags - Update notification chains: data→cost-ops-monitor, infra→model-economist, retrospective-analyst→spec-compliance-auditor - Add intake routes: cost-ops, agent-performance Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(teams): add implement to cost-ops team accepts list Resolves agent/team accepts mismatch — token-efficiency-engineer accepts implement but the team definition only had investigate/review/plan/document. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(cost-ops): add multi-provider infra cost ticket to backlog Add detailed planning ticket for multi-provider infrastructure cost normalisation, routing, and cost-agent integration. Covers 9 providers (Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS, GCP) with 3-phase delivery plan and cross-team dependency tracking. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(templates): resolve PR review comments from CodeRabbit - Fix protect-templates.sh: package name check uses correct "agentkit-forge-runtime" instead of "agentkit-forge" - Fix protect-templates.ps1: malformed path (missing separator before .agentkit) and same package name correction - Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS require() syntax used in the inline Node script - Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder - Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left by sync engine, keeping user formatting + implement in cost-ops Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents Enable web research capabilities for cost-ops team: - Add WebSearch and WebFetch to /team-cost-ops allowed-tools - Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst, and grant-hunter agent preferred-tools - Add web intake expansion ticket (P2) for MCP crawler, Puppeteer integration, automated pricing refresh, and cross-session persistence - Regenerate sync outputs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(cost-ops): add Cost Ops team, agents, and multi-provider cost ticket (#364) * feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14) - Add spec-compliance-auditor to operations category (quality team) — closes the feedback loop between agent specs and actual behavior - Add Cost Ops team (T14) with 5 agents: model-economist, token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter, cost-ops-monitor - Add ai-cost-ops rules domain with 6 conventions (model routing, token budgets, caching, batch APIs, vendor abstraction, credit tracking) - Add team-cost-ops command with --task, --period, --provider flags - Update notification chains: data→cost-ops-monitor, infra→model-economist, retrospective-analyst→spec-compliance-auditor - Add intake routes: cost-ops, agent-performance Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(teams): add implement to cost-ops team accepts list Resolves agent/team accepts mismatch — token-efficiency-engineer accepts implement but the team definition only had investigate/review/plan/document. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(cost-ops): add multi-provider infra cost ticket to backlog Add detailed planning ticket for multi-provider infrastructure cost normalisation, routing, and cost-agent integration. Covers 9 providers (Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS, GCP) with 3-phase delivery plan and cross-team dependency tracking. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(templates): resolve PR review comments from CodeRabbit - Fix protect-templates.sh: package name check uses correct "agentkit-forge-runtime" instead of "agentkit-forge" - Fix protect-templates.ps1: malformed path (missing separator before .agentkit) and same package name correction - Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS require() syntax used in the inline Node script - Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder - Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left by sync engine, keeping user formatting + implement in cost-ops Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents (#365) Enable web research capabilities for cost-ops team: - Add WebSearch and WebFetch to /team-cost-ops allowed-tools - Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst, and grant-hunter agent preferred-tools - Add web intake expansion ticket (P2) for MCP crawler, Puppeteer integration, automated pricing refresh, and cross-session persistence - Regenerate sync outputs Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * fix(teams): address CodeRabbit review findings on strategic-ops PR - Lazy-load js-yaml in cli.mjs after ensureDependencies() to prevent crash when node_modules is missing - Convert YAML frontmatter to PowerShell comment blocks in all 6 PS1 templates to fix invalid PowerShell syntax - Fix protect-templates hook path: use 3 parent traversals to reach .agentkit/package.json from hooks directory - Remove schema-invalid 'phase' field from ai-cost-ops rule domain - Narrow strategic-ops scope: replace **/* catch-all with specific files - Add strategic-ops to cost-ops handoff-chain for consistency - Add Write tool to spec-compliance-auditor, vendor-arbitrage-analyst, and grant-hunter agents - Fix glob matching in resolve-merge.sh (use regex instead of broken sed strip) - Add merge failure vs conflict detection in resolve-merge.ps1 - Add branch existence check in setup-agentkit-branch-governance scripts - Add gh CLI preflight check in sync-split-pr.ps1 - Deduplicate branch protection loop when defaultBranch is 'main' - Fix applies-to glob: docs/planning/cost/** → docs/planning/cost-governance/** - Fix non-canonical doc paths in intake-agent-proposal.md - Add changelog entries for new teams, agents, and analysis engine - Resolve AGENT_TEAMS.md merge conflict (accept narrowed scope) - Run prettier on all modified files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(templates): add gh auth preflight and changelog divider handling - sync-split-pr.ps1: add gh auth status check before side effects - update-changelog.ps1: stop before --- divider when appending entries Addresses CodeRabbit review comments #7 and #13 on PR #356. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(sync): set executable permission on analyze-agents.sh Linux CI sync produces +x permissions; align local to match. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(templates): address CodeRabbit review round 3-4 findings - Fix YAML frontmatter in copilot agent template: use double quotes for description field to handle apostrophes (CRITICAL) - Fix protect-templates.sh/ps1 path traversal: correct parent directory count for .agentkit/package.json source repo detection - Add $PSNativeCommandUseErrorActionPreference to sync-split-pr.ps1 so native command failures (git, pnpm, gh) are treated as fatal - Replace try/catch with $LASTEXITCODE check for gh auth status - Deduplicate branch loop in setup-agentkit-branch-governance.sh when defaultBranch equals 'main' - Fix duplicate verification echo lines in governance scripts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style(docs): fix prettier formatting on planning documents Run prettier --write on web-intake-expansion.md and intake-agent-proposal.md to fix CI formatting check. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(tests): isolate render target gating tests with fresh temp dirs Tests in the "render target gating" describe block shared a single temp directory via beforeAll/afterAll. The first test ran --only claude (generating .claude/ files), and the second ran --only warp expecting no Claude files — but leftovers from test 1 caused the assertion to fail. Changing to beforeEach/afterEach gives each test a clean directory. Closes #377 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(commands): add /start command as new user entry point Adds a context-aware triage command that detects repository state (fresh clone, post-discovery, mid-session, uncommitted work) and guides users to the right command or team for their goal. Includes team routing table, 4 contextual flows, and decision guidance for when users don't know which team to use. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * refactor(commands): add Arguments and State Management sections to /start Addresses TEAMFORGE validation findings: - Add dedicated Arguments section documenting $ARGUMENTS handling - Add State Management section (reads/writes inventory) - Fix frontmatter: remove misleading generated_by field - Add explicit "manually authored" comment header https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): add /start to spec and template for cross-repo generation Moves /start from a hand-authored command to a proper spec-driven, sync-generated command available to any repo that adopts AgentKit Forge. - Add start command definition to commands.yaml (no feature gate — always on) - Create start.md template in .agentkit/templates/claude/commands/ - Add /start to CLAUDE.md Quick Reference table template https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after adding /start command Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): make /start team routing dynamic instead of hardcoded Replace the static team routing table with dynamic discovery: 1. Read AGENT_TEAMS.md (from /discover) at runtime 2. Fall back to .agentkit/spec/teams.yaml 3. Fall back to /team-* command frontmatter This ensures /start always reflects the actual teams configured in any repo, rather than a hardcoded list that could go stale. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after dynamic routing change Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add interactive TUI entry point with hybrid UI Replace static markdown output with an ink-based terminal UI that combines two modes: a guided conversation flow for first-run users and a fuzzy-searchable command palette for returning users. A persistent status bar shows repo state at a glance (branch, phase, backlog count, working tree status). - Context detection module mirrors /start Phase 1 signals - ConversationFlow: branching dialogue tree (choose-your-own-adventure) - CommandPalette: fuzzy search with context-ranked star recommendations - StatusBar: tmux-style persistent strip with color-coded segments - Supports --json flag for scripting/piping https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add test suite, error handling, and refactor for production readiness - Add vitest test infrastructure with 102 tests across 7 files - Coverage: 95.58% statements, 90.81% branches, 96.72% functions - Extract conversation tree to separate config module for testability - Add error boundary to App component for graceful error display - Add --help flag with usage documentation - Add TTY detection with JSON fallback for non-interactive environments - Add SIGINT/SIGTERM signal handling for clean exit https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore: add coverage to gitignore, include plan and workspace config https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — unused code, git cwd, magic numbers - Call exit() after command selection so Ink process terminates - Remove unused ctx prop from Header component - Fix git commands to use -C flag with root path parameter - Extract dumpContextJson() helper to deduplicate JSON output logic - Add comment explaining hardcoded team filter exclusion - Replace magic numbers with named constants (FUSE_THRESHOLD, RECOMMENDED_SCORE, MAX_BRANCH_LENGTH) - Remove unused ink-spinner dependency - Add test verifying git -C flag passes root correctly https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — security, correctness, test quality - CRITICAL: Replace execSync shell interpolation with execFileSync to prevent command injection via root parameter in detect.js - CRITICAL: Remove phantom --external:ink-spinner from build script and switch npx to direct esbuild invocation - HIGH: Fix exit race condition — use useEffect instead of setTimeout - HIGH: Wire up onSelect callback in ConversationFlow so Guide mode triggers the result screen in App - HIGH: Destructure and accept ctx prop in ConversationFlow - HIGH: Add back-navigation (Escape) in ConversationFlow - HIGH: Guard against undefined team.focus in commands.js tags - MEDIUM: Use functional setCursor form to avoid stale closures - MEDIUM: Key commandIndices Map by string id instead of object identity - MEDIUM: Improve parseTeams header detection (drop first row approach) - MEDIUM: Filter completed/done/closed items from backlogCount - MEDIUM: Extract shared makeCtx test utility across all test files - MEDIUM: Add null guard to StatusBar truncate helper - LOW: Validate orchestratorPhase is a number in range 1-5 - LOW: Fix pnpm-workspace.yaml list syntax - Replace all setTimeout in tests with vi.waitFor deterministic waits https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(engine): add pre-sync commit guard and interactive apply mode Adds two safety features to the sync pipeline: 1. Pre-sync commit guard: Detects uncommitted changes in protected directories (.agentkit/engines, spec, overlays) before sync runs. In TTY mode, prompts to abort, stash, or continue. In non-TTY mode (CI), prints a warning and proceeds. 2. Interactive apply mode: After rendering, shows a change summary and prompts: apply all / skip all / prompt each file. Per-file prompt supports show-diff and apply-all-remaining. Default in TTY; bypassed with --yes, --no-prompt, or --force. New module: sync-guard.mjs with 4 exported functions and 7 tests. New CLI flags: --yes, --no-prompt for non-interactive sync. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore(sync): regenerate outputs after branch merges Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore(sync): regenerate outputs after merge of new-user-entry-point Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(engine): add configurable package manager and fix review findings - Add `stack.packageManager` field to project.yaml (pnpm | npm | yarn) - Derive helper template vars (pmInstall, pmRun, pmExec, pmLockfile, etc.) - Update CLAUDE.md template and hook/workflow templates to use {{packageManager}} - Fix sync-guard to exclude .agentkit/spec from protected dirs and add try/catch - Remove duplicate cost-ops team definition from teams.yaml - Pin all dependency versions in package.json (remove ^ prefixes) - Add vitest coverage thresholds (80% statements/branches/functions/lines) - Fix src/start/ code quality: null guards, exit delay, error boundaries - Harden consolidate-branches.sh: self-resolution guard, stash restore - Regenerate all 533 output files via agentkit sync Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore(engine): add brand color palette variables to sync vars Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(ci): fix test race condition, workspace config, and lockfile - Fix ConversationFlow test: wait for 'Got it' before asserting hint text - Add packages field to pnpm-workspace.yaml for proper workspace resolution - Regenerate lockfile after version pinning (removed ^ prefixes) - Remove accidental .agentkit/templates/src/ artifacts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(start): add event loop yields to ConversationFlow tests ink-select-input needs setImmediate yields after a new menu renders before it can process ENTER keypresses. Without this, the second ENTER in leaf-selection tests was swallowed, causing intermittent failures. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * fix(spec): correct githubSlug to phoenixvc/agentkit-forge (#391) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * Add entry point for new framework users (#389) * feat(commands): add /start command as new user entry point Adds a context-aware triage command that detects repository state (fresh clone, post-discovery, mid-session, uncommitted work) and guides users to the right command or team for their goal. Includes team routing table, 4 contextual flows, and decision guidance for when users don't know which team to use. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * refactor(commands): add Arguments and State Management sections to /start Addresses TEAMFORGE validation findings: - Add dedicated Arguments section documenting $ARGUMENTS handling - Add State Management section (reads/writes inventory) - Fix frontmatter: remove misleading generated_by field - Add explicit "manually authored" comment header https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): add /start to spec and template for cross-repo generation Moves /start from a hand-authored command to a proper spec-driven, sync-generated command available to any repo that adopts AgentKit Forge. - Add start command definition to commands.yaml (no feature gate — always on) - Create start.md template in .agentkit/templates/claude/commands/ - Add /start to CLAUDE.md Quick Reference table template https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after adding /start command Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): make /start team routing dynamic instead of hardcoded Replace the static team routing table with dynamic discovery: 1. Read AGENT_TEAMS.md (from /discover) at runtime 2. Fall back to .agentkit/spec/teams.yaml 3. Fall back to /team-* command frontmatter This ensures /start always reflects the actual teams configured in any repo, rather than a hardcoded list that could go stale. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after dynamic routing change Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add interactive TUI entry point with hybrid UI Replace static markdown output with an ink-based terminal UI that combines two modes: a guided conversation flow for first-run users and a fuzzy-searchable command palette for returning users. A persistent status bar shows repo state at a glance (branch, phase, backlog count, working tree status). - Context detection module mirrors /start Phase 1 signals - ConversationFlow: branching dialogue tree (choose-your-own-adventure) - CommandPalette: fuzzy search with context-ranked star recommendations - StatusBar: tmux-style persistent strip with color-coded segments - Supports --json flag for scripting/piping https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add test suite, error handling, and refactor for production readiness - Add vitest test infrastructure with 102 tests across 7 files - Coverage: 95.58% statements, 90.81% branches, 96.72% functions - Extract conversation tree to separate config module for testability - Add error boundary to App component for graceful error display - Add --help flag with usage documentation - Add TTY detection with JSON fallback for non-interactive environments - Add SIGINT/SIGTERM signal handling for clean exit https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore: add coverage to gitignore, include plan and workspace config https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — unused code, git cwd, magic numbers - Call exit() after command selection so Ink process terminates - Remove unused ctx prop from Header component - Fix git commands to use -C flag with root path parameter - Extract dumpContextJson() helper to deduplicate JSON output logic - Add comment explaining hardcoded team filter exclusion - Replace magic numbers with named constants (FUSE_THRESHOLD, RECOMMENDED_SCORE, MAX_BRANCH_LENGTH) - Remove unused ink-spinner dependency - Add test verifying git -C flag passes root correctly https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — security, correctness, test quality - CRITICAL: Replace execSync shell interpolation with execFileSync to prevent command injection via root parameter in detect.js - CRITICAL: Remove phantom --external:ink-spinner from build script and switch npx to direct esbuild invocation - HIGH: Fix exit race condition — use useEffect instead of setTimeout - HIGH: Wire up onSelect callback in ConversationFlow so Guide mode triggers the result screen in App - HIGH: Destructure and accept ctx prop in ConversationFlow - HIGH: Add back-navigation (Escape) in ConversationFlow - HIGH: Guard against undefined team.focus in commands.js tags - MEDIUM: Use functional setCursor form to avoid stale closures - MEDIUM: Key commandIndices Map by string id instead of object identity - MEDIUM: Improve parseTeams header detection (drop first row approach) - MEDIUM: Filter completed/done/closed items from backlogCount - MEDIUM: Extract shared makeCtx test utility across all test files - MEDIUM: Add null guard to StatusBar truncate helper - LOW: Validate orchestratorPhase is a number in range 1-5 - LOW: Fix pnpm-workspace.yaml list syntax - Replace all setTimeout in tests with vi.waitFor deterministic waits https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * test(start): add coverage for result screen exit path Add App-level test that navigates through ConversationFlow to a leaf node and verifies the result screen text is rendered before exit(). Confirms the synchronous useEffect exit is safe — React commits the render (Ink captures the frame) before useEffect fires. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore: update generated sync output timestamps Generated files updated with current sync date from dev merge. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW --------- Co-authored-by: Claude <noreply@anthropic.com> * fix: caldues heuristics (#398) * feat: complete revisit of agents (#399) (#400) * Add start command: new user entry point with state detection (#387) * fix(commands): add AskUserQuestion to VALID_TOOLS and /start command The /start command session got stuck because AskUserQuestion was not included in the allowed-tools whitelist. This fix addresses three issues: 1. VALID_TOOLS in spec-validator was missing AskUserQuestion, TodoWrite, Agent, and NotebookEdit — preventing commands from declaring these Claude Code built-in tools in their allowed-tools. 2. The /start command template now explicitly includes AskUserQuestion in its allowed-tools frontmatter and instructs the agent to use it for interactive guided choices (Phase 3). 3. Added /start command spec to commands.yaml with AskUserQuestion as a declared tool dependency. Also adds a test case validating all four newly-added tools are accepted by the spec validator. https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M * fix(commands): remove unrendered Handlebars comment from start.md output The generated .claude/commands/start.md contained a raw {{! ... }} Handlebars comment that was not processed by the sync engine. Remove it so the generated output is clean Markdown. https://claude.ai/code/session_01Qh3Xk3jFkVdeRAXTqLvq3M --------- * Add configurable prefix to kits commands (#388) * feat(sync): add configurable command prefix for generated slash commands Add `commandPrefix` setting to overlay settings that namespaces all generated slash commands across platforms: - Claude Code: subdirectory strategy (kits/check.md → /project:kits:check) - Cursor/Windsurf/Copilot/Codex: filename prefix (kits-check.md → /kits-check) - Team commands excluded from prefixing (already namespaced) Changes: - Add resolveCommandPath() helper with subdirectory/filename strategies - Update syncClaudeCommands, syncClaudeSkills, syncCursorCommands, syncWindsurfCommands, syncCopilotPrompts, syncCodexSkills - Add commandPrefix to vars from overlay settings - Add commandPrefixedName to buildCommandVars - Add 16 unit + integration tests (all pass, 93 existing tests unaffected) Default is null (no prefix) for full backwards compatibility. https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p * fix(sync): address review findings for command prefix - Remove unused afterAll import from test file - Add clarifying comment that non-spec command files are also prefixed - Add 2 integration tests verifying commandPrefixedName template variable renders correctly with and without prefix https://claude.ai/code/session_01EBjmVEhi7fP2huAL3SBR6p --------- * fix(ci): CI remediation — package manager, review findings, test stability (#390) * fix(ci): resolve 7 bugs from project review - BUG-001: Replace flaky discover test with controlled temp fixture - BUG-002: Run prettier --write to fix formatting drift - BUG-003: Add form-template detection skip in issue label validation - BUG-005: Change claude.yml to self-hosted runner - BUG-006: Align branch protection required status checks with project.yaml - BUG-007: Fix command injection in resolve-merge.sh (use grep -F) * docs: update changelog, add planning registry review findings - Add changelog entries for Wave 1-3 fixes (Added/Changed/Fixed/Removed) - Add Project Review Findings section to planning registry (PR-001 to PR-014) - Update planning docs after sync merge * feat(review): add --generate-plans flag to project-review command Add Phase 2.5 plan generation after project review findings. When --generate-plans is passed (default: true), scaffold plan files from critical/high findings into docs/planning/review-findings/. Also includes sync cleanup of stale cursor/windsurf settings. * chore(sync): regenerate all outputs after project review fixes * feat(cli): dynamic flag loading from commands.yaml + context-aware template hook - Replace ~200 lines of hardcoded VALID_FLAGS/FLAG_TYPES with loadCommandFlags() that reads flag definitions from commands.yaml at startup - CLI_INTERNAL_FLAGS/CLI_INTERNAL_FLAG_TYPES cover commands not in commands.yaml - Self-validation warns at startup if any flag is missing a type definition - Update cli.test.mjs to validate CLI_INTERNAL_FLAGS consistency - Fix scaffold-once orphan bug: carry forward manifest entries for files skipped by scaffold-once so orphan cleanup does not delete them - Make protect-templates hook context-aware: skip protection in the agentkit-forge source repo (detected via package.json name) so maintainer agents can edit templates; block only in downstream repos * feat(sync): add managed-mode script templates for downstream repos Add 14 script templates (.agentkit/templates/scripts/) with `managed` scaffold mode so downstream repos receive script updates via three-way merge while preserving local customizations. Templates include: create-doc, update-changelog, validate-documentation, validate-numbering, check-documentation-requirement, sync-issues, sync-split-pr, setup-agentkit-branch-governance, and resolve-merge (both .sh and .ps1 variants where applicable). Parameterized templates use {{defaultBranch}} and branch protection variables from project.yaml. Engine wired via syncScripts() under doc-scaffolding feature gate. * feat(teams): add TeamForge meta-team for agent team creation (cogmesh #130) Add the TEAMFORGE meta-team (T11) — a structured pipeline for creating, validating, and deploying new agent team specifications. Adapted from cogmesh #130 with a simplified 6-agent pipeline: - input-clarifier: assess requests, extract constraints - mission-definer: lock team definition (ID, scope, accepts) - role-architect: design agent roles and dependencies - prompt-engineer: write agent descriptions and rules - flow-designer: design team command and integration points - team-validator: quality gate for spec consistency Includes /team-forge command with --task flag (create-team, validate-team, audit-teams, update-team) and planning doc. * feat(teams): add Strategic Ops team for cross-project coordination Add the STRATEGIC OPS team (T12) — handles framework governance, portfolio analysis, adoption strategy, impact assessment, and release coordination across all repos using AgentKit Forge. 5-agent pipeline: - portfolio-analyst: inventory repos, detect drift, adoption metrics - governance-advisor: versioning strategy, breaking change protocols - adoption-strategist: onboarding, migration paths, rollout plans - impact-assessor: blast radius analysis for template/spec changes - release-coordinator: version bumps, sync waves, release comms Includes /team-strategic-ops command with --task and --scope flags. * feat(agents): add agent/team relationship matrix analysis engine + scripts Add comprehensive agent/team relationship analysis with 8 cross-reference matrices and 10 supplementary analyses (orphans, cycles, bottlenecks, reachability, critical path, notification amplifiers, etc.). - Fix YAML structure: strategic-ops agents now under own top-level key - Add explicit agents: lists to forge + strategic-ops teams in teams.yaml - Add consolidation detection responsibilities to portfolio-analyst - Create agent-analysis.mjs engine module (loadFullAgentGraph + renderers) - Wire analyze-agents CLI command with --output/--matrix/--format flags - Add managed-scaffold script templates (bash + PowerShell) - Integrate into sync pipeline (auto-regenerates matrix on spec changes) - Add 33 tests covering all matrices, analyses, and edge cases * chore: update documentation files and add plan template - Add trailing newlines to Cursor command documentation files for consistency - Add new plan template files for project planning - Improve markdown table formatting in Claude skills documentation - Remove obsolete .clinerules/testing.md file - Update various rule files with better formatting and advisory rule alignment * feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14) - Add spec-compliance-auditor to operations category (quality team) — closes the feedback loop between agent specs and actual behavior - Add Cost Ops team (T14) with 5 agents: model-economist, token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter, cost-ops-monitor - Add ai-cost-ops rules domain with 6 conventions (model routing, token budgets, caching, batch APIs, vendor abstraction, credit tracking) - Add team-cost-ops command with --task, --period, --provider flags - Update notification chains: data→cost-ops-monitor, infra→model-economist, retrospective-analyst→spec-compliance-auditor - Add intake routes: cost-ops, agent-performance * fix(teams): add implement to cost-ops team accepts list Resolves agent/team accepts mismatch — token-efficiency-engineer accepts implement but the team definition only had investigate/review/plan/document. * feat(cost-ops): add multi-provider infra cost ticket to backlog Add detailed planning ticket for multi-provider infrastructure cost normalisation, routing, and cost-agent integration. Covers 9 providers (Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS, GCP) with 3-phase delivery plan and cross-team dependency tracking. * fix(templates): resolve PR review comments from CodeRabbit - Fix protect-templates.sh: package name check uses correct "agentkit-forge-runtime" instead of "agentkit-forge" - Fix protect-templates.ps1: malformed path (missing separator before .agentkit) and same package name correction - Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS require() syntax used in the inline Node script - Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder - Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left by sync engine, keeping user formatting + implement in cost-ops * feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents Enable web research capabilities for cost-ops team: - Add WebSearch and WebFetch to /team-cost-ops allowed-tools - Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst, and grant-hunter agent preferred-tools - Add web intake expansion ticket (P2) for MCP crawler, Puppeteer integration, automated pricing refresh, and cross-session persistence - Regenerate sync outputs * feat(cost-ops): add Cost Ops team, agents, and multi-provider cost ticket (#364) * feat(agents): add spec-compliance-auditor feedback loop + Cost Ops team (T14) - Add spec-compliance-auditor to operations category (quality team) — closes the feedback loop between agent specs and actual behavior - Add Cost Ops team (T14) with 5 agents: model-economist, token-efficiency-engineer, vendor-arbitrage-analyst, grant-hunter, cost-ops-monitor - Add ai-cost-ops rules domain with 6 conventions (model routing, token budgets, caching, batch APIs, vendor abstraction, credit tracking) - Add team-cost-ops command with --task, --period, --provider flags - Update notification chains: data→cost-ops-monitor, infra→model-economist, retrospective-analyst→spec-compliance-auditor - Add intake routes: cost-ops, agent-performance * fix(teams): add implement to cost-ops team accepts list Resolves agent/team accepts mismatch — token-efficiency-engineer accepts implement but the team definition only had investigate/review/plan/document. * feat(cost-ops): add multi-provider infra cost ticket to backlog Add detailed planning ticket for multi-provider infrastructure cost normalisation, routing, and cost-agent integration. Covers 9 providers (Anthropic, OpenAI, Google, Mistral, Cohere, self-hosted, Azure, AWS, GCP) with 3-phase delivery plan and cross-team dependency tracking. * fix(templates): resolve PR review comments from CodeRabbit - Fix protect-templates.sh: package name check uses correct "agentkit-forge-runtime" instead of "agentkit-forge" - Fix protect-templates.ps1: malformed path (missing separator before .agentkit) and same package name correction - Fix update-changelog.ps1: change .mjs to .cjs to match CommonJS require() syntax used in the inline Node script - Fix resolve-merge.sh: add fallback for {{defaultBranch}} placeholder - Fix AGENT_TEAMS.md: resolve three-way merge conflict markers left by sync engine, keeping user formatting + implement in cost-ops * feat(cost-ops): add WebSearch/WebFetch tools to cost-ops agents (#365) Enable web research capabilities for cost-ops team: - Add WebSearch and WebFetch to /team-cost-ops allowed-tools - Add WebSearch and WebFetch to model-economist, vendor-arbitrage-analyst, and grant-hunter agent preferred-tools - Add web intake expansion ticket (P2) for MCP crawler, Puppeteer integration, automated pricing refresh, and cross-session persistence - Regenerate sync outputs --------- * fix(teams): address CodeRabbit review findings on strategic-ops PR - Lazy-load js-yaml in cli.mjs after ensureDependencies() to prevent crash when node_modules is missing - Convert YAML frontmatter to PowerShell comment blocks in all 6 PS1 templates to fix invalid PowerShell syntax - Fix protect-templates hook path: use 3 parent traversals to reach .agentkit/package.json from hooks directory - Remove schema-invalid 'phase' field from ai-cost-ops rule domain - Narrow strategic-ops scope: replace **/* catch-all with specific files - Add strategic-ops to cost-ops handoff-chain for consistency - Add Write tool to spec-compliance-auditor, vendor-arbitrage-analyst, and grant-hunter agents - Fix glob matching in resolve-merge.sh (use regex instead of broken sed strip) - Add merge failure vs conflict detection in resolve-merge.ps1 - Add branch existence check in setup-agentkit-branch-governance scripts - Add gh CLI preflight check in sync-split-pr.ps1 - Deduplicate branch protection loop when defaultBranch is 'main' - Fix applies-to glob: docs/planning/cost/** → docs/planning/cost-governance/** - Fix non-canonical doc paths in intake-agent-proposal.md - Add changelog entries for new teams, agents, and analysis engine - Resolve AGENT_TEAMS.md merge conflict (accept narrowed scope) - Run prettier on all modified files * fix(templates): add gh auth preflight and changelog divider handling - sync-split-pr.ps1: add gh auth status check before side effects - update-changelog.ps1: stop before --- divider when appending entries Addresses CodeRabbit review comments #7 and #13 on PR #356. * fix(sync): set executable permission on analyze-agents.sh Linux CI sync produces +x permissions; align local to match. * fix(templates): address CodeRabbit review round 3-4 findings - Fix YAML frontmatter in copilot agent template: use double quotes for description field to handle apostrophes (CRITICAL) - Fix protect-templates.sh/ps1 path traversal: correct parent directory count for .agentkit/package.json source repo detection - Add $PSNativeCommandUseErrorActionPreference to sync-split-pr.ps1 so native command failures (git, pnpm, gh) are treated as fatal - Replace try/catch with $LASTEXITCODE check for gh auth status - Deduplicate branch loop in setup-agentkit-branch-governance.sh when defaultBranch equals 'main' - Fix duplicate verification echo lines in governance scripts * style(docs): fix prettier formatting on planning documents Run prettier --write on web-intake-expansion.md and intake-agent-proposal.md to fix CI formatting check. * fix(tests): isolate render target gating tests with fresh temp dirs Tests in the "render target gating" describe block shared a single temp directory via beforeAll/afterAll. The first test ran --only claude (generating .claude/ files), and the second ran --only warp expecting no Claude files — but leftovers from test 1 caused the assertion to fail. Changing to beforeEach/afterEach gives each test a clean directory. Closes #377 * feat(commands): add /start command as new user entry point Adds a context-aware triage command that detects repository state (fresh clone, post-discovery, mid-session, uncommitted work) and guides users to the right command or team for their goal. Includes team routing table, 4 contextual flows, and decision guidance for when users don't know which team to use. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * refactor(commands): add Arguments and State Management sections to /start Addresses TEAMFORGE validation findings: - Add dedicated Arguments section documenting $ARGUMENTS handling - Add State Management section (reads/writes inventory) - Fix frontmatter: remove misleading generated_by field - Add explicit "manually authored" comment header https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): add /start to spec and template for cross-repo generation Moves /start from a hand-authored command to a proper spec-driven, sync-generated command available to any repo that adopts AgentKit Forge. - Add start command definition to commands.yaml (no feature gate — always on) - Create start.md template in .agentkit/templates/claude/commands/ - Add /start to CLAUDE.md Quick Reference table template https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after adding /start command Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): make /start team routing dynamic instead of hardcoded Replace the static team routing table with dynamic discovery: 1. Read AGENT_TEAMS.md (from /discover) at runtime 2. Fall back to .agentkit/spec/teams.yaml 3. Fall back to /team-* command frontmatter This ensures /start always reflects the actual teams configured in any repo, rather than a hardcoded list that could go stale. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after dynamic routing change Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add interactive TUI entry point with hybrid UI Replace static markdown output with an ink-based terminal UI that combines two modes: a guided conversation flow for first-run users and a fuzzy-searchable command palette for returning users. A persistent status bar shows repo state at a glance (branch, phase, backlog count, working tree status). - Context detection module mirrors /start Phase 1 signals - ConversationFlow: branching dialogue tree (choose-your-own-adventure) - CommandPalette: fuzzy search with context-ranked star recommendations - StatusBar: tmux-style persistent strip with color-coded segments - Supports --json flag for scripting/piping https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add test suite, error handling, and refactor for production readiness - Add vitest test infrastructure with 102 tests across 7 files - Coverage: 95.58% statements, 90.81% branches, 96.72% functions - Extract conversation tree to separate config module for testability - Add error boundary to App component for graceful error display - Add --help flag with usage documentation - Add TTY detection with JSON fallback for non-interactive environments - Add SIGINT/SIGTERM signal handling for clean exit https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore: add coverage to gitignore, include plan and workspace config https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — unused code, git cwd, magic numbers - Call exit() after command selection so Ink process terminates - Remove unused ctx prop from Header component - Fix git commands to use -C flag with root path parameter - Extract dumpContextJson() helper to deduplicate JSON output logic - Add comment explaining hardcoded team filter exclusion - Replace magic numbers with named constants (FUSE_THRESHOLD, RECOMMENDED_SCORE, MAX_BRANCH_LENGTH) - Remove unused ink-spinner dependency - Add test verifying git -C flag passes root correctly https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — security, correctness, test quality - CRITICAL: Replace execSync shell interpolation with execFileSync to prevent command injection via root parameter in detect.js - CRITICAL: Remove phantom --external:ink-spinner from build script and switch npx to direct esbuild invocation - HIGH: Fix exit race condition — use useEffect instead of setTimeout - HIGH: Wire up onSelect callback in ConversationFlow so Guide mode triggers the result screen in App - HIGH: Destructure and accept ctx prop in ConversationFlow - HIGH: Add back-navigation (Escape) in ConversationFlow - HIGH: Guard against undefined team.focus in commands.js tags - MEDIUM: Use functional setCursor form to avoid stale closures - MEDIUM: Key commandIndices Map by string id instead of object identity - MEDIUM: Improve parseTeams header detection (drop first row approach) - MEDIUM: Filter completed/done/closed items from backlogCount - MEDIUM: Extract shared makeCtx test utility across all test files - MEDIUM: Add null guard to StatusBar truncate helper - LOW: Validate orchestratorPhase is a number in range 1-5 - LOW: Fix pnpm-workspace.yaml list syntax - Replace all setTimeout in tests with vi.waitFor deterministic waits https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(engine): add pre-sync commit guard and interactive apply mode Adds two safety features to the sync pipeline: 1. Pre-sync commit guard: Detects uncommitted changes in protected directories (.agentkit/engines, spec, overlays) before sync runs. In TTY mode, prompts to abort, stash, or continue. In non-TTY mode (CI), prints a warning and proceeds. 2. Interactive apply mode: After rendering, shows a change summary and prompts: apply all / skip all / prompt each file. Per-file prompt supports show-diff and apply-all-remaining. Default in TTY; bypassed with --yes, --no-prompt, or --force. New module: sync-guard.mjs with 4 exported functions and 7 tests. New CLI flags: --yes, --no-prompt for non-interactive sync. * chore(sync): regenerate outputs after branch merges * chore(sync): regenerate outputs after merge of new-user-entry-point * feat(engine): add configurable package manager and fix review findings - Add `stack.packageManager` field to project.yaml (pnpm | npm | yarn) - Derive helper template vars (pmInstall, pmRun, pmExec, pmLockfile, etc.) - Update CLAUDE.md template and hook/workflow templates to use {{packageManager}} - Fix sync-guard to exclude .agentkit/spec from protected dirs and add try/catch - Remove duplicate cost-ops team definition from teams.yaml - Pin all dependency versions in package.json (remove ^ prefixes) - Add vitest coverage thresholds (80% statements/branches/functions/lines) - Fix src/start/ code quality: null guards, exit delay, error boundaries - Harden consolidate-branches.sh: self-resolution guard, stash restore - Regenerate all 533 output files via agentkit sync * chore(engine): add brand color palette variables to sync vars * fix(ci): fix test race condition, workspace config, and lockfile - Fix ConversationFlow test: wait for 'Got it' before asserting hint text - Add packages field to pnpm-workspace.yaml for proper workspace resolution - Regenerate lockfile after version pinning (removed ^ prefixes) - Remove accidental .agentkit/templates/src/ artifacts * fix(start): add event loop yields to ConversationFlow tests ink-select-input needs setImmediate yields after a new menu renders before it can process ENTER keypresses. Without this, the second ENTER in leaf-selection tests was swallowed, causing intermittent failures. --------- * fix(spec): correct githubSlug to phoenixvc/agentkit-forge (#391) * Add entry point for new framework users (#389) * feat(commands): add /start command as new user entry point Adds a context-aware triage command that detects repository state (fresh clone, post-discovery, mid-session, uncommitted work) and guides users to the right command or team for their goal. Includes team routing table, 4 contextual flows, and decision guidance for when users don't know which team to use. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * refactor(commands): add Arguments and State Management sections to /start Addresses TEAMFORGE validation findings: - Add dedicated Arguments section documenting $ARGUMENTS handling - Add State Management section (reads/writes inventory) - Fix frontmatter: remove misleading generated_by field - Add explicit "manually authored" comment header https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): add /start to spec and template for cross-repo generation Moves /start from a hand-authored command to a proper spec-driven, sync-generated command available to any repo that adopts AgentKit Forge. - Add start command definition to commands.yaml (no feature gate — always on) - Create start.md template in .agentkit/templates/claude/commands/ - Add /start to CLAUDE.md Quick Reference table template https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after adding /start command Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(commands): make /start team routing dynamic instead of hardcoded Replace the static team routing table with dynamic discovery: 1. Read AGENT_TEAMS.md (from /discover) at runtime 2. Fall back to .agentkit/spec/teams.yaml 3. Fall back to /team-* command frontmatter This ensures /start always reflects the actual teams configured in any repo, rather than a hardcoded list that could go stale. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore(sync): regenerate outputs after dynamic routing change Generated by: pnpm -C .agentkit agentkit:sync https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add interactive TUI entry point with hybrid UI Replace static markdown output with an ink-based terminal UI that combines two modes: a guided conversation flow for first-run users and a fuzzy-searchable command palette for returning users. A persistent status bar shows repo state at a glance (branch, phase, backlog count, working tree status). - Context detection module mirrors /start Phase 1 signals - ConversationFlow: branching dialogue tree (choose-your-own-adventure) - CommandPalette: fuzzy search with context-ranked star recommendations - StatusBar: tmux-style persistent strip with color-coded segments - Supports --json flag for scripting/piping https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * feat(start): add test suite, error handling, and refactor for production readiness - Add vitest test infrastructure with 102 tests across 7 files - Coverage: 95.58% statements, 90.81% branches, 96.72% functions - Extract conversation tree to separate config module for testability - Add error boundary to App component for graceful error display - Add --help flag with usage documentation - Add TTY detection with JSON fallback for non-interactive environments - Add SIGINT/SIGTERM signal handling for clean exit https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore: add coverage to gitignore, include plan and workspace config https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — unused code, git cwd, magic numbers - Call exit() after command selection so Ink process terminates - Remove unused ctx prop from Header component - Fix git commands to use -C flag with root path parameter - Extract dumpContextJson() helper to deduplicate JSON output logic - Add comment explaining hardcoded team filter exclusion - Replace magic numbers with named constants (FUSE_THRESHOLD, RECOMMENDED_SCORE, MAX_BRANCH_LENGTH) - Remove unused ink-spinner dependency - Add test verifying git -C flag passes root correctly https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * fix(start): address review findings — security, correctness, test quality - CRITICAL: Replace execSync shell interpolation with execFileSync to prevent command injection via root parameter in detect.js - CRITICAL: Remove phantom --external:ink-spinner from build script and switch npx to direct esbuild invocation - HIGH: Fix exit race condition — use useEffect instead of setTimeout - HIGH: Wire up onSelect callback in ConversationFlow so Guide mode triggers the result screen in App - HIGH: Destructure and accept ctx prop in ConversationFlow - HIGH: Add back-navigation (Escape) in ConversationFlow - HIGH: Guard against undefined team.focus in commands.js tags - MEDIUM: Use functional setCursor form to avoid stale closures - MEDIUM: Key commandIndices Map by string id instead of object identity - MEDIUM: Improve parseTeams header detection (drop first row approach) - MEDIUM: Filter completed/done/closed items from backlogCount - MEDIUM: Extract shared makeCtx test utility across all test files - MEDIUM: Add null guard to StatusBar truncate helper - LOW: Validate orchestratorPhase is a number in range 1-5 - LOW: Fix pnpm-workspace.yaml list syntax - Replace all setTimeout in tests with vi.waitFor deterministic waits https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * test(start): add coverage for result screen exit path Add App-level test that navigates through ConversationFlow to a leaf node and verifies the result screen text is rendered before exit(). Confirms the synchronous useEffect exit is safe — React commits the render (Ink captures the frame) before useEffect fires. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW * chore: update generated sync output timestamps Generated files updated with current sync date from dev merge. https://claude.ai/code/session_01Gy1HvvywVe6Z2iFJ2bHYCW --------- * fix: caldues heuristics (#398) --------- Co-authored-by: Claude <noreply@anthropic.com> * fix(quality): resolve all lint and format errors - Fix Prettier formatting across engine src and start components - Resolve 381 markdown lint errors (MD040, MD024, MD036, MD029, MD022, MD001) - Add markdownlint config rules for intentional doc patterns - Add .claude/worktrees to prettierignore to exclude external branches - Enable markdownlint MD024/MD026 for duplicate headings and trailing colons All quality checks now pass: Prettier (0 errors), Markdown lint (0 errors), Tests (111/111), Build (28.9kb) * I'll update the last_updated field in all the files from '2026-03-12' to '2026-03-13'. This appears to be a routine timestamp update across all the AgentKit Forge generated files. * docs: add AgentKit Forge sync feedback Add detailed feedback on AgentKit Forge v3.1.0 integration, focusing on: - Windows line-ending issues and multi-editor sync behavior - Documentation scaffold-once limitations and override challenges - Unresolved placeholder warnings lacking diagnostics - Windows-specific pnpm execution problems * docs: update CLAUDE.md with repository-specific editing guidelines Clarified that modifications to `.agentkit` files are permitted in the agentkit-forge repository, while upstream directories remain protected. This ensures users understand the editing boundaries for project configuration and template files. * docs(claude): allow .agentkit edits in this repo (NB for framework dev) Made-with: Cursor * chore(sync): regenerate outputs after agentkit:sync Made-with: Cursor * Fix/generated files and conflict markers (#427) * fix(infra): resolve container app fqdn attribute and format code * chore(sync): update AGENT_BACKLOG.md and other files for task management - Enhanced AGENT_BACKLOG.md with detailed task scopes for CI pipeline configuration and test framework setup. - Added new docker-compose.yml for local/staging validation of the framework. - Updated CONTRIBUTING.md to include documentation hub link in the Discovery phase. - Introduced README.md files in db, infra, and migrations directories to clarify their purpose for adopters. - Added API conventions documentation to guide adopters on structuring their APIs. - Created implementation plan for state management improvements and added relevant tests. - Regenerated outputs across various files to reflect recent changes and ensure consistency. * chore(ci): reduce CodeQL to weekly + manual only (#430) * chore(ci): reduce CodeQL to weekly schedule + manual trigger Removes push and pull_request triggers to reduce GitHub Actions costs. Scans were running on every PR including Renovate dependency updates. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * docs(architecture): add tool-neutral agent hub findings, ADR-10, and adoption roadmap (#428) * docs(architecture): add tool-neutral agent hub findings, ADR-10, and adoption roadmap Comparative analysis of agentkit-forge sync engine vs Mystira.workspace hand-authored .agents/ pattern. Documents 5-phase adoption roadmap to converge both approaches: .agents/ as sync target, reflective guards, .readme.yaml generation, cross-session traces, and schema formalisation. Includes regenerated sync output (updated timestamps across all tools). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(architecture): add competitive landscape an…
Summary
docs/architecture/specs/tool-neutral-agent-hub-findings.md): Comparative structural analysis of agentkit-forge's sync engine vs Mystira.workspace's hand-authored.agents/hub pattern. Covers 10-dimension comparison matrix, 5 key innovations to adopt, cross-agent ecosystem implications, and lock-in assessment.docs/architecture/decisions/10-tool-neutral-agent-hub.md): Proposes adopting.agents/as a first-class sync output target — a tool-neutral hub readable by any AI agent regardless of platform.docs/planning/framework/tool-neutral-hub-adoption-roadmap.md): 5-phase plan (8–11 sessions) covering.agents/sync target, reflective guards,.readme.yamlgeneration, cross-session traces, and schema formalisation.Key Architectural Insight
Guards are the canonical governance layer (portable, any agent can read); hooks are platform-specific enforcement (automated, but only for tools with shell access).
.agents/becomes the shared hub; tool-specific dirs become thin wrappers.Test plan
🤖 Generated with Claude Code