@entelligentsia/forgecli 1.0.25 → 1.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +258 -0
- package/README.md +2 -0
- package/dist/CHANGELOG-forge-plugin.md +163 -0
- package/dist/bin/argv.d.ts +2 -2
- package/dist/bin/argv.js +25 -0
- package/dist/bin/argv.js.map +1 -1
- package/dist/bin/forge.js +12 -0
- package/dist/bin/forge.js.map +1 -1
- package/dist/bin/init.d.ts +23 -0
- package/dist/bin/init.js +123 -0
- package/dist/bin/init.js.map +1 -0
- package/dist/bin/uninstall.d.ts +20 -0
- package/dist/bin/uninstall.js +141 -0
- package/dist/bin/uninstall.js.map +1 -0
- package/dist/extensions/forgecli/add-pipeline.d.ts +19 -0
- package/dist/extensions/forgecli/add-pipeline.js +143 -0
- package/dist/extensions/forgecli/add-pipeline.js.map +1 -0
- package/dist/extensions/forgecli/add-task.d.ts +20 -0
- package/dist/extensions/forgecli/add-task.js +154 -0
- package/dist/extensions/forgecli/add-task.js.map +1 -0
- package/dist/extensions/forgecli/approve.d.ts +22 -0
- package/dist/extensions/forgecli/approve.js +152 -0
- package/dist/extensions/forgecli/approve.js.map +1 -0
- package/dist/extensions/forgecli/banner.d.ts +10 -0
- package/dist/extensions/forgecli/banner.js +36 -0
- package/dist/extensions/forgecli/banner.js.map +1 -0
- package/dist/extensions/forgecli/calibrate.d.ts +64 -0
- package/dist/extensions/forgecli/calibrate.js +481 -0
- package/dist/extensions/forgecli/calibrate.js.map +1 -0
- package/dist/extensions/forgecli/claude-bootstrap/bootstrap.d.ts +40 -0
- package/dist/extensions/forgecli/claude-bootstrap/bootstrap.js +593 -0
- package/dist/extensions/forgecli/claude-bootstrap/bootstrap.js.map +1 -0
- package/dist/extensions/forgecli/claude-bootstrap/settings-merge.d.ts +46 -0
- package/dist/extensions/forgecli/claude-bootstrap/settings-merge.js +245 -0
- package/dist/extensions/forgecli/claude-bootstrap/settings-merge.js.map +1 -0
- package/dist/extensions/forgecli/claude-bootstrap/uninstall.d.ts +23 -0
- package/dist/extensions/forgecli/claude-bootstrap/uninstall.js +215 -0
- package/dist/extensions/forgecli/claude-bootstrap/uninstall.js.map +1 -0
- package/dist/extensions/forgecli/collate.d.ts +22 -0
- package/dist/extensions/forgecli/collate.js +134 -0
- package/dist/extensions/forgecli/collate.js.map +1 -0
- package/dist/extensions/forgecli/commit.d.ts +22 -0
- package/dist/extensions/forgecli/commit.js +152 -0
- package/dist/extensions/forgecli/commit.js.map +1 -0
- package/dist/extensions/forgecli/config-command.d.ts +8 -0
- package/dist/extensions/forgecli/config-command.js +67 -0
- package/dist/extensions/forgecli/config-command.js.map +1 -0
- package/dist/extensions/forgecli/config-layer.d.ts +53 -0
- package/dist/extensions/forgecli/config-layer.js +72 -0
- package/dist/extensions/forgecli/config-layer.js.map +1 -0
- package/dist/extensions/forgecli/config-writer.d.ts +16 -0
- package/dist/extensions/forgecli/config-writer.js +69 -0
- package/dist/extensions/forgecli/config-writer.js.map +1 -0
- package/dist/extensions/forgecli/dashboard/component.js +10 -7
- package/dist/extensions/forgecli/dashboard/component.js.map +1 -1
- package/dist/extensions/forgecli/enhance.d.ts +27 -0
- package/dist/extensions/forgecli/enhance.js +199 -0
- package/dist/extensions/forgecli/enhance.js.map +1 -0
- package/dist/extensions/forgecli/fix-bug.d.ts +85 -0
- package/dist/extensions/forgecli/fix-bug.js +1580 -0
- package/dist/extensions/forgecli/fix-bug.js.map +1 -0
- package/dist/extensions/forgecli/forge-header.d.ts +12 -0
- package/dist/extensions/forgecli/forge-header.js +114 -0
- package/dist/extensions/forgecli/forge-header.js.map +1 -0
- package/dist/extensions/forgecli/forge-init.d.ts +26 -0
- package/dist/extensions/forgecli/forge-init.js +514 -0
- package/dist/extensions/forgecli/forge-init.js.map +1 -0
- package/dist/extensions/forgecli/forge-root.d.ts +10 -0
- package/dist/extensions/forgecli/forge-root.js +62 -0
- package/dist/extensions/forgecli/forge-root.js.map +1 -0
- package/dist/extensions/forgecli/forge-update-command.d.ts +100 -0
- package/dist/extensions/forgecli/forge-update-command.js +435 -0
- package/dist/extensions/forgecli/forge-update-command.js.map +1 -0
- package/dist/extensions/forgecli/friction-emit.d.ts +99 -0
- package/dist/extensions/forgecli/friction-emit.js +245 -0
- package/dist/extensions/forgecli/friction-emit.js.map +1 -0
- package/dist/extensions/forgecli/implement.d.ts +22 -0
- package/dist/extensions/forgecli/implement.js +170 -0
- package/dist/extensions/forgecli/implement.js.map +1 -0
- package/dist/extensions/forgecli/init-context.d.ts +99 -0
- package/dist/extensions/forgecli/init-context.js +178 -0
- package/dist/extensions/forgecli/init-context.js.map +1 -0
- package/dist/extensions/forgecli/init-progress.d.ts +39 -0
- package/dist/extensions/forgecli/init-progress.js +117 -0
- package/dist/extensions/forgecli/init-progress.js.map +1 -0
- package/dist/extensions/forgecli/input-router.d.ts +33 -0
- package/dist/extensions/forgecli/input-router.js +136 -0
- package/dist/extensions/forgecli/input-router.js.map +1 -0
- package/dist/extensions/forgecli/lib/halt-advisor.d.ts +59 -0
- package/dist/extensions/forgecli/lib/halt-advisor.js +113 -0
- package/dist/extensions/forgecli/lib/halt-advisor.js.map +1 -0
- package/dist/extensions/forgecli/lib/orchestrator-preflight.d.ts +46 -0
- package/dist/extensions/forgecli/lib/orchestrator-preflight.js +64 -0
- package/dist/extensions/forgecli/lib/orchestrator-preflight.js.map +1 -0
- package/dist/extensions/forgecli/materialize.d.ts +16 -0
- package/dist/extensions/forgecli/materialize.js +195 -0
- package/dist/extensions/forgecli/materialize.js.map +1 -0
- package/dist/extensions/forgecli/migrate.d.ts +22 -0
- package/dist/extensions/forgecli/migrate.js +260 -0
- package/dist/extensions/forgecli/migrate.js.map +1 -0
- package/dist/extensions/forgecli/migration-engine.d.ts +117 -0
- package/dist/extensions/forgecli/migration-engine.js +563 -0
- package/dist/extensions/forgecli/migration-engine.js.map +1 -0
- package/dist/extensions/forgecli/model-registry.d.ts +61 -0
- package/dist/extensions/forgecli/model-registry.js +127 -0
- package/dist/extensions/forgecli/model-registry.js.map +1 -0
- package/dist/extensions/forgecli/model-resolver.d.ts +32 -0
- package/dist/extensions/forgecli/model-resolver.js +65 -0
- package/dist/extensions/forgecli/model-resolver.js.map +1 -0
- package/dist/extensions/forgecli/model-validator.d.ts +29 -0
- package/dist/extensions/forgecli/model-validator.js +107 -0
- package/dist/extensions/forgecli/model-validator.js.map +1 -0
- package/dist/extensions/forgecli/orchestrator-status-bar.d.ts +26 -0
- package/dist/extensions/forgecli/orchestrator-status-bar.js +213 -0
- package/dist/extensions/forgecli/orchestrator-status-bar.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-body.d.ts +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-body.js +65 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-body.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-id.d.ts +23 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-id.js +140 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-id.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.d.ts +54 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.js +349 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phase-dispatch.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phases.d.ts +8 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phases.js +60 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-phases.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-state.d.ts +14 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-state.js +100 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-state.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.d.ts +72 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.js +204 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-triage-routing.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.d.ts +38 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.js +166 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict-loop.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.d.ts +3 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.js +55 -0
- package/dist/extensions/forgecli/orchestrators/bug/bug-verdict.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.d.ts +7 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.js +293 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-command.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.d.ts +2 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.js +501 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-pipeline.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.d.ts +41 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.js +5 -0
- package/dist/extensions/forgecli/orchestrators/bug/run-bug-types.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.d.ts +43 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.js +85 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-entry.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.d.ts +8 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.js +37 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-misc.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.d.ts +28 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.js +45 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-notify.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.d.ts +26 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.js +75 -0
- package/dist/extensions/forgecli/orchestrators/common/orchestrator-transcript-session.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/common/summary-recovery.d.ts +24 -0
- package/dist/extensions/forgecli/orchestrators/common/summary-recovery.js +37 -0
- package/dist/extensions/forgecli/orchestrators/common/summary-recovery.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/fix-bug.d.ts +9 -93
- package/dist/extensions/forgecli/orchestrators/fix-bug.js +23 -1721
- package/dist/extensions/forgecli/orchestrators/fix-bug.js.map +1 -1
- package/dist/extensions/forgecli/orchestrators/run-sprint.d.ts +3 -12
- package/dist/extensions/forgecli/orchestrators/run-sprint.js +48 -270
- package/dist/extensions/forgecli/orchestrators/run-sprint.js.map +1 -1
- package/dist/extensions/forgecli/orchestrators/run-task.d.ts +10 -214
- package/dist/extensions/forgecli/orchestrators/run-task.js +31 -1481
- package/dist/extensions/forgecli/orchestrators/run-task.js.map +1 -1
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.d.ts +33 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.js +135 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-ceremony.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.d.ts +18 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.js +55 -0
- package/dist/extensions/forgecli/orchestrators/sprint/sprint-state.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-command.d.ts +9 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-command.js +174 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-command.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.d.ts +2 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.js +494 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-pipeline.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-types.d.ts +62 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-types.js +5 -0
- package/dist/extensions/forgecli/orchestrators/task/run-task-types.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-body.d.ts +4 -0
- package/dist/extensions/forgecli/orchestrators/task/task-body.js +48 -0
- package/dist/extensions/forgecli/orchestrators/task/task-body.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-events.d.ts +63 -0
- package/dist/extensions/forgecli/orchestrators/task/task-events.js +185 -0
- package/dist/extensions/forgecli/orchestrators/task/task-events.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-gates.d.ts +34 -0
- package/dist/extensions/forgecli/orchestrators/task/task-gates.js +78 -0
- package/dist/extensions/forgecli/orchestrators/task/task-gates.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.d.ts +42 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.js +370 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phase-dispatch.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phases.d.ts +14 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phases.js +26 -0
- package/dist/extensions/forgecli/orchestrators/task/task-phases.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-record.d.ts +9 -0
- package/dist/extensions/forgecli/orchestrators/task/task-record.js +58 -0
- package/dist/extensions/forgecli/orchestrators/task/task-record.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-state.d.ts +14 -0
- package/dist/extensions/forgecli/orchestrators/task/task-state.js +35 -0
- package/dist/extensions/forgecli/orchestrators/task/task-state.js.map +1 -0
- package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.d.ts +36 -0
- package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.js +152 -0
- package/dist/extensions/forgecli/orchestrators/task/task-verdict-loop.js.map +1 -0
- package/dist/extensions/forgecli/plan.d.ts +22 -0
- package/dist/extensions/forgecli/plan.js +167 -0
- package/dist/extensions/forgecli/plan.js.map +1 -0
- package/dist/extensions/forgecli/quiz-agent.d.ts +17 -0
- package/dist/extensions/forgecli/quiz-agent.js +98 -0
- package/dist/extensions/forgecli/quiz-agent.js.map +1 -0
- package/dist/extensions/forgecli/read-command.d.ts +2 -0
- package/dist/extensions/forgecli/read-command.js +100 -0
- package/dist/extensions/forgecli/read-command.js.map +1 -0
- package/dist/extensions/forgecli/regenerate.d.ts +40 -0
- package/dist/extensions/forgecli/regenerate.js +438 -0
- package/dist/extensions/forgecli/regenerate.js.map +1 -0
- package/dist/extensions/forgecli/remove-command.d.ts +17 -0
- package/dist/extensions/forgecli/remove-command.js +124 -0
- package/dist/extensions/forgecli/remove-command.js.map +1 -0
- package/dist/extensions/forgecli/report-bug.d.ts +25 -0
- package/dist/extensions/forgecli/report-bug.js +159 -0
- package/dist/extensions/forgecli/report-bug.js.map +1 -0
- package/dist/extensions/forgecli/retrospective.d.ts +20 -0
- package/dist/extensions/forgecli/retrospective.js +126 -0
- package/dist/extensions/forgecli/retrospective.js.map +1 -0
- package/dist/extensions/forgecli/review-code.d.ts +35 -0
- package/dist/extensions/forgecli/review-code.js +196 -0
- package/dist/extensions/forgecli/review-code.js.map +1 -0
- package/dist/extensions/forgecli/review-plan.d.ts +35 -0
- package/dist/extensions/forgecli/review-plan.js +200 -0
- package/dist/extensions/forgecli/review-plan.js.map +1 -0
- package/dist/extensions/forgecli/run-sprint.d.ts +27 -0
- package/dist/extensions/forgecli/run-sprint.js +716 -0
- package/dist/extensions/forgecli/run-sprint.js.map +1 -0
- package/dist/extensions/forgecli/run-task.d.ts +204 -0
- package/dist/extensions/forgecli/run-task.js +1403 -0
- package/dist/extensions/forgecli/run-task.js.map +1 -0
- package/dist/extensions/forgecli/skill-curation-flag.d.ts +21 -0
- package/dist/extensions/forgecli/skill-curation-flag.js +71 -0
- package/dist/extensions/forgecli/skill-curation-flag.js.map +1 -0
- package/dist/extensions/forgecli/skill-curator-subagent.d.ts +102 -0
- package/dist/extensions/forgecli/skill-curator-subagent.js +339 -0
- package/dist/extensions/forgecli/skill-curator-subagent.js.map +1 -0
- package/dist/extensions/forgecli/skill-retriever.d.ts +84 -0
- package/dist/extensions/forgecli/skill-retriever.js +246 -0
- package/dist/extensions/forgecli/skill-retriever.js.map +1 -0
- package/dist/extensions/forgecli/skill-usage-tracker.d.ts +91 -0
- package/dist/extensions/forgecli/skill-usage-tracker.js +224 -0
- package/dist/extensions/forgecli/skill-usage-tracker.js.map +1 -0
- package/dist/extensions/forgecli/sprint-intake.d.ts +10 -0
- package/dist/extensions/forgecli/sprint-intake.js +91 -0
- package/dist/extensions/forgecli/sprint-intake.js.map +1 -0
- package/dist/extensions/forgecli/sprint-plan.d.ts +14 -0
- package/dist/extensions/forgecli/sprint-plan.js +122 -0
- package/dist/extensions/forgecli/sprint-plan.js.map +1 -0
- package/dist/extensions/forgecli/status-command.d.ts +19 -0
- package/dist/extensions/forgecli/status-command.js +140 -0
- package/dist/extensions/forgecli/status-command.js.map +1 -0
- package/dist/extensions/forgecli/store-error-remediation.d.ts +65 -0
- package/dist/extensions/forgecli/store-error-remediation.js +307 -0
- package/dist/extensions/forgecli/store-error-remediation.js.map +1 -0
- package/dist/extensions/forgecli/store-query.d.ts +22 -0
- package/dist/extensions/forgecli/store-query.js +107 -0
- package/dist/extensions/forgecli/store-query.js.map +1 -0
- package/dist/extensions/forgecli/store-repair.d.ts +17 -0
- package/dist/extensions/forgecli/store-repair.js +123 -0
- package/dist/extensions/forgecli/store-repair.js.map +1 -0
- package/dist/extensions/forgecli/store-resolver.d.ts +56 -0
- package/dist/extensions/forgecli/store-resolver.js +263 -0
- package/dist/extensions/forgecli/store-resolver.js.map +1 -0
- package/dist/extensions/forgecli/store-validator.d.ts +16 -0
- package/dist/extensions/forgecli/store-validator.js +32 -0
- package/dist/extensions/forgecli/store-validator.js.map +1 -0
- package/dist/extensions/forgecli/test-orchestrate.d.ts +2 -0
- package/dist/extensions/forgecli/test-orchestrate.js +182 -0
- package/dist/extensions/forgecli/test-orchestrate.js.map +1 -0
- package/dist/extensions/forgecli/thread-switcher.d.ts +5 -0
- package/dist/extensions/forgecli/thread-switcher.js +189 -0
- package/dist/extensions/forgecli/thread-switcher.js.map +1 -0
- package/dist/extensions/forgecli/transition-guard.d.ts +20 -0
- package/dist/extensions/forgecli/transition-guard.js +89 -0
- package/dist/extensions/forgecli/transition-guard.js.map +1 -0
- package/dist/extensions/forgecli/update/forge-update-command.js +10 -7
- package/dist/extensions/forgecli/update/forge-update-command.js.map +1 -1
- package/dist/extensions/forgecli/update-check.d.ts +37 -0
- package/dist/extensions/forgecli/update-check.js +185 -0
- package/dist/extensions/forgecli/update-check.js.map +1 -0
- package/dist/extensions/forgecli/update-tools.d.ts +23 -0
- package/dist/extensions/forgecli/update-tools.js +135 -0
- package/dist/extensions/forgecli/update-tools.js.map +1 -0
- package/dist/extensions/forgecli/validate.d.ts +22 -0
- package/dist/extensions/forgecli/validate.js +152 -0
- package/dist/extensions/forgecli/validate.js.map +1 -0
- package/dist/extensions/forgecli/viewport-events.d.ts +78 -0
- package/dist/extensions/forgecli/viewport-events.js +243 -0
- package/dist/extensions/forgecli/viewport-events.js.map +1 -0
- package/dist/extensions/forgecli/viewport-renderer.d.ts +83 -0
- package/dist/extensions/forgecli/viewport-renderer.js +233 -0
- package/dist/extensions/forgecli/viewport-renderer.js.map +1 -0
- package/dist/extensions/forgecli/viewport-theme.d.ts +11 -0
- package/dist/extensions/forgecli/viewport-theme.js +128 -0
- package/dist/extensions/forgecli/viewport-theme.js.map +1 -0
- package/dist/extensions/forgecli/whats-new-widget.d.ts +26 -0
- package/dist/extensions/forgecli/whats-new-widget.js +376 -0
- package/dist/extensions/forgecli/whats-new-widget.js.map +1 -0
- package/dist/extensions/forgecli/whats-new.d.ts +120 -0
- package/dist/extensions/forgecli/whats-new.js +470 -0
- package/dist/extensions/forgecli/whats-new.js.map +1 -0
- package/dist/forge-payload/.base-pack/commands/approve.md +2 -2
- package/dist/forge-payload/.base-pack/commands/check-agent.md +2 -2
- package/dist/forge-payload/.base-pack/commands/collate.md +2 -2
- package/dist/forge-payload/.base-pack/commands/commit.md +2 -2
- package/dist/forge-payload/.base-pack/commands/enhance.md +2 -2
- package/dist/forge-payload/.base-pack/commands/fix-bug.md +2 -2
- package/dist/forge-payload/.base-pack/commands/implement.md +2 -2
- package/dist/forge-payload/.base-pack/commands/init.md +278 -0
- package/dist/forge-payload/.base-pack/commands/new-sprint.md +2 -2
- package/dist/forge-payload/.base-pack/commands/plan-sprint.md +2 -2
- package/dist/forge-payload/.base-pack/commands/plan.md +2 -2
- package/dist/forge-payload/.base-pack/commands/retro.md +2 -2
- package/dist/forge-payload/.base-pack/commands/review-code.md +2 -2
- package/dist/forge-payload/.base-pack/commands/review-plan.md +2 -2
- package/dist/forge-payload/.base-pack/commands/run-sprint.md +2 -2
- package/dist/forge-payload/.base-pack/commands/run-task.md +2 -2
- package/dist/forge-payload/.base-pack/commands/validate.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/collator_agent.md +5 -6
- package/dist/forge-payload/.base-pack/workflows/migrate_structural.md +1 -1
- package/dist/forge-payload/.base-pack/workflows-js/wfl-init.js +449 -0
- package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
- package/dist/forge-payload/.schemas/enum-catalog.json +2 -2
- package/dist/forge-payload/.schemas/migrations.json +85 -0
- package/dist/forge-payload/commands/add-pipeline.md +1 -1
- package/dist/forge-payload/commands/add-task.md +3 -3
- package/dist/forge-payload/commands/ask.md +1 -1
- package/dist/forge-payload/commands/check-agent.md +1 -1
- package/dist/forge-payload/commands/config.md +1 -1
- package/dist/forge-payload/commands/health.md +1 -1
- package/dist/forge-payload/commands/init.md +62 -7
- package/dist/forge-payload/commands/rebuild.md +3 -3
- package/dist/forge-payload/commands/remove.md +1 -1
- package/dist/forge-payload/commands/repair.md +1 -1
- package/dist/forge-payload/commands/report-bug.md +1 -1
- package/dist/forge-payload/commands/status.md +1 -1
- package/dist/forge-payload/commands/update.md +3 -3
- package/dist/forge-payload/hooks/lib/common.cjs +228 -0
- package/dist/forge-payload/hooks/lib/plugin-detection.cjs +106 -0
- package/dist/forge-payload/hooks/lib/update-msg.cjs +23 -0
- package/dist/forge-payload/hooks/lib/update-url.cjs +46 -0
- package/dist/forge-payload/hooks/lib/write-registry.js +53 -0
- package/dist/forge-payload/init/discovery/discover-database.md +32 -0
- package/dist/forge-payload/init/discovery/discover-processes.md +31 -0
- package/dist/forge-payload/init/discovery/discover-routing.md +31 -0
- package/dist/forge-payload/init/discovery/discover-stack.md +33 -0
- package/dist/forge-payload/init/discovery/discover-testing.md +34 -0
- package/dist/forge-payload/init/generation/generate-commands.md +171 -0
- package/dist/forge-payload/init/generation/generate-kb-doc.md +60 -0
- package/dist/forge-payload/init/generation/generate-knowledge-base.md +56 -0
- package/dist/forge-payload/init/generation/generate-persona.md +73 -0
- package/dist/forge-payload/init/generation/generate-personas.md +54 -0
- package/dist/forge-payload/init/generation/generate-skill.md +66 -0
- package/dist/forge-payload/init/generation/generate-skills.md +36 -0
- package/dist/forge-payload/init/generation/generate-template.md +60 -0
- package/dist/forge-payload/init/generation/generate-templates.md +39 -0
- package/dist/forge-payload/init/generation/generate-tools.md +133 -0
- package/dist/forge-payload/init/generation/generate-workflows.md +78 -0
- package/dist/forge-payload/init/phases/phase-1-collect.md +10 -2
- package/dist/forge-payload/init/phases/phase-3-materialize.md +1 -1
- package/dist/forge-payload/init/phases/phase-4-register.md +8 -0
- package/dist/forge-payload/init/workflow-gen-plan.json +17 -0
- package/dist/forge-payload/integrity.json +16 -16
- package/dist/forge-payload/meta/workflows/meta-collate.md +5 -6
- package/dist/forge-payload/meta/workflows/meta-migrate.md +1 -1
- package/dist/forge-payload/schemas/enum-catalog.json +2 -2
- package/dist/forge-payload/schemas/structure-manifest.json +3 -12
- package/dist/forge-payload/tools/forge-preflight.cjs +268 -0
- package/dist/forge-payload/tools/lib/paths.cjs +12 -11
- package/dist/forge-payload/tools/lib/pricing.cjs +31 -11
- package/dist/forge-payload/tools/query-logger.cjs +34 -0
- package/dist/forge-payload/tools/substitute-placeholders.cjs +5 -6
- package/node_modules/@mariozechner/clipboard/package.json +1 -2
- package/package.json +2 -2
- package/node_modules/@mariozechner/clipboard-linux-x64-musl/README.md +0 -3
- package/node_modules/@mariozechner/clipboard-linux-x64-musl/package.json +0 -25
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Discovery: Processes
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Detect the project's service topology, build tools, and deployment configuration.
|
|
6
|
+
|
|
7
|
+
## Scan Targets
|
|
8
|
+
|
|
9
|
+
| File | What It Reveals |
|
|
10
|
+
|------|----------------|
|
|
11
|
+
| `docker-compose.yml` | Service topology, dependencies, ports |
|
|
12
|
+
| `Procfile` | Process types (web, worker, etc.) |
|
|
13
|
+
| `ecosystem.config.js` | PM2 process management |
|
|
14
|
+
| `systemd/*.service` | System service definitions |
|
|
15
|
+
| `.github/workflows/*.yml` | CI/CD pipeline |
|
|
16
|
+
| `.gitlab-ci.yml` | CI/CD pipeline |
|
|
17
|
+
| `Jenkinsfile` | CI/CD pipeline |
|
|
18
|
+
| `vercel.json` / `netlify.toml` | Deployment platform |
|
|
19
|
+
|
|
20
|
+
## Tools
|
|
21
|
+
|
|
22
|
+
Use Glob to find these files, Read to parse them.
|
|
23
|
+
|
|
24
|
+
## Output
|
|
25
|
+
|
|
26
|
+
Structured report:
|
|
27
|
+
- Services and their roles (web, worker, database, cache, etc.)
|
|
28
|
+
- Build command(s)
|
|
29
|
+
- Deploy command(s) or platform
|
|
30
|
+
- CI/CD pipeline structure
|
|
31
|
+
- Environment variables referenced (names only, not values)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Discovery: Routing
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Detect the project's API surface, authentication strategy, and middleware.
|
|
6
|
+
|
|
7
|
+
## Scan Targets
|
|
8
|
+
|
|
9
|
+
| Pattern | What It Reveals |
|
|
10
|
+
|---------|----------------|
|
|
11
|
+
| Django: `urls.py`, `views.py` | URL patterns, view functions/classes |
|
|
12
|
+
| Express: `router.get/post/...` | Route definitions |
|
|
13
|
+
| Rails: `routes.rb` | Route definitions |
|
|
14
|
+
| FastAPI: `@app.get/post` | Endpoint decorators |
|
|
15
|
+
| Go: `http.HandleFunc` / mux | Route handlers |
|
|
16
|
+
| Auth decorators/middleware | `@login_required`, `authenticate`, `IsAuthenticated` |
|
|
17
|
+
| API docs: `openapi.yaml` / `swagger.json` | API specification |
|
|
18
|
+
|
|
19
|
+
## Tools
|
|
20
|
+
|
|
21
|
+
Use Grep to find route definitions and auth patterns, Read to parse them.
|
|
22
|
+
|
|
23
|
+
## Output
|
|
24
|
+
|
|
25
|
+
Structured report:
|
|
26
|
+
- Route count (approximate)
|
|
27
|
+
- Auth strategy (decorator-based, middleware, JWT, session, etc.)
|
|
28
|
+
- Public vs protected route ratio
|
|
29
|
+
- URL namespace structure
|
|
30
|
+
- API versioning (if any)
|
|
31
|
+
- Middleware chain
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Discovery: Stack
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Detect the project's programming languages, frameworks, versions, and runtime.
|
|
6
|
+
|
|
7
|
+
## Scan Targets
|
|
8
|
+
|
|
9
|
+
| File | What It Reveals |
|
|
10
|
+
|------|----------------|
|
|
11
|
+
| `package.json` | Node.js, npm dependencies, scripts |
|
|
12
|
+
| `requirements.txt` / `Pipfile` / `pyproject.toml` | Python, pip dependencies |
|
|
13
|
+
| `go.mod` | Go, module dependencies |
|
|
14
|
+
| `Cargo.toml` | Rust, crate dependencies |
|
|
15
|
+
| `Gemfile` | Ruby, gem dependencies |
|
|
16
|
+
| `Dockerfile` | Runtime, base image, build steps |
|
|
17
|
+
| `Makefile` | Build commands, task aliases |
|
|
18
|
+
| `*.sln` / `*.csproj` | .NET, C# |
|
|
19
|
+
|
|
20
|
+
## Tools
|
|
21
|
+
|
|
22
|
+
Use Glob to find these files, Read to parse them.
|
|
23
|
+
|
|
24
|
+
## Output
|
|
25
|
+
|
|
26
|
+
Structured report:
|
|
27
|
+
- Primary language(s)
|
|
28
|
+
- Framework(s) with versions
|
|
29
|
+
- Frontend framework (if any)
|
|
30
|
+
- Database (if detectable from dependencies)
|
|
31
|
+
- Task queue (if any)
|
|
32
|
+
- Containerisation (if any)
|
|
33
|
+
- Runtime version constraints
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Discovery: Testing
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Detect the project's test framework, test commands, build commands,
|
|
6
|
+
and lint configuration.
|
|
7
|
+
|
|
8
|
+
## Scan Targets
|
|
9
|
+
|
|
10
|
+
| Pattern | What It Reveals |
|
|
11
|
+
|---------|----------------|
|
|
12
|
+
| `test/` / `tests/` / `__tests__/` / `*_test.go` | Test directory structure |
|
|
13
|
+
| `jest.config.*` / `vitest.config.*` | JS test framework config |
|
|
14
|
+
| `pytest.ini` / `setup.cfg` / `pyproject.toml [tool.pytest]` | Python test config |
|
|
15
|
+
| `package.json scripts.test` | Test command |
|
|
16
|
+
| `.eslintrc*` / `ruff.toml` / `.golangci.yml` | Lint configuration |
|
|
17
|
+
| `.github/workflows/*.yml` | CI test/build/lint commands |
|
|
18
|
+
| `coverage/` / `.coveragerc` / `lcov.info` | Coverage configuration |
|
|
19
|
+
|
|
20
|
+
## Tools
|
|
21
|
+
|
|
22
|
+
Use Glob to find config files, Read to parse them. Use Bash to verify
|
|
23
|
+
commands work (e.g., `npm test --help` or `pytest --co -q | head`).
|
|
24
|
+
|
|
25
|
+
## Output
|
|
26
|
+
|
|
27
|
+
Structured report:
|
|
28
|
+
- Test framework(s) and version
|
|
29
|
+
- Test command (exact command to run tests)
|
|
30
|
+
- Build command (exact command to build)
|
|
31
|
+
- Lint command (exact command to lint)
|
|
32
|
+
- Syntax check command per language
|
|
33
|
+
- Coverage tooling (if any)
|
|
34
|
+
- Approximate test count
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Generation: Commands
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Generate standalone slash commands in `.claude/commands/forge/` that serve as
|
|
6
|
+
entry points to the generated workflows. The namespace is FIXED to `forge`
|
|
7
|
+
(CLI-first redesign): every project gets the same `/forge:*` surface, matching
|
|
8
|
+
what the `4ge` bootstrap vendors. Project-prefix namespaces (`/acme:*`,
|
|
9
|
+
`/ember:*`) are retired — they existed to avoid collisions with the Forge
|
|
10
|
+
*plugin's* own commands, moot now that the plugin mechanism is retired.
|
|
11
|
+
|
|
12
|
+
## Inputs
|
|
13
|
+
|
|
14
|
+
- Generated workflows (from Phase 5) — their exact filenames and paths
|
|
15
|
+
- `.forge/config.json` — paths (project prefix no longer affects the command namespace)
|
|
16
|
+
|
|
17
|
+
## Outputs
|
|
18
|
+
|
|
19
|
+
`.claude/commands/forge/` with the fixed-namespace commands:
|
|
20
|
+
- `new-sprint.md` → `/forge:new-sprint`
|
|
21
|
+
- `plan.md` → `/forge:plan {TASK_ID}`
|
|
22
|
+
- `review-plan.md` → `/forge:review-plan {TASK_ID}`
|
|
23
|
+
- `implement.md` → `/forge:implement {TASK_ID}`
|
|
24
|
+
- `review-code.md` → `/forge:review-code {TASK_ID}`
|
|
25
|
+
- `fix-bug.md` → `/forge:fix-bug {BUG_ID}`
|
|
26
|
+
- `plan-sprint.md` → `/forge:plan-sprint`
|
|
27
|
+
- `run-task.md` → `/forge:run-task {TASK_ID}`
|
|
28
|
+
- `run-sprint.md` → `/forge:run-sprint {SPRINT_ID} [--parallel]`
|
|
29
|
+
- `collate.md` → `/forge:collate [SPRINT_ID]`
|
|
30
|
+
- `retro.md` → `/forge:retro {SPRINT_ID}`
|
|
31
|
+
- `approve.md` → `/forge:approve {TASK_ID}`
|
|
32
|
+
- `commit.md` → `/forge:commit {TASK_ID}`
|
|
33
|
+
- `check-agent.md` → `/forge:check-agent $ARGUMENTS`
|
|
34
|
+
- `enhance.md` → `/forge:enhance $ARGUMENTS`
|
|
35
|
+
- `validate.md` → `/forge:validate {TASK_ID}`
|
|
36
|
+
|
|
37
|
+
## Instructions
|
|
38
|
+
|
|
39
|
+
**Scope boundary:** Only ever read, write, or delete files in the explicit output list above (16 files).
|
|
40
|
+
Never touch any other file in `.claude/commands/` — custom commands, project-specific
|
|
41
|
+
wrappers, and unrecognised files must be left completely untouched.
|
|
42
|
+
|
|
43
|
+
**Pre-generation check (idempotency):** For each command file listed above, before writing:
|
|
44
|
+
1. Check first whether the file exists at the **flat path** `.claude/commands/{filename}.md`
|
|
45
|
+
(old non-namespaced location). If it does, treat it as non-conformant — overwrite into
|
|
46
|
+
the namespaced path and log: `Replaced flat command (now namespaced): <filename>`.
|
|
47
|
+
2. If the file does not exist at either path — write it fresh to the namespaced path.
|
|
48
|
+
3. If the file exists at the namespaced path `.claude/commands/forge/{filename}.md` — read it
|
|
49
|
+
and extract the workflow path it references (the `.forge/workflows/` path).
|
|
50
|
+
- If it does NOT reference `.forge/workflows/` — overwrite and log: `Replaced stale command: <filename>`.
|
|
51
|
+
- If it references `.forge/workflows/` but that workflow file **does not exist on disk** — overwrite and log: `Replaced command pointing to missing workflow: <filename>`.
|
|
52
|
+
- If it references `.forge/workflows/` and the workflow file exists — check whether the file matches the template format. If it is missing `effort:` frontmatter, contains `model:` frontmatter, contains a MASTER_INDEX read line, or uses old workflow naming (`engineer_*`, `supervisor_*`) — overwrite and log: `Replaced non-conformant command: <filename>`.
|
|
53
|
+
- **wfl: dispatch rung (scoped to three filenames only):** If the filename is one of `run-task.md`, `run-sprint.md`, or `fix-bug.md` — and the file body contains `Read .forge/workflows/` — it is non-conformant (it should use `wfl:` dispatch instead). Overwrite it with the `workflow('wfl:run-task'|'wfl:run-sprint'|'wfl:fix-bug', $ARGUMENTS)` body and log: `Replaced non-conformant command: <filename>`. Do NOT apply this rung to any other command — the other 13 commands legitimately use `Read .forge/workflows/` and must not be flagged.
|
|
54
|
+
- If it matches the template format and the workflow exists — skip it (already up to date).
|
|
55
|
+
|
|
56
|
+
This ensures any workflow that has been renamed or replaced causes its command wrapper to be regenerated rather than silently left pointing at a missing file.
|
|
57
|
+
|
|
58
|
+
Each command file MUST follow this exact template — no variations, no additions:
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
---
|
|
62
|
+
description: {{description}}
|
|
63
|
+
effort: {{effort}}
|
|
64
|
+
---
|
|
65
|
+
Read `.forge/workflows/{{workflow}}.md` and follow it exactly.
|
|
66
|
+
{{argument_line}}
|
|
67
|
+
<!-- AUTO-GENERATED by /forge:init -->
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Where:
|
|
71
|
+
- `{{description}}` — from the descriptions table below (fixed, not model-generated)
|
|
72
|
+
- `{{effort}}` — from the effort table below (fixed mapping, not model choice)
|
|
73
|
+
- `{{workflow}}` — the exact filename of the generated workflow (no path prefix, no `engineer_`/`supervisor_` role prefix)
|
|
74
|
+
- `{{argument_line}}` — one of: `Task ID: $ARGUMENTS`, `Sprint ID: $ARGUMENTS`, `Bug ID: $ARGUMENTS`, or `Arguments: $ARGUMENTS`
|
|
75
|
+
|
|
76
|
+
**Do NOT deviate from this template.** Specifically:
|
|
77
|
+
- Do NOT include a `Read {KB_PATH}/MASTER_INDEX.md` line. The workflow loads MASTER_INDEX as its first step — pre-loading it gives the model enough context to rationalise skipping the workflow entirely and doing the work inline. Workflow first, always.
|
|
78
|
+
- Do NOT include `model:` frontmatter (use `effort:` instead — model-agnostic).
|
|
79
|
+
- Do NOT add numbered step lists, explanations, or any content beyond the template.
|
|
80
|
+
- Do NOT add a `Also read` line for any file — the workflow controls all context loading.
|
|
81
|
+
|
|
82
|
+
**Per-command descriptions** (fixed, not model-generated):
|
|
83
|
+
|
|
84
|
+
| Command | description |
|
|
85
|
+
|---|---|
|
|
86
|
+
| `plan.md` | Design and document the implementation plan for a task |
|
|
87
|
+
| `review-plan.md` | Architectural review of a task implementation plan |
|
|
88
|
+
| `implement.md` | Execute the approved implementation plan for a task |
|
|
89
|
+
| `review-code.md` | Code quality review of a completed task implementation |
|
|
90
|
+
| `fix-bug.md` | Triage, diagnose, and fix a bug |
|
|
91
|
+
| `approve.md` | Final architect approval gate for a completed task |
|
|
92
|
+
| `commit.md` | Stage and commit completed task artifacts |
|
|
93
|
+
| `run-task.md` | Orchestrate the full plan→implement→review→approve pipeline for a task |
|
|
94
|
+
| `run-sprint.md` | Execute all tasks in a sprint (sequential or parallel) |
|
|
95
|
+
| `new-sprint.md` | Elicit and structure requirements for a new sprint |
|
|
96
|
+
| `plan-sprint.md` | Decompose sprint requirements into tasks with dependencies |
|
|
97
|
+
| `collate.md` | Regenerate KB documents from the JSON store |
|
|
98
|
+
| `retro.md` | Produce sprint retrospective and lessons-learned document |
|
|
99
|
+
| `check-agent.md` | Verify an agent has read and understood the project KB before high-stakes tasks |
|
|
100
|
+
| `enhance.md` | Progressive project-specific enrichment of structural elements |
|
|
101
|
+
| `validate.md` | Validate that a task implementation satisfies acceptance criteria |
|
|
102
|
+
|
|
103
|
+
**Effort levels** — use `effort:` frontmatter (capability request, model-agnostic):
|
|
104
|
+
|
|
105
|
+
| Command | effort | Rationale |
|
|
106
|
+
|---|---|---|
|
|
107
|
+
| `review-plan.md` | `max` | Architectural gate — needs deepest reasoning |
|
|
108
|
+
| `review-code.md` | `max` | Quality gate — needs deepest reasoning |
|
|
109
|
+
| `approve.md` | `max` | Final approval gate |
|
|
110
|
+
| `plan.md` | `high` | Design work with broad codebase context |
|
|
111
|
+
| `implement.md` | `high` | Non-trivial code generation |
|
|
112
|
+
| `fix-bug.md` | `high` | Diagnosis + fix |
|
|
113
|
+
| `plan-sprint.md` | `high` | Decomposition and dependency analysis |
|
|
114
|
+
| `run-task.md` | `high` | Full task orchestration |
|
|
115
|
+
| `run-sprint.md` | `high` | Multi-task orchestration |
|
|
116
|
+
| `new-sprint.md` | `high` | Structured requirements elicitation |
|
|
117
|
+
| `retro.md` | `medium` | Reflection and summary |
|
|
118
|
+
| `collate.md` | `low` | Mechanical markdown regeneration |
|
|
119
|
+
| `commit.md` | `low` | Staging and committing completed work |
|
|
120
|
+
| `check-agent.md` | `medium` | Short factual quiz — moderate reasoning, no deep codebase traversal |
|
|
121
|
+
| `enhance.md` | `high` | Enhancement agent — broad structural enrichment |
|
|
122
|
+
| `validate.md` | `max` | Validation gate — needs deepest reasoning |
|
|
123
|
+
|
|
124
|
+
Do **not** include `model:` frontmatter — that directive pins a specific model and is
|
|
125
|
+
not appropriate for user command files.
|
|
126
|
+
|
|
127
|
+
After writing each command file, record it in the generation manifest:
|
|
128
|
+
```sh
|
|
129
|
+
node "$FORGE_ROOT/tools/generation-manifest.cjs" record {paths.commands}/forge/{filename}.md
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
(`FORGE_ROOT` is available from the parent init flow; tool invocations use `$FORGE_ROOT/tools/` throughout.)
|
|
133
|
+
|
|
134
|
+
## Post-generation: flat-file cleanup
|
|
135
|
+
|
|
136
|
+
After all 16 command files have been written and recorded, scan for pre-v0.13.0
|
|
137
|
+
flat command files that were never namespaced. These are the **13 known flat filenames**:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
new-sprint.md plan-sprint.md run-task.md run-sprint.md plan.md
|
|
141
|
+
review-plan.md implement.md review-code.md fix-bug.md approve.md
|
|
142
|
+
commit.md collate.md retro.md
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Check for each at `.claude/commands/{filename}.md` (the flat path, NOT the namespaced
|
|
146
|
+
subdirectory).
|
|
147
|
+
|
|
148
|
+
**Logic:**
|
|
149
|
+
|
|
150
|
+
- If **none** of the 13 files exist at the flat path — skip silently. No prompt.
|
|
151
|
+
|
|
152
|
+
- If **one or more** exist, display the list:
|
|
153
|
+
```
|
|
154
|
+
Found pre-v0.13.0 flat command files that are no longer used:
|
|
155
|
+
.claude/commands/plan.md
|
|
156
|
+
.claude/commands/implement.md
|
|
157
|
+
... (list each found file)
|
|
158
|
+
|
|
159
|
+
These have been replaced by namespaced commands under .claude/commands/forge/.
|
|
160
|
+
Remove them now? (yes / skip)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
- **On `yes`:** Delete each found file. For each deletion, print:
|
|
164
|
+
`Removed: .claude/commands/{filename}.md`
|
|
165
|
+
When done: `Flat command cleanup complete.`
|
|
166
|
+
|
|
167
|
+
- **On `skip`:** Print:
|
|
168
|
+
`Skipped. Remember to delete these files manually to avoid command name collisions.`
|
|
169
|
+
|
|
170
|
+
**Do NOT delete any file that is not in the 13-filename list above.** Custom commands,
|
|
171
|
+
project-specific wrappers, and unrecognised files are strictly off-limits.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Knowledge Base Doc Generation — Per-Subagent Instructions
|
|
2
|
+
|
|
3
|
+
You are generating **ONE** knowledge base document. You have been given:
|
|
4
|
+
|
|
5
|
+
1. A **discovery context** — the raw findings from Phase 1 discovery scans,
|
|
6
|
+
passed inline in your prompt
|
|
7
|
+
2. A **doc spec** — which file to write and what it should contain
|
|
8
|
+
3. A **project brief** (`.forge/init-context.md`) — for names and paths
|
|
9
|
+
|
|
10
|
+
Your job is to produce exactly one file and return a one-line status.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Rules
|
|
15
|
+
|
|
16
|
+
1. **Write EXACTLY ONE file** at the path specified in your doc spec.
|
|
17
|
+
|
|
18
|
+
2. **Confidence header** — every generated doc must open with:
|
|
19
|
+
```
|
|
20
|
+
<!-- AUTO-GENERATED by /forge:init — confidence: N% -->
|
|
21
|
+
```
|
|
22
|
+
Set N% based on how much evidence the discovery context provided:
|
|
23
|
+
- 90–100%: directly observed in code/config
|
|
24
|
+
- 70–89%: inferred from conventions or partial evidence
|
|
25
|
+
- below 70%: limited evidence, many `[?]` markers expected
|
|
26
|
+
|
|
27
|
+
3. **Uncertainty markers** — any fact not directly observed in the discovery
|
|
28
|
+
context must be marked with `[?]`. Do not invent values.
|
|
29
|
+
|
|
30
|
+
4. **Entity names** — use entity names exactly as they appear in the brief's
|
|
31
|
+
`## Domain Entities` section. Do not rename or abbreviate.
|
|
32
|
+
|
|
33
|
+
5. **Scope discipline** — generate only what the doc spec prescribes.
|
|
34
|
+
Do not add sections not listed in the spec. Do not cross-reference
|
|
35
|
+
other KB docs that do not yet exist.
|
|
36
|
+
|
|
37
|
+
6. **`architecture/INDEX.md` and `business-domain/INDEX.md`** — if your
|
|
38
|
+
assigned doc is an INDEX file, link only to docs that exist on disk at
|
|
39
|
+
the time you write. Do not anticipate files that may not have been written.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Self-check (mandatory last step)
|
|
44
|
+
|
|
45
|
+
After writing the file, verify before returning:
|
|
46
|
+
|
|
47
|
+
1. Read back the written file
|
|
48
|
+
2. Confirm the confidence header is present on the first line
|
|
49
|
+
3. Confirm no `{placeholder}` tokens remain
|
|
50
|
+
4. Record in the manifest:
|
|
51
|
+
```sh
|
|
52
|
+
node "$FORGE_ROOT/tools/generation-manifest.cjs" record "{output_path}"
|
|
53
|
+
```
|
|
54
|
+
(If generation-manifest.cjs is not yet installed, skip silently.)
|
|
55
|
+
|
|
56
|
+
5. Return **exactly one line**:
|
|
57
|
+
- `done: <first 80 chars of the written file>` — on success
|
|
58
|
+
- `FAILED: <reason>` — if any step above failed or the file could not be written
|
|
59
|
+
|
|
60
|
+
Do not output anything else after the status line.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Generation: Knowledge Base
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Generate the project's architecture documentation, business domain documentation,
|
|
6
|
+
and initial stack review checklist from the discovery context.
|
|
7
|
+
|
|
8
|
+
## Inputs
|
|
9
|
+
|
|
10
|
+
- Discovery context (from Phase 1)
|
|
11
|
+
- `$FORGE_ROOT/meta/personas/` (to understand what agents need to know)
|
|
12
|
+
|
|
13
|
+
## Setup
|
|
14
|
+
|
|
15
|
+
Read the configured KB path:
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
KB_PATH=$(node -e "try{console.log(require('./.forge/config.json').paths.engineering)}catch{console.log('engineering')}")
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Outputs
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
{KB_PATH}/
|
|
25
|
+
architecture/
|
|
26
|
+
INDEX.md
|
|
27
|
+
stack.md
|
|
28
|
+
processes.md
|
|
29
|
+
database.md
|
|
30
|
+
routing.md
|
|
31
|
+
deployment.md
|
|
32
|
+
business-domain/
|
|
33
|
+
INDEX.md
|
|
34
|
+
entity-model.md
|
|
35
|
+
stack-checklist.md
|
|
36
|
+
MASTER_INDEX.md (empty scaffold)
|
|
37
|
+
sprints/ (empty, with .gitkeep)
|
|
38
|
+
bugs/ (empty, with .gitkeep)
|
|
39
|
+
tools/ (empty, created for Phase 8)
|
|
40
|
+
|
|
41
|
+
.forge/
|
|
42
|
+
store/
|
|
43
|
+
sprints/ (empty, with .gitkeep)
|
|
44
|
+
tasks/ (empty, with .gitkeep)
|
|
45
|
+
bugs/ (empty, with .gitkeep)
|
|
46
|
+
events/ (empty, with .gitkeep)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Instructions
|
|
50
|
+
|
|
51
|
+
1. For each architecture sub-doc, synthesise from the discovery context
|
|
52
|
+
2. Include confidence header: `<!-- AUTO-GENERATED by /forge:init — confidence: N% -->`
|
|
53
|
+
3. Mark uncertain lines with `[?]`
|
|
54
|
+
4. The stack-checklist should have 5-10 items based on auth/framework detection
|
|
55
|
+
5. entity-model.md should list all discovered entities with fields and relationships
|
|
56
|
+
6. INDEX.md files should link to all sub-docs with one-line descriptions
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Persona Generation — Per-Subagent Instructions
|
|
2
|
+
|
|
3
|
+
You are generating **ONE** persona file. You have been given two inputs:
|
|
4
|
+
|
|
5
|
+
1. A **project brief** (`.forge/init-context.md`) — authoritative for all names,
|
|
6
|
+
paths, command values, and installed-skill wiring
|
|
7
|
+
2. A **meta-persona source** — the role definition and Generation Instructions
|
|
8
|
+
|
|
9
|
+
Your job is to produce exactly one file and return a one-line status.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Inputs
|
|
14
|
+
|
|
15
|
+
Read these two sources before writing anything:
|
|
16
|
+
|
|
17
|
+
- `$FORGE_ROOT/meta/personas/{meta}` — the meta-persona for your assigned role
|
|
18
|
+
- `.forge/init-context.md` — the project brief (passed inline in your prompt)
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Rules
|
|
23
|
+
|
|
24
|
+
1. **Write EXACTLY ONE file:** `.forge/personas/{role}.md`
|
|
25
|
+
|
|
26
|
+
2. **Opening line** — the first non-blank line must be the persona's symbol
|
|
27
|
+
(emoji from the meta-persona's `## Symbol` section) followed by a brief
|
|
28
|
+
first-person announcement in this exact format:
|
|
29
|
+
```
|
|
30
|
+
{symbol} **{Project} {Role Name}** — {quiet first-person voice, present-tense}
|
|
31
|
+
```
|
|
32
|
+
Do not use `symbol:` YAML frontmatter. The symbol must appear as the first
|
|
33
|
+
non-blank line of the file.
|
|
34
|
+
|
|
35
|
+
3. **Project substitution** — replace every `{Project}` placeholder with the
|
|
36
|
+
project name from the brief's `## Commands` / `## Paths` header line.
|
|
37
|
+
All entity names, architecture doc names, persona names, and command values
|
|
38
|
+
MUST come from the brief. Do not invent values.
|
|
39
|
+
|
|
40
|
+
4. **Stack wiring** — substitute actual commands from the brief's `## Commands`
|
|
41
|
+
section wherever the meta-persona references test/build/lint/syntax-check.
|
|
42
|
+
|
|
43
|
+
5. **Skill invocation wiring** — read `## Installed Skill Wiring` from the
|
|
44
|
+
brief. For each skill that maps to this persona's role, add an explicit
|
|
45
|
+
YOU MUST directive. Follow the wiring pattern in the meta-persona's
|
|
46
|
+
Generation Instructions exactly.
|
|
47
|
+
|
|
48
|
+
6. **Follow Generation Instructions** — each meta-persona has a
|
|
49
|
+
`## Generation Instructions` section (or equivalent). Follow it fully.
|
|
50
|
+
Do not add sections, steps, or notes beyond what it prescribes.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Self-check (mandatory last step)
|
|
55
|
+
|
|
56
|
+
After writing the file, verify before returning:
|
|
57
|
+
|
|
58
|
+
1. Read back `.forge/personas/{role}.md`
|
|
59
|
+
2. Confirm the **first non-blank line** starts with the persona's symbol emoji
|
|
60
|
+
3. Confirm **no unsubstituted `{Project}` placeholders** remain
|
|
61
|
+
4. Confirm **no literal `{TEST_COMMAND}`, `{BUILD_COMMAND}`, `{SYNTAX_CHECK}`,
|
|
62
|
+
or `{LINT_COMMAND}`** remain
|
|
63
|
+
5. Record in the manifest:
|
|
64
|
+
```sh
|
|
65
|
+
node "$FORGE_ROOT/tools/generation-manifest.cjs" record ".forge/personas/{role}.md"
|
|
66
|
+
```
|
|
67
|
+
(If generation-manifest.cjs is not yet installed, skip silently.)
|
|
68
|
+
|
|
69
|
+
6. Return **exactly one line**:
|
|
70
|
+
- `done: <first 80 chars of the written file>` — on success
|
|
71
|
+
- `FAILED: <reason>` — if any step above failed or the file could not be written
|
|
72
|
+
|
|
73
|
+
Do not output anything else after the status line.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Generation: Personas
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Generate project-specific agent persona context from meta-personas,
|
|
6
|
+
the discovery context, and the generated knowledge base.
|
|
7
|
+
|
|
8
|
+
## Inputs
|
|
9
|
+
|
|
10
|
+
- `$FORGE_ROOT/meta/personas/meta-*.md` (6 meta-personas)
|
|
11
|
+
- Discovery context (from Phase 1)
|
|
12
|
+
- Generated knowledge base (from Phase 2)
|
|
13
|
+
|
|
14
|
+
## Outputs
|
|
15
|
+
|
|
16
|
+
Personas are written as standalone files in `.forge/personas/`.
|
|
17
|
+
Each file is named after the persona's role (e.g., `.forge/personas/supervisor.md`).
|
|
18
|
+
|
|
19
|
+
These files are consumed by Phase 5 (Generate Atomic Workflows) to establish the agent's identity, knowledge, and constraints.
|
|
20
|
+
|
|
21
|
+
## Instructions
|
|
22
|
+
|
|
23
|
+
For each meta-persona, read its Generation Instructions section and
|
|
24
|
+
produce a project-specific version that incorporates:
|
|
25
|
+
- The project's actual stack, test commands, build commands
|
|
26
|
+
- The project's actual entity names and business rules
|
|
27
|
+
- The project's actual auth patterns and conventions
|
|
28
|
+
- The project's actual directory structure and paths
|
|
29
|
+
|
|
30
|
+
**Persona block format** — each persona file opens with a single line using the
|
|
31
|
+
persona's symbol (from its `## Symbol` section) and a quiet first-person announcement.
|
|
32
|
+
Follow the `Persona block format` template in each meta-persona's Generation Instructions,
|
|
33
|
+
substituting `{Project}` with the project's name. The line should be brief, present-tense,
|
|
34
|
+
and speak to what the persona is about to do — not a role description, but a voice.
|
|
35
|
+
|
|
36
|
+
## Skill Invocation Wiring
|
|
37
|
+
|
|
38
|
+
Read `.forge/config.json` for `installedSkills`. For each installed skill
|
|
39
|
+
that is relevant to a persona's domain, add an explicit invocation instruction
|
|
40
|
+
to that persona's context.
|
|
41
|
+
|
|
42
|
+
Read `$FORGE_ROOT/meta/skill-recommendations.md` for the persona integration
|
|
43
|
+
pattern. Apply it: the instruction must be a YOU MUST directive placed at
|
|
44
|
+
the relevant persona's context.
|
|
45
|
+
|
|
46
|
+
Example — if `vue-best-practices` is installed and the persona is Supervisor:
|
|
47
|
+
|
|
48
|
+
> "When reviewing Vue components, YOU MUST invoke the `vue-best-practices`
|
|
49
|
+
> skill before applying the stack checklist. That skill provides universal
|
|
50
|
+
> Vue technique depth; the checklist provides project conventions. Both are required."
|
|
51
|
+
|
|
52
|
+
This wiring is what distinguishes Forge-generated personas from plain skill
|
|
53
|
+
invocation: the persona carries project-specific knowledge *and* knows exactly
|
|
54
|
+
when to reach for a universal technique skill. Neither layer alone is sufficient.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Skill Generation — Per-Subagent Instructions
|
|
2
|
+
|
|
3
|
+
You are generating **ONE** skill file. You have been given two inputs:
|
|
4
|
+
|
|
5
|
+
1. A **project brief** (`.forge/init-context.md`) — authoritative for all names,
|
|
6
|
+
paths, command values, and installed-skill wiring
|
|
7
|
+
2. A **meta-skill source** — the role's universal capability set and Generation Instructions
|
|
8
|
+
|
|
9
|
+
Your job is to produce exactly one file and return a one-line status.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Inputs
|
|
14
|
+
|
|
15
|
+
Read these two sources before writing anything:
|
|
16
|
+
|
|
17
|
+
- `$FORGE_ROOT/meta/skills/{meta}` — the meta-skill for your assigned role
|
|
18
|
+
- `.forge/init-context.md` — the project brief (passed inline in your prompt)
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Rules
|
|
23
|
+
|
|
24
|
+
1. **Write EXACTLY ONE file:** `.forge/skills/{role}-skills.md`
|
|
25
|
+
|
|
26
|
+
2. **Project interpolation** — replace every generic placeholder with the
|
|
27
|
+
project's actual tools, libraries, paths, and conventions from the brief.
|
|
28
|
+
All entity names, stack names, and command values MUST come from the brief.
|
|
29
|
+
Do not invent values.
|
|
30
|
+
|
|
31
|
+
3. **Stack specificity** — replace abstract references (e.g. "your test runner",
|
|
32
|
+
"your ORM") with the actual tools discovered for this project. Substitute
|
|
33
|
+
actual command values from the brief's `## Commands` section.
|
|
34
|
+
|
|
35
|
+
4. **Installed skill integration** — read `## Installed Skill Wiring` from the
|
|
36
|
+
brief. For each skill that maps to this role, add an explicit reference
|
|
37
|
+
explaining how the persona should combine the marketplace skill with this
|
|
38
|
+
project-specific skill set.
|
|
39
|
+
|
|
40
|
+
5. **Follow Generation Instructions** — each meta-skill has a
|
|
41
|
+
`## Generation Instructions` section. Follow it fully. Do not add sections,
|
|
42
|
+
steps, or notes beyond what it prescribes.
|
|
43
|
+
|
|
44
|
+
6. **No free-form additions** — produce only the sections the meta-skill defines.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Self-check (mandatory last step)
|
|
49
|
+
|
|
50
|
+
After writing the file, verify before returning:
|
|
51
|
+
|
|
52
|
+
1. Read back `.forge/skills/{role}-skills.md`
|
|
53
|
+
2. Confirm **no unsubstituted placeholders** remain
|
|
54
|
+
3. Confirm **no abstract project references** remain (e.g. "your framework",
|
|
55
|
+
"your ORM" — these must be replaced with the actual project values)
|
|
56
|
+
4. Record in the manifest:
|
|
57
|
+
```sh
|
|
58
|
+
node "$FORGE_ROOT/tools/generation-manifest.cjs" record ".forge/skills/{role}-skills.md"
|
|
59
|
+
```
|
|
60
|
+
(If generation-manifest.cjs is not yet installed, skip silently.)
|
|
61
|
+
|
|
62
|
+
5. Return **exactly one line**:
|
|
63
|
+
- `done: <first 80 chars of the written file>` — on success
|
|
64
|
+
- `FAILED: <reason>` — if any step above failed or the file could not be written
|
|
65
|
+
|
|
66
|
+
Do not output anything else after the status line.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Generation: Skills
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Generate project-specific skill sets for each persona, mapping universal
|
|
6
|
+
techniques to project-specific tools and contexts.
|
|
7
|
+
|
|
8
|
+
## Inputs
|
|
9
|
+
|
|
10
|
+
- `$FORGE_ROOT/meta/skills/meta-*.md` (Meta-skill templates)
|
|
11
|
+
- Discovery context (from Phase 1)
|
|
12
|
+
- Generated knowledge base (from Phase 2)
|
|
13
|
+
- `.forge/config.json` (specifically `installedSkills`)
|
|
14
|
+
|
|
15
|
+
## Outputs
|
|
16
|
+
|
|
17
|
+
Skill sets are written as standalone files in `.forge/skills/`.
|
|
18
|
+
Each file uses the `-skills.md` suffix matching the persona role (e.g., `.forge/skills/supervisor-skills.md`).
|
|
19
|
+
|
|
20
|
+
## Instructions
|
|
21
|
+
|
|
22
|
+
For each persona role defined in the project:
|
|
23
|
+
1. Identify the relevant meta-skills from `$FORGE_ROOT/meta/skills/`.
|
|
24
|
+
2. For each skill, produce a project-interpolated version that:
|
|
25
|
+
- Replaces generic placeholders with actual project tools, libraries, and paths.
|
|
26
|
+
- Incorporates specific constraints discovered during Phase 1.
|
|
27
|
+
- Maps universal techniques to the project's actual implementation patterns.
|
|
28
|
+
3. Integrate `installedSkills` from `.forge/config.json`:
|
|
29
|
+
- If a marketplace skill is installed that enhances a specific technique,
|
|
30
|
+
explicitly reference it in the skill set.
|
|
31
|
+
- Ensure the skill set explains *how* the persona should combine the
|
|
32
|
+
universal marketplace skill with the project-specific skill set.
|
|
33
|
+
|
|
34
|
+
**Skill set format**:
|
|
35
|
+
Each file should be structured as a cohesive set of capabilities,
|
|
36
|
+
techniques, and checklists tailored for that specific role within the project.
|