home / skills / catlog22 / claude-code-workflow / codex-skill-designer

codex-skill-designer skill

/.claude/skills/codex-skill-designer

This skill designs Codex-native multi-agent skills with orchestrator and agent role definitions to accelerate Codex project automation.

npx playbooks add skill catlog22/claude-code-workflow --skill codex-skill-designer

Review the files below or copy the command above to add this skill to your agents.

Files (11)
SKILL.md
12.4 KB
---
name: codex-skill-designer
description: Meta-skill for designing Codex-native skills with subagent orchestration (spawn_agent/wait/send_input/close_agent). Supports new skill creation and Claude→Codex conversion. Triggers on "design codex skill", "create codex skill", "codex skill designer", "convert to codex".
allowed-tools: Task, AskUserQuestion, TodoWrite, Read, Write, Edit, Bash, Glob, Grep
---

# Codex Skill Designer

Meta-skill for creating Codex-native skills that use the subagent API (`spawn_agent`/`wait`/`send_input`/`close_agent`). Generates complete skill packages with orchestrator coordination and agent role definitions.

## Architecture Overview

```
┌──────────────────────────────────────────────────────────────┐
│  Codex Skill Designer                                        │
│  → Analyze requirements → Design orchestrator → Design agents│
└───────────────┬──────────────────────────────────────────────┘
                │
    ┌───────────┼───────────┬───────────┐
    ↓           ↓           ↓           ↓
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ Phase 1 │ │ Phase 2 │ │ Phase 3 │ │ Phase 4 │
│ Require │ │  Orch   │ │ Agent   │ │ Valid   │
│ Analysis│ │ Design  │ │ Design  │ │ & Integ │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
     ↓           ↓           ↓           ↓
  codexSkill  orchestrator agents/    Complete
  Config      .md generated *.md      skill pkg
```

## Target Output Structure

The skill this meta-skill produces follows this structure:

### Mode A: Structured Skill Package (multi-agent orchestration)

```
.codex/skills/{skill-name}/
├── orchestrator.md              # Main Codex orchestrator
│   ├── Frontmatter (name, description)
│   ├── Architecture (spawn/wait/close flow)
│   ├── Agent Registry (role → path mapping)
│   ├── Phase Execution (spawn_agent patterns)
│   ├── Result Aggregation (wait + merge)
│   └── Lifecycle Management (close_agent cleanup)
├── agents/                      # Skill-specific agent definitions
│   ├── {agent-1}.md             # → deploy to ~/.codex/agents/
│   └── {agent-2}.md             # → deploy to ~/.codex/agents/
└── phases/                      # [Optional] Phase execution detail
    ├── 01-{phase}.md
    └── 02-{phase}.md
```

### Mode B: Single Prompt (simple or self-contained skills)

```
~/.codex/prompts/{skill-name}.md   # Self-contained Codex prompt
```

## Key Design Principles — Codex-Native Patterns

### Pattern 1: Explicit Lifecycle Management

Every agent has a complete lifecycle: `spawn_agent` → `wait` → [`send_input`] → `close_agent`.

```javascript
// Standard lifecycle
const agentId = spawn_agent({ message: taskMessage })
const result = wait({ ids: [agentId], timeout_ms: 300000 })
// [Optional: send_input for multi-round]
close_agent({ id: agentId })
```

**Key Rules**:
- Use `wait()` to get results, NEVER depend on `close_agent` return
- `close_agent` is irreversible — no further `wait`/`send_input` possible
- Delay `close_agent` until certain no more interaction is needed

### Pattern 2: Role Loading via Path Reference

Codex subagents cannot auto-load roles. Use MANDATORY FIRST STEPS pattern:

```javascript
spawn_agent({
  message: `
## TASK ASSIGNMENT

### MANDATORY FIRST STEPS (Agent Execute)
1. **Read role definition**: ~/.codex/agents/{agent-type}.md (MUST read first)
2. Read: .workflow/project-tech.json
3. Read: .workflow/project-guidelines.json

## TASK CONTEXT
${taskContext}

## DELIVERABLES
${deliverables}
`
})
```

### Pattern 3: Parallel Fan-out with Batch Wait

Multiple independent agents → batch `wait({ ids: [...] })`:

```javascript
const agentIds = tasks.map(task =>
  spawn_agent({ message: buildTaskMessage(task) })
)
const results = wait({ ids: agentIds, timeout_ms: 600000 })
agentIds.forEach(id => close_agent({ id }))
```

### Pattern 4: Deep Interaction (send_input Multi-round)

Single agent, multi-phase with context preservation:

```javascript
const agent = spawn_agent({ message: explorePrompt })
const round1 = wait({ ids: [agent] })

// Continue with clarification
send_input({ id: agent, message: clarificationAnswers })
const round2 = wait({ ids: [agent] })

close_agent({ id: agent })  // Only after all rounds complete
```

### Pattern 5: Two-Phase Workflow (Clarify → Execute)

```
Phase 1: spawn_agent → output Open Questions only
         ↓
Phase 2: send_input (answers) → output full solution
```

