Claude-Code-Workflow prompt-generator

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", "优化".

install
source · Clone the upstream repo
git clone https://github.com/catlog22/Claude-Code-Workflow
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/catlog22/Claude-Code-Workflow "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/prompt-generator" ~/.claude/skills/catlog22-claude-code-workflow-prompt-generator && rm -rf "$T"
manifest: .claude/skills/prompt-generator/SKILL.md
source content
<purpose> Generate or convert Claude Code prompt files with concrete, domain-specific content. Four modes:
  • Create command — new orchestration workflow at
    .claude/commands/
    or
    ~/.claude/commands/
  • Create skill — new skill file at
    .claude/skills/*/SKILL.md
    (progressive loading, no @ refs)
  • Create agent — new role + expertise file at
    .claude/agents/
  • Convert — restyle existing command/skill/agent to GSD conventions with zero content loss

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 "优化". </purpose>

<required_reading>

  • @.claude/skills/prompt-generator/specs/command-design-spec.md
  • @.claude/skills/prompt-generator/specs/agent-design-spec.md
  • @.claude/skills/prompt-generator/specs/conversion-spec.md
  • @.claude/skills/prompt-generator/templates/command-md.md
  • @.claude/skills/prompt-generator/templates/agent-md.md </required_reading>
<process>

1. Determine Artifact Type

Parse

$ARGUMENTS
to determine what to generate.

SignalType
"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 missingAsk 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/
    → agent

Skill 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
).

2. Validate Parameters

If

$ARTIFACT_TYPE
is
convert
:
Skip to Step 2c.

Extract from

$ARGUMENTS
or ask interactively:

Common parameters (create mode):

ParameterRequiredValidationExample
$NAME
Yes
/^[a-z][a-z0-9-]*$/
deploy
,
gsd-planner
$DESCRIPTION
Yesmin 10 chars
"Deploy to production with rollback"

Command-specific parameters:

ParameterRequiredValidationExample
$LOCATION
Yes
"project"
or
"user"
project
$GROUP
No
/^[a-z][a-z0-9-]*$/
issue
,
workflow
$ARGUMENT_HINT
Noany string
"<phase> [--skip-verify]"

Agent-specific parameters:

ParameterRequiredValidationExample
$TOOLS
Nocomma-separated tool names
Read, Write, Bash, Glob
$SPAWNED_BY
Nowhich command spawns this agent
/plan-phase orchestrator

Normalize: trim + lowercase for

$NAME
,
$LOCATION
,
$GROUP
.

3. Resolve Target Path

Command:

LocationBase
project
.claude/commands
user
~/.claude/commands
If $GROUP:
  $TARGET_PATH = {base}/{$GROUP}/{$NAME}.md
Else:
  $TARGET_PATH = {base}/{$NAME}.md

Skill:

$TARGET_PATH = .claude/skills/{$NAME}/SKILL.md

Agent:

$TARGET_PATH = .claude/agents/{$NAME}.md

Check if

$TARGET_PATH
exists →
$FILE_EXISTS
.

4. Gather Requirements

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 -5

Read 1-2 similar files to extract patterns: section structure, naming conventions, XML tag usage, prompt style.

4b. Domain inference from

$NAME
,
$DESCRIPTION
, and context:

SignalExtract
$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:

ComplexityCriteriaSteps
SimpleSingle action, no flags3-5 numbered steps
Standard1-2 flags, clear workflow5-8 numbered steps
ComplexMultiple flags, agent spawning8-14 numbered steps

For agents — determine expertise scope:

ScopeCriteriaSections
FocusedSingle responsibility
<role>
+ 1-2 domain sections
StandardMulti-aspect domain
<role>
+ 2-4 domain sections
ExpertDeep domain with rules
<role>
+ 4-6 domain sections

If unclear, ask user with AskUserQuestion.

5. Generate Content

Route to the appropriate generation logic based on

$ARTIFACT_TYPE
.

5a. Command Generation

Follow

@specs/command-design-spec.md
and
@templates/command-md.md
.

Generate a complete command file with:

  1. <purpose>
    — 2-3 sentences: what + when + what it produces
  2. <required_reading>
    — @ references to context files
  3. <process>
    — numbered steps (GSD workflow style):
    • Step 1: Initialize / parse arguments
    • Steps 2-N: Domain-specific orchestration logic
    • Each step: banner display, validation, agent spawning via
      Agent()
      , error handling
    • Final step: status display +
      <offer_next>
      with next actions
  4. <success_criteria>
    — checkbox list of verifiable conditions

Command writing rules:

  • Steps are numbered (
    ## 1.
    ,
    ## 2.
    ) — follow
    plan-phase.md
    and
    new-project.md
    style
  • Use banners for phase transitions:
    ━━━ SKILL ► ACTION ━━━
  • Agent spawning uses
    Agent({ subagent_type, prompt, description, run_in_background })
    pattern
  • Prompt to agents uses
    <objective>
    ,
    <files_to_read>
    ,
    <output>
    blocks
  • Include
    <offer_next>
    block with formatted completion status
  • Handle agent return markers:
    ## TASK COMPLETE
    ,
    ## TASK BLOCKED
    ,
    ## CHECKPOINT REACHED
  • Shell blocks use heredoc for multi-line, quote all variables
  • Include
    <auto_mode>
    section if command supports
    --auto
    flag

5a-skill. Skill Generation (variant of command)

Follow

@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:

  1. <purpose>
    — 2-3 sentences: what + when + what it produces
  2. NO
    <required_reading>
    — skills cannot use
    @
    refs. External files loaded via
    Read()
    within process steps.
  3. <process>
    — numbered steps (GSD workflow style):
    • Step 1: Initialize / parse arguments / set workflow preferences
    • Steps 2-N: Domain-specific orchestration logic with inline
      Read("phases/...")
      for phase files
    • Each step: validation, agent spawning via
      Agent()
      , error handling
    • Final step: completion status or handoff to next skill via
      Skill()
  4. <success_criteria>
    — checkbox list of verifiable conditions

Skill-specific writing rules:

  • NO
    <required_reading>
    tag
    @
    syntax not supported in skills
  • NO
    @path
    references
    anywhere in the file — use
    Read("path")
    within
    <process>
    steps
  • Phase files loaded on-demand:
    Read("phases/01-xxx.md")
    within the step that needs it
  • Frontmatter uses
    allowed-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 section

5b. Agent Generation

Follow

@specs/agent-design-spec.md
and
@templates/agent-md.md
.

Generate a complete agent definition with:

  1. YAML frontmatter — name, description, tools, color (optional)
  2. <role>
    — identity + spawned-by + core responsibilities + mandatory initial read
  3. Domain sections (2-6 based on scope):
    • <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 returning
    • Custom domain sections as needed
  4. Output contract — structured return markers to orchestrator

Agent writing rules:

  • <role>
    is ALWAYS first after frontmatter — defines identity
  • Each section owns ONE concern — no cross-cutting
  • Include concrete examples (good vs bad comparison tables) in every domain section
  • Include decision/routing tables for conditional logic
  • Quality gate uses checkbox format for self-verification
  • Agent does NOT contain orchestration logic, user interaction, or argument parsing

5c. Convert Mode (Restyle Existing File)

CRITICAL: 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.

SignalType
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 stepsagent (unstructured)

Skill-specific conversion rules:

  • NO
    <required_reading>
    — skills cannot use
    @
    file references (progressive loading)
  • NO
    @path
    references
    anywhere — replace with
    Read("path")
    within
    <process>
    steps
  • If source has
    @specs/...
    or
    @phases/...
    refs, convert to
    Read("specs/...")
    /
    Read("phases/...")
  • Follow
    @specs/conversion-spec.md
    → "Skill Conversion Rules" section

Step 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:

  • Rewrap into GSD XML tags
  • Restructure sections to match target template ordering
  • Add missing required sections (empty
    <quality_gate>
    ,
    <output_contract>
    ) with
    TODO
    markers
  • Preserve all code blocks, tables, examples, shell commands exactly as-is

Step 5c.5: Content loss verification (MANDATORY).

Compare source and output:

MetricSourceOutputPass?
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.

Content quality rules (both types):

  • NO bracket placeholders (
    [Describe...]
    ) — all content concrete
  • NO generic instructions ("handle errors appropriately") — be specific
  • Include domain-specific examples derived from
    $DESCRIPTION
  • Every shell block: heredoc for multi-line, quoted variables, error exits

6. Quality Gate

MANDATORY before writing. Read back the generated content and validate against type-specific checks.

6a. Structural Validation (both types)

CheckPass Condition
YAML frontmatterHas
name
+
description
No placeholdersZero
[...]
or
{...}
bracket placeholders in prose
Concrete contentEvery section has actionable content, not descriptions of what to write
Section countCommand: 3+ sections; Agent: 4+ sections

6b. Command-Specific Checks

CheckPass Condition
<purpose>
2-3 sentences, no placeholders
<process>
with numbered steps
At least 3
## N.
headers
Step 1 is initializationParses args or loads context
Last step is status/reportDisplays 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 handlingRoutes on
## TASK COMPLETE
/
## TASK BLOCKED
markers
<offer_next>
Banner + summary + next command suggestion
<success_criteria>
4+ checkbox items, all verifiable
Content separationNo domain expertise embedded — only orchestration

6b-skill. Skill-Specific Checks

CheckPass 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 initializationParses args, sets workflow preferences
Phase file loadingUses
Read("phases/...")
within process steps (if has phases)
<success_criteria>
4+ checkbox items, all verifiable
Frontmatter
allowed-tools
Present and lists required tools
Content separationNo domain expertise embedded — only orchestration

6c. Agent-Specific Checks

CheckPass 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 namedAfter domain concepts, not generic (
<rules>
,
<guidelines>
)
Examples presentEach 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 separationNo
AskUserQuestion
, no banner display, no argument parsing

6d. Quality Gate Result

Count errors and warnings:

GateConditionAction
PASS0 errors, 0-2 warningsProceed to write
REVIEW1-2 errors or 3+ warningsFix errors, display warnings
FAIL3+ errorsRe-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" }
  ]
)

7. Write and Verify

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:

  • File exists and is non-empty
  • Content matches what was generated (no corruption)
  • File size is reasonable (command: 50-500 lines; agent: 80-600 lines)

If verification fails: Fix in-place with Edit tool.

8. Present Status

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 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}"

───────────────────────────────────────────────────────
</process>

<success_criteria>

  • Artifact type determined (command or agent)
  • All required parameters validated
  • Target path resolved correctly
  • 1-2 similar existing files read for pattern reference
  • Domain requirements gathered from description
  • Content generated with concrete, domain-specific logic
  • GSD content separation respected (commands = orchestration, agents = expertise)
  • Quality gate passed (structural + type-specific checks)
  • No bracket placeholders in final output
  • File written and post-write verified
  • Status banner displayed with quality gate result </success_criteria>