| name | cli-forge-design |
| description | Design stage for the cli-forge skill family: define or refresh the generated skill's high-level identity, purpose, positioning, and description contract before downstream stages proceed. |
cli-forge Design
Use this stage when the workflow needs one authoritative description contract
for a generated Rust CLI Skill before later stages proceed.
Purpose
Define the skill's high-level identity: what it is, who it serves, and how it
is positioned. Produce a single approved description contract that all
downstream surfaces must reuse instead of inventing competing wording.
This stage answers the question "What is this skill?" The detailed CLI
contract (commands, flags, formats) belongs to the Plan stage downstream.
Canonical References
Entry Gate
| # | Check | Source |
|---|
| 1 | handoff.yml exists with classification: design | Router |
| 2 | Skill scope is at least partially known | User request or handoff |
Required Inputs
- Classified workflow intent from the Router
- Current or proposed skill scope
- Any existing description surfaces that must stay aligned
- Whether this is a new skill or a refresh of an existing contract
Workflow
- Confirm whether the work creates a new skill or changes the user-facing
contract of an existing one.
- Read
./planning-brief.md to load the shared
constraints.
- Define or refresh the approved purpose summary (one line).
- Define or refresh the positioning statement (one paragraph).
- Record which downstream surfaces must stay synchronized:
Cargo.toml package.description
SKILL.md purpose section
README.md header and description
- Help text summary line across non-leaf auto-help,
--help, and
structured help
- Release notes summary (when publish is in scope)
- npm package description (when publish is in scope)
- Record the downstream help contract for later stages:
- leaf defaults stay structured failures instead of auto-help
- non-leaf defaults auto-render man-like human-readable help
--help renders man-like human-readable help
help returns structured output
- human-readable help preserves
NAME -> SYNOPSIS -> DESCRIPTION -> OPTIONS -> FORMATS -> EXAMPLES -> EXIT CODES
- Record the publish contract for later release work: Publish owns both the
repo-native GitHub Release and npm publication.
- Generate
.cli-forge/design-contract.yml using the format defined in
./contracts/design-contract.yml.tpl.
- Request user approval of the design contract before moving forward. Call the runtime's dialog-based chooser
(e.g.,
AskUserQuestion) with the options approve and continue, request changes, or stop for now when it is available. If no dialog-based chooser
is available, use a numbered text menu with the same three options and add
Other: <custom response> as the fallback escape hatch. Accept exact replies
1, 2, or 3, or Other: .... If a numeric reply includes additional
text, ask for clarification before proceeding. Do not require the user to
type the full option label.
Outputs
.cli-forge/design-contract.yml — approved description contract
Exit Gate
| # | Check |
|---|
| 1 | Single-line purpose summary is approved |
| 2 | Positioning statement is approved |
| 3 | Sync surfaces list is complete |
| 4 | Help contract is recorded |
| 5 | Publish contract is recorded |
| 6 | design-contract.yml is generated and approved |
Guardrails
- CRITICAL DIRECTIVE TO THE ASSISTANT: You MUST STOP execution and ask for the user's explicit approval after generating
design-contract.yml. Do NOT proceed to the Plan or Scaffold stage autonomously. Call the runtime's dialog-based chooser (e.g., AskUserQuestion) for approval when it is available, or use the standardized numbered text fallback with 1. approve and continue, 2. request changes, 3. stop for now, and Other: <custom response>.
- This stage is the authoritative source for user-facing purpose and
positioning. Downstream stages consume the approved contract; they do not
redefine it.
- Do not define CLI commands, flags, or output formats here. That work belongs
to the Plan stage.
- When publish support is later adopted, all release-facing wording must reuse
the approved summary.
- npm package descriptions must reuse the same approved contract whenever the
Publish stage adopts npm publication.
Next Step
Continue with ../cli-forge-plan/SKILL.md to
define the detailed CLI contract.