### Pattern 6: Structured Output Template

All agents produce uniform output:

```text
Summary:
- One-sentence completion status

Findings:
- Finding 1: specific description
- Finding 2: specific description

Proposed changes:
- File: path/to/file
- Change: specific modification
- Risk: potential impact

Tests:
- New/updated test cases needed
- Test commands to run

Open questions:
1. Question needing clarification
2. Question needing clarification
```

## Execution Flow

```
Phase 1: Requirements Analysis
   └─ Ref: phases/01-requirements-analysis.md
      ├─ Input: text description / Claude skill / requirements doc / existing codex prompt
      └─ Output: codexSkillConfig (agents, phases, patterns, interaction model)

Phase 2: Orchestrator Design
   └─ Ref: phases/02-orchestrator-design.md
      ├─ Input: codexSkillConfig
      └─ Output: .codex/skills/{name}/orchestrator.md (or ~/.codex/prompts/{name}.md)

Phase 3: Agent Design
   └─ Ref: phases/03-agent-design.md
      ├─ Input: codexSkillConfig + source content
      └─ Output: .codex/skills/{name}/agents/*.md + optional phases/*.md

Phase 4: Validation & Delivery
   └─ Ref: phases/04-validation.md
      └─ Output: Validated skill package + deployment instructions
```

**Phase Reference Documents** (read on-demand when phase executes):

| Phase | Document | Purpose |
|-------|----------|---------|
| 1 | [phases/01-requirements-analysis.md](phases/01-requirements-analysis.md) | Analyze inputs, determine skill config |
| 2 | [phases/02-orchestrator-design.md](phases/02-orchestrator-design.md) | Generate Codex-native orchestrator |
| 3 | [phases/03-agent-design.md](phases/03-agent-design.md) | Generate agent roles & command patterns |
| 4 | [phases/04-validation.md](phases/04-validation.md) | Validate structure, patterns, quality |

## Input Sources

| Source | Description | Example |
|--------|-------------|---------|
| **Text description** | User describes desired Codex skill | "Create a 3-agent code review skill for Codex" |
| **Claude skill** | Convert existing Claude skill to Codex | `.claude/skills/workflow-plan/SKILL.md` |
| **Requirements doc** | Structured requirements file | `requirements.md` with agents/phases/outputs |
| **Existing Codex prompt** | Refactor/enhance a Codex prompt | `~/.codex/prompts/plan.md` |

## Conversion Mode (Claude → Codex)

When source is a Claude skill, apply conversion rules:

| Claude Pattern | Codex Equivalent |
|----------------|-----------------|
| `Task({ subagent_type, prompt })` | `spawn_agent({ message })` + `wait()` |
| `Task({ run_in_background: false })` | `spawn_agent()` + immediate `wait()` |
| `Task({ resume: agentId })` | `send_input({ id: agentId })` |
| `TaskOutput({ task_id, block })` | `wait({ ids: [id], timeout_ms })` |
| Automatic agent cleanup | Explicit `close_agent({ id })` |
| `subagent_type` auto-loads role | MANDATORY FIRST STEPS role path |
| Multiple parallel `Task()` calls | Multiple `spawn_agent()` + batch `wait({ ids })` |

**Full conversion spec**: Ref: specs/conversion-rules.md

## Data Flow

```
Phase 1 → codexSkillConfig:
  {
    name, description, outputMode (structured|single),
    agents: [{ name, role_file, responsibility, patterns }],
    phases: [{ name, agents_involved, interaction_model }],
    parallelSplits: [{ strategy, agents }],
    conversionSource: null | { type, path }
  }

Phase 2 → orchestrator.md:
  Generated Codex orchestrator with spawn/wait/close patterns

Phase 3 → agents/*.md:
  Per-agent role definitions with Codex-native conventions

Phase 4 → validated package:
  Structural completeness + pattern compliance + quality score
```

## TodoWrite Pattern

```
Phase starts:
  → Sub-tasks ATTACHED to TodoWrite (in_progress + pending)
  → Designer executes sub-tasks sequentially

Phase ends:
  → Sub-tasks COLLAPSED back to high-level summary (completed)
  → Next phase begins
```

## Interactive Preference Collection

Collect preferences via AskUserQuestion before dispatching to phases:

```javascript
const prefResponse = AskUserQuestion({
  questions: [
    {
      question: "What is the output mode for this Codex skill?",
      header: "Output Mode",
      multiSelect: false,
      options: [
        { label: "Structured Package (Recommended)", description: "Multi-file: orchestrator.md + agents/*.md + phases/*.md" },
        { label: "Single Prompt", description: "Self-contained ~/.codex/prompts/{name}.md" }
      ]
    },
    {
      question: "What is the input source?",
      header: "Input Source",
      multiSelect: false,
      options: [
        { label: "Text Description", description: "Describe the desired Codex skill in natural language" },
        { label: "Claude Skill (Convert)", description: "Convert existing .claude/skills/ to Codex-native" },
        { label: "Requirements Doc", description: "Structured requirements file" },
        { label: "Existing Codex Prompt", description: "Refactor/enhance existing ~/.codex/prompts/" }
      ]
    }
  ]
})

const workflowPreferences = {
  outputMode: prefResponse["Output Mode"].includes("Structured") ? "structured" : "single",
  inputSource: prefResponse["Input Source"]
}
```

