Skip to content
gsd-plan-phase logo

Gsd Plan Phase

gsd-plan-phase

Orchestrate phase planning with research, planning, and verification loop

SKILL.md

Full skill instructions

<execution_context> @.github/​get-shit-done/​references/​ui-brand.md </​execution_context>

<objective> Create executable phase prompts (PLAN.md files) for a roadmap phase with integrated research and verification.

Default flow: Research (if needed) → Plan → Verify → Done

Orchestrator role: Parse arguments, validate phase, research domain (unless skipped or exists), spawn gsd-planner agent, verify plans with gsd-plan-checker, iterate until plans pass or max iterations reached, present results.

Why subagents: Research and planning burn context fast. Verification uses fresh context. User sees the flow between agents in main context. </​objective>

<context> Phase number: $ARGUMENTS (optional - auto-detects next unplanned phase if not provided)

Flags:

  • --research — Force re-research even if RESEARCH.md exists
  • --skip-research — Skip research entirely, go straight to planning
  • --gaps — Gap closure mode (reads VERIFICATION.md, skips research)
  • --skip-verify — Skip planner → checker verification loop

Normalize phase input in step 2 before any directory lookups. </​context>

<process>

1. Validate Environment

ls .planning/ 2>/​dev/​null

If not found: Error - user should run /​gsd-new-project first.

2. Parse and Normalize Arguments

Extract from $ARGUMENTS:

  • Phase number (integer or decimal like 2.1)
  • --research flag to force re-research
  • --skip-research flag to skip research
  • --gaps flag for gap closure mode
  • --skip-verify flag to bypass verification loop

If no phase number: Detect next unplanned phase from roadmap.

Normalize phase to zero-padded format:

# Normalize phase number (8 → 08, but preserve decimals like 2.1 → 02.1)
if [[ "$PHASE" =~ ^[0-9]+$ ]]; then
  PHASE=$(printf "%02d" "$PHASE")
elif [[ "$PHASE" =~ ^([0-9]+)\.([0-9]+)$ ]]; then
  PHASE=$(printf "%02d.%s" "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}")
fi

Check for existing research and plans:

ls .planning/​phases/​${PHASE}-*/​*-RESEARCH.md 2>/​dev/​null
ls .planning/​phases/​${PHASE}-*/​*-PLAN.md 2>/​dev/​null

3. Validate Phase

grep -A5 "Phase ${PHASE}:" .planning/​ROADMAP.md 2>/​dev/​null

If not found: Error with available phases. If found: Extract phase number, name, description.

4. Ensure Phase Directory Exists

# PHASE is already normalized (08, 02.1, etc.) from step 2
PHASE_DIR=$(ls -d .planning/​phases/​${PHASE}-* 2>/​dev/​null | head -1)
if [ -z "$PHASE_DIR" ]; then
  # Create phase directory from roadmap name
  PHASE_NAME=$(grep "Phase ${PHASE}:" .planning/​ROADMAP.md | sed 's/​.*Phase [0-9]*: //' | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
  mkdir -p ".planning/​phases/​${PHASE}-${PHASE_NAME}"
  PHASE_DIR=".planning/​phases/​${PHASE}-${PHASE_NAME}"
fi

5. Handle Research

If --gaps flag: Skip research (gap closure uses VERIFICATION.md instead).

If --skip-research flag: Skip to step 6.

Otherwise:

Check for existing research:

ls "${PHASE_DIR}"/​*-RESEARCH.md 2>/​dev/​null

If RESEARCH.md exists AND --research flag NOT set:

  • Display: Using existing research: ${PHASE_DIR}/​${PHASE}-RESEARCH.md
  • Skip to step 6

If RESEARCH.md missing OR --research flag set:

Display stage banner:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 GSD ► RESEARCHING PHASE {X}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

◆ Spawning researcher...

Proceed to spawn researcher

Spawn gsd-phase-researcher

Gather context for research prompt:

# Get phase description from roadmap
PHASE_DESC=$(grep -A3 "Phase ${PHASE}:" .planning/​ROADMAP.md)

# Get requirements if they exist
REQUIREMENTS=$(cat .planning/​REQUIREMENTS.md 2>/​dev/​null | grep -A100 "## Requirements" | head -50)

# Get prior decisions from STATE.md
DECISIONS=$(grep -A20 "### Decisions Made" .planning/​STATE.md 2>/​dev/​null)

# Get phase context if exists
PHASE_CONTEXT=$(cat "${PHASE_DIR}/​${PHASE}-CONTEXT.md" 2>/​dev/​null)

Fill research prompt and spawn:

<objective>
Research how to implement Phase {phase_number}: {phase_name}

Answer: "What do I need to know to PLAN this phase well?"
</​objective>

<context>
**Phase description:**
{phase_description}

**Requirements (if any):**
{requirements}

**Prior decisions:**
{decisions}

**Phase context (if any):**
{phase_context}
</​context>

<output>
Write research findings to: {phase_dir}/​{phase}-RESEARCH.md
</​output>
Task(
  prompt=research_prompt,
  subagent_type="gsd-phase-researcher",
  description="Research Phase {phase}"
)

Handle Researcher Return

## RESEARCH COMPLETE:

  • Display: Research complete. Proceeding to planning...
  • Continue to step 6

## RESEARCH BLOCKED:

  • Display blocker information
  • Offer: 1) Provide more context, 2) Skip research and plan anyway, 3) Abort
  • Wait for user response

