Delegate independent tasks to specialized agents working concurrently with isolated context.
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) --researchflag to force re-research--skip-researchflag to skip research--gapsflag for gap closure mode--skip-verifyflag 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:
- Force proceed (execute despite issues)
- Provide guidance (user gives direction, retry)
- 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)
| Wave | Plans | What it builds |
|---|---|---|
| 1 | 01, 02 | [objectives] |
| 2 | 03 | [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
brand-guidelines
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.
theme-factory
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.
internal-comms
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.).
Fundamental design principles for writing maintainable, testable Python code.
responsive-design
Modern responsive layouts using container queries, fluid typography, CSS Grid, and mobile-first strategies.
Generate Playwright tests from scenarios using interactive browser exploration and validation.
Automated website exploration and test case generation using Playwright.
Modern React state management with Redux Toolkit, Zustand, Jotai, and React Query for every state category.
gdpr-data-handling
GDPR-compliant data handling with consent management, data subject rights, and privacy controls.
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.
refactor-plan
Detailed multi-file refactor planning with safety checks and rollback guidance.