## Specification Documents

Read specs on-demand for pattern guidance:

| Spec | Document | Purpose |
|------|----------|---------|
| Agent Patterns | [specs/codex-agent-patterns.md](specs/codex-agent-patterns.md) | Core Codex subagent API patterns |
| Conversion Rules | [specs/conversion-rules.md](specs/conversion-rules.md) | Claude → Codex mapping rules |
| Quality Standards | [specs/quality-standards.md](specs/quality-standards.md) | Quality gates & validation criteria |

## Generation Templates

Apply templates during generation:

| Template | Document | Purpose |
|----------|----------|---------|
| Orchestrator | [templates/orchestrator-template.md](templates/orchestrator-template.md) | Codex orchestrator output template |
| Agent Role | [templates/agent-role-template.md](templates/agent-role-template.md) | Agent role definition template |
| Command Patterns | [templates/command-pattern-template.md](templates/command-pattern-template.md) | Pre-built Codex command patterns |

## Error Handling

| Scenario | Resolution |
|----------|------------|
| Source Claude skill has unsupported patterns | Log warning, provide manual conversion guidance |
| Agent role file path conflict | Append skill-name prefix to agent file |
| Output directory exists | Ask user: overwrite or new name |
| Validation score < 70% | Block delivery, report issues |

## Post-Phase Updates

After each phase, update accumulated state:

```javascript
// After Phase 1
codexSkillConfig = { ...requirements analysis output }

// After Phase 2
generatedFiles.orchestrator = "path/to/orchestrator.md"

// After Phase 3
generatedFiles.agents = ["path/to/agent1.md", "path/to/agent2.md"]
generatedFiles.phases = ["path/to/phase1.md"]  // optional

// After Phase 4
validationResult = { score, issues, passed }
```

## Coordinator Checklist

### Pre-Phase Actions
- [ ] Verify input source exists and is readable
- [ ] Collect preferences via AskUserQuestion
- [ ] Read relevant specs based on input source

### Post-Phase Actions
- [ ] Verify phase output completeness
- [ ] Update TodoWrite status
- [ ] Pass accumulated state to next phase

### Final Delivery
- [ ] All generated files written to target directory
- [ ] Deployment instructions provided
- [ ] Agent files include `~/.codex/agents/` deployment paths

Overview

This skill designs Codex-native multi-agent skills that use the subagent API (spawn_agent / wait / send_input / close_agent). It generates complete skill packages or single-prompt skills, including orchestrator coordination, agent role files, phase definitions, and conversion from Claude skills. The output follows clear lifecycle and communication patterns for reliable automation and parallel execution.

How this skill works

The designer analyzes input (text description, Claude skill, requirements doc, or existing Codex prompt) and builds a codexSkillConfig describing agents, phases, and interaction models. It generates an orchestrator (spawn/wait/close flows), per-agent role files, optional phase documents, and validation reports. For Claude→Codex conversion it maps Task()/TaskOutput() semantics to spawn_agent/wait/send_input/close_agent patterns and enforces explicit role-loading steps.

When to use it

  • Create a new Codex skill with multi-agent orchestration and clear lifecycle handling
  • Convert an existing Claude skill into a Codex-native orchestrator and agents
  • Refactor or formalize a single Codex prompt into a structured multi-file skill package
  • Design parallel fan-out workflows where tasks run concurrently and results are aggregated
  • Build two-phase workflows that first clarify requirements then execute final tasks

Best practices

  • Always implement full agent lifecycle: spawn_agent → wait → [send_input]* → close_agent
  • Include a MANDATORY FIRST STEPS block so agents explicitly load their role files via path references
  • Use batch wait() for parallel agents and only close_agent after all interactions complete
  • Standardize outputs with the Structured Output Template (Summary, Findings, Proposed changes, Tests, Open questions)
  • Run validation phase and enforce a quality score threshold before delivery

Example use cases

  • 3-agent code review skill: parallel reviewers spawn, batch wait, aggregate findings into a report
  • Claude skill conversion: map Task() flows to spawn_agent/wait/send_input patterns and generate agent role files
  • Two-phase design assistant: phase 1 spawns clarifier agents, collect answers, phase 2 sends inputs to executor agents
  • Single-prompt diagnostic tool: generate a self-contained ~/.codex/prompts/{name}.md for quick deployments
  • Automated CLI workflow: generate orchestrator.md that drives gemini/qwen/codex CLIs with consistent patterns

FAQ

Can this convert every Claude skill automatically?

Most patterns map deterministically, but unsupported Claude constructs are flagged with manual conversion guidance.

When should I choose structured package vs single prompt?

Use structured packages for multi-agent or multi-phase skills; choose single prompt for simple, self-contained tasks.