forge-workflow 0.0.9 → 0.1.0-beta.2
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/.claude/rules/{greptile-review-process.md → review-process.md} +56 -41
- package/.claude/scripts/{greptile-resolve.sh → review-resolve.sh} +13 -3
- package/.cursor/rules/permissions-guidance.mdc +2 -2
- package/.forge/hooks/check-tdd.js +3 -0
- package/.forge/hooks/forge-native-hook.js +245 -0
- package/.forge/protected-paths.yaml +157 -0
- package/AGENTS.md +151 -61
- package/CHANGELOG.md +681 -0
- package/CLAUDE.md +9 -106
- package/QUICKSTART.md +171 -0
- package/README.md +271 -363
- package/bin/forge-cmd.js +120 -9
- package/bin/forge-preflight.js +26 -5
- package/bin/forge.js +466 -489
- package/docs/INDEX.md +93 -0
- package/docs/PROJECT_DESIGN.md +685 -0
- package/docs/architecture/index.md +66 -0
- package/docs/architecture/notes/README.md +35 -0
- package/docs/architecture/subsystems/README.md +46 -0
- package/docs/{TOOLCHAIN.md → forge/TOOLCHAIN.md} +56 -47
- package/docs/forge/VALIDATION.md +82 -0
- package/docs/{AGENT_INSTALL_PROMPT.md → guides/AGENT_INSTALL_PROMPT.md} +3 -3
- package/docs/guides/BEADS_GITHUB_SYNC.md +32 -0
- package/docs/{ENHANCED_ONBOARDING.md → guides/ENHANCED_ONBOARDING.md} +16 -12
- package/docs/guides/GREPTILE_SETUP.md +46 -0
- package/docs/guides/MANUAL_REVIEW_GUIDE.md +58 -0
- package/docs/guides/MIGRATION.md +56 -0
- package/docs/guides/SETUP.md +118 -0
- package/docs/guides/SUPPORT.md +185 -0
- package/docs/guides/WORKFLOW_TEMPLATES.md +74 -0
- package/docs/guides/memory-backends.md +183 -0
- package/docs/reference/ADAPTERS.md +128 -0
- package/docs/reference/AGENT_SKILL_PARITY.md +175 -0
- package/docs/reference/COMMANDS.md +205 -0
- package/docs/reference/DECISION_DRIFT_GUARDS.md +97 -0
- package/docs/{EXAMPLES.md → reference/EXAMPLES.md} +7 -5
- package/docs/reference/FORGE_KERNEL_STORAGE_MODEL.md +135 -0
- package/docs/reference/HERMES_INTEGRATION.md +118 -0
- package/docs/reference/INSIGHTS_RECAP.md +63 -0
- package/docs/reference/INSTALL.md +164 -0
- package/docs/reference/KERNEL_TAXONOMY_VALIDATION.md +161 -0
- package/docs/reference/PROTECTED_PATH_MANIFEST.md +25 -0
- package/docs/reference/RELEASE.md +68 -0
- package/docs/reference/RESEARCH_TEMPLATE.md +292 -0
- package/docs/{ROADMAP.md → reference/ROADMAP.md} +12 -9
- package/docs/reference/SKILLS.md +35 -0
- package/docs/reference/STATUS_BOARD.md +80 -0
- package/docs/reference/TEMPLATES.md +106 -0
- package/docs/reference/TOOLCHAIN.md +658 -0
- package/docs/reference/VALIDATION.md +82 -0
- package/docs/reference/agent-permissions.md +169 -0
- package/docs/reference/beads-to-kernel-migration-ux.md +61 -0
- package/docs/reference/control-plane-guarantees.md +125 -0
- package/docs/reference/dependency-chain.md +331 -0
- package/docs/reference/forge-kernel-issue-command-contract.md +161 -0
- package/docs/reference/forge-kernel-schema.md +72 -0
- package/docs/reference/kernel-conflict-evaluators.md +27 -0
- package/docs/reference/patch-md-format.md +77 -0
- package/docs/reference/protected-state-surfaces.md +59 -0
- package/docs/reference/shepherd.md +115 -0
- package/docs/reference/superpowers-analysis.md +320 -0
- package/docs/reference/superpowers-integration-options.md +404 -0
- package/docs/reference/test-environment.md +519 -0
- package/docs/reference/upgrade-safety.md +59 -0
- package/lefthook.yml +18 -0
- package/lib/adapter-cli.js +307 -0
- package/lib/adapters/beads-issue-adapter.js +127 -0
- package/lib/adapters/beads-kernel-compat.js +1042 -0
- package/lib/adapters/greptile-review-adapter.js +141 -0
- package/lib/adapters/kernel-issue-adapter.js +101 -0
- package/lib/adapters/pr-state-adapter.js +484 -0
- package/lib/adoption-profiles.js +126 -0
- package/lib/agents/README.md +2 -6
- package/lib/agents/claude.plugin.json +3 -8
- package/lib/agents/codex.plugin.json +9 -1
- package/lib/agents/cursor.plugin.json +2 -6
- package/lib/agents/hermes.plugin.json +22 -0
- package/lib/agents-config.js +39 -1236
- package/lib/audit-evidence.js +282 -0
- package/lib/beads-setup.js +225 -28
- package/lib/beads-sync-scaffold.js +36 -107
- package/lib/codex-skills.js +51 -1
- package/lib/commands/_issue.js +744 -70
- package/lib/commands/_manifest.js +91 -0
- package/lib/commands/_registry.js +85 -34
- package/lib/commands/_resolve-command-opts.js +261 -0
- package/lib/commands/_serve-security.js +270 -0
- package/lib/commands/adapter.js +12 -0
- package/lib/commands/add.js +118 -0
- package/lib/commands/audit.js +70 -0
- package/lib/commands/blocked.js +5 -0
- package/lib/commands/board.js +64 -0
- package/lib/commands/claim.js +21 -2
- package/lib/commands/claims.js +7 -0
- package/lib/commands/clean.js +485 -75
- package/lib/commands/close.js +2 -2
- package/lib/commands/comment.js +5 -0
- package/lib/commands/control.js +148 -0
- package/lib/commands/create.js +2 -2
- package/lib/commands/dev.js +185 -7
- package/lib/commands/doc-gate.js +336 -0
- package/lib/commands/doctor.js +156 -0
- package/lib/commands/explain.js +15 -0
- package/lib/commands/export.js +237 -0
- package/lib/commands/gate.js +192 -0
- package/lib/commands/hooks.js +242 -0
- package/lib/commands/inbox.js +118 -0
- package/lib/commands/init.js +598 -0
- package/lib/commands/insights.js +79 -0
- package/lib/commands/issue.js +12 -1
- package/lib/commands/issues.js +66 -0
- package/lib/commands/lint.js +5 -0
- package/lib/commands/list.js +2 -2
- package/lib/commands/merge.js +312 -0
- package/lib/commands/migrate.js +523 -0
- package/lib/commands/new.js +12 -0
- package/lib/commands/options.js +241 -0
- package/lib/commands/orient.js +13 -0
- package/lib/commands/orphans.js +5 -0
- package/lib/commands/patch.js +67 -0
- package/lib/commands/plan.js +436 -24
- package/lib/commands/preflight.js +211 -0
- package/lib/commands/prime.js +13 -0
- package/lib/commands/push.js +69 -2
- package/lib/commands/ready.js +2 -2
- package/lib/commands/recall.js +116 -0
- package/lib/commands/recap.js +61 -0
- package/lib/commands/recommend.js +22 -2
- package/lib/commands/release.js +91 -0
- package/lib/commands/remember.js +74 -0
- package/lib/commands/role.js +99 -0
- package/lib/commands/serve.js +581 -0
- package/lib/commands/setup.js +851 -979
- package/lib/commands/shepherd.js +436 -0
- package/lib/commands/ship.js +23 -1
- package/lib/commands/show.js +2 -2
- package/lib/commands/stage.js +192 -0
- package/lib/commands/stale.js +5 -0
- package/lib/commands/status.js +329 -11
- package/lib/commands/sync.js +34 -46
- package/lib/commands/team.js +15 -2
- package/lib/commands/test.js +58 -7
- package/lib/commands/update.js +2 -2
- package/lib/commands/upgrade.js +47 -0
- package/lib/commands/validate.js +56 -25
- package/lib/commands/worktree.js +308 -128
- package/lib/config-writer.js +202 -0
- package/lib/control-plane.js +236 -0
- package/lib/core/runtime-graph.js +946 -0
- package/lib/dep-guard/keyword-ripple.js +184 -0
- package/lib/deprecated-sync-cleanup.js +362 -0
- package/lib/detect-agent.js +2 -28
- package/lib/detect-worktree.js +42 -17
- package/lib/doc-gate/declaration.js +177 -0
- package/lib/doc-gate/detect.js +289 -0
- package/lib/doc-gate/gate.js +375 -0
- package/lib/doc-gate/okf-config.js +128 -0
- package/lib/doc-gate/okf.js +429 -0
- package/lib/docs-command.js +1161 -6
- package/lib/forge-issues.js +697 -0
- package/lib/forge-lock.js +262 -0
- package/lib/gate-events.js +193 -0
- package/lib/global-flags.js +74 -0
- package/lib/greptile-match.js +7 -63
- package/lib/harness-capability-matrix.js +380 -0
- package/lib/hook-global-installer.js +347 -0
- package/lib/hook-renderer.js +451 -0
- package/lib/inbox.js +391 -0
- package/lib/insights.js +397 -0
- package/lib/issue-adapter.js +156 -0
- package/lib/issue-backend.js +145 -0
- package/lib/issue-render.js +220 -0
- package/lib/issue-sync/authority.js +100 -0
- package/lib/issue-sync/github-pull.js +184 -0
- package/lib/issue-sync/import-primitives.js +98 -0
- package/lib/issue-sync/legacy-link-bridge.js +436 -0
- package/lib/issue-sync/link-store.js +292 -0
- package/lib/issue-sync/project-github.js +123 -0
- package/lib/issue-sync/reconcile.js +195 -0
- package/lib/issue-sync/schema.js +126 -0
- package/lib/kernel/backing-issue.js +305 -0
- package/lib/kernel/broker.js +1218 -0
- package/lib/kernel/cli-broker-factory.js +130 -0
- package/lib/kernel/conflict-signal.js +82 -0
- package/lib/kernel/evaluators.js +195 -0
- package/lib/kernel/fs-class.js +495 -0
- package/lib/kernel/issue-command-contract.js +559 -0
- package/lib/kernel/issue-id-resolver.js +186 -0
- package/lib/kernel/lease-enforcer.js +158 -0
- package/lib/kernel/migrations.js +333 -0
- package/lib/kernel/planning-buckets-schema.js +109 -0
- package/lib/kernel/projection-jsonl-writer.js +450 -0
- package/lib/kernel/readiness-model.js +329 -0
- package/lib/kernel/schema.js +356 -0
- package/lib/kernel/sqlite-driver.js +2504 -0
- package/lib/kernel/taxonomy-validator.js +394 -0
- package/lib/lefthook-check.js +8 -4
- package/lib/lefthook-wiring.js +413 -0
- package/lib/mcp-config-renderer.js +288 -0
- package/lib/memory/graphiti-mcp.js +106 -0
- package/lib/memory/router.js +387 -0
- package/lib/memory/typed-api.js +102 -0
- package/lib/memory-digest.js +195 -0
- package/lib/merge-rules.js +395 -0
- package/lib/migrate-dry-run.js +466 -0
- package/lib/orientation.js +863 -0
- package/lib/package-manager-remediation.js +103 -0
- package/lib/package-root.js +381 -0
- package/lib/patch-intent.js +890 -0
- package/lib/plugin-catalog.js +3 -4
- package/lib/plugin-manager.js +0 -5
- package/lib/pr-bundle.js +186 -0
- package/lib/pr-monitor/differ.js +195 -0
- package/lib/pr-monitor/events.js +0 -0
- package/lib/pr-monitor/gather.js +124 -0
- package/lib/pr-monitor/journal.js +299 -0
- package/lib/pr-monitor/monitor.js +146 -0
- package/lib/pr-monitor/render-sticky.js +157 -0
- package/lib/pr-monitor/watch-lifecycle.js +95 -0
- package/lib/pr-monitor/watch.js +247 -0
- package/lib/pr-pull.js +1273 -0
- package/lib/pr-shepherd.js +494 -0
- package/lib/pr-state-validator.js +59 -0
- package/lib/preflight/gates.js +237 -0
- package/lib/preflight/runner.js +116 -0
- package/lib/project-discovery.js +0 -53
- package/lib/project-memory.js +166 -0
- package/lib/protected-path-manifest.js +281 -0
- package/lib/protected-state-surfaces.js +387 -0
- package/lib/release-readiness.js +2089 -0
- package/lib/reset.js +59 -45
- package/lib/review-adapter.js +68 -0
- package/lib/rules-sync.js +260 -0
- package/lib/runtime-health.js +332 -23
- package/lib/safety-config-renderer.js +268 -0
- package/lib/setup-action-log.js +1 -7
- package/lib/setup.js +27 -65
- package/lib/shell-utils.js +76 -6
- package/lib/skills-sync.js +330 -0
- package/lib/smart-status/conflicts.js +205 -0
- package/lib/smart-status/scoring.js +191 -0
- package/lib/status/beads-snapshot.js +145 -0
- package/lib/status/presenter.js +216 -0
- package/lib/status/snapshot.js +186 -0
- package/lib/sync-backend.js +202 -0
- package/lib/untrusted-content.js +52 -0
- package/lib/upgrade-safety.js +199 -0
- package/lib/workflow/enforce-stage.js +298 -47
- package/lib/workflow/stage-transition.js +115 -0
- package/lib/workflow/stages.js +30 -6
- package/lib/workflow/state-manager.js +159 -14
- package/lib/workflow/state.js +23 -1
- package/lib/workflow-profiles.js +17 -5
- package/package.json +46 -36
- package/rules/documentation.md +19 -0
- package/rules/kernel-tracking.md +26 -0
- package/rules/security.md +22 -0
- package/rules/tdd.md +20 -0
- package/rules/workflow.md +27 -0
- package/scripts/auto-backing-issue.js +47 -0
- package/scripts/beads-context.sh +165 -22
- package/scripts/beads-migrate-to-dolt.sh +7 -0
- package/scripts/beads-upgrade-smoke.sh +284 -0
- package/scripts/behavioral-judge.sh +115 -11
- package/scripts/benchmark.js +349 -63
- package/scripts/bootstrap-windows-tools.sh +78 -0
- package/scripts/branch-protection.js +2 -3
- package/scripts/check-agents.js +34 -137
- package/scripts/commitlint.js +3 -1
- package/scripts/conflict-detect.sh +3 -0
- package/scripts/dep-guard-analyze.js +52 -17
- package/scripts/dep-guard-keyword-ripple.js +29 -0
- package/scripts/dep-guard-render-review.js +86 -0
- package/scripts/dep-guard.sh +64 -232
- package/scripts/file-index.sh +3 -0
- package/scripts/forge-team/lib/claim.sh +34 -18
- package/scripts/forge-team/lib/dashboard.sh +61 -86
- package/scripts/forge-team/lib/epic.sh +99 -263
- package/scripts/forge-team/lib/hooks.sh +26 -28
- package/scripts/forge-team/lib/identity.sh +4 -4
- package/scripts/forge-team/lib/sync-github.sh +144 -47
- package/scripts/forge-team/lib/verify.sh +93 -83
- package/scripts/forge-team/lib/workload.sh +41 -65
- package/scripts/forge-team/tests/claim.test.sh +25 -19
- package/scripts/forge-team/tests/dashboard.test.sh +31 -46
- package/scripts/forge-team/tests/epic.test.sh +52 -71
- package/scripts/forge-team/tests/hooks.test.sh +38 -50
- package/scripts/forge-team/tests/identity.test.sh +3 -3
- package/scripts/forge-team/tests/integration.test.sh +44 -66
- package/scripts/forge-team/tests/sync-github.test.sh +183 -79
- package/scripts/forge-team/tests/verify.test.sh +37 -46
- package/scripts/forge-team/tests/workflow-integration.test.sh +4 -4
- package/scripts/forge-team/tests/workload.test.sh +32 -66
- package/scripts/gen-command-manifest.js +153 -0
- package/scripts/gen-embedded-assets.mjs +129 -0
- package/scripts/install.ps1 +139 -0
- package/scripts/install.sh +268 -0
- package/scripts/lib/beads-migrate-to-dolt.mjs +503 -0
- package/scripts/lib/release-asset.mjs +84 -0
- package/scripts/parity-check.mjs +145 -0
- package/scripts/parity-check.test.mjs +58 -0
- package/scripts/pin-agentic-workflow-images.js +112 -0
- package/scripts/pr-coordinator.sh +3 -0
- package/scripts/preflight-sonar.eslint.config.mjs +44 -0
- package/scripts/preflight.sh +108 -0
- package/scripts/protected-state-check.js +104 -0
- package/scripts/smart-status-score.js +31 -0
- package/scripts/smart-status-sessions.js +51 -0
- package/scripts/smart-status.sh +117 -369
- package/scripts/spikes/config-race-bench.js +111 -0
- package/scripts/spikes/harness-capability-matrix.js +13 -0
- package/scripts/spikes/patch-anchor-stability-bench.js +125 -0
- package/scripts/spikes/protected-path-manifest.js +20 -0
- package/scripts/spikes/skill-auto-invoke-parity.js +292 -0
- package/scripts/sync-agent-skills.js +62 -0
- package/scripts/sync-agentic-workflow.js +48 -0
- package/scripts/sync-utils.sh +3 -0
- package/scripts/test-ci-shard.js +251 -0
- package/scripts/test-dashboard.js +188 -52
- package/scripts/test-full-suite.js +186 -0
- package/scripts/test-profile.js +278 -0
- package/scripts/test.js +302 -28
- package/scripts/validate.js +143 -0
- package/scripts/validate.sh +18 -1
- package/skills/claim-safety/SKILL.md +102 -0
- package/skills/claim-safety/evals/evals.json +46 -0
- package/{.github/prompts/dev.prompt.md → skills/dev/SKILL.md} +46 -52
- package/skills/dev/evals/evals.json +50 -0
- package/skills/hermes-forge/SKILL.md +185 -0
- package/skills/hermes-forge/evals/evals.json +46 -0
- package/skills/issue-basics/SKILL.md +111 -0
- package/skills/issue-basics/evals/evals.json +46 -0
- package/skills/kernel/SKILL.md +166 -0
- package/skills/kernel/evals/evals.json +50 -0
- package/skills/memory/SKILL.md +102 -0
- package/skills/parallel-deep-research/SKILL.md +14 -11
- package/skills/parallel-deep-research/evals/evals.json +11 -27
- package/{.github/prompts/plan.prompt.md → skills/plan/SKILL.md} +134 -159
- package/skills/plan/evals/evals.json +42 -0
- package/skills/research/SKILL.md +195 -0
- package/skills/research/evals/evals.json +42 -0
- package/{.github/prompts/review.prompt.md → skills/review/SKILL.md} +98 -62
- package/skills/review/evals/evals.json +42 -0
- package/skills/rollback/SKILL.md +110 -0
- package/skills/rollback/evals/evals.json +46 -0
- package/skills/rollback/references/methods.md +204 -0
- package/{.cursor/commands/rollback.md → skills/rollback/references/workflow-integration.md} +10 -284
- package/skills/shepherd/SKILL.md +66 -0
- package/skills/shepherd/evals/evals.json +42 -0
- package/skills/ship/SKILL.md +251 -0
- package/skills/ship/evals/evals.json +42 -0
- package/skills/smith/SKILL.md +142 -0
- package/skills/smith/evals/evals.json +46 -0
- package/skills/smith/references/autonomy-and-gates.md +94 -0
- package/{.github/prompts/sonarcloud.prompt.md → skills/sonarcloud/SKILL.md} +14 -3
- package/skills/sonarcloud/evals/evals.json +46 -0
- package/skills/sonarcloud-analysis/SKILL.md +18 -13
- package/skills/sonarcloud-analysis/evals/evals.json +11 -15
- package/skills/status/SKILL.md +102 -0
- package/skills/status/evals/evals.json +50 -0
- package/skills/triage-ready/SKILL.md +121 -0
- package/skills/triage-ready/evals/evals.json +42 -0
- package/{.github/prompts/validate.prompt.md → skills/validate/SKILL.md} +52 -29
- package/skills/validate/evals/evals.json +42 -0
- package/skills/verify/SKILL.md +299 -0
- package/skills/verify/evals/evals.json +50 -0
- package/.claude/commands/dev.md +0 -345
- package/.claude/commands/plan.md +0 -566
- package/.claude/commands/premerge.md +0 -186
- package/.claude/commands/research.md +0 -42
- package/.claude/commands/review.md +0 -451
- package/.claude/commands/rollback.md +0 -721
- package/.claude/commands/ship.md +0 -213
- package/.claude/commands/sonarcloud.md +0 -152
- package/.claude/commands/status.md +0 -90
- package/.claude/commands/validate.md +0 -288
- package/.claude/commands/verify.md +0 -269
- package/.claude/rules/workflow.md +0 -121
- package/.cline/workflows/dev.md +0 -342
- package/.cline/workflows/plan.md +0 -563
- package/.cline/workflows/premerge.md +0 -183
- package/.cline/workflows/research.md +0 -39
- package/.cline/workflows/review.md +0 -448
- package/.cline/workflows/rollback.md +0 -718
- package/.cline/workflows/ship.md +0 -210
- package/.cline/workflows/sonarcloud.md +0 -146
- package/.cline/workflows/status.md +0 -87
- package/.cline/workflows/validate.md +0 -285
- package/.cline/workflows/verify.md +0 -266
- package/.codex/config.toml +0 -11
- package/.codex/skills/dev/SKILL.md +0 -345
- package/.codex/skills/plan/SKILL.md +0 -566
- package/.codex/skills/premerge/SKILL.md +0 -186
- package/.codex/skills/research/SKILL.md +0 -42
- package/.codex/skills/review/SKILL.md +0 -451
- package/.codex/skills/rollback/SKILL.md +0 -721
- package/.codex/skills/ship/SKILL.md +0 -213
- package/.codex/skills/sonarcloud/SKILL.md +0 -149
- package/.codex/skills/status/SKILL.md +0 -90
- package/.codex/skills/validate/SKILL.md +0 -288
- package/.codex/skills/verify/SKILL.md +0 -269
- package/.cursor/commands/dev.md +0 -342
- package/.cursor/commands/plan.md +0 -563
- package/.cursor/commands/premerge.md +0 -183
- package/.cursor/commands/research.md +0 -39
- package/.cursor/commands/review.md +0 -448
- package/.cursor/commands/ship.md +0 -210
- package/.cursor/commands/sonarcloud.md +0 -146
- package/.cursor/commands/status.md +0 -87
- package/.cursor/commands/validate.md +0 -285
- package/.cursor/commands/verify.md +0 -266
- package/.cursorrules +0 -149
- package/.github/prompts/premerge.prompt.md +0 -188
- package/.github/prompts/research.prompt.md +0 -44
- package/.github/prompts/rollback.prompt.md +0 -723
- package/.github/prompts/ship.prompt.md +0 -215
- package/.github/prompts/status.prompt.md +0 -92
- package/.github/prompts/verify.prompt.md +0 -271
- package/.github/workflows/beads-to-github.yml +0 -56
- package/.github/workflows/github-to-beads.yml +0 -97
- package/.kilocode/workflows/dev.md +0 -346
- package/.kilocode/workflows/plan.md +0 -567
- package/.kilocode/workflows/premerge.md +0 -187
- package/.kilocode/workflows/research.md +0 -43
- package/.kilocode/workflows/review.md +0 -452
- package/.kilocode/workflows/rollback.md +0 -722
- package/.kilocode/workflows/ship.md +0 -214
- package/.kilocode/workflows/sonarcloud.md +0 -150
- package/.kilocode/workflows/status.md +0 -91
- package/.kilocode/workflows/validate.md +0 -289
- package/.kilocode/workflows/verify.md +0 -270
- package/.opencode/commands/dev.md +0 -345
- package/.opencode/commands/plan.md +0 -566
- package/.opencode/commands/premerge.md +0 -186
- package/.opencode/commands/research.md +0 -42
- package/.opencode/commands/review.md +0 -451
- package/.opencode/commands/rollback.md +0 -721
- package/.opencode/commands/ship.md +0 -213
- package/.opencode/commands/sonarcloud.md +0 -149
- package/.opencode/commands/status.md +0 -90
- package/.opencode/commands/validate.md +0 -288
- package/.opencode/commands/verify.md +0 -269
- package/.roo/commands/dev.md +0 -346
- package/.roo/commands/plan.md +0 -567
- package/.roo/commands/premerge.md +0 -187
- package/.roo/commands/research.md +0 -43
- package/.roo/commands/review.md +0 -452
- package/.roo/commands/rollback.md +0 -722
- package/.roo/commands/ship.md +0 -214
- package/.roo/commands/sonarcloud.md +0 -150
- package/.roo/commands/status.md +0 -91
- package/.roo/commands/validate.md +0 -289
- package/.roo/commands/verify.md +0 -270
- package/docs/BEADS_GITHUB_SYNC.md +0 -255
- package/docs/GREPTILE_SETUP.md +0 -400
- package/docs/MANUAL_REVIEW_GUIDE.md +0 -106
- package/docs/SETUP.md +0 -663
- package/docs/VALIDATION.md +0 -363
- package/lib/agents/cline.plugin.json +0 -29
- package/lib/agents/copilot.plugin.json +0 -24
- package/lib/agents/kilocode.plugin.json +0 -22
- package/lib/agents/opencode.plugin.json +0 -23
- package/lib/agents/roo.plugin.json +0 -30
- package/lib/beads-health-check.js +0 -143
- package/lib/commands/commands-reset.js +0 -147
- package/opencode.json +0 -67
- package/scripts/beads-context.test.js +0 -567
- package/scripts/github-beads-sync/comment.mjs +0 -64
- package/scripts/github-beads-sync/config.mjs +0 -148
- package/scripts/github-beads-sync/github-api.mjs +0 -131
- package/scripts/github-beads-sync/index.mjs +0 -332
- package/scripts/github-beads-sync/label-mapper.mjs +0 -54
- package/scripts/github-beads-sync/mapping.mjs +0 -78
- package/scripts/github-beads-sync/reverse-sync-cli.mjs +0 -31
- package/scripts/github-beads-sync/reverse-sync.mjs +0 -138
- package/scripts/github-beads-sync/run-bd.mjs +0 -161
- package/scripts/github-beads-sync/sanitize.mjs +0 -121
- package/scripts/github-beads-sync.config.json +0 -26
- package/scripts/sync-commands.js +0 -600
|
@@ -1,14 +1,35 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >
|
|
4
|
+
Forge PLAN stage — first stop when starting a NEW or unscoped feature. Sets up an
|
|
5
|
+
isolated worktree up front, then runs one-question-at-a-time brainstorming for design
|
|
6
|
+
intent, commits a design doc, does technical/OWASP/DRY + codebase research, and produces a
|
|
7
|
+
TDD task list for /dev. Trigger on "let's plan X", "scope a new feature", "brainstorm before we
|
|
8
|
+
build", "write a design doc", "break this into tasks", or "set up a worktree and task list
|
|
9
|
+
before coding". Reach for this even when the ask sounds like only design or only scoping —
|
|
10
|
+
plan owns intent → research → task-list setup as one stage. NOT for driving a feature to a
|
|
11
|
+
merged PR (that is smith), NOT for implementing tasks that already exist (dev), NOT for a
|
|
12
|
+
standalone deep-research pass into an approved design doc (research), NOT for reporting
|
|
13
|
+
where work stands or what is stale (status), and NOT for everyday issue create/list/close or
|
|
14
|
+
picking the next ready issue (issue-basics / triage-ready).
|
|
15
|
+
allowed-tools: Bash, Read, Write, Edit, Grep, Glob
|
|
5
16
|
---
|
|
6
17
|
|
|
7
18
|
Plan a feature from scratch: brainstorm design intent, research technical approach, then set up branch, worktree, and a complete task list ready for /dev.
|
|
8
19
|
|
|
9
20
|
# Plan
|
|
10
21
|
|
|
11
|
-
|
|
22
|
+
`/plan` is the default planning super-skill. A full invocation runs the three legacy sections below (intent, research, setup/task list), but v3 treats the internal planning work as callable sub-skills:
|
|
23
|
+
|
|
24
|
+
- `plan.intent_capture`
|
|
25
|
+
- `plan.parallel_research`
|
|
26
|
+
- `plan.parallel_critics`
|
|
27
|
+
- `plan.synthesis`
|
|
28
|
+
- `plan.final_lock`
|
|
29
|
+
|
|
30
|
+
Do not assume every invocation must run every sub-skill. Run only the requested/required sub-skill when the user asks for partial planning work, and record skipped nodes as skipped rather than silently deleting them from the graph. External planner artifacts may satisfy `/dev` entry without running `/plan`, per D34, if they provide the required structured task list and acceptance criteria.
|
|
31
|
+
|
|
32
|
+
Planning template behavior is resolved through the runtime graph and `.forge/config.yaml`, not through a separate planner-only config file. Use `forge options why <plan-subskill>`, `forge options diff`, and `forge options lint` to inspect configured planning mode, convergence threshold, critic set, and partial invocation choices.
|
|
12
33
|
|
|
13
34
|
---
|
|
14
35
|
|
|
@@ -22,14 +43,15 @@ Before ANY planning work begins:
|
|
|
22
43
|
- Tell the user: "You are on '<branch>'. Planning must start from a clean worktree on master.
|
|
23
44
|
Run: git checkout master — then re-run /plan."
|
|
24
45
|
3. If on master, create the worktree NOW before asking any questions:
|
|
25
|
-
a.
|
|
46
|
+
a. forge worktree create <slug> --branch feat/<slug>
|
|
26
47
|
b. cd .worktrees/<slug>
|
|
27
48
|
4. Confirm: "Working in isolated worktree: .worktrees/<slug> (branch: feat/<slug>)"
|
|
28
49
|
5. Create the epic issue and record the stage transition:
|
|
29
50
|
```bash
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
51
|
+
forge create --title="<feature-name>" --type=epic
|
|
52
|
+
forge update <id> --status=in_progress
|
|
53
|
+
# Record the none→plan stage transition kernel-natively on the Forge issue.
|
|
54
|
+
forge comment <id> "Stage: none → plan"
|
|
33
55
|
```
|
|
34
56
|
6. ONLY THEN begin Phase 1.
|
|
35
57
|
|
|
@@ -48,6 +70,8 @@ between parallel features or sessions.
|
|
|
48
70
|
/plan <feature-slug>
|
|
49
71
|
/plan <feature-slug> --strategic # Major architecture change: creates design doc PR before Phase 2
|
|
50
72
|
/plan <feature-slug> --continue # After --strategic PR is merged: run Phase 2 + 3
|
|
73
|
+
/plan <feature-slug> --only=critics # Partial invocation: run one planning sub-skill and record evidence
|
|
74
|
+
/plan <feature-slug> --only=lock # Partial invocation: lock an already-supported plan
|
|
51
75
|
```
|
|
52
76
|
|
|
53
77
|
---
|
|
@@ -59,10 +83,10 @@ Before proceeding to Phase 1, check for cross-developer conflicts:
|
|
|
59
83
|
|
|
60
84
|
```bash
|
|
61
85
|
# Auto-sync to get latest team state
|
|
62
|
-
|
|
86
|
+
forge sync || true
|
|
63
87
|
|
|
64
88
|
# Check for conflicts with this issue's planned work area
|
|
65
|
-
bash scripts/conflict-detect.sh --issue <
|
|
89
|
+
bash scripts/conflict-detect.sh --issue <forge-id>
|
|
66
90
|
```
|
|
67
91
|
|
|
68
92
|
If exit code 2 (validation error): show error message, abort — do not show conflict prompt.
|
|
@@ -71,7 +95,7 @@ If exit code 1 (conflicts found):
|
|
|
71
95
|
- Display the conflict output to the developer
|
|
72
96
|
- Ask: "Other developers are working in overlapping areas. Proceed anyway? (y/n)"
|
|
73
97
|
- If `n`: exit cleanly, no side effects
|
|
74
|
-
- If `y`: log override via `
|
|
98
|
+
- If `y`: log override via `forge comment <id> "Conflict override: proceeding despite overlap with <conflicting-issues>"`, then continue to Phase 1
|
|
75
99
|
- Audit: record conflict override per OWASP A09
|
|
76
100
|
|
|
77
101
|
If exit code 0: proceed silently to Phase 1.
|
|
@@ -100,7 +124,7 @@ If merge conflicts or unmet dependencies are found:
|
|
|
100
124
|
- Display the findings to the developer
|
|
101
125
|
- Ask: "In-flight PRs have potential conflicts. Proceed with planning anyway? (y/n)"
|
|
102
126
|
- If `n`: exit cleanly, no side effects
|
|
103
|
-
- If `y`: log override via `
|
|
127
|
+
- If `y`: log override via `forge comment <id> "PR coordination override: proceeding despite in-flight conflicts"`, then continue to Phase 1
|
|
104
128
|
|
|
105
129
|
---
|
|
106
130
|
|
|
@@ -109,7 +133,7 @@ If merge conflicts or unmet dependencies are found:
|
|
|
109
133
|
Before starting planning, verify team identity is mapped:
|
|
110
134
|
|
|
111
135
|
```bash
|
|
112
|
-
|
|
136
|
+
forge team verify 2>&1 || true
|
|
113
137
|
```
|
|
114
138
|
|
|
115
139
|
If verify reports issues, address them before proceeding (the output will include `FORGE_AGENT_7f3a:PROMPT:` directives with exact commands to run).
|
|
@@ -125,11 +149,14 @@ If verify reports issues, address them before proceeding (the output will includ
|
|
|
125
149
|
Before exploring context or asking questions, check for potential conflicts with in-flight work:
|
|
126
150
|
|
|
127
151
|
```bash
|
|
128
|
-
# If a
|
|
129
|
-
|
|
152
|
+
# If a Forge issue ID is known (e.g., from /status or forge ready):
|
|
153
|
+
# Advisory only — runs when the dep-guard tooling is present; a failure is non-fatal.
|
|
154
|
+
if [ -f scripts/dep-guard.sh ]; then
|
|
155
|
+
bash scripts/dep-guard.sh check-ripple <forge-issue-id> || echo "dep-guard ripple check skipped (advisory)"
|
|
156
|
+
fi
|
|
130
157
|
|
|
131
158
|
# If no issue exists yet (first-time plan):
|
|
132
|
-
|
|
159
|
+
forge list --status=open,in_progress
|
|
133
160
|
```
|
|
134
161
|
|
|
135
162
|
Review the output. If overlaps are detected:
|
|
@@ -156,7 +183,7 @@ When `check-ripple` detects overlapping issues AND contract metadata is availabl
|
|
|
156
183
|
- **CRITICAL**: Consumer is in an active in_progress issue's task list
|
|
157
184
|
3. **When uncertain, default to HIGH** — conservative over permissive
|
|
158
185
|
4. Recommend one action:
|
|
159
|
-
- Add dependency (`
|
|
186
|
+
- Add dependency (`forge issue dep add <source> <target>`)
|
|
160
187
|
- Coordinate with other issue's developer
|
|
161
188
|
- Scope down current feature to avoid overlap
|
|
162
189
|
- Proceed as-is (no real conflict)
|
|
@@ -203,7 +230,7 @@ Propose 2-3 concrete approaches with:
|
|
|
203
230
|
|
|
204
231
|
### Step 4: Write design doc
|
|
205
232
|
|
|
206
|
-
Save to `docs/
|
|
233
|
+
Save to `docs/work/YYYY-MM-DD-<slug>/plan.md` with these sections:
|
|
207
234
|
- **Feature**: slug, date, status
|
|
208
235
|
- **Purpose**: what problem it solves
|
|
209
236
|
- **Success criteria**: measurable, specific
|
|
@@ -215,7 +242,7 @@ Save to `docs/plans/YYYY-MM-DD-<slug>-design.md` with these sections:
|
|
|
215
242
|
|
|
216
243
|
Commit the design doc:
|
|
217
244
|
```bash
|
|
218
|
-
git add docs/
|
|
245
|
+
git add docs/work/YYYY-MM-DD-<slug>/plan.md
|
|
219
246
|
git commit -m "docs: add design doc for <slug>"
|
|
220
247
|
```
|
|
221
248
|
|
|
@@ -228,7 +255,7 @@ After committing the design doc, push to a proposal branch and open PR:
|
|
|
228
255
|
git checkout -b feat/<slug>-proposal
|
|
229
256
|
git push -u origin feat/<slug>-proposal
|
|
230
257
|
gh pr create --title "Design: <feature-name>" \
|
|
231
|
-
--body "Design doc for review. See docs/
|
|
258
|
+
--body "Design doc for review. See docs/work/YYYY-MM-DD-<slug>/plan.md"
|
|
232
259
|
```
|
|
233
260
|
|
|
234
261
|
**STOP here.** Present the PR URL. Wait for the user to merge the proposal PR.
|
|
@@ -239,8 +266,8 @@ After merge, run `/plan <slug> --continue` to proceed to Phase 2 + 3.
|
|
|
239
266
|
```
|
|
240
267
|
<HARD-GATE: Phase 1 exit>
|
|
241
268
|
Do NOT begin Phase 2 (web research) until:
|
|
242
|
-
1. User has approved the design in this session
|
|
243
|
-
2. Design doc exists at docs/
|
|
269
|
+
1. User has approved the design in this session OR external-planner evidence satisfies the `/dev` entry contract from D34
|
|
270
|
+
2. Design doc exists at docs/work/YYYY-MM-DD-<slug>/plan.md
|
|
244
271
|
3. Design doc includes: success criteria, edge cases, out-of-scope, ambiguity policy
|
|
245
272
|
4. Design doc is committed to git
|
|
246
273
|
</HARD-GATE>
|
|
@@ -252,84 +279,39 @@ Do NOT begin Phase 2 (web research) until:
|
|
|
252
279
|
|
|
253
280
|
**Goal**: Find HOW to build it — best practices, known issues, security risks, TDD scenarios.
|
|
254
281
|
|
|
255
|
-
Record the phase transition before starting research:
|
|
282
|
+
Record the phase transition before starting research (kernel-native):
|
|
256
283
|
```bash
|
|
257
|
-
|
|
284
|
+
forge comment <id> "Stage: plan → research"
|
|
258
285
|
```
|
|
259
286
|
|
|
260
|
-
|
|
287
|
+
Delegate the technical investigation to the **research** skill, which owns this bundle so it
|
|
288
|
+
can be invoked on its own and reused mid-flow by other stages:
|
|
261
289
|
|
|
262
|
-
### Web research (parallel-deep-research skill)
|
|
263
290
|
```
|
|
264
|
-
Skill("
|
|
291
|
+
Skill("research") # run in "Plan bundle" mode for this feature's design doc
|
|
265
292
|
```
|
|
266
|
-
Search for:
|
|
267
|
-
- "[tech stack] [feature] best practices [year]"
|
|
268
|
-
- "[library/framework] [feature] implementation patterns"
|
|
269
|
-
- "Known issues / gotchas with [approach selected]"
|
|
270
|
-
|
|
271
|
-
### OWASP Top 10 analysis
|
|
272
|
-
|
|
273
|
-
For this feature's risk surface, document each relevant OWASP category:
|
|
274
|
-
- What the risk is
|
|
275
|
-
- Whether it applies to this feature
|
|
276
|
-
- What mitigation will be implemented
|
|
277
|
-
|
|
278
|
-
### Codebase exploration (Explore agent)
|
|
279
|
-
- Similar existing patterns to reuse
|
|
280
|
-
- Files this feature will affect
|
|
281
|
-
- Existing test infrastructure to leverage
|
|
282
|
-
|
|
283
|
-
### DRY check (mandatory — use actual search tools)
|
|
284
|
-
|
|
285
|
-
Before finalizing the approach, run Grep/Glob/Read searches for existing implementations of the planned function or pattern. Do not rely on memory or assumptions — execute the searches.
|
|
286
|
-
|
|
287
|
-
```
|
|
288
|
-
Grep(searchTerm) # e.g., the function or concept name
|
|
289
|
-
Glob("**/*.js") # narrow to affected file types if needed
|
|
290
|
-
Read(matchedFile) # inspect any match in context
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
If a match is found:
|
|
294
|
-
- Update the design doc's "Approach selected" section to say "extend existing [file/function]" — not "create new".
|
|
295
|
-
- Note the existing file path and line number in the design doc.
|
|
296
|
-
|
|
297
|
-
If no match is found: proceed. The DRY gate is cleared.
|
|
298
|
-
|
|
299
|
-
### Blast-radius search (mandatory for remove/rename/replace features)
|
|
300
|
-
|
|
301
|
-
If this feature involves **removing**, **renaming**, or **replacing** a concept, tool, or dependency:
|
|
302
|
-
|
|
303
|
-
1. Grep the ENTIRE codebase for the thing being removed/renamed:
|
|
304
|
-
```
|
|
305
|
-
Grep("<thing-being-removed>") # exact name
|
|
306
|
-
Grep("<thing-being-removed>", -i) # case-insensitive variant
|
|
307
|
-
Glob("**/*<thing>*") # files named after it
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
2. For EVERY match found:
|
|
311
|
-
- Note the file path and line number in the design doc
|
|
312
|
-
- Add a cleanup task to the task list (Phase 3)
|
|
313
|
-
- Flag matches in unexpected packages or config files explicitly
|
|
314
|
-
|
|
315
|
-
3. Common hiding spots to check:
|
|
316
|
-
- `package.json` (scripts, dependencies, description)
|
|
317
|
-
- `install.sh` / setup scripts
|
|
318
|
-
- CI/CD workflows (`.github/workflows/`)
|
|
319
|
-
- Agent config files (`lib/agents/`, `.cursorrules`, etc.)
|
|
320
|
-
- Documentation (`docs/`, `README.md`, `AGENTS.md`)
|
|
321
|
-
- Import statements and require() calls
|
|
322
|
-
|
|
323
|
-
If no removal/rename is involved, this section is skipped.
|
|
324
293
|
|
|
325
|
-
|
|
294
|
+
Hand research the approved approach and the design doc path. It runs the following in parallel
|
|
295
|
+
and appends the results under a `## Technical Research` section in the design doc (not a
|
|
296
|
+
separate file):
|
|
326
297
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
-
|
|
330
|
-
-
|
|
298
|
+
- **Web research** — best practices, implementation patterns, and known gotchas for the chosen
|
|
299
|
+
approach. (For an external market/vendor landscape, research escalates to
|
|
300
|
+
`parallel-deep-research`; code-level questions use WebSearch/Context7.)
|
|
301
|
+
- **OWASP Top 10 analysis** — for each relevant category: the risk, whether it applies, and the
|
|
302
|
+
mitigation to implement.
|
|
303
|
+
- **DRY check** — Grep/Glob/Read for existing implementations; if found, switch "Approach
|
|
304
|
+
selected" to "extend existing <file>:<line>" instead of "create new".
|
|
305
|
+
- **Blast-radius search** (mandatory for remove/rename/replace) — grep the ENTIRE repo (exact +
|
|
306
|
+
case-insensitive + filename glob) and record every hit (including `package.json`, setup
|
|
307
|
+
scripts, `.github/workflows/`, agent config, and docs), adding a cleanup task for each.
|
|
308
|
+
- **Codebase exploration** (Explore agent) — similar patterns to reuse, affected files, and
|
|
309
|
+
test infrastructure to leverage.
|
|
310
|
+
- **TDD test scenarios** — at least 3: happy path, error/failure path, and one Phase-1 edge case.
|
|
331
311
|
|
|
332
|
-
|
|
312
|
+
If the research skill is not available in the active toolset, run the same bundle inline with
|
|
313
|
+
WebSearch/WebFetch, Grep/Glob/Read, and the Explore agent — the Phase 2 exit gate below verifies
|
|
314
|
+
the outputs regardless of who produced them.
|
|
333
315
|
|
|
334
316
|
---
|
|
335
317
|
|
|
@@ -349,9 +331,9 @@ Do NOT begin Phase 3 (setup) until:
|
|
|
349
331
|
|
|
350
332
|
**Goal**: Create branch, worktree, and a complete task list ready for /dev.
|
|
351
333
|
|
|
352
|
-
Record the phase transition before starting setup:
|
|
334
|
+
Record the phase transition before starting setup (kernel-native):
|
|
353
335
|
```bash
|
|
354
|
-
|
|
336
|
+
forge comment <id> "Stage: research → setup"
|
|
355
337
|
```
|
|
356
338
|
|
|
357
339
|
### Step 1: Link child issues to the epic
|
|
@@ -359,7 +341,7 @@ bash scripts/beads-context.sh stage-transition <id> research setup
|
|
|
359
341
|
The epic was created in the Entry HARD-GATE (Phase 1 entry). If this feature requires child issues (sub-tasks tracked separately), create them now and link to the epic:
|
|
360
342
|
|
|
361
343
|
```bash
|
|
362
|
-
|
|
344
|
+
forge create --title="<sub-task-name>" --type=feature --parent=<epic-id>
|
|
363
345
|
```
|
|
364
346
|
|
|
365
347
|
### Step 2: Branch + worktree
|
|
@@ -377,9 +359,9 @@ else
|
|
|
377
359
|
# Step 2b: Verify .worktrees/ is gitignored — add if missing
|
|
378
360
|
git check-ignore -v .worktrees/ || echo ".worktrees/" >> .gitignore
|
|
379
361
|
|
|
380
|
-
# Step 2c: Create
|
|
362
|
+
# Step 2c: Create an isolated worktree rooted on master
|
|
381
363
|
git checkout master
|
|
382
|
-
|
|
364
|
+
forge worktree create <slug> --branch feat/<slug>
|
|
383
365
|
cd .worktrees/<slug>
|
|
384
366
|
fi
|
|
385
367
|
```
|
|
@@ -439,53 +421,54 @@ For each task, confirm it maps to a specific requirement, success criterion, or
|
|
|
439
421
|
|
|
440
422
|
**Before finalizing**: flag any tasks that touch areas not fully specified in the design doc. Present flagged tasks to user for quick clarification before saving.
|
|
441
423
|
|
|
442
|
-
Save to `docs/
|
|
424
|
+
Save to `docs/work/YYYY-MM-DD-<slug>/tasks.md`.
|
|
443
425
|
|
|
444
|
-
### Step 5b:
|
|
426
|
+
### Step 5b: Issue context (design + acceptance)
|
|
445
427
|
|
|
446
|
-
After saving the task list, attach design context and acceptance criteria to the
|
|
428
|
+
After saving the task list, attach design context and acceptance criteria to the Forge issue so downstream stages (`/dev`, `/validate`, `/review`) can retrieve it without re-reading the design doc. These are native Kernel issue fields — no separate tracker required.
|
|
447
429
|
|
|
448
430
|
```bash
|
|
449
|
-
# Link design metadata (task count + task file path) to the
|
|
450
|
-
|
|
431
|
+
# Link design metadata (task count + task file path) to the Forge issue
|
|
432
|
+
forge update <id> --design "<task-count> tasks | docs/work/YYYY-MM-DD-<slug>/tasks.md"
|
|
451
433
|
|
|
452
434
|
# Record the success criteria from the design doc on the issue
|
|
453
|
-
|
|
435
|
+
forge update <id> --acceptance "<success-criteria from design doc>"
|
|
454
436
|
```
|
|
455
437
|
|
|
456
|
-
Both commands must exit with code 0. If either fails, investigate (wrong issue ID?
|
|
438
|
+
Both commands must exit with code 0. If either fails, investigate (wrong issue ID? bad flag value?) before continuing.
|
|
457
439
|
|
|
458
|
-
### Step 5c: Contract extraction and logic-level dependency review
|
|
440
|
+
### Step 5c: Contract extraction and logic-level dependency review (advisory, optional)
|
|
459
441
|
|
|
460
|
-
After saving the task list and
|
|
442
|
+
After saving the task list and issue context, extract and store contract metadata, then run the logic-level Phase 3 dependency review. **This step uses the `dep-guard` dependency tooling; on a kernel-only setup it is skipped — it is advisory and never a hard block.**
|
|
461
443
|
|
|
462
444
|
```bash
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
445
|
+
if [ -f scripts/dep-guard.sh ]; then
|
|
446
|
+
# extract-contracts exits 1 when there simply are no contracts (normal, not an error),
|
|
447
|
+
# so store-contracts only runs when contracts were actually extracted.
|
|
448
|
+
if bash scripts/dep-guard.sh extract-contracts docs/work/YYYY-MM-DD-<slug>/tasks.md > /tmp/contracts.txt; then
|
|
449
|
+
# Contracts found — store them. A real store-contracts failure stays visible (not masked).
|
|
450
|
+
bash scripts/dep-guard.sh store-contracts <id> "$(cat /tmp/contracts.txt)"
|
|
451
|
+
fi
|
|
452
|
+
# check-ripple is advisory (needs the dependency-guard tooling); a failure is non-fatal.
|
|
453
|
+
bash scripts/dep-guard.sh check-ripple <id> || echo "dep-guard ripple check skipped (advisory)"
|
|
468
454
|
fi
|
|
469
|
-
|
|
470
|
-
# Re-run ripple check using Beads JSON + logic-level analysis
|
|
471
|
-
bash scripts/dep-guard.sh check-ripple <id>
|
|
472
455
|
```
|
|
473
456
|
|
|
474
457
|
`extract-contracts` exits 1 when no contracts are found (not an error — just nothing to store). `store-contracts` must exit 0 if called.
|
|
475
458
|
|
|
476
|
-
`check-ripple` is
|
|
477
|
-
- read
|
|
459
|
+
When available, `check-ripple` is advisory but logic-aware. It should:
|
|
460
|
+
- read the issue data via JSON
|
|
478
461
|
- analyze import/call-chain, contract, and behavioral dependency signals
|
|
479
462
|
- show rubric score, confidence, issue pairs, and proposed dependency updates with pros/cons
|
|
480
463
|
- stop for user approval whenever a dependency mutation is proposed
|
|
481
464
|
|
|
482
|
-
If the user approves a dependency mutation, apply it explicitly:
|
|
465
|
+
If the user approves a dependency mutation, apply it explicitly (only when the tooling is present):
|
|
483
466
|
|
|
484
467
|
```bash
|
|
485
468
|
bash scripts/dep-guard.sh apply-decision <id> <dependent-id> <depends-on-id> "<approval rationale>"
|
|
486
469
|
```
|
|
487
470
|
|
|
488
|
-
That approval step must
|
|
471
|
+
That approval step must inspect blockers with `forge issue blocked` (and `forge issue children <epic-id>` for the epic rollup), summarize `forge ready`, and persist the decision via `forge update` plus `forge comment`. The Forge Kernel is the canonical machine-readable decision record; the plan docs hold only the concise summary.
|
|
489
472
|
|
|
490
473
|
### Step 6: User review
|
|
491
474
|
|
|
@@ -495,68 +478,60 @@ Present the full task list. Allow the user to reorder, split, or remove tasks.
|
|
|
495
478
|
|
|
496
479
|
```
|
|
497
480
|
<HARD-GATE: /plan exit>
|
|
498
|
-
|
|
481
|
+
For a full `/plan` handoff only, do NOT hand off from `/plan` to `/dev` until ALL are confirmed:
|
|
499
482
|
1. git branch --show-current output shows feat/<slug>
|
|
500
483
|
2. git worktree list shows .worktrees/<slug>
|
|
501
484
|
3. Baseline tests ran — either passing OR user confirmed to proceed past failures
|
|
502
|
-
4.
|
|
503
|
-
5. Task list exists at docs/
|
|
485
|
+
4. Forge issue is created and in_progress (`forge issue show <id>` confirms status=in_progress)
|
|
486
|
+
5. Task list exists at docs/work/YYYY-MM-DD-<slug>/tasks.md
|
|
504
487
|
6. User has confirmed task list is correct
|
|
505
|
-
7. `
|
|
506
|
-
8. `
|
|
507
|
-
9. `dep-guard
|
|
508
|
-
10. `dep-guard
|
|
488
|
+
7. Design captured on the Forge issue — `forge update <id> --design ...` ran successfully (exit code 0)
|
|
489
|
+
8. Acceptance criteria captured on the Forge issue — `forge update <id> --acceptance ...` ran successfully (exit code 0)
|
|
490
|
+
9. Contract metadata stored via `dep-guard store-contracts` (exit code 0) — or skipped if no contracts found OR the beads-backed dep-guard tooling is unavailable
|
|
491
|
+
10. `dep-guard check-ripple` reviewed with the user before any `apply-decision` dependency mutation — or skipped when the dep-guard tooling is unavailable
|
|
492
|
+
|
|
493
|
+
If `/dev` is entered from an external planner, this `/plan` exit gate is not required. Instead, the external artifact must satisfy the L1 `/dev` entry contract: structured task list, acceptance criteria, and enough design intent for TDD implementation.
|
|
494
|
+
|
|
495
|
+
If only a sub-skill was invoked, do not claim full `/plan` completion. Record that sub-skill's evidence, gate outcome, and skipped graph nodes.
|
|
509
496
|
</HARD-GATE>
|
|
510
497
|
```
|
|
511
498
|
|
|
512
|
-
After all HARD-GATE items pass,
|
|
499
|
+
After all HARD-GATE items pass, confirm issue context and record the stage transition kernel-natively on the Forge issue:
|
|
513
500
|
|
|
514
501
|
```bash
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
502
|
+
# Confirm the issue carries design + acceptance context.
|
|
503
|
+
forge issue show <id>
|
|
504
|
+
|
|
505
|
+
# Record the plan→dev transition kernel-natively (Stage:/Summary:/Decisions:/Artifacts:/Next: envelope).
|
|
506
|
+
forge comment <id> "Stage: plan complete → ready for dev
|
|
507
|
+
Summary: <design approach chosen, task count>
|
|
508
|
+
Decisions: <key trade-offs resolved during Q&A>
|
|
509
|
+
Artifacts: docs/work/YYYY-MM-DD-<slug>/plan.md docs/work/YYYY-MM-DD-<slug>/tasks.md
|
|
510
|
+
Next: <first dev task focus area>"
|
|
521
511
|
```
|
|
522
512
|
|
|
523
513
|
---
|
|
524
514
|
|
|
525
|
-
##
|
|
526
|
-
|
|
527
|
-
```
|
|
528
|
-
✓ Phase 1: Design intent captured
|
|
529
|
-
- Design doc: docs/plans/<date>-<slug>-design.md
|
|
530
|
-
- Approach: <selected approach> (selected over <alternatives>)
|
|
531
|
-
- Ambiguity policy: Rubric scoring (>= 80% proceed, < 80% ask)
|
|
532
|
-
|
|
533
|
-
✓ Phase 2: Technical research complete
|
|
534
|
-
- OWASP Top 10: <N> risks identified, <N> mitigations planned
|
|
535
|
-
- TDD scenarios: <N> identified
|
|
536
|
-
- Sources: <N> references
|
|
515
|
+
## Dynamic Phase 3 Output
|
|
537
516
|
|
|
538
|
-
|
|
539
|
-
- Beads: <issue-id> (in_progress)
|
|
540
|
-
- Branch: feat/<slug>
|
|
541
|
-
- Worktree: .worktrees/<slug> (baseline: <N>/<N> tests passing)
|
|
542
|
-
- Task list: docs/plans/<date>-<slug>-tasks.md (<N> tasks)
|
|
517
|
+
Phase 3 output is generated from the live Forge issue, branch/worktree setup, baseline validation, and task list paths at runtime. It reports the Forge issue, branch, worktree, `docs/work/YYYY-MM-DD-<slug>/plan.md`, and `docs/work/YYYY-MM-DD-<slug>/tasks.md` from the actual run instead of a static example.
|
|
543
518
|
|
|
544
|
-
|
|
519
|
+
## Integration with Workflow
|
|
545
520
|
|
|
546
|
-
After confirming, run: /dev
|
|
547
521
|
```
|
|
522
|
+
Utility: /status -> Understand current context before starting
|
|
548
523
|
|
|
549
|
-
|
|
524
|
+
Default template:
|
|
525
|
+
/plan -> Optional default planner; external planners may satisfy /dev entry
|
|
526
|
+
/dev -> Implement each task with subagent-driven TDD and continuous validation
|
|
527
|
+
/ship -> Push + create PR
|
|
528
|
+
/review -> Address GitHub Actions, Greptile, SonarCloud
|
|
529
|
+
/verify -> Post-merge CI check on default branch
|
|
550
530
|
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
Stage 3: /validate → Type check, lint, tests, security — all fresh output
|
|
556
|
-
Stage 4: /ship → Push + create PR
|
|
557
|
-
Stage 5: /review → Address GitHub Actions, Greptile, SonarCloud
|
|
558
|
-
Stage 6: /premerge → Update docs, hand off PR to user
|
|
559
|
-
Stage 7: /verify → Post-merge CI check on main
|
|
531
|
+
Manual/support surfaces:
|
|
532
|
+
/validate -> Cold-start or recovery validation, not a required stage boundary
|
|
533
|
+
|
|
534
|
+
Pre-merge gate: doc updates + CI-green checkpoint embedded in /ship and /review (not a separate stage).
|
|
560
535
|
```
|
|
561
536
|
|
|
562
537
|
## Tips
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"query": "I want to build a rate-limiter for our public API — help me nail down the design, then break it into tasks before I write any code.",
|
|
4
|
+
"should_trigger": true
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"query": "Let's kick off the webhook-retry feature: ask me the key decisions one at a time, write it up, and set me up to start developing.",
|
|
8
|
+
"should_trigger": true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"query": "Scope out adding SSO to the admin dashboard — pin down requirements and edge cases and give me an ordered TDD task list on its own branch.",
|
|
12
|
+
"should_trigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"query": "Before anyone touches the notification service I want a real plan: a worktree, some research on the approach, and a task list /dev can just run.",
|
|
16
|
+
"should_trigger": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"query": "Starting the CSV-export epic today — brainstorm the approach with me and produce a committed design doc plus tasks.",
|
|
20
|
+
"should_trigger": true
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"query": "Grab the highest-priority ready issue and take it all the way to an open PR — plan, build, validate, ship — just pause for my approval before merge.",
|
|
24
|
+
"should_trigger": false
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"query": "The design doc and task list are already in docs/work; start implementing the first task with RED-GREEN-REFACTOR.",
|
|
28
|
+
"should_trigger": false
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"query": "The design is approved and written — now go do the deep web and codebase research and append it under the Technical Research section.",
|
|
32
|
+
"should_trigger": false
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"query": "Which stage am I on for the billing branch, and is any of my work going stale?",
|
|
36
|
+
"should_trigger": false
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"query": "Create a bug issue for the broken logout redirect and link it under the auth epic.",
|
|
40
|
+
"should_trigger": false
|
|
41
|
+
}
|
|
42
|
+
]
|