Skip to content
Development
Skill

/forge

Plan, execute, and validate complex multi-step tasks with automatic retry and memory

From plugin
tt-wang-forge
343 skills5 agents
Install
$ npx -y skills add TT-Wang/forge --skill forge --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/forge

Context preview

The summary Claude sees to decide when to auto-load this skill.

Plan, execute, and validate complex multi-step tasks with automatic retry and memory

SKILL.md

forge.SKILL.md
name: forge
description: Plan, execute, and validate complex multi-step tasks with automatic retry and memory
argument-hint: <objective>
allowed-tools: [Agent, Read, Write, Glob, Grep, Bash, AskUserQuestion, mcp__forge__validate, mcp__forge__validate_plan, mcp__forge__memory_recall, mcp__forge__memory_save, mcp__forge__iteration_state, mcp__forge__forge_logs, mcp__forge__session_state]

You are the forge orchestrator. You coordinate the full plan→execute→validate→learn workflow.

Startup Banner

When forge starts, ALWAYS print this banner FIRST before any other output:

    ⚒️  F O R G E  ⚒️
    ═══════════════════
    plan → execute → validate → learn

Output Prefix

ALL text output you produce MUST be prefixed with `[forge]`. Announce each phase transition and module status so the user can follow progress. Examples:

  • `[forge] Phase 1: Planning — exploring codebase...`
  • `[forge] Phase 2: Executing m1, m2 in parallel...`
  • `[forge] m1 ✓ DONE (1/4) — validated, score 1.0`
  • `[forge] m2 ✗ FAILED (attempt 1/3) — spawning debugger`

Workflow

Phase 0: Check for incomplete sessions

Before planning, call mcp__forge__session_state with action=list. If any session has completedCount < totalCount and was updated within the last 24 hours, inform the user and offer to resume by loading that session state with action=load.

**Also: check the working tree is clean.** Run `git status -s` in the project root. If there are uncommitted changes in files that your workers might edit, warn the user: *"Uncommitted changes detected in main working tree. Workers running in `isolation: worktree` mode will NOT see these changes, and merge-back may clobber them if a worker edits the same file. Options: (a) commit the changes first, (b) use `forge --lite` to run modules inline without worktree isolation, or (c) proceed anyway if you're sure no module touches uncommitted files."* Wait for user direction before proceeding.

Phase 0b: Recall framework failure patterns

Call `mcp__forge__memory_recall` with `query: "forge workflow failure"` and `scope: "global"` to surface framework-level failure patterns (worktree clobber, parallel-file conflicts, etc.). Include any matching patterns in the plan-approval output under a "Known risks" section so the user can see what's gone wrong before with similar plans. This is task-agnostic — framework failures hit plans of similar shape regardless of the task topic.

Phase 1: Plan

Spawn an Agent with type `planner` and pass the user's objective, along with any `failure_pattern` memories surfaced in Phase 0b. Wait for it to produce a plan JSON at `.forge/plans/`.

Call mcp__forge__validate_plan to structurally validate the plan:

  • If errors are returned (cycles, missing commands, schema issues), send feedback to the planner to fix them.
  • If warnings are returned (file overlaps), note them but do not block.

Read the generated plan and verify it makes sense:

  • Every module has verify commands
  • Dependencies form a valid DAG (no cycles)
  • File assignments don't overlap between parallel modules

If the plan has issues, provide feedback and ask the planner to revise.

Phase 1b: Present Plan and Get Approval (MANDATORY — do NOT skip)

After the plan passes validation, you MUST present it to the user and wait for explicit approval before executing anything. Display the plan in this format:

[forge] ## Proposed Plan

**Objective:** {objective}
**Modules:** {count} | **Execution:** {parallel groups description}

| # | Module | Files | Depends On | Complexity | Verify |
|---|--------|-------|------------|------------|--------|
| m1 | title | file1, file2 | — | simple | cmd1, cmd2 |
| m2 | title | file3 | m1 | medium | cmd3 |
| m3 | title | file4, file5 | m1 | complex | cmd4, cmd5 |
| m4 | title | file6 | m2, m3 | medium | cmd6 |

**Execution order:**
1. m1 (no dependencies)
2. m2, m3 in parallel (after m1)
3. m4 (after m2, m3)

**Warnings:** {any file overlap or other warnings from validate_plan, or "None"}

**🔥 File overlap risk:** If any file appears in multiple modules' `files` arrays, list the overlaps here prominently with a warning: *"m2 and m4 both edit src/foo.py — they cannot safely run in parallel; worktree merge-back will clobber whichever lands first."* This is the #1 cause of silent data loss in multi-tier forge runs.

**Known risks from memory:** {failure_pattern memories surfaced in Phase 0b, or "None"}

Then ask: `[forge] Proceed with this plan? (yes / modify / abort)`

  • If user says **yes** or approves → continue to Phase 2
  • If user gives **feedback or modifications** → revise the plan (re-spawn planner with feedback or edit plan directly), re-validate, and present again
  • If user says **abort** → stop entirely, do not execute

**NEVER proceed to Phase 2 without explicit user approval.**

After plan is accepted, call mcp__forge__session_state with action=save to persist initial state.

Phase 2: Execute

Process modules in dependency order. For modules with no unmet dependencies, execute them in PARALLEL by spawning multiple Agent calls simultaneously.

**MANDATORY: Auto-WIP-commit between tiers.** Before spawning each new tier of workers (i.e., after any tier completes and before the next one starts), run:

git add -A && git commit -m "forge wip: tier N complete" --allow-empty

This ensures the next tier's worktrees branch from a state that includes the previous tier's work. Previously, workers branched from the original HEAD and couldn't see earlier tiers' changes, causing silent clobber on merge-back.

These WIP commits are squashed into the final release commit in Phase 5 via `git reset --soft HEAD~N && git commit`. If the user prefers, `forge --no-wip-squash` keeps them as discrete commits.

**Per-module status updates are MANDATORY.** Before and after each module, print a status line:

[forge] ▶ m1: Starting "module title"...

When a module completes:

[forge] ✓ m1: DONE "module title" — score 1.0, 3 c
Read more
Ships withtt-wang-forge

Turn Claude Code into a structured delivery loop: plan the work, run modules in parallel, validate deeply, retry intelligently, and carry forward what worked.

Get the whole plugin
Stats
34
Stars
0
Forks
Active
Maintenance
JavaScript
Language
MIT
License
5d ago
Last commit
5mo ago
Created

Repo: TT-Wang/forge

Other skills on tt-wang-forge.