--- description: Initialize a new project with deep context gathering and PROJECT.md allowed-tools: - Read - Bash - Write - AskUserQuestion --- Initialize a new project through comprehensive context gathering. This is the most leveraged moment in any project. Deep questioning here means better plans, better execution, better outcomes. Creates `.planning/` with PROJECT.md and config.json. @~/.claude/get-shit-done/references/principles.md @~/.claude/get-shit-done/references/questioning.md @~/.claude/get-shit-done/templates/project.md @~/.claude/get-shit-done/templates/config.json !`[ -d .planning ] && echo "PLANNING_EXISTS" || echo "NO_PLANNING"` **MANDATORY FIRST STEP — Execute these checks before ANY user interaction:** 1. **Abort if project exists:** ```bash [ -d .planning ] && echo "ERROR: Project already initialized. Use /gsd:progress" && exit 1 ``` 2. **Initialize git repo in THIS directory** (required even if inside a parent repo): ```bash # Check if THIS directory is already a git repo root (handles .git file for worktrees too) if [ -d .git ] || [ -f .git ]; then echo "Git repo exists in current directory" else git init echo "Initialized new git repo" fi ``` **You MUST run both bash commands above using the Bash tool before proceeding.** **CRITICAL: ALL questions use AskUserQuestion. Never ask inline text questions.** **1. Open:** Use AskUserQuestion: - header: "Vision" - question: "What do you want to build?" - options: Contextual options if you have any hints, otherwise ["New app/tool", "Feature for existing project", "Let me describe it"] **2. Follow the thread:** Based on their response, use AskUserQuestion with options that probe what they mentioned: - header: "[Topic they mentioned]" - question: "You mentioned [X] — what would that look like?" - options: 2-3 interpretations + "Something else" **3. Sharpen the core:** Use AskUserQuestion: - header: "Core" - question: "If you could only nail one thing, what would it be?" - options: Key aspects they've mentioned + "All equally important" + "Something else" **4. Find boundaries:** Use AskUserQuestion: - header: "Scope" - question: "What's explicitly NOT in v1?" - options: Things that might be tempting + "Nothing specific" + "Let me list them" **5. Ground in reality:** Use AskUserQuestion: - header: "Constraints" - question: "Any hard constraints?" - options: Relevant constraint types + "None" + "Yes, let me explain" **6. Decision gate:** Use AskUserQuestion: - header: "Ready?" - question: "Ready to create PROJECT.md, or explore more?" - options (ALL THREE REQUIRED): - "Create PROJECT.md" - Finalize and continue - "Ask more questions" - I'll dig deeper - "Let me add context" - You have more to share If "Ask more questions" → check coverage gaps from `questioning.md` → return to step 2. If "Let me add context" → receive input via their response → return to step 2. Loop until "Create PROJECT.md" selected. Synthesize all context into `.planning/PROJECT.md` using the template from `templates/project.md`. Do not compress. Capture everything gathered. Ask workflow mode preference: Use AskUserQuestion: - header: "Mode" - question: "How do you want to work?" - options: - "Interactive" - Confirm at each step - "YOLO" - Auto-approve, just execute Create `.planning/config.json` with chosen mode using `templates/config.json` structure. ```bash git add .planning/PROJECT.md .planning/config.json git commit -m "$(cat <<'EOF' docs: initialize [project-name] [One-liner from PROJECT.md] Creates PROJECT.md with vision and requirements. EOF )" ``` Present completion inline (not as a question): ``` Project initialized: - Project: .planning/PROJECT.md - Config: .planning/config.json (mode: [chosen mode]) ## To Continue Run `/clear`, then paste one of: **For niche/complex domains (recommended):** ``` /gsd:research-project ``` **To skip research and go straight to planning:** ``` /gsd:create-roadmap ``` ``` - `.planning/PROJECT.md` - `.planning/config.json` - [ ] Deep questioning completed (not rushed) - [ ] PROJECT.md captures full context - [ ] config.json has workflow mode - [ ] All committed to git ```