Generate or convert Claude Code prompt files — command orchestrators, skill files, agent role definitions, or style conversion of existing files. Follows GSD-style content separation with built-in quality gates. Triggers on "create command", "new command", "create skill", "new skill", "create agent", "new agent", "convert command", "convert skill", "convert agent", "prompt generator", "优化".
84%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
High
Do not use without reviewing
.claude/commands/ or ~/.claude/commands/.claude/skills/*/SKILL.md (progressive loading, no @ refs).claude/agents/Content separation principle (from GSD): commands/skills own orchestration flow; agents own domain knowledge. Skills are a variant of commands but loaded progressively inline — they CANNOT use @ file references.
Invoked when user requests "create command", "new command", "create skill", "new skill", "create agent", "new agent", "convert command", "convert skill", "convert agent", "prompt generator", or "优化".
<required_reading>
Parse $ARGUMENTS to determine what to generate.
| Signal | Type |
|---|---|
| "command", "workflow", "orchestrator" in args | command |
"skill", "SKILL.md" in args, or path contains .claude/skills/ | skill |
| "agent", "role", "worker" in args | agent |
| "convert", "restyle", "refactor", "optimize", "优化" + file path in args | convert |
| Ambiguous or missing | Ask user |
Convert mode detection: If args contain a file path (.md extension) + conversion keywords, enter convert mode. Extract $SOURCE_PATH from args. Auto-detect source type from path:
.claude/commands/ → command.claude/skills/*/SKILL.md → skill.claude/agents/ → agentSkill vs Command distinction: Skills (.claude/skills/*/SKILL.md) are loaded progressively inline into the conversation context. They CANNOT use @ file references — only Read() tool calls within process steps. See @specs/command-design-spec.md → "Skill Variant" section.
If ambiguous:
AskUserQuestion(
header: "Artifact Type",
question: "What type of prompt file do you want to generate?",
options: [
{ label: "Command", description: "New orchestration workflow — process steps, user interaction, agent spawning" },
{ label: "Skill", description: "New skill file — progressive loading, no @ refs, inline Read() for external files" },
{ label: "Agent", description: "New role definition — identity, domain expertise, behavioral rules" },
{ label: "Convert", description: "Restyle existing command/agent/skill to GSD conventions (zero content loss)" }
]
)Store as $ARTIFACT_TYPE (command | skill | agent | convert).
If $ARTIFACT_TYPE is convert: Skip to Step 2c.
Extract from $ARGUMENTS or ask interactively:
Common parameters (create mode):
| Parameter | Required | Validation | Example |
|---|---|---|---|
$NAME | Yes | /^[a-z][a-z0-9-]*$/ | deploy, gsd-planner |
$DESCRIPTION | Yes | min 10 chars | "Deploy to production with rollback" |
Command-specific parameters:
| Parameter | Required | Validation | Example |
|---|---|---|---|
$LOCATION | Yes | "project" or "user" | project |
$GROUP | No | /^[a-z][a-z0-9-]*$/ | issue, workflow |
$ARGUMENT_HINT | No | any string | "<phase> [--skip-verify]" |
Agent-specific parameters:
| Parameter | Required | Validation | Example |
|---|---|---|---|
$TOOLS | No | comma-separated tool names | Read, Write, Bash, Glob |
$SPAWNED_BY | No | which command spawns this agent | /plan-phase orchestrator |
Normalize: trim + lowercase for $NAME, $LOCATION, $GROUP.
Command:
| Location | Base |
|---|---|
project | .claude/commands |
user | ~/.claude/commands |
If $GROUP:
$TARGET_PATH = {base}/{$GROUP}/{$NAME}.md
Else:
$TARGET_PATH = {base}/{$NAME}.mdSkill:
$TARGET_PATH = .claude/skills/{$NAME}/SKILL.mdAgent:
$TARGET_PATH = .claude/agents/{$NAME}.mdCheck if $TARGET_PATH exists → $FILE_EXISTS.
4a. Pattern discovery — Find 3+ similar files in the project for style reference:
# For commands: scan existing commands
ls .claude/commands/**/*.md 2>/dev/null | head -5
# For agents: scan existing agents
ls .claude/agents/*.md 2>/dev/null | head -5Read 1-2 similar files to extract patterns: section structure, naming conventions, XML tag usage, prompt style.
4b. Domain inference from $NAME, $DESCRIPTION, and context:
| Signal | Extract |
|---|---|
$NAME | Action verb → step/section naming |
$DESCRIPTION | Domain keywords → content structure |
$ARGUMENT_HINT | Flags → parse_input logic (command only) |
$SPAWNED_BY | Upstream contract → role boundary (agent only) |
For commands — determine complexity:
| Complexity | Criteria | Steps |
|---|---|---|
| Simple | Single action, no flags | 3-5 numbered steps |
| Standard | 1-2 flags, clear workflow | 5-8 numbered steps |
| Complex | Multiple flags, agent spawning | 8-14 numbered steps |
For agents — determine expertise scope:
| Scope | Criteria | Sections |
|---|---|---|
| Focused | Single responsibility | <role> + 1-2 domain sections |
| Standard | Multi-aspect domain | <role> + 2-4 domain sections |
| Expert | Deep domain with rules | <role> + 4-6 domain sections |
If unclear, ask user with AskUserQuestion.
Route to the appropriate generation logic based on $ARTIFACT_TYPE.
Follow @specs/command-design-spec.md and @templates/command-md.md.
Generate a complete command file with:
<purpose> — 2-3 sentences: what + when + what it produces<required_reading> — @ references to context files<process> — numbered steps (GSD workflow style):
Agent(), error handling<offer_next> with next actions<success_criteria> — checkbox list of verifiable conditionsCommand writing rules:
## 1., ## 2.) — follow plan-phase.md and new-project.md style━━━ SKILL ► ACTION ━━━Agent({ subagent_type, prompt, description, run_in_background }) pattern<objective>, <files_to_read>, <output> blocks<offer_next> block with formatted completion status## TASK COMPLETE, ## TASK BLOCKED, ## CHECKPOINT REACHED<auto_mode> section if command supports --auto flagFollow @specs/command-design-spec.md → "Skill Variant" section.
Skills are command-like orchestrators but loaded progressively inline — they CANNOT use @ file references.
Generate a complete skill file with:
<purpose> — 2-3 sentences: what + when + what it produces<required_reading> — skills cannot use @ refs. External files loaded via Read() within process steps.<process> — numbered steps (GSD workflow style):
Read("phases/...") for phase filesAgent(), error handlingSkill()<success_criteria> — checkbox list of verifiable conditionsSkill-specific writing rules:
<required_reading> tag — @ syntax not supported in skills@path references anywhere in the file — use Read("path") within <process> stepsRead("phases/01-xxx.md") within the step that needs itallowed-tools: (not argument-hint:)<offer_next> is optional — skills often chain via Skill() calls<auto_mode> can be inline within <process> step 1 or as standalone sectionFollow @specs/agent-design-spec.md and @templates/agent-md.md.
Generate a complete agent definition with:
<role> — identity + spawned-by + core responsibilities + mandatory initial read<philosophy> — guiding principles, anti-patterns<context_fidelity> — how to honor upstream decisions<task_breakdown> / <output_format> — concrete output rules with examples<quality_gate> — self-check criteria before returningAgent writing rules:
<role> is ALWAYS first after frontmatter — defines identityCRITICAL: Zero content loss. Follow @specs/conversion-spec.md.
Step 5c.1: Read and inventory source file.
Read $SOURCE_PATH completely. Build content inventory:
$INVENTORY = {
frontmatter: { fields extracted },
sections: [ { name, tag, line_range, line_count, has_code_blocks, has_tables } ],
code_blocks: count,
tables: count,
total_lines: count
}Step 5c.2: Classify source type.
| Signal | Type |
|---|---|
Path in .claude/skills/*/SKILL.md | skill |
allowed-tools: in frontmatter + path in .claude/skills/ | skill |
Contains <process>, <step>, numbered ## N. steps | command |
Contains <role>, tools: in frontmatter, domain sections | agent |
Flat markdown with ## Implementation, ## Phase N + in skills dir | skill (unstructured) |
Flat markdown with ## Implementation, ## Phase N + in commands dir | command (unstructured) |
| Flat prose with role description, no process steps | agent (unstructured) |
Skill-specific conversion rules:
<required_reading> — skills cannot use @ file references (progressive loading)@path references anywhere — replace with Read("path") within <process> steps@specs/... or @phases/... refs, convert to Read("specs/...") / Read("phases/...")@specs/conversion-spec.md → "Skill Conversion Rules" sectionStep 5c.3: Build conversion map.
Map every source section to its target location. Follow @specs/conversion-spec.md transformation rules.
MANDATORY: Every line of source content must appear in the conversion map. If a source section has no clear target, keep it as a custom section.
Step 5c.4: Generate converted content.
Apply structural transformations while preserving ALL content verbatim:
<quality_gate>, <output_contract>) with TODO markersStep 5c.5: Content loss verification (MANDATORY).
Compare source and output:
| Metric | Source | Output | Pass? |
|---|---|---|---|
| Total lines | $SRC_LINES | $OUT_LINES | output >= source × 0.95 |
| Code blocks | $SRC_BLOCKS | $OUT_BLOCKS | output >= source |
| Tables | $SRC_TABLES | $OUT_TABLES | output >= source |
| Sections | $SRC_SECTIONS | $OUT_SECTIONS | output >= source |
If ANY metric fails → STOP, display diff, ask user before proceeding.
Set $TARGET_PATH = $SOURCE_PATH (in-place conversion) unless user specifies output path.
[Describe...]) — all content concrete$DESCRIPTIONMANDATORY before writing. Read back the generated content and validate against type-specific checks.
| Check | Pass Condition |
|---|---|
| YAML frontmatter | Has name + description |
| No placeholders | Zero [...] or {...} bracket placeholders in prose |
| Concrete content | Every section has actionable content, not descriptions of what to write |
| Section count | Command: 3+ sections; Agent: 4+ sections |
| Check | Pass Condition |
|---|---|
<purpose> | 2-3 sentences, no placeholders |
<process> with numbered steps | At least 3 ## N. headers |
| Step 1 is initialization | Parses args or loads context |
| Last step is status/report | Displays results or routes to <offer_next> |
| Agent spawning (if complex) | Agent({ call with subagent_type |
| Agent prompt structure | <files_to_read> + <objective> or <output> blocks |
| Return handling | Routes on ## TASK COMPLETE / ## TASK BLOCKED markers |
<offer_next> | Banner + summary + next command suggestion |
<success_criteria> | 4+ checkbox items, all verifiable |
| Content separation | No domain expertise embedded — only orchestration |
| Check | Pass Condition |
|---|---|
<purpose> | 2-3 sentences, no placeholders |
NO <required_reading> | Must NOT contain <required_reading> tag |
NO @ file references | Zero @specs/, @phases/, @./ patterns in prose |
<process> with numbered steps | At least 3 ## N. headers |
| Step 1 is initialization | Parses args, sets workflow preferences |
| Phase file loading | Uses Read("phases/...") within process steps (if has phases) |
<success_criteria> | 4+ checkbox items, all verifiable |
Frontmatter allowed-tools | Present and lists required tools |
| Content separation | No domain expertise embedded — only orchestration |
| Check | Pass Condition |
|---|---|
YAML tools field | Lists tools agent needs |
<role> is first section | Appears before any domain section |
<role> has spawned-by | States which command spawns it |
<role> has mandatory read | <files_to_read> instruction present |
<role> has responsibilities | 3+ bullet points with verb phrases |
| Domain sections named | After domain concepts, not generic (<rules>, <guidelines>) |
| Examples present | Each domain section has 1+ comparison table or decision table |
<output_contract> | Defines return markers (COMPLETE/BLOCKED/CHECKPOINT) |
<quality_gate> | 3+ checkbox self-check items |
| Content separation | No AskUserQuestion, no banner display, no argument parsing |
Count errors and warnings:
| Gate | Condition | Action |
|---|---|---|
| PASS | 0 errors, 0-2 warnings | Proceed to write |
| REVIEW | 1-2 errors or 3+ warnings | Fix errors, display warnings |
| FAIL | 3+ errors | Re-generate from step 5 |
If FAIL and second attempt also fails:
AskUserQuestion(
header: "Quality Gate Failed",
question: "Generated content failed quality checks twice. How to proceed?",
options: [
{ label: "Show issues and proceed", description: "Write as-is, fix manually" },
{ label: "Provide more context", description: "I'll give additional details" },
{ label: "Abort", description: "Cancel generation" }
]
)If $FILE_EXISTS: Warn user before overwriting.
mkdir -p "$(dirname "$TARGET_PATH")"Write content to $TARGET_PATH using Write tool.
Post-write verification — Read back and confirm file integrity:
If verification fails: Fix in-place with Edit tool.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PROMPT-GEN ► {COMMAND|AGENT} GENERATED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Type: {command | agent}
File: {$TARGET_PATH}
Name: {$NAME}
| Section | Status |
|---------|--------|
| {section 1} | concrete |
| {section 2} | concrete |
| ... | ... |
Quality Gate: {PASS | REVIEW (N warnings)}
───────────────────────────────────────────────────────
## Next Up
1. Review: cat {$TARGET_PATH}
2. Test: /{invocation}
**If command + needs an agent:**
/prompt-generator agent {agent-name} "{agent description}"
**If agent + needs a command:**
/prompt-generator command {command-name} "{command description}"
───────────────────────────────────────────────────────<success_criteria>
catlog22/Claude-Code-Workflow
07491b0
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.