forge-workflow 0.0.10 → 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 +150 -61
- package/CHANGELOG.md +681 -0
- package/CLAUDE.md +9 -118
- 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 +461 -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/forge/TOOLCHAIN.md +670 -0
- 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/{TOOLCHAIN.md → reference/TOOLCHAIN.md} +62 -47
- 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 +121 -0
- package/lib/beads-sync-scaffold.js +25 -101
- package/lib/codex-skills.js +51 -1
- package/lib/commands/_issue.js +741 -77
- 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 +17 -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 +0 -1
- 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 +838 -972
- 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 +158 -21
- package/lib/commands/sync.js +34 -46
- package/lib/commands/team.js +4 -1
- package/lib/commands/test.js +43 -27
- package/lib/commands/update.js +2 -2
- package/lib/commands/upgrade.js +47 -0
- package/lib/commands/validate.js +43 -18
- package/lib/commands/worktree.js +307 -100
- 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 +2 -2
- package/lib/deprecated-sync-cleanup.js +362 -0
- package/lib/detect-agent.js +2 -28
- package/lib/detect-worktree.js +35 -9
- 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 +382 -11
- 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/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 +3 -2
- 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 +99 -497
- 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 +241 -20
- 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/scoring.js +17 -3
- package/lib/status/beads-snapshot.js +45 -2
- package/lib/status/presenter.js +169 -18
- 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 +296 -47
- package/lib/workflow/stage-transition.js +115 -0
- package/lib/workflow/stages.js +30 -6
- package/lib/workflow/state-manager.js +11 -22
- package/lib/workflow/state.js +23 -1
- package/lib/workflow-profiles.js +17 -5
- package/package.json +37 -35
- 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 +81 -57
- package/scripts/beads-upgrade-smoke.sh +24 -3
- 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.sh +22 -3
- 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 +49 -84
- 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 +50 -83
- 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/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 +21 -94
- package/scripts/protected-state-check.js +104 -0
- package/scripts/smart-status.sh +60 -57
- 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-utils.sh +3 -0
- package/scripts/test-ci-shard.js +13 -6
- package/scripts/test.js +95 -12
- 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} +44 -50
- 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} +132 -157
- 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/{.github/prompts/ship.prompt.md → skills/ship/SKILL.md} +81 -45
- 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/{.github/prompts/status.prompt.md → skills/status/SKILL.md} +20 -10
- 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/verify.prompt.md +0 -271
- package/.github/workflows/beads-to-github.yml +0 -89
- package/.github/workflows/github-to-beads.yml +0 -100
- 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 -281
- 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-bootstrap.js +0 -225
- package/lib/beads-health-check.js +0 -188
- package/lib/commands/commands-reset.js +0 -147
- package/opencode.json +0 -67
- package/scripts/beads-context.test.js +0 -584
- 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 -356
- package/scripts/github-beads-sync/label-mapper.mjs +0 -54
- package/scripts/github-beads-sync/mapping.mjs +0 -132
- package/scripts/github-beads-sync/reverse-sync-cli.mjs +0 -31
- package/scripts/github-beads-sync/reverse-sync.mjs +0 -162
- 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
|
@@ -0,0 +1,670 @@
|
|
|
1
|
+
# Forge Toolchain Reference
|
|
2
|
+
|
|
3
|
+
Complete reference for all tools integrated with the Forge workflow.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Forge is a local runtime control plane that coordinates several tool surfaces:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
Forge runtime control plane
|
|
11
|
+
- workflow templates and stage skills
|
|
12
|
+
- local project state and protected surfaces
|
|
13
|
+
- kernel-backed issue wrappers and sync (Beads is an opt-out backend)
|
|
14
|
+
- validation, packaging, and release evidence
|
|
15
|
+
- review adapters and external service hooks
|
|
16
|
+
- harness projections for agent-specific commands, prompts, workflows, and skills
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The default TDD-first workflow is a core template shipped by Forge. It is not the only runtime primitive. Toolchain docs should describe tools by the surface they support: setup, state, workflow stages, validation, review, release, sync, and recovery.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Beads - Local Issue Tracking And Sync Projection
|
|
24
|
+
|
|
25
|
+
**Package**: `@beads/bd`
|
|
26
|
+
**Repository**: [github.com/steveyegge/beads](https://github.com/steveyegge/beads)
|
|
27
|
+
**Purpose**: Distributed issue tracking designed for AI coding agents
|
|
28
|
+
|
|
29
|
+
### Why Beads?
|
|
30
|
+
|
|
31
|
+
- **Persists across sessions** - Issues survive context clearing, compaction, new chats
|
|
32
|
+
- **Local-first** - Runtime state stays under local `.beads/` and does not dirty normal Git work
|
|
33
|
+
- **Dependency tracking** - Know what blocks what
|
|
34
|
+
- **Ready detection** - `forge ready` finds unblocked work automatically
|
|
35
|
+
- **AI-optimized** - JSON output, semantic compaction, audit trails
|
|
36
|
+
|
|
37
|
+
### Installation
|
|
38
|
+
|
|
39
|
+
**Auto-installation** (Recommended):
|
|
40
|
+
```bash
|
|
41
|
+
bunx forge setup
|
|
42
|
+
# Prompts: "Install Beads? (y/n)"
|
|
43
|
+
# Automatically installs and initializes
|
|
44
|
+
# On Windows: uses PowerShell installer (npm @beads/bd has an EPERM bug on Windows)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Manual installation**:
|
|
48
|
+
```bash
|
|
49
|
+
# macOS / Linux (global)
|
|
50
|
+
bun add -g @beads/bd
|
|
51
|
+
bd init
|
|
52
|
+
|
|
53
|
+
# macOS / Linux (local)
|
|
54
|
+
bun add -d @beads/bd
|
|
55
|
+
bunx bd init
|
|
56
|
+
|
|
57
|
+
# Windows (global) — use PowerShell installer, NOT npm/bun add -g
|
|
58
|
+
#
|
|
59
|
+
# ⚠️ SECURITY WARNING: The one-liner below pipes remote content directly to execution.
|
|
60
|
+
# If the upstream repo, CDN, or transit is compromised, this runs arbitrary code.
|
|
61
|
+
# Prefer the "download + inspect" flow below for supply-chain safety.
|
|
62
|
+
#
|
|
63
|
+
# RECOMMENDED (safer — download, inspect, then run):
|
|
64
|
+
$installer = "$env:TEMP\beads-install.ps1"
|
|
65
|
+
irm https://raw.githubusercontent.com/steveyegge/beads/main/install.ps1 -OutFile $installer
|
|
66
|
+
# Open $installer in a text editor and review before running
|
|
67
|
+
# Get-Content $installer | less # or: notepad $installer
|
|
68
|
+
& $installer # execute after inspection
|
|
69
|
+
bd init
|
|
70
|
+
|
|
71
|
+
# CONVENIENCE (unsafe — reviewed installer only, skip if you don't trust the source):
|
|
72
|
+
# # See the safer download-then-inspect flow in the Beads install section.
|
|
73
|
+
# UNSAFE one-liner (only use if you trust the source and have reviewed it previously):
|
|
74
|
+
# irm https://raw.githubusercontent.com/steveyegge/beads/main/install.ps1 -OutFile $env:TEMP\beads-install.ps1; & $env:TEMP\beads-install.ps1
|
|
75
|
+
# bd init
|
|
76
|
+
|
|
77
|
+
# Or with bunx (macOS/Linux, no install needed)
|
|
78
|
+
bunx @beads/bd init
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
> **Windows note**: The `npm install -g @beads/bd` postinstall script uses `Expand-Archive`, which triggers an EPERM file-locking error on Windows (issue #1031, closed "not planned"). Use the PowerShell installer above instead.
|
|
82
|
+
|
|
83
|
+
### File Structure
|
|
84
|
+
|
|
85
|
+
After `bd init`, creates a local `.beads/` directory. Forge keeps this directory out of Git; `forge setup` writes local Git exclude rules under `.git/info/exclude` so downstream repositories do not need metadata-only commits.
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
.beads/
|
|
89
|
+
├── issues.jsonl # Local/exported issue data
|
|
90
|
+
├── beads.db # SQLite cache, when present
|
|
91
|
+
├── metadata.json # Local database metadata
|
|
92
|
+
├── config.yaml # Local Beads configuration
|
|
93
|
+
├── interactions.jsonl # Local agent audit log
|
|
94
|
+
└── .gitignore # Local ignore guard for runtime files
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Do not commit live `.beads/` runtime files. Shared team state must use the configured sync/server authority or an explicit projection/import path.
|
|
98
|
+
|
|
99
|
+
For day-to-day issue workflows, prefer the Forge wrapper commands (`forge ready`,
|
|
100
|
+
`forge create`, `forge update`, `forge close`, `forge sync`). Use `bd` directly
|
|
101
|
+
for Beads capabilities Forge does not wrap yet, such as `bd init`, `bd comments`,
|
|
102
|
+
`bd dep`, `bd blocked`, and `bd dolt *`.
|
|
103
|
+
|
|
104
|
+
### Complete Command Reference
|
|
105
|
+
|
|
106
|
+
#### Initialization
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
bd init # Initialize in project
|
|
110
|
+
bd init --stealth # Local-only (don't commit to repo)
|
|
111
|
+
bd init --contributor # Contributor mode
|
|
112
|
+
bd init --prefix PROJ # Custom issue prefix (PROJ-xxx)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
#### Issue Management
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Create issues
|
|
119
|
+
forge create "Title" # Basic issue
|
|
120
|
+
forge create "Title" --type feature # With type (feature, bug, chore, etc.)
|
|
121
|
+
forge create "Title" --priority 1 # With priority (0=critical, 4=backlog)
|
|
122
|
+
forge create "Title" -p 0 -l "urgent,backend" # P0 with labels
|
|
123
|
+
|
|
124
|
+
# View issues
|
|
125
|
+
forge show <id> # Detailed view with audit trail
|
|
126
|
+
forge list # All issues
|
|
127
|
+
forge list --status open # Filter by status
|
|
128
|
+
forge list --priority 1 # Filter by priority
|
|
129
|
+
forge list --assignee bob # Filter by assignee
|
|
130
|
+
forge list --label bug # Filter by label (AND logic)
|
|
131
|
+
forge list --label-any bug,urgent # Filter by label (OR logic)
|
|
132
|
+
forge list --type feature # Filter by type
|
|
133
|
+
forge list --title-contains "auth" # Search titles
|
|
134
|
+
forge list --limit 10 # Limit results
|
|
135
|
+
|
|
136
|
+
# Update issues
|
|
137
|
+
forge claim <id> # Claim work (sets in_progress)
|
|
138
|
+
forge update <id> --priority 2 # Change priority
|
|
139
|
+
forge update <id> --assignee bob # Assign
|
|
140
|
+
forge update <id> --title "New title" # Update title
|
|
141
|
+
forge update <id> --description "..." # Update description
|
|
142
|
+
forge update <id> --notes "..." # Add notes
|
|
143
|
+
forge update <id> --add-label urgent # Add label
|
|
144
|
+
|
|
145
|
+
# Complete issues
|
|
146
|
+
forge close <id> # Close single issue
|
|
147
|
+
forge close <id1> <id2> <id3> # Close multiple (efficient)
|
|
148
|
+
forge close <id> --reason "Completed auth" # Close with reason
|
|
149
|
+
bd delete <id> # Delete issue
|
|
150
|
+
bd delete <id> --cascade # Delete with dependents
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
#### Workflow Commands
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# Find work
|
|
157
|
+
forge ready # Issues with NO open blockers (start here!)
|
|
158
|
+
forge ready --priority 1 # Filter ready work by priority
|
|
159
|
+
bd blocked # Issues that ARE blocked
|
|
160
|
+
|
|
161
|
+
# Dependencies
|
|
162
|
+
bd dep add <child> <parent> # child depends on parent (blocks)
|
|
163
|
+
bd dep add <child> <parent> --type related # Soft reference (no blocking)
|
|
164
|
+
bd dep add <child> <parent> --type parent-child # Hierarchical
|
|
165
|
+
bd dep remove <child> <parent> # Remove dependency
|
|
166
|
+
bd dep tree <id> # Visualize dependency tree
|
|
167
|
+
bd dep cycles # Detect cycles
|
|
168
|
+
|
|
169
|
+
# Comments
|
|
170
|
+
bd comments <id> # View comments
|
|
171
|
+
bd comments add <id> "Comment text" # Add comment
|
|
172
|
+
|
|
173
|
+
# Git sync
|
|
174
|
+
forge sync # Pull + push Beads state through the Forge wrapper
|
|
175
|
+
bd dolt status # Check Dolt sync/server status
|
|
176
|
+
bd hooks install # Install git hooks for auto-sync
|
|
177
|
+
|
|
178
|
+
# Maintenance
|
|
179
|
+
bd stats # Project statistics
|
|
180
|
+
bd doctor # Check for issues
|
|
181
|
+
bd admin compact --days 90 # Compact old closed issues
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
#### Issue Statuses
|
|
185
|
+
|
|
186
|
+
- `open` - Not started
|
|
187
|
+
- `in_progress` - Being worked on
|
|
188
|
+
- `blocked` - Waiting on something
|
|
189
|
+
- `completed` - Done
|
|
190
|
+
- `on_hold` - Paused
|
|
191
|
+
- `cancelled` - Won't do
|
|
192
|
+
|
|
193
|
+
#### Priority Levels
|
|
194
|
+
|
|
195
|
+
| Priority | Meaning | Usage |
|
|
196
|
+
|----------|---------|-------|
|
|
197
|
+
| 0 (P0) | Critical | Drop everything, fix now |
|
|
198
|
+
| 1 (P1) | High | Do this sprint |
|
|
199
|
+
| 2 (P2) | Medium | Planned work |
|
|
200
|
+
| 3 (P3) | Low | Nice to have |
|
|
201
|
+
| 4 (P4) | Backlog | Someday/maybe |
|
|
202
|
+
|
|
203
|
+
#### Dependency Types
|
|
204
|
+
|
|
205
|
+
| Type | Blocks Ready? | Use Case |
|
|
206
|
+
|------|---------------|----------|
|
|
207
|
+
| `blocks` | YES | Hard dependency |
|
|
208
|
+
| `related` | NO | Soft reference |
|
|
209
|
+
| `parent-child` | YES | Hierarchy |
|
|
210
|
+
| `discovered-from` | NO | Found during work |
|
|
211
|
+
|
|
212
|
+
### Session Workflow
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
# Start of session
|
|
216
|
+
forge ready # What can I work on?
|
|
217
|
+
forge show <id> # Review the issue
|
|
218
|
+
forge claim <id>
|
|
219
|
+
|
|
220
|
+
# During work
|
|
221
|
+
bd comments add <id> "Progress update"
|
|
222
|
+
forge update <id> --notes "Found edge case"
|
|
223
|
+
|
|
224
|
+
# End of session
|
|
225
|
+
forge close <id> # If done, or:
|
|
226
|
+
forge update <id> --status blocked --comment "Needs API response"
|
|
227
|
+
forge sync # Always sync at end!
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## MCP Servers
|
|
233
|
+
|
|
234
|
+
### Context7 - Library Documentation
|
|
235
|
+
|
|
236
|
+
**Package**: `@upstash/context7-mcp@2` (pin to major version, not `@latest`)
|
|
237
|
+
**Purpose**: Up-to-date documentation and code examples for any programming library
|
|
238
|
+
**Used in**: `/plan` stage (Phase 2 research); any library lookup
|
|
239
|
+
|
|
240
|
+
Context7 provides current documentation that may be more recent than the AI's training data.
|
|
241
|
+
|
|
242
|
+
**Installation**:
|
|
243
|
+
|
|
244
|
+
**Claude Code**: Add to `.mcp.json` in your project root:
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
```json
|
|
248
|
+
{
|
|
249
|
+
"mcpServers": {
|
|
250
|
+
"context7": {
|
|
251
|
+
"command": "bunx",
|
|
252
|
+
"args": ["--bun", "@upstash/context7-mcp@2"]
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
**Cursor**: Check Cursor Settings → MCP Servers for configuration options
|
|
259
|
+
|
|
260
|
+
**Other agents**: If your agent supports MCP, configure using the JSON format above
|
|
261
|
+
|
|
262
|
+
**Usage**:
|
|
263
|
+
```
|
|
264
|
+
# The AI will automatically use Context7 when you ask about libraries
|
|
265
|
+
"How do I use React Query's useMutation hook?"
|
|
266
|
+
"What's the latest Next.js App Router API?"
|
|
267
|
+
"Show me Supabase RLS policy examples"
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
**When to use Context7**:
|
|
271
|
+
- Before implementing a library feature
|
|
272
|
+
- When official docs may have changed since AI training
|
|
273
|
+
- To verify API signatures and patterns
|
|
274
|
+
- For current best practices
|
|
275
|
+
|
|
276
|
+
### grep.app - Code Search
|
|
277
|
+
|
|
278
|
+
**Package**: `@ai-tools-all/grep_app_mcp` (recommended) or `@galprz/grep-mcp`
|
|
279
|
+
**Website**: [grep.app](https://grep.app)
|
|
280
|
+
**Purpose**: Search across 1M+ public GitHub repositories for real-world code examples
|
|
281
|
+
**Used in**: `/plan` stage (Phase 2 research); finding implementation patterns
|
|
282
|
+
|
|
283
|
+
grep.app provides code search across public GitHub repositories to find real-world examples and patterns.
|
|
284
|
+
|
|
285
|
+
**Installation (Claude Code)**:
|
|
286
|
+
|
|
287
|
+
Add to `.mcp.json` in your project root:
|
|
288
|
+
|
|
289
|
+
```json
|
|
290
|
+
{
|
|
291
|
+
"mcpServers": {
|
|
292
|
+
"context7": {
|
|
293
|
+
"command": "bunx",
|
|
294
|
+
"args": ["--bun", "@upstash/context7-mcp@2"]
|
|
295
|
+
},
|
|
296
|
+
"grep-app": {
|
|
297
|
+
"command": "bunx",
|
|
298
|
+
"args": ["--bun", "@ai-tools-all/grep_app_mcp"]
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
**Usage**:
|
|
305
|
+
```
|
|
306
|
+
# The AI will use grep.app when you need real-world examples
|
|
307
|
+
"Find examples of React useEffect cleanup patterns"
|
|
308
|
+
"Show me how others implement JWT authentication in Express"
|
|
309
|
+
"Search for rate limiting implementations in Node.js"
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
**When to use grep.app**:
|
|
313
|
+
|
|
314
|
+
- Finding real-world implementation examples
|
|
315
|
+
- Discovering coding patterns in production code
|
|
316
|
+
- Validating implementation approaches
|
|
317
|
+
- Learning from open source projects
|
|
318
|
+
|
|
319
|
+
**Context7 vs grep.app**:
|
|
320
|
+
|
|
321
|
+
| Tool | Purpose | Use When |
|
|
322
|
+
|----------------|--------------------------------|-------------------------------------------|
|
|
323
|
+
| **Context7** | Official library documentation | You need API reference, official patterns |
|
|
324
|
+
| **grep.app** | Real code in the wild | You want to see how others solve problems |
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## External Services
|
|
329
|
+
|
|
330
|
+
### Parallel AI - Web Research
|
|
331
|
+
|
|
332
|
+
**Website**: [platform.parallel.ai](https://platform.parallel.ai)
|
|
333
|
+
**Used in**: `/plan` stage (Phase 2 research)
|
|
334
|
+
|
|
335
|
+
4 APIs for research:
|
|
336
|
+
- **Search** - Web search with AI analysis
|
|
337
|
+
- **Extract** - Scrape specific URLs
|
|
338
|
+
- **Task** - Structured data enrichment
|
|
339
|
+
- **Deep Research** - Multi-source analysis
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
# Setup
|
|
343
|
+
# 1. Get key from https://platform.parallel.ai
|
|
344
|
+
# 2. Add to .env.local
|
|
345
|
+
PARALLEL_API_KEY=your-key
|
|
346
|
+
|
|
347
|
+
# Test
|
|
348
|
+
API_KEY=$(grep "^PARALLEL_API_KEY=" .env.local | cut -d= -f2)
|
|
349
|
+
curl -s -X POST "https://api.parallel.ai/v1beta/search" \
|
|
350
|
+
-H "x-api-key: $API_KEY" \
|
|
351
|
+
-H "Content-Type: application/json" \
|
|
352
|
+
-H "parallel-beta: search-extract-2025-10-10" \
|
|
353
|
+
-d '{"objective": "Next.js authentication best practices 2026"}'
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## Code Review Tools
|
|
359
|
+
|
|
360
|
+
Choose ONE code review tool based on your needs:
|
|
361
|
+
|
|
362
|
+
| Tool | Pricing | Best For | Setup |
|
|
363
|
+
|------|---------|----------|-------|
|
|
364
|
+
| **GitHub Code Quality** | FREE | All GitHub repos | Built-in, zero setup |
|
|
365
|
+
| **CodeRabbit** | FREE (OSS) | Open source projects | GitHub App |
|
|
366
|
+
| **Greptile** | $99+/mo | Enterprise | API key |
|
|
367
|
+
|
|
368
|
+
### Option 1: GitHub Code Quality (FREE, Recommended)
|
|
369
|
+
|
|
370
|
+
**Status**: Built-in to GitHub
|
|
371
|
+
**Used in**: `/review` stage
|
|
372
|
+
|
|
373
|
+
Zero setup required - GitHub's code quality features are enabled by default.
|
|
374
|
+
|
|
375
|
+
Features:
|
|
376
|
+
- Automatic code scanning
|
|
377
|
+
- Dependency vulnerability alerts
|
|
378
|
+
- Secret scanning
|
|
379
|
+
- Code navigation
|
|
380
|
+
|
|
381
|
+
### Option 2: CodeRabbit (FREE for Open Source)
|
|
382
|
+
|
|
383
|
+
**Website**: [coderabbit.ai](https://coderabbit.ai)
|
|
384
|
+
**Used in**: `/review` stage
|
|
385
|
+
|
|
386
|
+
AI-powered code review with deep context understanding.
|
|
387
|
+
|
|
388
|
+
```bash
|
|
389
|
+
# Setup
|
|
390
|
+
# 1. Go to https://coderabbit.ai
|
|
391
|
+
# 2. Install the GitHub App
|
|
392
|
+
# 3. Enable for your repositories
|
|
393
|
+
|
|
394
|
+
# Configuration (optional)
|
|
395
|
+
# Create .coderabbit.yaml in repo root
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
### Option 3: Greptile (Paid - Enterprise)
|
|
399
|
+
|
|
400
|
+
**Website**: [greptile.com](https://greptile.com)
|
|
401
|
+
**Used in**: `/review` stage
|
|
402
|
+
|
|
403
|
+
Enterprise-grade AI code review that understands your codebase.
|
|
404
|
+
|
|
405
|
+
```bash
|
|
406
|
+
# Setup
|
|
407
|
+
# 1. Get key from https://app.greptile.com
|
|
408
|
+
# 2. Add to .env.local
|
|
409
|
+
GREPTILE_API_KEY=your-key
|
|
410
|
+
|
|
411
|
+
# 3. Index repository (one-time)
|
|
412
|
+
curl -X POST "https://api.greptile.com/v2/repositories" \
|
|
413
|
+
-H "Authorization: Bearer $GREPTILE_API_KEY" \
|
|
414
|
+
-H "Content-Type: application/json" \
|
|
415
|
+
-d '{"remote": "github", "repository": "owner/repo"}'
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
## Code Quality Tools
|
|
421
|
+
|
|
422
|
+
Choose ONE code quality scanner based on your needs:
|
|
423
|
+
|
|
424
|
+
| Tool | Pricing | Best For | Requirement |
|
|
425
|
+
|------|---------|----------|-------------|
|
|
426
|
+
| **ESLint** | FREE | All projects | Built-in |
|
|
427
|
+
| **SonarCloud** | 50k LoC free | Cloud-first teams | API key |
|
|
428
|
+
| **SonarQube Community** | FREE | Self-hosted, unlimited | Docker |
|
|
429
|
+
|
|
430
|
+
### Option 1: ESLint Only (FREE, Recommended)
|
|
431
|
+
|
|
432
|
+
**Status**: Built-in
|
|
433
|
+
**Used in**: `/validate` stage
|
|
434
|
+
|
|
435
|
+
No external server required - uses your project's linting configuration.
|
|
436
|
+
|
|
437
|
+
```bash
|
|
438
|
+
# Already configured via package.json or eslint.config.js
|
|
439
|
+
bun run lint
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
### Option 2: SonarCloud (Cloud-Hosted)
|
|
443
|
+
|
|
444
|
+
**Website**: [sonarcloud.io](https://sonarcloud.io)
|
|
445
|
+
**Used in**: `/validate` stage
|
|
446
|
+
**Free Tier**: 50,000 lines of code
|
|
447
|
+
|
|
448
|
+
Static analysis for bugs, vulnerabilities, code smells.
|
|
449
|
+
|
|
450
|
+
```bash
|
|
451
|
+
# Setup
|
|
452
|
+
# 1. Create project at https://sonarcloud.io
|
|
453
|
+
# 2. Get token from Security settings
|
|
454
|
+
# 3. Add to .env.local
|
|
455
|
+
SONAR_TOKEN=your-token
|
|
456
|
+
SONAR_ORGANIZATION=your-org
|
|
457
|
+
SONAR_PROJECT_KEY=your-project
|
|
458
|
+
|
|
459
|
+
# 4. Create sonar-project.properties
|
|
460
|
+
echo "sonar.organization=$SONAR_ORGANIZATION
|
|
461
|
+
sonar.projectKey=$SONAR_PROJECT_KEY
|
|
462
|
+
sonar.sources=src" > sonar-project.properties
|
|
463
|
+
|
|
464
|
+
# 5. Run analysis
|
|
465
|
+
bunx sonarqube-scanner
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
### Option 3: SonarQube Community (Self-Hosted, FREE)
|
|
469
|
+
|
|
470
|
+
**Website**: [sonarqube.org](https://www.sonarsource.com/products/sonarqube/)
|
|
471
|
+
**Used in**: `/validate` stage
|
|
472
|
+
**Pricing**: FREE, unlimited lines of code
|
|
473
|
+
|
|
474
|
+
Self-hosted code quality analysis - no cloud dependency.
|
|
475
|
+
|
|
476
|
+
```bash
|
|
477
|
+
# Setup with Docker
|
|
478
|
+
docker run -d --name sonarqube \
|
|
479
|
+
-p 9000:9000 \
|
|
480
|
+
sonarqube:community
|
|
481
|
+
|
|
482
|
+
# Access at http://localhost:9000
|
|
483
|
+
# Default credentials: admin/admin
|
|
484
|
+
|
|
485
|
+
# Add to .env.local
|
|
486
|
+
SONARQUBE_URL=http://localhost:9000
|
|
487
|
+
SONARQUBE_TOKEN=your-token # Generate in SonarQube UI
|
|
488
|
+
|
|
489
|
+
# Create sonar-project.properties
|
|
490
|
+
echo "sonar.host.url=$SONARQUBE_URL
|
|
491
|
+
sonar.login=$SONARQUBE_TOKEN
|
|
492
|
+
sonar.projectKey=your-project
|
|
493
|
+
sonar.sources=src" > sonar-project.properties
|
|
494
|
+
|
|
495
|
+
# Run analysis
|
|
496
|
+
bunx sonarqube-scanner
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
**Docker Compose (Production)**:
|
|
500
|
+
```yaml
|
|
501
|
+
# docker-compose.yml
|
|
502
|
+
version: '3'
|
|
503
|
+
services:
|
|
504
|
+
sonarqube:
|
|
505
|
+
image: sonarqube:community
|
|
506
|
+
ports:
|
|
507
|
+
- "9000:9000"
|
|
508
|
+
environment:
|
|
509
|
+
- SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true
|
|
510
|
+
volumes:
|
|
511
|
+
- sonarqube_data:/opt/sonarqube/data
|
|
512
|
+
- sonarqube_logs:/opt/sonarqube/logs
|
|
513
|
+
|
|
514
|
+
volumes:
|
|
515
|
+
sonarqube_data:
|
|
516
|
+
sonarqube_logs:
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
---
|
|
520
|
+
|
|
521
|
+
### GitHub CLI - PR Workflow
|
|
522
|
+
|
|
523
|
+
**Installation**: [cli.github.com](https://cli.github.com)
|
|
524
|
+
**Used in**: `/ship` and `/review` stages
|
|
525
|
+
|
|
526
|
+
```bash
|
|
527
|
+
# Install
|
|
528
|
+
# macOS: brew install gh
|
|
529
|
+
# Windows: winget install GitHub.cli
|
|
530
|
+
# Linux: sudo apt install gh
|
|
531
|
+
|
|
532
|
+
# Authenticate
|
|
533
|
+
gh auth login
|
|
534
|
+
|
|
535
|
+
# Common commands
|
|
536
|
+
gh pr create --title "..." --body "..."
|
|
537
|
+
gh pr view <number>
|
|
538
|
+
gh pr checks <number>
|
|
539
|
+
gh pr merge <number> --squash --delete-branch
|
|
540
|
+
gh issue create --title "..." --body "..."
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
---
|
|
544
|
+
|
|
545
|
+
## Global CLI Tools
|
|
546
|
+
|
|
547
|
+
### Beads (`bd`) — Minimum Version
|
|
548
|
+
|
|
549
|
+
**Minimum version**: v0.49.x
|
|
550
|
+
**Check installed version**:
|
|
551
|
+
```bash
|
|
552
|
+
bd --version
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
**Install / Update**:
|
|
556
|
+
```bash
|
|
557
|
+
# macOS / Linux
|
|
558
|
+
bun add -g @beads/bd
|
|
559
|
+
|
|
560
|
+
# Windows — use PowerShell installer (npm has EPERM bug)
|
|
561
|
+
# See the safer download-then-inspect flow in the Beads install section.
|
|
562
|
+
# UNSAFE one-liner (only use if you trust the source and have reviewed it previously):
|
|
563
|
+
# irm https://raw.githubusercontent.com/steveyegge/beads/main/install.ps1 -OutFile $env:TEMP\beads-install.ps1; & $env:TEMP\beads-install.ps1
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
> **Why Forge + Beads?** Forge wraps the supported day-to-day issue workflow
|
|
567
|
+
> (`forge ready`, `forge create`, `forge close`, `forge sync`) while Beads
|
|
568
|
+
> remains the underlying store for initialization, dependencies, comments, and
|
|
569
|
+
> Dolt-backed sync internals.
|
|
570
|
+
|
|
571
|
+
---
|
|
572
|
+
|
|
573
|
+
## Default Workflow Template Mapping
|
|
574
|
+
|
|
575
|
+
This table maps tools to the default workflow template. It is not the complete Forge product model and it is not a requirement that every project use every stage.
|
|
576
|
+
|
|
577
|
+
| Stage | Tools Used |
|
|
578
|
+
|-------|------------|
|
|
579
|
+
| `/status` | `forge ready`, `forge list`, `git status` |
|
|
580
|
+
| `/plan` (Phase 2) | Parallel AI, Context7, grep.app, codebase exploration |
|
|
581
|
+
| `/plan` | `forge create`, `git checkout -b` |
|
|
582
|
+
| `/dev` | Tests, code, `forge update`, `/tasks save` |
|
|
583
|
+
| `/validate` | Type check, lint, tests, SonarCloud |
|
|
584
|
+
| `/ship` | `forge close`, `gh pr create` |
|
|
585
|
+
| `/review` | `gh pr view`, Greptile, SonarCloud |
|
|
586
|
+
| `/verify` | Documentation cross-check |
|
|
587
|
+
|
|
588
|
+
Pre-merge is not a stage. Its work (`forge sync`, doc updates, hand off PR) runs inside the `/ship` and `/review` stages as an embedded documentation-and-handoff gate.
|
|
589
|
+
|
|
590
|
+
---
|
|
591
|
+
|
|
592
|
+
## Quick Reference Card
|
|
593
|
+
|
|
594
|
+
### Beads (Issue Tracking)
|
|
595
|
+
|
|
596
|
+
```bash
|
|
597
|
+
bd init # Initialize
|
|
598
|
+
forge ready # Find unblocked work
|
|
599
|
+
forge create "Title" # Create issue
|
|
600
|
+
forge show <id> # View details
|
|
601
|
+
forge update <id> --status X # Update status
|
|
602
|
+
bd dep add <a> <b> # a depends on b
|
|
603
|
+
forge close <id> # Complete
|
|
604
|
+
forge sync # Beads sync
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
### GitHub CLI
|
|
608
|
+
|
|
609
|
+
```bash
|
|
610
|
+
gh auth login # Authenticate
|
|
611
|
+
gh pr create # Create PR
|
|
612
|
+
gh pr view <n> # View PR
|
|
613
|
+
gh pr checks <n> # Check status
|
|
614
|
+
gh pr merge <n> --squash # Merge
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
---
|
|
618
|
+
|
|
619
|
+
## Troubleshooting
|
|
620
|
+
|
|
621
|
+
### Beads
|
|
622
|
+
|
|
623
|
+
**"bd: command not found"**
|
|
624
|
+
```bash
|
|
625
|
+
# macOS / Linux
|
|
626
|
+
bun add -g @beads/bd
|
|
627
|
+
# Or use bunx @beads/bd <command>
|
|
628
|
+
|
|
629
|
+
# Windows — use PowerShell installer
|
|
630
|
+
# See the safer download-then-inspect flow in the Beads install section.
|
|
631
|
+
# UNSAFE one-liner (only use if you trust the source and have reviewed it previously):
|
|
632
|
+
# irm https://raw.githubusercontent.com/steveyegge/beads/main/install.ps1 -OutFile $env:TEMP\beads-install.ps1; & $env:TEMP\beads-install.ps1
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
**Windows EPERM error during `npm install -g @beads/bd`**
|
|
636
|
+
```bash
|
|
637
|
+
# npm @beads/bd has a known EPERM bug on Windows (Issue #1031)
|
|
638
|
+
# Use the PowerShell installer instead:
|
|
639
|
+
# See the safer download-then-inspect flow in the Beads install section.
|
|
640
|
+
# UNSAFE one-liner (only use if you trust the source and have reviewed it previously):
|
|
641
|
+
# irm https://raw.githubusercontent.com/steveyegge/beads/main/install.ps1 -OutFile $env:TEMP\beads-install.ps1; & $env:TEMP\beads-install.ps1
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
**"database locked"**
|
|
645
|
+
```bash
|
|
646
|
+
forge sync
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
**Issues not showing after git pull**
|
|
650
|
+
```bash
|
|
651
|
+
forge sync # Re-syncs Beads state through the Forge wrapper
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
### GitHub CLI
|
|
655
|
+
|
|
656
|
+
**"gh: not authenticated"**
|
|
657
|
+
```bash
|
|
658
|
+
gh auth login
|
|
659
|
+
gh auth status
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
---
|
|
663
|
+
|
|
664
|
+
## Resources
|
|
665
|
+
|
|
666
|
+
- **Beads**: [github.com/steveyegge/beads](https://github.com/steveyegge/beads)
|
|
667
|
+
- **Parallel AI**: [platform.parallel.ai](https://platform.parallel.ai)
|
|
668
|
+
- **Greptile**: [greptile.com](https://greptile.com)
|
|
669
|
+
- **SonarCloud**: [sonarcloud.io](https://sonarcloud.io)
|
|
670
|
+
- **GitHub CLI**: [cli.github.com](https://cli.github.com)
|