6. Check Existing Plans

ls "${PHASE_DIR}"/​*-PLAN.md 2>/​dev/​null

If exists: Offer: 1) Continue planning (add more plans), 2) View existing, 3) Replan from scratch. Wait for response.

7. Gather Context Paths

Identify context files for the planner agent:

# Required
STATE=.planning/​STATE.md
ROADMAP=.planning/​ROADMAP.md
REQUIREMENTS=.planning/​REQUIREMENTS.md

# Optional (created by earlier steps or commands)
CONTEXT="${PHASE_DIR}/​${PHASE}-CONTEXT.md"
RESEARCH="${PHASE_DIR}/​${PHASE}-RESEARCH.md"
VERIFICATION="${PHASE_DIR}/​${PHASE}-VERIFICATION.md"
UAT="${PHASE_DIR}/​${PHASE}-UAT.md"

8. Spawn gsd-planner Agent

Display stage banner:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 GSD ► PLANNING PHASE {X}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

◆ Spawning planner...

Fill prompt and spawn:

<planning_context>

**Phase:** {phase_number}
**Mode:** {standard | gap_closure}

**Project State:**
@.planning/​STATE.md

**Roadmap:**
@.planning/​ROADMAP.md

**Requirements (if exists):**
@.planning/​REQUIREMENTS.md

**Phase Context (if exists):**
@.planning/​phases/​{phase_dir}/​{phase}-CONTEXT.md

**Research (if exists):**
@.planning/​phases/​{phase_dir}/​{phase}-RESEARCH.md

**Gap Closure (if --gaps mode):**
@.planning/​phases/​{phase_dir}/​{phase}-VERIFICATION.md
@.planning/​phases/​{phase_dir}/​{phase}-UAT.md

</​planning_context>

<downstream_consumer>
Output consumed by /​gsd-execute-phase
Plans must be executable prompts with:

- Frontmatter (wave, depends_on, files_modified, autonomous)
- Tasks in XML format
- Verification criteria
- must_haves for goal-backward verification
</​downstream_consumer>

<quality_gate>
Before returning PLANNING COMPLETE:

- [ ] PLAN.md files created in phase directory
- [ ] Each plan has valid frontmatter
- [ ] Tasks are specific and actionable
- [ ] Dependencies correctly identified
- [ ] Waves assigned for parallel execution
- [ ] must_haves derived from phase goal
</​quality_gate>
Task(
  prompt=filled_prompt,
  subagent_type="gsd-planner",
  description="Plan Phase {phase}"
)

9. Handle Planner Return

Parse planner output:

## PLANNING COMPLETE:

  • Display: Planner created {N} plan(s). Files on disk.
  • If --skip-verify: Skip to step 13
  • Otherwise: Proceed to step 10

## CHECKPOINT REACHED:

  • Present to user, get response, spawn continuation (see step 12)

## PLANNING INCONCLUSIVE:

  • Show what was attempted
  • Offer: Add context, Retry, Manual
  • Wait for user response

10. Spawn gsd-plan-checker Agent

Display:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 GSD ► VERIFYING PLANS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

◆ Spawning plan checker...

Fill checker prompt and spawn:

<verification_context>

**Phase:** {phase_number}
**Phase Goal:** {goal from ROADMAP}

**Plans to verify:**
@.planning/​phases/​{phase_dir}/​*-PLAN.md

