Initial commit
This commit is contained in:
335
commands/plan-project.md
Normal file
335
commands/plan-project.md
Normal file
@@ -0,0 +1,335 @@
|
||||
# Plan Project
|
||||
|
||||
Automate initial project planning: gather requirements, generate planning docs, create SESSION.md, and prepare for Phase 1.
|
||||
|
||||
---
|
||||
|
||||
## Your Task
|
||||
|
||||
Follow these steps to take a project from description to ready-to-code state.
|
||||
|
||||
### 0. Check for PROJECT_BRIEF.md (Optional)
|
||||
|
||||
**If PROJECT_BRIEF.md exists** in project root or planning/ directory:
|
||||
|
||||
```bash
|
||||
ls PROJECT_BRIEF.md planning/PROJECT_BRIEF.md 2>/dev/null
|
||||
```
|
||||
|
||||
**If found:**
|
||||
- Read PROJECT_BRIEF.md first
|
||||
- Extract validated scope, tech stack, and constraints
|
||||
- Use as context for project-planning skill invocation
|
||||
- Skip redundant questions (tech stack and scope decisions already validated in brief)
|
||||
|
||||
**Note**: PROJECT_BRIEF.md is created by the `/explore-idea` command during pre-planning exploration. It contains research findings and validated decisions that streamline the planning process.
|
||||
|
||||
**If not found:**
|
||||
- Continue normally to step 1
|
||||
- project-planning skill will handle all requirements gathering
|
||||
|
||||
### 1. Invoke project-planning Skill
|
||||
|
||||
**If project description is vague or incomplete**, ask 1-2 clarifying questions first:
|
||||
- "What's the core functionality? (e.g., task manager, blog, analytics dashboard)"
|
||||
- "Any specific tech requirements beyond the default stack?"
|
||||
|
||||
**Then invoke the project-planning skill** with the project description:
|
||||
- The skill will handle all clarifying questions (auth, data model, features, scope)
|
||||
- The skill will generate appropriate planning docs (IMPLEMENTATION_PHASES.md + others as needed)
|
||||
- Wait for skill to complete and output planning docs
|
||||
|
||||
**Note**: Do NOT ask the same questions the skill will ask. Let the skill handle requirements gathering.
|
||||
|
||||
### 2. Verify Planning Docs Exist
|
||||
|
||||
Check that these files were created:
|
||||
- `docs/IMPLEMENTATION_PHASES.md` (required)
|
||||
- Other docs as generated (DATABASE_SCHEMA.md, API_ENDPOINTS.md, etc.)
|
||||
|
||||
Run:
|
||||
```bash
|
||||
ls docs/IMPLEMENTATION_PHASES.md
|
||||
```
|
||||
|
||||
**If IMPLEMENTATION_PHASES.md doesn't exist:**
|
||||
- Output: "❌ Planning failed. IMPLEMENTATION_PHASES.md not found."
|
||||
- Output: "The project-planning skill should have created this file. Try running the skill manually."
|
||||
- Stop here
|
||||
|
||||
### 3. Create SESSION.md
|
||||
|
||||
**Read IMPLEMENTATION_PHASES.md** to extract phases:
|
||||
```bash
|
||||
# Extract project name, phase count, and phase details
|
||||
```
|
||||
|
||||
**Create SESSION.md** in project root using this template:
|
||||
|
||||
```markdown
|
||||
# Session State
|
||||
|
||||
**Current Phase**: Phase 1
|
||||
**Current Stage**: Implementation
|
||||
**Last Checkpoint**: [none yet] ([date])
|
||||
**Planning Docs**: `docs/IMPLEMENTATION_PHASES.md`[, `docs/DATABASE_SCHEMA.md`][, other docs...]
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: [Phase Name] 🔄
|
||||
**Type**: [Type] | **Started**: [date]
|
||||
**Spec**: `docs/IMPLEMENTATION_PHASES.md#phase-1`
|
||||
|
||||
**Progress**:
|
||||
- [ ] [First task from IMPLEMENTATION_PHASES.md]
|
||||
- [ ] [Second task]
|
||||
- [ ] [Third task]
|
||||
|
||||
**Next Action**: [Concrete first action from phase tasks]
|
||||
|
||||
**Key Files**:
|
||||
- [List key files from phase]
|
||||
|
||||
**Known Issues**: None
|
||||
|
||||
## Phase 2: [Phase Name] ⏸️
|
||||
**Spec**: `docs/IMPLEMENTATION_PHASES.md#phase-2`
|
||||
|
||||
## Phase 3: [Phase Name] ⏸️
|
||||
**Spec**: `docs/IMPLEMENTATION_PHASES.md#phase-3`
|
||||
|
||||
[... list all remaining phases with ⏸️ status ...]
|
||||
```
|
||||
|
||||
**Verify SESSION.md created:**
|
||||
```bash
|
||||
ls SESSION.md
|
||||
```
|
||||
|
||||
### 4. Create Initial Git Commit (If Not Already Committed)
|
||||
|
||||
**Check if planning docs are committed:**
|
||||
```bash
|
||||
git status --short docs/ SESSION.md
|
||||
```
|
||||
|
||||
**If uncommitted planning docs exist:**
|
||||
|
||||
Stage all planning docs:
|
||||
```bash
|
||||
git add docs/ SESSION.md
|
||||
```
|
||||
|
||||
Check if this is initial commit:
|
||||
```bash
|
||||
git log --oneline | wc -l
|
||||
```
|
||||
|
||||
**Create structured commit:**
|
||||
|
||||
Extract from IMPLEMENTATION_PHASES.md:
|
||||
- Total number of phases
|
||||
- Estimated total hours
|
||||
- Phase names
|
||||
|
||||
**If this is first commit** (count = 0):
|
||||
```bash
|
||||
git commit -m "$(cat <<'EOF'
|
||||
Initial project planning
|
||||
|
||||
Generated planning documentation:
|
||||
- IMPLEMENTATION_PHASES.md ([N] phases, ~[X] hours)
|
||||
[- DATABASE_SCHEMA.md]
|
||||
[- API_ENDPOINTS.md]
|
||||
[- ARCHITECTURE.md]
|
||||
[- other docs...]
|
||||
- SESSION.md (session tracking)
|
||||
|
||||
Next: Start Phase 1 - [Phase 1 Name]
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||
|
||||
Co-Authored-By: Claude <noreply@anthropic.com>
|
||||
EOF
|
||||
)"
|
||||
```
|
||||
|
||||
**If not first commit**:
|
||||
```bash
|
||||
git commit -m "$(cat <<'EOF'
|
||||
Add project planning documentation
|
||||
|
||||
Generated planning docs:
|
||||
- IMPLEMENTATION_PHASES.md ([N] phases, ~[X] hours)
|
||||
[- DATABASE_SCHEMA.md]
|
||||
[- API_ENDPOINTS.md]
|
||||
[- other docs...]
|
||||
- SESSION.md (session tracking)
|
||||
|
||||
Next: Start Phase 1 - [Phase 1 Name]
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||
|
||||
Co-Authored-By: Claude <noreply@anthropic.com>
|
||||
EOF
|
||||
)"
|
||||
```
|
||||
|
||||
**If no changes to commit:**
|
||||
- Output: "ℹ️ Planning docs already committed."
|
||||
- Skip to step 5
|
||||
|
||||
### 5. Output Planning Summary
|
||||
|
||||
Display a formatted summary of what was created:
|
||||
|
||||
```
|
||||
═══════════════════════════════════════════════
|
||||
PROJECT PLANNING COMPLETE
|
||||
═══════════════════════════════════════════════
|
||||
|
||||
📋 Project: [Project Name from IMPLEMENTATION_PHASES.md]
|
||||
📦 Stack: [Frontend + Backend + Database from docs]
|
||||
⏱️ Estimated: [Total hours] (~[human minutes] human time)
|
||||
|
||||
───────────────────────────────────────────────
|
||||
PLANNING DOCS CREATED:
|
||||
───────────────────────────────────────────────
|
||||
|
||||
✅ IMPLEMENTATION_PHASES.md ([N] phases)
|
||||
✅ SESSION.md (progress tracker)
|
||||
[✅ DATABASE_SCHEMA.md] (if created)
|
||||
[✅ API_ENDPOINTS.md] (if created)
|
||||
[✅ ARCHITECTURE.md] (if created)
|
||||
[... other docs if created ...]
|
||||
|
||||
───────────────────────────────────────────────
|
||||
PHASES OVERVIEW:
|
||||
───────────────────────────────────────────────
|
||||
|
||||
Phase 1: [Name] ([Type], [X] hours) 🔄 ← CURRENT
|
||||
Phase 2: [Name] ([Type], [X] hours) ⏸️
|
||||
Phase 3: [Name] ([Type], [X] hours) ⏸️
|
||||
[... list all phases with emoji status ...]
|
||||
|
||||
───────────────────────────────────────────────
|
||||
NEXT ACTION (Phase 1):
|
||||
───────────────────────────────────────────────
|
||||
|
||||
[Concrete next action from SESSION.md]
|
||||
File: [file path if applicable]
|
||||
Task: [specific action to take]
|
||||
|
||||
───────────────────────────────────────────────
|
||||
KEY FILES TO KNOW:
|
||||
───────────────────────────────────────────────
|
||||
|
||||
• SESSION.md - Track progress, current state
|
||||
• docs/IMPLEMENTATION_PHASES.md - Full phase details
|
||||
[• docs/[other docs]] (if applicable)
|
||||
|
||||
═══════════════════════════════════════════════
|
||||
```
|
||||
|
||||
### 6. Ask Permission to Start Phase 1
|
||||
|
||||
Ask user:
|
||||
```
|
||||
Ready to start Phase 1: [Phase Name]?
|
||||
|
||||
Options:
|
||||
1. Yes - proceed with Phase 1 Next Action
|
||||
2. Review first - I want to review planning docs
|
||||
3. Adjust - I want to refine some phases
|
||||
|
||||
Your choice (1/2/3):
|
||||
```
|
||||
|
||||
**If choice 1 (Yes):**
|
||||
- Output: "Starting Phase 1: [Phase Name]"
|
||||
- Read Next Action from SESSION.md
|
||||
- Begin executing the Next Action
|
||||
- Use appropriate tools (Write, Edit, Bash, etc.)
|
||||
|
||||
**If choice 2 (Review first):**
|
||||
- Output: "Planning docs are in docs/ directory. Review and let me know when ready to start."
|
||||
- Wait for user instructions
|
||||
|
||||
**If choice 3 (Adjust):**
|
||||
- Output: "What would you like to adjust?"
|
||||
- Wait for user feedback
|
||||
- Offer to regenerate planning docs or manually edit
|
||||
|
||||
### 7. Optional: Push to Remote
|
||||
|
||||
After user starts Phase 1 or reviews docs, ask:
|
||||
```
|
||||
Push planning docs to remote? (y/n)
|
||||
```
|
||||
|
||||
**If yes:**
|
||||
```bash
|
||||
git push
|
||||
```
|
||||
|
||||
**If push succeeds:**
|
||||
- Output: "✅ Planning docs pushed to remote"
|
||||
|
||||
**If push fails:**
|
||||
- Output: "❌ Push failed. Run `git push` manually when ready."
|
||||
|
||||
---
|
||||
|
||||
## Error Handling
|
||||
|
||||
**project-planning skill invocation fails:**
|
||||
- Output: "❌ Failed to invoke project-planning skill"
|
||||
- Output: "Try running: Use the project-planning skill to plan this project"
|
||||
- Stop
|
||||
|
||||
**IMPLEMENTATION_PHASES.md not created:**
|
||||
- Output: "❌ Planning docs not found"
|
||||
- Suggest: "project-planning skill should have created them. Check for errors."
|
||||
- Stop
|
||||
|
||||
**SESSION.md creation fails:**
|
||||
- Output: "⚠️ SESSION.md creation failed: [error]"
|
||||
- Output: "You can create it manually or try again."
|
||||
- Stop
|
||||
|
||||
**Git commit fails:**
|
||||
- Output: "⚠️ Git commit failed: [error message]"
|
||||
- Output: "Fix git issue and commit manually, or continue without commit."
|
||||
- Ask: "Continue without commit? (y/n)"
|
||||
|
||||
**Git push fails:**
|
||||
- Output: "⚠️ Push failed: [error message]"
|
||||
- Output: "You can run `git push` manually later."
|
||||
- Continue (not critical)
|
||||
|
||||
**No git repository:**
|
||||
- Output: "⚠️ Not a git repository. Initialize with `git init`? (y/n)"
|
||||
- If yes: Run `git init && git add . && git commit -m "Initial commit"`
|
||||
- If no: Continue without git
|
||||
|
||||
**Project description too vague:**
|
||||
- Output: "❌ Project description unclear"
|
||||
- Ask 1-2 clarifying questions before invoking skill:
|
||||
- "What's the core functionality?"
|
||||
- "Any specific tech requirements?"
|
||||
|
||||
**IMPLEMENTATION_PHASES.md exists but empty:**
|
||||
- Output: "❌ IMPLEMENTATION_PHASES.md is empty"
|
||||
- Suggest: "project-planning skill may have failed. Check output for errors."
|
||||
- Stop
|
||||
|
||||
---
|
||||
|
||||
## Success Criteria
|
||||
|
||||
✅ project-planning skill invoked successfully
|
||||
✅ IMPLEMENTATION_PHASES.md created with validated phases
|
||||
✅ SESSION.md created with Phase 1 as current
|
||||
✅ Planning docs committed to git (if git repo exists)
|
||||
✅ User has clear "Next Action" to start Phase 1
|
||||
✅ User knows where to find all planning docs
|
||||
Reference in New Issue
Block a user