* docs(01-02): complete gsd-doc-writer agent skeleton plan
- SUMMARY.md for plan 01-02
- STATE.md advanced to plan 2/2, progress 50%
- ROADMAP.md updated with phase 1 plan progress
- REQUIREMENTS.md marked DOCG-01 and DOCG-08 complete
* feat(01-01): create lib/docs.cjs with cmdDocsInit and detection helpers
- Add cmdDocsInit following cmdInitMapCodebase pattern
- Add hasGsdMarker(), scanExistingDocs(), detectProjectType()
- Add detectDocTooling(), detectMonorepoWorkspaces() private helpers
- GSD_MARKER constant for generated-by tracking
- Only Node.js built-ins and local lib requires used
* feat(01-01): wire docs-init into gsd-tools.cjs and register gsd-doc-writer model profile
- Add const docs = require('./lib/docs.cjs') to gsd-tools.cjs
- Add case 'docs-init' routing to docs.cmdDocsInit
- Add docs-init to help text and JSDoc header
- Register gsd-doc-writer in MODEL_PROFILES (quality:opus, balanced:sonnet, budget:haiku)
- Fix docs.cjs: inline withProjectRoot logic via checkAgentsInstalled (private in init.cjs)
* docs(01-01): complete docs-init command plan
- SUMMARY.md documenting cmdDocsInit, detection helpers, wiring
- STATE.md advanced, progress updated to 100%
- ROADMAP.md phase 1 marked Complete
- REQUIREMENTS.md INFRA-01, INFRA-02, CONS-03 marked complete
* feat(01-02): create gsd-doc-writer agent skeleton
- YAML frontmatter with name, description, tools, color: purple
- role block with doc_assignment receiving convention
- create_mode and update_mode sections
- 9 stub template sections (readme, architecture, getting_started, development, testing, api, configuration, deployment, contributing)
- Each template has Required Sections list and Phase 3 TODO
- critical_rules prohibiting GSD methodology and CHANGELOG
- success_criteria checklist
- No GSD methodology leaks in template sections
* feat(02-01): add docs-update workflow Steps 1-6 — init, classify, route, resolve, detect
- init_context step calling docs-init with @file: handling and agent-skills loading
- validate_agents step warns on missing gsd-doc-writer without halting
- classify_project step maps project_type signals to 5 primary labels plus conditional docs
- build_doc_queue step with always-on 6 docs and conditional API/CONTRIBUTING/DEPLOYMENT routing
- resolve_modes step with doc-type to canonical path mapping and create/update detection
- detect_runtime_capabilities step with Task tool detection and sequential fallback routing
* docs(02-01): complete docs-update workflow plan — 13-step orchestration for parallel doc generation
- 02-01-SUMMARY.md: plan results, decisions, file inventory
- STATE.md: advanced to last plan, progress 100%, decisions recorded
- ROADMAP.md: Phase 2 marked Complete (1/1 plans with summary)
- REQUIREMENTS.md: marked INFRA-04, DOCG-03, DOCG-04, CONS-01, CONS-02, CONS-04 complete
* docs(03-02): complete command entry point and workflow extension plan
- 03-02-SUMMARY.md: plan results, decisions, file inventory
- STATE.md: advanced to plan 2, progress 100%, decisions recorded
- ROADMAP.md: Phase 3 marked Complete (2/2 plans with summaries)
- REQUIREMENTS.md: marked INFRA-03, EXIST-01, EXIST-02, EXIST-04 complete
* feat(03-01): fill all 9 doc templates, add supplement mode and per-package README template
- Replace all 9 template stubs with full content guidance (Required Sections, Content Discovery, Format Notes)
- Add shared doc_tooling_guidance block for Docusaurus, VitePress, MkDocs, Storybook routing
- Add supplement_mode block: append-only strategy with heading comparison and safety rules
- Add template_readme_per_package for monorepo per-package README generation
- Update role block to list supplement as third mode; add rule 7 to critical_rules
- Add supplement mode check to success_criteria
- Remove all Phase 3 TODO stubs and placeholder comments
* feat(03-02): add docs-update command entry point with --force and --verify-only flags
- YAML frontmatter with name, argument-hint, allowed-tools
- objective block documents flag semantics with literal-token enforcement pattern
- execution_context references docs-update.md workflow
- context block passes $ARGUMENTS and documents flag derivation rules
- --force takes precedence over --verify-only when both present
* feat(03-02): extend docs-update workflow with preservation_check, monorepo dispatch, and verify-only
- preservation_check step between resolve_modes and detect_runtime_capabilities
- preservation_check skips on --force, --verify-only, or no hand-written docs
- per-file AskUserQuestion choice: preserve/supplement/regenerate with fallback default to preserve
- dispatch_monorepo_packages step after collect_wave_2 for per-package READMEs
- verify_only_report early-exit step with VERIFY marker count and Phase 4 deferral message
- preservation_mode field added to all doc_assignment blocks in dispatch_wave_1, dispatch_wave_2
- sequential_generation extended with monorepo per-package section
- commit_docs updated to include per-package README files pattern
- report extended with per-package README rows and preservation decisions
- success_criteria updated with preservation, --force, --verify-only, and monorepo checks
* feat(04-01): create gsd-doc-verifier agent with claim extraction and filesystem verification
- YAML frontmatter with name, description, tools, and color fields
- claim_extraction section with 5 categories: file paths, commands, API endpoints, functions, dependencies
- skip_rules section for VERIFY markers, placeholders, example prefixes, and diff blocks
- verification_process with 6 steps using filesystem tools only (no self-consistency checks)
- output_format with exact JSON shape per D-01
- critical_rules enforcing filesystem-only verification and read-only operation
* feat(04-01): add fix_mode to gsd-doc-writer with surgical correction instructions
- Add fix_mode section after supplement_mode in modes block
- Document fix mode as valid option in role block mode list
- Add failures field to doc_assignment fields (fix mode only)
- fix_mode enforces surgical precision: only correct listed failing lines
- VERIFY marker fallback when correct value cannot be determined
* test(04-03): add docs-init integration test suite
- 13 tests across 4 describe blocks covering JSON output shape, project type
detection, existing doc scanning, GSD marker detection, and doc tooling
- Tests use node:test + node:assert/strict with beforeEach/afterEach lifecycle
- All 13 tests pass with `node --test tests/docs-update.test.cjs`
* feat(04-02): add verify_docs, fix_loop, scan_for_secrets steps to docs-update workflow
- verify_docs step spawns gsd-doc-verifier per generated doc and collects structured JSON results
- fix_loop step bounded at 2 iterations with regression detection (D-05/D-06)
- scan_for_secrets step uses exact map-codebase grep pattern before commit (D-07/D-08)
- verify_only_report updated to invoke real gsd-doc-verifier instead of VERIFY marker count stub
- success_criteria updated with 4 new verification gate checklist items
* docs(04-02): complete verification gate workflow steps plan
- SUMMARY.md: verify_docs, fix_loop, scan_for_secrets, and updated verify_only_report
- STATE.md: advanced to ready_for_verification, 100% progress, decisions logged
- ROADMAP.md: phase 4 marked Complete (3/3 plans with SUMMARYs)
- REQUIREMENTS.md: VERF-01, VERF-02, VERF-03 all marked complete
* refactor(profiles): Adds 'gsd-doc-verifier' to the 'MODEL_PROFILES'
* feat(agents): Add critical rules for file creation and update install test
* docs(05): create phase plan for docs output refinement
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(05-01): make scanExistingDocs recursive into docs/ subdirectories
- Replace flat docs/ scan with recursive walkDir helper (MAX_DEPTH=4)
- Add SKIP_DIRS filtering at every level of recursive walk
- Add fallback to documentation/ or doc/ when docs/ does not exist
- Update JSDoc to reflect recursive scanning behavior
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(05-01): update gsd-doc-writer default path guidance to docs/
- Change "No tooling detected" guidance to default to docs/ directory
- Add README.md and CONTRIBUTING.md as root-level exceptions
- Add instruction to create docs/ directory if it does not exist
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(05-02): invert path table to default docs to docs/ directory
- Invert resolve_modes path table: docs/ is primary for all types except readme and contributing
- Add mkdir -p docs/ instruction before agent dispatch
- Update all downstream path references: collect_wave_1, collect_wave_2, commit_docs, report, verify tables
- Update sequential_generation wave_1_outputs and resolved path references
- Update success criteria and verify_only_report examples to use docs/ paths
* feat(05-02): add CONTRIBUTING confirmation gate and existing doc review queue
- Add CONTRIBUTING.md user confirmation prompt in build_doc_queue (skipped with --force or when file exists)
- Add review_queue for non-canonical existing docs (verification only, not rewriting)
- Add review_queue verification in verify_docs step with fix_loop exclusion
- Add existing doc accuracy review section to report step with manual correction guidance
* docs(05-02): complete path table inversion and doc queue improvements plan
- Add 05-02-SUMMARY.md with execution results
- Update STATE.md with position, decisions, and metrics
- Update ROADMAP.md with phase 05 plan progress
* fix(05): replace plain text y/n prompts with AskUserQuestion in docs-update workflow
Three prompts were using plain text (y/n) instead of GSD's standard
AskUserQuestion pattern: CONTRIBUTING.md confirmation, doc queue
proceed gate, and secrets scan confirmation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(05): structure-aware paths, non-canonical doc fixes, and gap detection
- resolve_modes now inspects existing doc directory structure and places
new docs in matching subdirectories (e.g., docs/architecture/ if that
pattern exists), instead of dumping everything flat into docs/
- Non-canonical docs with inaccuracies are now sent to gsd-doc-writer
in fix mode for surgical corrections, not just reported
- Added documentation gap detection step that scans the codebase for
undocumented areas and prompts user to create missing docs
- Added type: custom support to gsd-doc-writer with template_custom
section for gap-detected documentation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(05): smarter structure-aware path resolution for grouped doc directories
When a project uses grouped subdirectories (docs/architecture/,
docs/api/, docs/guides/), ALL canonical docs must be placed in
appropriate groups — none left flat in docs/. Added resolution
chain per doc type with fallback creation. Filenames now match
existing naming style (lowercase-kebab vs UPPERCASE). Queue
presentation shows actual resolved paths, not defaults.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(05): restore mode resolution table as primary queue presentation
The table showing resolved paths, modes, and sources for each doc
must be displayed before the proceed/abort confirmation. It was
replaced by a simple list — now restored as the canonical queue view.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(05): use table format for existing docs review queue presentation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(05): add work manifest for structured handoffs between workflow steps
Root cause from smoke test: orchestrator forgot to verify 45 non-canonical
docs because the review_queue had no structural scaffolding — it existed
only in orchestrator memory. Fix:
1. Write docs-work-manifest.json to .planning/tmp/ after resolve_modes
with all canonical_queue, review_queue, and gap_queue items
2. Every subsequent step (dispatch, collect, verify, fix_loop, report)
MUST read the manifest first — single source of truth
3. Restructured verify_docs into explicit Phase 1 (canonical) and
Phase 2 (non-canonical) with separate dispatch for each
4. Both queues now eligible for fix_loop corrections
5. Added manifest read instructions to all dispatch/collect steps
Follows the same pattern as execute-phase's phase-plan-index for
tracking work items across multi-step orchestration.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs(05): update workflow purpose to reflect full command scope
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor(05): remove redundant steps from docs-update workflow
- Remove validate_agents step (if command is available, agents are installed)
- Remove agents_installed/missing_agents extraction from init_context
- Remove available_agent_types block (agent types specified in each Task call)
- Remove detect_runtime_capabilities step (runtime knows its own tools)
- Replace hardcoded flat paths in collect_wave_1/2 with manifest resolved_paths
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(05): restore available_agent_types section required by test suite
Test enforces that workflows spawning named agents must declare them
in an <available_agent_types> block. Added back with both gsd-doc-writer
and gsd-doc-verifier listed.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
GET SHIT DONE
English · Português · 简体中文 · 日本語 · 한국어
A light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code, OpenCode, Gemini CLI, Codex, Copilot, Cursor, Windsurf, and Antigravity.
Solves context rot — the quality degradation that happens as Claude fills its context window.
npx get-shit-done-cc@latest
Works on Mac, Windows, and Linux.
"If you know clearly what you want, this WILL build it for you. No bs."
"I've done SpecKit, OpenSpec and Taskmaster — this has produced the best results for me."
"By far the most powerful addition to my Claude Code. Nothing over-engineered. Literally just gets shit done."
Trusted by engineers at Amazon, Google, Shopify, and Webflow.
Why I Built This · How It Works · Commands · Why It Works · User Guide
Why I Built This
I'm a solo developer. I don't write code — Claude Code does.
Other spec-driven development tools exist; BMAD, Speckit... But they all seem to make things way more complicated than they need to be (sprint ceremonies, story points, stakeholder syncs, retrospectives, Jira workflows) or lack real big picture understanding of what you're building. I'm not a 50-person software company. I don't want to play enterprise theater. I'm just a creative person trying to build great things that work.
So I built GSD. The complexity is in the system, not in your workflow. Behind the scenes: context engineering, XML prompt formatting, subagent orchestration, state management. What you see: a few commands that just work.
The system gives Claude everything it needs to do the work and verify it. I trust the workflow. It just does a good job.
That's what this is. No enterprise roleplay bullshit. Just an incredibly effective system for building cool stuff consistently using Claude Code.
— TÂCHES
Vibecoding has a bad reputation. You describe what you want, AI generates code, and you get inconsistent garbage that falls apart at scale.
GSD fixes that. It's the context engineering layer that makes Claude Code reliable. Describe your idea, let the system extract everything it needs to know, and let Claude Code get to work.
Who This Is For
People who want to describe what they want and have it built correctly — without pretending they're running a 50-person engineering org.
Getting Started
npx get-shit-done-cc@latest
The installer prompts you to choose:
- Runtime — Claude Code, OpenCode, Gemini, Codex, Copilot, Cursor, Windsurf, Antigravity, or all (interactive multi-select — pick multiple runtimes in a single install session)
- Location — Global (all projects) or local (current project only)
Verify with:
- Claude Code / Gemini:
/gsd:help - OpenCode:
/gsd-help - Codex:
$gsd-help - Copilot:
/gsd:help - Antigravity:
/gsd:help
Note
Codex installation uses skills (
skills/gsd-*/SKILL.md) rather than custom prompts.
Staying Updated
GSD evolves fast. Update periodically:
npx get-shit-done-cc@latest
Non-interactive Install (Docker, CI, Scripts)
# Claude Code
npx get-shit-done-cc --claude --global # Install to ~/.claude/
npx get-shit-done-cc --claude --local # Install to ./.claude/
# OpenCode (open source, free models)
npx get-shit-done-cc --opencode --global # Install to ~/.config/opencode/
# Gemini CLI
npx get-shit-done-cc --gemini --global # Install to ~/.gemini/
# Codex (skills-first)
npx get-shit-done-cc --codex --global # Install to ~/.codex/
npx get-shit-done-cc --codex --local # Install to ./.codex/
# Copilot (GitHub Copilot CLI)
npx get-shit-done-cc --copilot --global # Install to ~/.github/
npx get-shit-done-cc --copilot --local # Install to ./.github/
# Cursor CLI
npx get-shit-done-cc --cursor --global # Install to ~/.cursor/
npx get-shit-done-cc --cursor --local # Install to ./.cursor/
# Windsurf (Codeium, VS Code-based)
npx get-shit-done-cc --windsurf --global # Install to ~/.windsurf/
npx get-shit-done-cc --windsurf --local # Install to ./.windsurf/
# Antigravity (Google, skills-first, Gemini-based)
npx get-shit-done-cc --antigravity --global # Install to ~/.gemini/antigravity/
npx get-shit-done-cc --antigravity --local # Install to ./.agent/
# All runtimes
npx get-shit-done-cc --all --global # Install to all directories
Use --global (-g) or --local (-l) to skip the location prompt.
Use --claude, --opencode, --gemini, --codex, --copilot, --cursor, --windsurf, --antigravity, or --all to skip the runtime prompt.
Use --sdk to also install the GSD SDK CLI (gsd-sdk) for headless autonomous execution.
Development Installation
Clone the repository and run the installer locally:
git clone https://github.com/gsd-build/get-shit-done.git
cd get-shit-done
node bin/install.js --claude --local
Installs to ./.claude/ for testing modifications before contributing.
Recommended: Skip Permissions Mode
GSD is designed for frictionless automation. Run Claude Code with:
claude --dangerously-skip-permissions
Tip
This is how GSD is intended to be used — stopping to approve
dateandgit commit50 times defeats the purpose.
Alternative: Granular Permissions
If you prefer not to use that flag, add this to your project's .claude/settings.json:
{
"permissions": {
"allow": [
"Bash(date:*)",
"Bash(echo:*)",
"Bash(cat:*)",
"Bash(ls:*)",
"Bash(mkdir:*)",
"Bash(wc:*)",
"Bash(head:*)",
"Bash(tail:*)",
"Bash(sort:*)",
"Bash(grep:*)",
"Bash(tr:*)",
"Bash(git add:*)",
"Bash(git commit:*)",
"Bash(git status:*)",
"Bash(git log:*)",
"Bash(git diff:*)",
"Bash(git tag:*)"
]
}
}
How It Works
Already have code? Run
/gsd:map-codebasefirst. It spawns parallel agents to analyze your stack, architecture, conventions, and concerns. Then/gsd:new-projectknows your codebase — questions focus on what you're adding, and planning automatically loads your patterns.
1. Initialize Project
/gsd:new-project
One command, one flow. The system:
- Questions — Asks until it understands your idea completely (goals, constraints, tech preferences, edge cases)
- Research — Spawns parallel agents to investigate the domain (optional but recommended)
- Requirements — Extracts what's v1, v2, and out of scope
- Roadmap — Creates phases mapped to requirements
You approve the roadmap. Now you're ready to build.
Creates: PROJECT.md, REQUIREMENTS.md, ROADMAP.md, STATE.md, .planning/research/
2. Discuss Phase
/gsd:discuss-phase 1
This is where you shape the implementation.
Your roadmap has a sentence or two per phase. That's not enough context to build something the way you imagine it. This step captures your preferences before anything gets researched or planned.
The system analyzes the phase and identifies gray areas based on what's being built:
- Visual features → Layout, density, interactions, empty states
- APIs/CLIs → Response format, flags, error handling, verbosity
- Content systems → Structure, tone, depth, flow
- Organization tasks → Grouping criteria, naming, duplicates, exceptions
For each area you select, it asks until you're satisfied. The output — CONTEXT.md — feeds directly into the next two steps:
- Researcher reads it — Knows what patterns to investigate ("user wants card layout" → research card component libraries)
- Planner reads it — Knows what decisions are locked ("infinite scroll decided" → plan includes scroll handling)
The deeper you go here, the more the system builds what you actually want. Skip it and you get reasonable defaults. Use it and you get your vision.
Creates: {phase_num}-CONTEXT.md
Assumptions Mode: Prefer codebase analysis over questions? Set
workflow.discuss_modetoassumptionsin/gsd:settings. The system reads your code, surfaces what it would do and why, and only asks you to correct what's wrong. See Discuss Mode.
3. Plan Phase
/gsd:plan-phase 1
The system:
- Researches — Investigates how to implement this phase, guided by your CONTEXT.md decisions
- Plans — Creates 2-3 atomic task plans with XML structure
- Verifies — Checks plans against requirements, loops until they pass
Each plan is small enough to execute in a fresh context window. No degradation, no "I'll be more concise now."
Creates: {phase_num}-RESEARCH.md, {phase_num}-{N}-PLAN.md
4. Execute Phase
/gsd:execute-phase 1
The system:
- Runs plans in waves — Parallel where possible, sequential when dependent
- Fresh context per plan — 200k tokens purely for implementation, zero accumulated garbage
- Commits per task — Every task gets its own atomic commit
- Verifies against goals — Checks the codebase delivers what the phase promised
Walk away, come back to completed work with clean git history.
How Wave Execution Works:
Plans are grouped into "waves" based on dependencies. Within each wave, plans run in parallel. Waves run sequentially.
┌────────────────────────────────────────────────────────────────────┐
│ PHASE EXECUTION │
├────────────────────────────────────────────────────────────────────┤
│ │
│ WAVE 1 (parallel) WAVE 2 (parallel) WAVE 3 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Plan 01 │ │ Plan 02 │ → │ Plan 03 │ │ Plan 04 │ → │ Plan 05 │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ User │ │ Product │ │ Orders │ │ Cart │ │ Checkout│ │
│ │ Model │ │ Model │ │ API │ │ API │ │ UI │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ │ │ ↑ ↑ ↑ │
│ └───────────┴──────────────┴───────────┘ │ │
│ Dependencies: Plan 03 needs Plan 01 │ │
│ Plan 04 needs Plan 02 │ │
│ Plan 05 needs Plans 03 + 04 │ │
│ │
└────────────────────────────────────────────────────────────────────┘
Why waves matter:
- Independent plans → Same wave → Run in parallel
- Dependent plans → Later wave → Wait for dependencies
- File conflicts → Sequential plans or same plan
This is why "vertical slices" (Plan 01: User feature end-to-end) parallelize better than "horizontal layers" (Plan 01: All models, Plan 02: All APIs).
Creates: {phase_num}-{N}-SUMMARY.md, {phase_num}-VERIFICATION.md
5. Verify Work
/gsd:verify-work 1
This is where you confirm it actually works.
Automated verification checks that code exists and tests pass. But does the feature work the way you expected? This is your chance to use it.
The system:
- Extracts testable deliverables — What you should be able to do now
- Walks you through one at a time — "Can you log in with email?" Yes/no, or describe what's wrong
- Diagnoses failures automatically — Spawns debug agents to find root causes
- Creates verified fix plans — Ready for immediate re-execution
If everything passes, you move on. If something's broken, you don't manually debug — you just run /gsd:execute-phase again with the fix plans it created.
Creates: {phase_num}-UAT.md, fix plans if issues found
6. Repeat → Ship → Complete → Next Milestone
/gsd:discuss-phase 2
/gsd:plan-phase 2
/gsd:execute-phase 2
/gsd:verify-work 2
/gsd:ship 2 # Create PR from verified work
...
/gsd:complete-milestone
/gsd:new-milestone
Or let GSD figure out the next step automatically:
/gsd:next # Auto-detect and run next step
Loop discuss → plan → execute → verify → ship until milestone complete.
If you want faster intake during discussion, use /gsd:discuss-phase <n> --batch to answer a small grouped set of questions at once instead of one-by-one.
Each phase gets your input (discuss), proper research (plan), clean execution (execute), and human verification (verify). Context stays fresh. Quality stays high.
When all phases are done, /gsd:complete-milestone archives the milestone and tags the release.
Then /gsd:new-milestone starts the next version — same flow as new-project but for your existing codebase. You describe what you want to build next, the system researches the domain, you scope requirements, and it creates a fresh roadmap. Each milestone is a clean cycle: define → build → ship.
Quick Mode
/gsd:quick
For ad-hoc tasks that don't need full planning.
Quick mode gives you GSD guarantees (atomic commits, state tracking) with a faster path:
- Same agents — Planner + executor, same quality
- Skips optional steps — No research, no plan checker, no verifier by default
- Separate tracking — Lives in
.planning/quick/, not phases
--discuss flag: Lightweight discussion to surface gray areas before planning.
--research flag: Spawns a focused researcher before planning. Investigates implementation approaches, library options, and pitfalls. Use when you're unsure how to approach a task.
--full flag: Enables plan-checking (max 2 iterations) and post-execution verification.
Flags are composable: --discuss --research --full gives discussion + research + plan-checking + verification.
/gsd:quick
> What do you want to do? "Add dark mode toggle to settings"
Creates: .planning/quick/001-add-dark-mode-toggle/PLAN.md, SUMMARY.md
Why It Works
Context Engineering
Claude Code is incredibly powerful if you give it the context it needs. Most people don't.
GSD handles it for you:
| File | What it does |
|---|---|
PROJECT.md |
Project vision, always loaded |
research/ |
Ecosystem knowledge (stack, features, architecture, pitfalls) |
REQUIREMENTS.md |
Scoped v1/v2 requirements with phase traceability |
ROADMAP.md |
Where you're going, what's done |
STATE.md |
Decisions, blockers, position — memory across sessions |
PLAN.md |
Atomic task with XML structure, verification steps |
SUMMARY.md |
What happened, what changed, committed to history |
todos/ |
Captured ideas and tasks for later work |
threads/ |
Persistent context threads for cross-session work |
seeds/ |
Forward-looking ideas that surface at the right milestone |
Size limits based on where Claude's quality degrades. Stay under, get consistent excellence.
XML Prompt Formatting
Every plan is structured XML optimized for Claude:
<task type="auto">
<name>Create login endpoint</name>
<files>src/app/api/auth/login/route.ts</files>
<action>
Use jose for JWT (not jsonwebtoken - CommonJS issues).
Validate credentials against users table.
Return httpOnly cookie on success.
</action>
<verify>curl -X POST localhost:3000/api/auth/login returns 200 + Set-Cookie</verify>
<done>Valid credentials return cookie, invalid return 401</done>
</task>
Precise instructions. No guessing. Verification built in.
Multi-Agent Orchestration
Every stage uses the same pattern: a thin orchestrator spawns specialized agents, collects results, and routes to the next step.
| Stage | Orchestrator does | Agents do |
|---|---|---|
| Research | Coordinates, presents findings | 4 parallel researchers investigate stack, features, architecture, pitfalls |
| Planning | Validates, manages iteration | Planner creates plans, checker verifies, loop until pass |
| Execution | Groups into waves, tracks progress | Executors implement in parallel, each with fresh 200k context |
| Verification | Presents results, routes next | Verifier checks codebase against goals, debuggers diagnose failures |
The orchestrator never does heavy lifting. It spawns agents, waits, integrates results.
The result: You can run an entire phase — deep research, multiple plans created and verified, thousands of lines of code written across parallel executors, automated verification against goals — and your main context window stays at 30-40%. The work happens in fresh subagent contexts. Your session stays fast and responsive.
Atomic Git Commits
Each task gets its own commit immediately after completion:
abc123f docs(08-02): complete user registration plan
def456g feat(08-02): add email confirmation flow
hij789k feat(08-02): implement password hashing
lmn012o feat(08-02): create registration endpoint
Note
Benefits: Git bisect finds exact failing task. Each task independently revertable. Clear history for Claude in future sessions. Better observability in AI-automated workflow.
Every commit is surgical, traceable, and meaningful.
Modular by Design
- Add phases to current milestone
- Insert urgent work between phases
- Complete milestones and start fresh
- Adjust plans without rebuilding everything
You're never locked in. The system adapts.
Commands
Core Workflow
| Command | What it does |
|---|---|
/gsd:new-project [--auto] |
Full initialization: questions → research → requirements → roadmap |
/gsd:discuss-phase [N] [--auto] [--analyze] |
Capture implementation decisions before planning (--analyze adds trade-off analysis) |
/gsd:plan-phase [N] [--auto] [--reviews] |
Research + plan + verify for a phase (--reviews loads codebase review findings) |
/gsd:execute-phase <N> |
Execute all plans in parallel waves, verify when complete |
/gsd:verify-work [N] |
Manual user acceptance testing ¹ |
/gsd:ship [N] [--draft] |
Create PR from verified phase work with auto-generated body |
/gsd:next |
Automatically advance to the next logical workflow step |
/gsd:fast <text> |
Inline trivial tasks — skips planning entirely, executes immediately |
/gsd:audit-milestone |
Verify milestone achieved its definition of done |
/gsd:complete-milestone |
Archive milestone, tag release |
/gsd:new-milestone [name] |
Start next version: questions → research → requirements → roadmap |
/gsd:forensics [desc] |
Post-mortem investigation of failed workflow runs (diagnoses stuck loops, missing artifacts, git anomalies) |
/gsd:milestone-summary [version] |
Generate comprehensive project summary for team onboarding and review |
Workstreams
| Command | What it does |
|---|---|
/gsd:workstreams list |
Show all workstreams and their status |
/gsd:workstreams create <name> |
Create a namespaced workstream for parallel milestone work |
/gsd:workstreams switch <name> |
Switch active workstream |
/gsd:workstreams complete <name> |
Complete and merge a workstream |
Multi-Project Workspaces
| Command | What it does |
|---|---|
/gsd:new-workspace |
Create isolated workspace with repo copies (worktrees or clones) |
/gsd:list-workspaces |
Show all GSD workspaces and their status |
/gsd:remove-workspace |
Remove workspace and clean up worktrees |
UI Design
| Command | What it does |
|---|---|
/gsd:ui-phase [N] |
Generate UI design contract (UI-SPEC.md) for frontend phases |
/gsd:ui-review [N] |
Retroactive 6-pillar visual audit of implemented frontend code |
Navigation
| Command | What it does |
|---|---|
/gsd:progress |
Where am I? What's next? |
/gsd:next |
Auto-detect state and run the next step |
/gsd:help |
Show all commands and usage guide |
/gsd:update |
Update GSD with changelog preview |
/gsd:join-discord |
Join the GSD Discord community |
/gsd:manager |
Interactive command center for managing multiple phases |
Brownfield
| Command | What it does |
|---|---|
/gsd:map-codebase [area] |
Analyze existing codebase before new-project |
Phase Management
| Command | What it does |
|---|---|
/gsd:add-phase |
Append phase to roadmap |
/gsd:insert-phase [N] |
Insert urgent work between phases |
/gsd:remove-phase [N] |
Remove future phase, renumber |
/gsd:list-phase-assumptions [N] |
See Claude's intended approach before planning |
/gsd:plan-milestone-gaps |
Create phases to close gaps from audit |
Session
| Command | What it does |
|---|---|
/gsd:pause-work |
Create handoff when stopping mid-phase (writes HANDOFF.json) |
/gsd:resume-work |
Restore from last session |
/gsd:session-report |
Generate session summary with work performed and outcomes |
Workstreams
| Command | What it does |
|---|---|
/gsd:workstreams |
Manage parallel workstreams (list, create, switch, status, progress, complete) |
Code Quality
| Command | What it does |
|---|---|
/gsd:review |
Cross-AI peer review of current phase or branch |
/gsd:pr-branch |
Create clean PR branch filtering .planning/ commits |
/gsd:audit-uat |
Audit verification debt — find phases missing UAT |
Backlog & Threads
| Command | What it does |
|---|---|
/gsd:plant-seed <idea> |
Capture forward-looking ideas with trigger conditions — surfaces at the right milestone |
/gsd:add-backlog <desc> |
Add idea to backlog parking lot (999.x numbering, outside active sequence) |
/gsd:review-backlog |
Review and promote backlog items to active milestone or remove stale entries |
/gsd:thread [name] |
Persistent context threads — lightweight cross-session knowledge for work spanning multiple sessions |
Utilities
| Command | What it does |
|---|---|
/gsd:settings |
Configure model profile and workflow agents |
/gsd:set-profile <profile> |
Switch model profile (quality/balanced/budget/inherit) |
/gsd:add-todo [desc] |
Capture idea for later |
/gsd:check-todos |
List pending todos |
/gsd:debug [desc] |
Systematic debugging with persistent state |
/gsd:do <text> |
Route freeform text to the right GSD command automatically |
/gsd:note <text> |
Zero-friction idea capture — append, list, or promote notes to todos |
/gsd:quick [--full] [--discuss] [--research] |
Execute ad-hoc task with GSD guarantees (--full adds plan-checking and verification, --discuss gathers context first, --research investigates approaches before planning) |
/gsd:health [--repair] |
Validate .planning/ directory integrity, auto-repair with --repair |
/gsd:stats |
Display project statistics — phases, plans, requirements, git metrics |
/gsd:profile-user [--questionnaire] [--refresh] |
Generate developer behavioral profile from session analysis for personalized responses |
¹ Contributed by reddit user OracleGreyBeard
Configuration
GSD stores project settings in .planning/config.json. Configure during /gsd:new-project or update later with /gsd:settings. For the full config schema, workflow toggles, git branching options, and per-agent model breakdown, see the User Guide.
Core Settings
| Setting | Options | Default | What it controls |
|---|---|---|---|
mode |
yolo, interactive |
interactive |
Auto-approve vs confirm at each step |
granularity |
coarse, standard, fine |
standard |
Phase granularity — how finely scope is sliced (phases × plans) |
Model Profiles
Control which Claude model each agent uses. Balance quality vs token spend.
| Profile | Planning | Execution | Verification |
|---|---|---|---|
quality |
Opus | Opus | Sonnet |
balanced (default) |
Opus | Sonnet | Sonnet |
budget |
Sonnet | Sonnet | Haiku |
inherit |
Inherit | Inherit | Inherit |
Switch profiles:
/gsd:set-profile budget
Use inherit when using non-Anthropic providers (OpenRouter, local models) or to follow the current runtime model selection (e.g. OpenCode /model).
Or configure via /gsd:settings.
Workflow Agents
These spawn additional agents during planning/execution. They improve quality but add tokens and time.
| Setting | Default | What it does |
|---|---|---|
workflow.research |
true |
Researches domain before planning each phase |
workflow.plan_check |
true |
Verifies plans achieve phase goals before execution |
workflow.verifier |
true |
Confirms must-haves were delivered after execution |
workflow.auto_advance |
false |
Auto-chain discuss → plan → execute without stopping |
workflow.research_before_questions |
false |
Run research before discussion questions instead of after |
workflow.discuss_mode |
'discuss' |
Discussion mode: discuss (interview), assumptions (codebase-first) |
workflow.skip_discuss |
false |
Skip discuss-phase in autonomous mode |
workflow.text_mode |
false |
Text-only mode for remote sessions (no TUI menus) |
Use /gsd:settings to toggle these, or override per-invocation:
/gsd:plan-phase --skip-research/gsd:plan-phase --skip-verify
Execution
| Setting | Default | What it controls |
|---|---|---|
parallelization.enabled |
true |
Run independent plans simultaneously |
planning.commit_docs |
true |
Track .planning/ in git |
hooks.context_warnings |
true |
Show context window usage warnings |
Agent Skills
Inject project-specific skills into subagents during execution.
| Setting | Type | What it does |
|---|---|---|
agent_skills.<agent_type> |
string[] |
Paths to skill directories loaded into that agent type at spawn time |
Skills are injected as <agent_skills> blocks in agent prompts, giving subagents access to project-specific knowledge.
Git Branching
Control how GSD handles branches during execution.
| Setting | Options | Default | What it does |
|---|---|---|---|
git.branching_strategy |
none, phase, milestone |
none |
Branch creation strategy |
git.phase_branch_template |
string | gsd/phase-{phase}-{slug} |
Template for phase branches |
git.milestone_branch_template |
string | gsd/{milestone}-{slug} |
Template for milestone branches |
Strategies:
none— Commits to current branch (default GSD behavior)phase— Creates a branch per phase, merges at phase completionmilestone— Creates one branch for entire milestone, merges at completion
At milestone completion, GSD offers squash merge (recommended) or merge with history.
Security
Built-in Security Hardening
GSD includes defense-in-depth security since v1.27:
- Path traversal prevention — All user-supplied file paths (
--text-file,--prd) are validated to resolve within the project directory - Prompt injection detection — Centralized
security.cjsmodule scans for injection patterns in user-supplied text before it enters planning artifacts - PreToolUse prompt guard hook —
gsd-prompt-guardscans writes to.planning/for embedded injection vectors (advisory, not blocking) - Safe JSON parsing — Malformed
--fieldsarguments are caught before they corrupt state - Shell argument validation — User text is sanitized before shell interpolation
- CI-ready injection scanner —
prompt-injection-scan.test.cjsscans all agent/workflow/command files for embedded injection vectors
Note
Because GSD generates markdown files that become LLM system prompts, any user-controlled text flowing into planning artifacts is a potential indirect prompt injection vector. These protections are designed to catch such vectors at multiple layers.
Protecting Sensitive Files
GSD's codebase mapping and analysis commands read files to understand your project. Protect files containing secrets by adding them to Claude Code's deny list:
- Open Claude Code settings (
.claude/settings.jsonor global) - Add sensitive file patterns to the deny list:
{
"permissions": {
"deny": [
"Read(.env)",
"Read(.env.*)",
"Read(**/secrets/*)",
"Read(**/*credential*)",
"Read(**/*.pem)",
"Read(**/*.key)"
]
}
}
This prevents Claude from reading these files entirely, regardless of what commands you run.
Important
GSD includes built-in protections against committing secrets, but defense-in-depth is best practice. Deny read access to sensitive files as a first line of defense.
Troubleshooting
Commands not found after install?
- Restart your runtime to reload commands/skills
- Verify files exist in
~/.claude/commands/gsd/(global) or./.claude/commands/gsd/(local) - For Codex, verify skills exist in
~/.codex/skills/gsd-*/SKILL.md(global) or./.codex/skills/gsd-*/SKILL.md(local)
Commands not working as expected?
- Run
/gsd:helpto verify installation - Re-run
npx get-shit-done-ccto reinstall
Updating to the latest version?
npx get-shit-done-cc@latest
Using Docker or containerized environments?
If file reads fail with tilde paths (~/.claude/...), set CLAUDE_CONFIG_DIR before installing:
CLAUDE_CONFIG_DIR=/home/youruser/.claude npx get-shit-done-cc --global
This ensures absolute paths are used instead of ~ which may not expand correctly in containers.
Uninstalling
To remove GSD completely:
# Global installs
npx get-shit-done-cc --claude --global --uninstall
npx get-shit-done-cc --opencode --global --uninstall
npx get-shit-done-cc --gemini --global --uninstall
npx get-shit-done-cc --codex --global --uninstall
npx get-shit-done-cc --copilot --global --uninstall
npx get-shit-done-cc --cursor --global --uninstall
npx get-shit-done-cc --windsurf --global --uninstall
npx get-shit-done-cc --antigravity --global --uninstall
# Local installs (current project)
npx get-shit-done-cc --claude --local --uninstall
npx get-shit-done-cc --opencode --local --uninstall
npx get-shit-done-cc --gemini --local --uninstall
npx get-shit-done-cc --codex --local --uninstall
npx get-shit-done-cc --copilot --local --uninstall
npx get-shit-done-cc --cursor --local --uninstall
npx get-shit-done-cc --windsurf --local --uninstall
npx get-shit-done-cc --antigravity --local --uninstall
This removes all GSD commands, agents, hooks, and settings while preserving your other configurations.
Community Ports
OpenCode, Gemini CLI, and Codex are now natively supported via npx get-shit-done-cc.
These community ports pioneered multi-runtime support:
| Project | Platform | Description |
|---|---|---|
| gsd-opencode | OpenCode | Original OpenCode adaptation |
| gsd-gemini (archived) | Gemini CLI | Original Gemini adaptation by uberfuzzy |
Star History
License
MIT License. See LICENSE for details.
Claude Code is powerful. GSD makes it reliable.