Skip to main content
Every GSD plan uses structured XML optimized for Claude to parse and execute. This format ensures precise instructions, clear verification steps, and deterministic execution.

Why XML?

From the README:
Every plan is structured XML optimized for Claude:
  • Precise instructions
  • No guessing
  • Verification built in
Claude excels at parsing and following XML-structured instructions. The format makes it impossible to miss required steps or skip verification.

Plan File Structure

Plans live in .planning/phases/XX-name/{phase}-{plan}-PLAN.md with YAML frontmatter and XML body.

Complete Example

Frontmatter Fields

YAML frontmatter provides metadata for the orchestrator:

Key Fields Explained

wave - Pre-computed execution wave:
  • Wave 1: Independent plans run in parallel
  • Wave 2: Plans depending on Wave 1
  • Wave 3+: Further dependencies
depends_on - Explicit dependencies:
  • [] - No dependencies, can run in Wave 1
  • ["01-01"] - Requires plan 01-01 complete
  • ["01-01", "01-02"] - Requires both plans
autonomous - Checkpoint indicator:
  • true - Fully autonomous, no user interaction
  • false - Has checkpoints requiring user input
must_haves - Verification criteria:
  • Used by verification subagent after execution
  • Ensures goal achievement, not just task completion

XML Tags

<objective>

Purpose: What this plan accomplishes and why. Structure:
Example:

<execution_context>

Purpose: Workflow and template references. Structure:
These files guide Claude’s execution behavior.

<context>

Purpose: Project files and prior work to read. Structure:
Important: Don’t reflexively chain summaries. Only reference prior work if:
  • This plan imports types/exports from prior plan
  • Prior plan made decision affecting this plan
  • Prior plan’s output is input to this plan

<tasks>

Purpose: Container for all task elements. Structure:

<task type="auto">

Purpose: Fully autonomous task Claude executes. Structure:
Example from README:

<name> Tag

Purpose: Clear, action-oriented task name. Format: [Verb] [noun] or [Verb] [noun]: [specifics] Good examples:
  • Create User model
  • Implement password hashing
  • Add error handling to login endpoint
Bad examples:
  • User model (not action-oriented)
  • Authentication (too vague)
  • Task 1 (meaningless)

<files> Tag

Purpose: Which files this task creates or modifies. Format: Comma-separated paths relative to project root. Examples:

<action> Tag

Purpose: Specific implementation instructions. Include:
  • What to build
  • How to build it
  • What to avoid and WHY
  • Technology choices
  • Error handling requirements
Example:

<verify> Tag

Purpose: Command or check to prove the task worked. Format: Executable command or manual check. Examples:

<done> Tag

Purpose: Measurable acceptance criteria. Format: Observable outcome that proves task complete. Examples:

Checkpoint Tasks

Purpose: Tasks requiring user interaction. Types:
  • checkpoint:decision - User makes implementation choice
  • checkpoint:human-verify - User verifies visual/functional output
  • checkpoint:human-action - User performs manual step
Example:
Important: Claude starts dev server BEFORE human-verify checkpoints. User only visits URLs.

<verification>

Purpose: Final checks before declaring plan complete. Structure:
Example:

<success_criteria>

Purpose: Overall plan success definition. Structure:

<output>

Purpose: Where to write the completion summary. Structure:

Real Example from README

From the “Why It Works” section:
What makes this work:
  1. Precise technology choice: “Use jose for JWT (not jsonwebtoken - CommonJS issues)”
  2. Clear verification: Exact curl command with expected output
  3. Measurable done criteria: Specific behaviors to test
  4. No ambiguity: Claude knows exactly what to build and how to verify

Anti-Patterns

Vague Actions

Bad:
Good:

Non-Verifiable Checks

Bad:
Good:

Missing Context

Bad:
Good:

See Also