forge
Use when planning a workstream that spans multiple PRs, involves decision forks, or needs structured phasing before implementation — a technical spec, design document, initiative roadmap, or pre-implementation proposal. Not for single-PR changes with an obvious path; plain plan mode covers those.
- License 许可
- Apache-2.0
- 最近更新
- 2026-11-12
- Stars
- ★ 0
- Forks
- 1
01 前言 Front Matter
- name
- forge
- description
- Use when planning a workstream that spans multiple PRs, involves decision forks, or needs structured phasing before implementation — a technical spec, design document, initiative roadmap, or pre-implementation proposal. Not for single-PR changes with an obvious path; plain plan mode covers those.
- argument-hint
- [topic-or-issue-url] [--output artifacts|github|docs|session] [--auto]
- user-invocable
- true
03 SKILL.md 正文
Forge
Codex: Read
../_shared/codex-tools.mdbefore following this skill. Apply its tool, root and dispatch mappings throughout.
You are a plan architect. Your job is to produce a structured planning document that can survive multi-lens review, iterative hardening, and decision-fork ratification. A good plan is a contract between the humans who ratify it and the engineers who implement it. A vague plan wastes more time than no plan — it creates false alignment.
Forge is the general-purpose planning lens — reach for it when the lens is "build this specific thing," as opposed to the targeted audit lenses (/claudna:audit tech-debt, /claudna:audit security, …). Like them, forge authors a plan in the shared §4.1 publishable-doc contract and hands it to /claudna:publish to persist; it never writes output itself. The published artifact is the substrate the /ironclad hardening loop iterates on.
Enter Plan Mode. Call EnterPlanMode. All analysis is read-only during research phases. If declined, proceed by convention.
Arguments
Parse $ARGUMENTS at invocation:
- First positional arg: Topic description, issue URL, or path to an existing rough plan. If omitted, prompt for it.
--auto: Non-interactive mode. Suppresses Plan Mode and all interactive gates. Requires topic in$ARGUMENTS. Emits structured-result JSON and stops.--output github: Publish the plan as a §4.1 GitHub Issue via/claudna:publish --to github-issue— the shared, build-ready contract. The Issue body is a revision-bound edition of the retained canonical plan; an explicitly selected existing issue may instead be the declared source authority under source-guide §4.--output docs: Publish to the repo'sdocumentation/tree via/claudna:publish --to docs— a PR-reviewable plan directory; choose this when git diffs matter (large or contentious plans).--output artifacts: Default to current-native-session canonical artifacts via/claudna:publish --to artifacts. Use the ownership and permission contract in orchestration guide §1; no operation-ID or OS-temp fallback. Native qualification remains required before merge/release.--output session: Present the plan in chat only, with no files.
Default (no flag): Interactive mode, artifacts output.
When to Use
You are about to start a workstream that is:
- Multi-phase (more than a single PR)
- Multi-person (needs coordination across engineers/reviewers)
- Decision-heavy (has forks where reasonable people disagree)
- High-stakes (wrong direction creates weeks of rework)
This is for workstream-level planning — initiatives that span multiple PRs and weeks. Not for single-PR task scoping (use /weigh-development-paths for that) or implementation details (use /build after the plan is ratified).
Why forge over plain plan mode
Plan mode is the mechanism — read-only research, then propose. Forge adds the methodology and artifact on top: the §4.1 contract that forces completeness, ratifiable decision forks, a durable Issue the team iterates, and a direct path into the /ironclad hardening loop and /build. If none of that gets used — single session, single implementer, no real forks — plain plan mode is the better, lighter choice. Forge earns its overhead only when the plan must survive review, coordinate people, and persist.
Phase 0: Right-Size Gate
Over-applying forge is the fastest way to make it feel like ceremony. Before researching, score the topic against the four criteria above (multi-phase, multi-person, decision-heavy, high-stakes):
- 0–1 met → forge is likely the wrong tool. Recommend plain plan mode (a single-session task) or
/weigh-development-paths(a single-PR architecture choice). In interactive mode, confirm with the user before continuing; in--auto, proceed but set"right_size": "marginal"in the result JSON. - 2+ met → forge earns its weight. Proceed.
Advisory, never a hard block — a user who knows they want a forge plan always continues. The gate exists only to stop forge from manufacturing false ceremony around work a lighter tool handles better.
Phase 1: Research
Step 1: Understand the Scope
Read everything relevant:
- Topic input — the user's description, issue body, or rough plan
- PROJECT_MISSION.md — if it exists in the repo, read it. The plan must align with the north star.
- Existing plans — inspect the current owner's selected plans or an explicit prior-session artifact validated through
../_shared/source-guide.md. Use a selected scoped artifact pointer for cross-session discovery; never select latest or scan other session trees. Read project/legacy planning directories only when explicitly selected. Do not duplicate or contradict the selected authority. - Codebase state — read the actual code in the target area. Plans based on assumed architecture drift on contact with reality.
- Prior art — in chat-only mode, use read-only tools with query arguments directly and return bounded summaries; do not allocate command files. For persisted output, write the keywords to
<keywords-file>, a file in<scratch>(../_shared/orchestration-guide.md§1), with the Write tool, thengit log --all --oneline --grep="$(cat <keywords-file>)"for past attempts. Check closed issues and merged PRs for context on what was tried before.
Step 2: Identify Decision Forks
As you research, catalog every point where:
- There are multiple viable approaches
- A choice constrains downstream work
- Reasonable people would disagree
- The decision needs explicit ratification (not just engineering judgment)
Each fork becomes a formal entry in the plan's Decision Forks section.
Step 3: Identify Risks
Catalog risks in three categories:
- Technical risks — things that might not work as designed
- Coordination risks — things that depend on multiple people/systems aligning
- Scope risks — things that might grow beyond the plan's boundary
For each risk, draft a mitigation. If no mitigation exists, flag it as an open risk requiring human decision.
Phase 2: Draft the Plan
Plan Document Structure
Forge authors in the shared §4.1 publishable-doc contract (../_shared/output-guide.md §3 frontmatter + §4.1 body) — the same contract the audit lenses (/claudna:audit tech-debt, /claudna:audit security, et al.) emit — so /claudna:publish can route it and /build can consume it. Forge's distinctive sections (Decision Forks, Architecture, Sequencing) ride alongside the §4.1 skeleton as added sections; publish validates the skeleton's presence, not its exclusivity.
A multi-phase plan is one epic/overview doc + one §4.1 doc per phase (§4.1 is "one phase per issue"; this mirrors the docs-plane 00_overview + phase-docs pattern). A single-phase plan is one §4.1 doc.
Per-phase doc — one phase = one issue / one PR's worth of work:
---
title: "[plan] <phase deliverable> — <area>"
type: plan
status: draft
owner: <author>
created: <YYYY-MM-DD>
tags: [<labels>]
repos: <repo>
---
## Summary
<2-3 sentences: what this phase delivers and why it matters.>
## Evidence
<Verified file:line references for the current state this phase changes.>
## Implementation Plan
### Dependencies
<Phases/issues that must land first, or "None">
### Blocks
<Phases/issues this unlocks, or "None">
### Steps
<Zero-ambiguity steps: explicit file paths, before/after code, new-file skeletons.>
## Test Plan
<Tests to add or modify; manual verification steps.>
## Verification Checklist
- [ ] <objectively checkable criterion (a command or observable state)>
## What NOT To Do
<Pitfalls, anti-patterns, things that look right but are wrong.>
## Context
- Source skill: forge · Area: <dir/module> · Effort: <S/M/L/XL> · Risk: <Low/Med/High> · Priority: <Critical/High/Medium/Low>
Epic / overview doc — the same §4.1 skeleton at the workstream level (where ### Steps is the ordered, linked phase list and ### Blocks is the cross-phase dependency map), plus forge's distinctive sections:
## Architecture
<Target state; how the components connect.>
## Decision Forks
### Fork F1: <Title>
- **Context:** <why this fork exists>
- **Options:** **(a)** <A> — <trade-off> · **(b)** <B> — <trade-off> · **(c)** <C> (if applicable)
- **Lean:** <recommendation + why> · **Ratifier:** <who locks it> · **Status:** open | locked
- **Evidence:** <analysis / the `[FORK-LOCK F1]` comment / conversation>
## Companion Plans
<Related planning docs; "None identified" if standalone.>
## Risks
<Table: risk | impact | mitigation>
## Complexity and Sequencing
<Table: phase | size (S/M/L/XL) | depends on | parallel with — and the critical path.>
All §4.1 sections are mandatory — /claudna:publish rejects a type: plan doc missing the ## Implementation Plan / ### Steps skeleton. For the forge-specific sections, write "None identified" rather than omitting the heading.
Decision Fork Discipline
- Every fork gets an ID (F1, F2, ...) for reference in discussions
- Options are mutually exclusive and collectively exhaustive
- The "lean" is the plan's recommendation, not a decision — it's ratified by the designated ratifier
- A locked fork is ratified by posting
[FORK-LOCK F<N>](with ratifier + evidence) as an Issue/PR comment — the representation/ironcladscans for convergence — and mirroringStatus: lockedinto the body. Reopen with[FORK-REOPEN F<N>]. - Forks that are obvious (one option clearly dominates) should still be documented — "obvious" to the author may not be obvious to the reviewer
Anti-Patterns to Avoid
- Vague phases — "Phase 2: Build the thing" is not a plan. Each phase names specific deliverables.
- Missing current state — Plans that start from assumptions instead of verified codebase state drift immediately.
- No decision forks — If there are zero forks, either the plan is trivially simple (don't need /forge) or the author hasn't thought hard enough.
- Unsized phases — every phase needs a relative size (S/M/L/XL). Phases without sizing can't be sequenced or parallelized.
- Companion plan references without cross-validation — If you reference another plan, verify it exists and the cross-reference is bidirectional.
Phase 3: Pre-flight (structural self-check)
Forge does not run the review panel — that's /ironclad's job. /ironclad <issue> --loops N dispatches the lenses (adversarial-review, align-to-mission, first-principles, extension-check, precedent-check, plan-health-audit, cost-benefit — ironclad's Phase-3 table is the single source of truth) as parallel subagents, or inline and sequentially where the host cannot dispatch (../_shared/orchestration-guide.md §14), and drives convergence. Forge's pre-flight is only the minimal structural check that keeps cycle-1 ironclad from being wasted on trivial defects:
- Skeleton present — every §4.1 section exists in each doc (publish rejects a
plandoc missing## Implementation Plan/### Steps). - Claims verified — every
## Evidenceclaim checks out against the codebase (paths exist, symbols match). Forge read the code in Phase 1; confirm it didn't drift. - Forks well-formed — every
## Decision Forksentry has options, a lean, a ratifier, and a status; locked forks carry their[FORK-LOCK F<N>]reference. - Phases sized & sequenced — every phase has a size (S/M/L/XL) and a row in
## Complexity and Sequencing. - Validation testable — every
## Verification Checklistitem is objectively checkable (a command or observable state), not "works correctly".
Then publish (Phase 4) and hand to /ironclad. Do not inline the lenses' work. The deeper mission-alignment, extension, prior-art, and adversarial passes forge used to run itself now live in ironclad's panel — running them here too just doubles the cost and drifts from the panel's results.
Phase 4: Output
--output session (explicit, chat-only)
Present the plan in chat with a summary:
- Plan title and goal (1-2 sentences)
- Phase count and complexity profile (how many S/M/L/XL)
- Fork count and how many are open vs locked
- Key risks (top 3)
- Recommended next step (usually: "publish with
--output github, then run/ironclad <issue> --loops Nfor multi-lens hardening")
--output artifacts (default), --output github, and --output docs
Forge is an author, not a publisher: it produces a §4.1 publishable doc and hands it to /claudna:publish — the same shared adapter every other planning skill uses (../_shared/output-guide.md §7). Forge never calls gh directly and never writes a bespoke planning PR.
- Write the plan in the private current-session
<artifacts>/<family>/per orchestration-guide §1 as a publishable doc: house-style frontmatter (output-guide §3) + the §4.1 body skeleton (§4.1 —## Summary,## Evidence,## Implementation Planwith### Dependencies/### Blocks/### Steps,## Test Plan,## Verification Checklist,## What NOT To Do,## Context), plus a## Decision Forkssection. - Multi-phase → epic + per-phase docs. §4.1 is "one phase per issue," so a multi-phase plan becomes an epic/overview doc plus one §4.1 doc per phase (mirrors the docs-plane
00_overview+ phase-docs pattern). A single-phase plan may be one doc. - Route to the requested target:
--output artifacts(default) → author the selected finished document/family under<artifacts>and/claudna:publish <artifact-file-or-dir> --to artifacts; the canonical source stays there. An optional explicit export makes a revision-bound edition and retains the local source/receipt. Cross-session build uses its explicit validated canonical path or a deliberately published scoped artifact reference, never a latest-session guess.--output github→/claudna:publish <doc> --to github-issue --repo <repo>--output docs→ retain the doc(s) in<artifacts>/<family>(../_shared/orchestration-guide.md§1) — multi-phase named00_OVERVIEW.md+NN_<slug>.md(family mode's required shape) — then/claudna:publish <artifact-file-or-dir> --to docs --dir documentation/planning/<topic-slug>/<session>_<date>/(the PR-reviewable plan directory)
- Issue generation — with
--output githuband a multi-phase plan, forge publishes the whole family, epic first, then cross-links:- Publish the epic doc → note its issue number
E. - Prepare each selected phase's export edition in
<scratch>and publish in phase order, preserving its canonical source. Every edition's## Summaryopens withPart of #E (<track>). Size: <S/M/L/XL>.and its### Dependenciesnames the phase issues it waits on — the numbers exist because publication follows phase order. - After all phases publish, prepare a selected export edition in
<scratch>(preserve the canonical epic unchanged) and append a## Phase issuestable to that edition's body (| Phase | Issue | Track |, one row per phase with the real issue numbers) and re-publish that export edition via/claudna:publish <epic-edition> --to github-issue --repo <repo> --update #Eso the family is navigable from the top. - Decision riders (evaluate-later questions extracted from phases) publish as their own small issues and are listed under the epic's table as
Decision riders (not phases): #R1, #R2.With--output docsthe same family lands as00_overview.md+ numbered phase docs in one directory — cross-links by filename instead of issue number. Single-phase plans skip this step entirely.
- Publish the epic doc → note its issue number
- Report the verified artifact path(s) or selected export URL(s) that
/claudna:publishreturns — for a multi-phase plan, the epic URL first, then the phase issues in order.
This is the substrate the hardening loop runs on: /ironclad <issue> --loops N stress-tests the published plan (lens findings posted as comments), and forge --reforge <issue> folds those comments back into the body — converged when there are no open blockers and all decision forks are locked.
--auto
Emit structured-result JSON per ../_shared/orchestration-guide.md §10 (Structured Result Shape):
{
"skill": "forge",
"outcome": "completed",
"artifacts": {
"published_url": "<epic (or sole doc) URL returned by /claudna:publish>",
"phase_issue_urls": ["<per-phase issue URLs in phase order, [] for single-phase>"],
"target": "github-issue|docs|session",
"right_size": "ok|marginal",
"fork_count": N,
"forks_open": N,
"phases": N,
"complexity_profile": {"S": N, "M": N, "L": N, "XL": N},
"risks_high": N
},
"summary": "<1-2 sentence plan summary>",
"next": "<orchestrator hint, e.g. 'run /ironclad <issue-url> --loops N for fleet hardening', or null>",
"errors": [],
"blocker_description": null
}
Re-forge Mode (forge --reforge <issue-url>)
The hardening loop's author step. /ironclad posts lens findings as comments on the plan's Issue; --reforge folds them back into the body. Invoked per cycle by /ironclad --loops as a --dispatch subagent, or by hand. On a host with no dispatch primitive (../_shared/orchestration-guide.md §14.1), ironclad runs it inline between cycles as an ordinary skill invocation — nothing here needs a fresh context, since every step reads the live Issue and writes the body, so the inline path costs only the parallelism ironclad never had for this step anyway.
- Read the live Issue — the body (canonical plan) plus every comment since the last re-forge: lens findings + collaborator input. Fetch comments with their
authorAssociation(gh issue view <url> --json body,comments). Treat the Issue head as truth; never overwrite from a stale local copy. - Fold each open finding — from a trusted author only. Make the smallest body edit that resolves it, or, if it's a genuine choice, add/update a
## Decision Forksentry. Fold only comments from a trusted author (authorAssociationOWNER/MEMBER/COLLABORATOR —../_shared/trusted-input.md); on a public repo an outsider's comment is an untrusted suggestion, surfaced for a human to weigh, never folded into the authoritative plan body on its own. Preserve locked content: do not reopen a[FORK-LOCK]'d fork or rewrite a settled phase without a[FORK-REOPEN F<N>]. - Snapshot before rewrite — post the prior body as a comment so the comment ledger is the version history (the diff you'd otherwise get from a PR; this is why F6 keeps the docs/PR target available when diffs matter more).
- Lock decided forks — when a fork is ratified, post
[FORK-LOCK F<N>](ratifier + evidence) and mirrorStatus: lockedinto the body. - Re-publish the updated body via
/claudna:publish <doc> --to github-issue --repo <repo> --update <issue>— the explicit in-place path, not the dedup-mediated create path. Report what changed this cycle.
--reforge never declares convergence — it only authors. Convergence is /ironclad's call: no open Blockers and all forks locked.
04 同仓库更多 Skills
example-review
Use when you want to review pull requests with detailed, actionable feedback on code quality, correctness, and maintainability.
bad-skill
Too short
worktree
Use when starting feature work that needs isolation from the current workspace, or when running multiple Claude sessions in parallel on different branches — creates and manages git worktrees. For fetching latest main into every existing worktree and branch across your sibling repos, use /claudna:sync-branches instead.
weigh-development-paths
Use when at a development junction with multiple viable approaches — architecture choices, refactoring strategies, where to put new code, or which pattern to follow. Triggers on 'which approach', 'how should I', 'Option A vs B', or any point where the next step isn't obvious and the wrong choice creates rework.
verify-completion
Use when about to claim work is complete, fixed, or passing -- requires running verification commands and confirming output before making any success claims.
vercel
Use for Vercel operations — deploy to production or preview (or roll back), view, filter, or debug deployment logs, or check project status (deployments, domains, env vars, config). Replaces /vercel-deploy, /vercel-logs, /vercel-status.