**Requirements (if exists):**
@.planning/​REQUIREMENTS.md

</​verification_context>

<expected_output>
Return one of:
- ## VERIFICATION PASSED — all checks pass
- ## ISSUES FOUND — structured issue list
</​expected_output>
Task(
  prompt=checker_prompt,
  subagent_type="gsd-plan-checker",
  description="Verify Phase {phase} plans"
)

11. Handle Checker Return

If ## VERIFICATION PASSED:

  • Display: Plans verified. Ready for execution.
  • Proceed to step 13

If ## ISSUES FOUND:

  • Display: Checker found issues:
  • List issues from checker output
  • Check iteration count
  • Proceed to step 12

12. Revision Loop (Max 3 Iterations)

Track: iteration_count (starts at 1 after initial plan + check)

If iteration_count < 3:

Display: Sending back to planner for revision... (iteration {N}/​3)

Spawn gsd-planner with revision prompt:

<revision_context>

**Phase:** {phase_number}
**Mode:** revision

**Existing plans:**
@.planning/​phases/​{phase_dir}/​*-PLAN.md

**Checker issues:**
{structured_issues_from_checker}

</​revision_context>

<instructions>
Read existing PLAN.md files. Make targeted updates to address checker issues.
Do NOT replan from scratch unless issues are fundamental.
Return what changed.
</​instructions>
Task(
  prompt=revision_prompt,
  subagent_type="gsd-planner",
  description="Revise Phase {phase} plans"
)
  • After planner returns → spawn checker again (step 10)
  • Increment iteration_count

If iteration_count >= 3:

Display: Max iterations reached. {N} issues remain:

  • List remaining issues

Offer options:

  1. Force proceed (execute despite issues)
  2. Provide guidance (user gives direction, retry)
  3. Abandon (exit planning)

Wait for user response.

13. Present Final Status

Route to <offer_next>.

</​process>

<offer_next> Output this markdown directly (not as a code block):

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ GSD ► PHASE {X} PLANNED ✓ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Phase {X}: {Name} — {N} plan(s) in {M} wave(s)

WavePlansWhat it builds
101, 02[objectives]
203[objective]

Research: {Completed | Used existing | Skipped} Verification: {Passed | Passed with override | Skipped}

───────────────────────────────────────────────────────────────

▶ Next Up

Execute Phase {X} — run all {N} plans

/​gsd-execute-phase {X}

<sub>/​clear first → fresh context window</​sub>

───────────────────────────────────────────────────────────────

Also available:

  • cat .planning/​phases/​{phase-dir}/​*-PLAN.md — review plans
  • /​gsd-plan-phase {X} --research — re-research first

─────────────────────────────────────────────────────────────── </​offer_next>

<success_criteria>

  • .planning/ directory validated
  • Phase validated against roadmap
  • Phase directory created if needed
  • Research completed (unless --skip-research or --gaps or exists)
  • gsd-phase-researcher spawned if research needed
  • Existing plans checked
  • gsd-planner spawned with context (including RESEARCH.md if available)
  • Plans created (PLANNING COMPLETE or CHECKPOINT handled)
  • gsd-plan-checker spawned (unless --skip-verify)
  • Verification passed OR user override OR max iterations with user decision
  • User sees status between agent spawns
  • User knows next steps (execute or review) </​success_criteria>

More Other skills

Delegate independent tasks to specialized agents working concurrently with isolated context.

295.4K 206.3K
View

Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.

179.7K 100.1K
View

Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.

179.7K 89.5K
View

A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).

179.7K 76.1K
View

Fundamental design principles for writing maintainable, testable Python code.

40.2K 21.9K
View

Modern responsive layouts using container queries, fluid typography, CSS Grid, and mobile-first strategies.

40.2K 20K
View

Generate Playwright tests from scenarios using interactive browser exploration and validation.

39.7K 18.2K
View

Modern React state management with Redux Toolkit, Zustand, Jotai, and React Query for every state category.

40.2K 14.7K
View

GDPR-compliant data handling with consent management, data subject rights, and privacy controls.

40.2K 14.3K
View

Python error handling patterns including input validation, exception hierarchies, and partial failure handling. Use when implementing validation logic, designing exception strategies, handling batch processing failures, or building robust APIs.

40.2K 13.5K
View

Detailed multi-file refactor planning with safety checks and rollback guidance.

39.7K 13K
View