🔌
forge
workflowSeventeen fg-* skills. Four form a loop that takes one task through a single cycle of ask·plan → execute → retro → done: ask·plan (fg-ask) is grill-with-docs-style conversational grilling, execute (fg-run) picks a task from the backlog (Run all supported) and runs it as a Dynamic Workflow, retro (fg-learn) promotes learnings to docs, and done (fg-done) seals the task and guards against re-runs. Thirteen more sit outside the loop: fg-map maps the codebase into .forge/codebase/ with parallel subagents so grilling reads a map instead of re-exploring the code (cuts context rot); fg-quick is a lightweight lane for trivial tasks that grills lightly, logs one line to .forge/quick/LOG.md, runs directly without formal artifacts (no ADR/plan/retro), and bails to fg-ask if the task turns out non-trivial; fg-status is a read-only reporter that surveys .forge/ and prints where every task stands plus the single next step you need (writes nothing, never auto-runs); fg-next derives that same next step and runs it — announcing the step then invoking the skill, not just reporting it (one-shot; fg-status reports, fg-next acts), plus an 'all' mode that drives backlog tasks to completion until empty, halting at conversational walls; fg-loop is a goal-driven momentum loop with bounded replan — an initial conversational inquiry pins a machine-verifiable stop condition, an authorized fix-forward replan scope, and a replan cap (default 3 rounds) into .forge/loop.md, then it drives tasks unattended (run → UAT → auto-skip retro → seal, auto-selecting recommended defaults at every soft decision and asking the user nothing) until the checks pass, generating in-scope fix-forward tasks within the cap and halting only at the walls (unverifiable UAT, genuine fork, cap exhausted, no progress; ADR-0016); fg-tdd toggles persistent TDD mode in .forge/config.json so fg-ask defaults to asking and fg-run runs test-first; fg-eco toggles eco mode in .forge/config.json so fg-run caps its delegated workflow subagents at sonnet (lower only — the main session's model is never touched; ADR-0014). On a non-default git branch the whole forge state moves under .forge/branch/<branch>/ — git-tracked and namespaced so parallel branches never collide on .forge state (ADR-0011); fg-merge integrates a merged branch's .forge/branch/<branch>/ back into .forge/ (renumbering ADRs, merging CONTEXT terms, folding done history, removing the branch folder), running after your git merge and halting on genuine conflicts; fg-cleanup retires stale or superseded ADRs to .forge/adr/retired/ on your approval, keeping the active decision set current without deleting the why (ADR-0012); and fg-statusline installs a bash fragment script that reads .forge/ and wires it into settings.json so your terminal statusline shows the current loop progress (active task·stage, goal-loop indicator, or backlog count) — since Claude Code allows only one statusLine it auto-wraps your existing one as an extra row rather than replacing it (ADR-0017); and fg-adversarial-review runs an optional adversarial review between fg-run and fg-learn — it assumes the result is wrong and fans out six lenses (failure points, hidden assumptions, misread requirements, security/performance/data-loss, unexpected misuse, weak decisions) as parallel workflow subagents, records findings to .forge/review.md, and on your approval turns fix-needed findings into a fix-forward plan to run again; it is optional, never a seal gate, and always auto-skipped in unattended drives (ADR-0018); and fg-doctor is a read-only integrity health check (outside the loop) — it surveys the .forge/ state contract and the docs/manifests and reports inconsistencies (orphaned run.md, broken/missing STATUS fields, slug-pairing mismatches, half-sealed done/, manifest version drift across the 3 places, README bilingual drift, skills missing from CLAUDE.md) with a severity and an actionable fix hint each; it writes nothing and never auto-fixes (fg-status reports where you are, fg-doctor whether the state is healthy; ADR-0019); and fg-drop discards incomplete work you no longer want — a backlog plan, the active slot, an awaiting-retro task in executed/, or a halted goal loop — listing the items with a per-item risk level (a checkbox dialog for ≤4, a numbered text list for ≥5), then a separate question to hard-delete (default, no trace) or archive to .forge/dropped/, behind a confirmation gate that warns already-run code is not reverted; it removes forge state only (never git, never your code) and drops a halted goal loop whole, excluding its member tasks from individual drop (ADR-0021).