399 lines
12 KiB
Markdown
399 lines
12 KiB
Markdown
# Create Implementation Plan
|
|
Creates detailed implementation plan based on requirements and design specifications.
|
|
|
|
## Initial Setup
|
|
Respond with:
|
|
```
|
|
I'm ready to create an implementation plan.
|
|
|
|
I'll read your requirements from spec/requirements.md and design from spec/design.md to create a detailed plan.
|
|
```
|
|
|
|
Then proceed to read documents and generate plan.
|
|
|
|
## Workflow
|
|
1. **Read** `spec/requirements.md` FULLY
|
|
2. **Read** `spec/design.md` FULLY
|
|
3. **Generate implementation plan** at `spec/plan.md` with:
|
|
- 3-5 phases, each with specific tasks
|
|
- Every task has: file paths, code structure, test requirements, verification steps, success criteria
|
|
- Map tasks to user stories from requirements
|
|
- Clear scope boundaries
|
|
|
|
## Planning Strategy
|
|
|
|
### UI-First Planning Approach
|
|
|
|
**When to use:** Use UI-first planning unless there's no UI involved (e.g., pure API, CLI tool, library, data pipeline).
|
|
|
|
**Why UI-First matters:**
|
|
|
|
The traditional backend-first approach (database → API → UI) has a critical flaw: you don't see or interact with anything until late in the process. This causes:
|
|
- **Late discovery of design misalignments** - Costly to fix after backend is built
|
|
- **Loss of momentum** - Abstract data models feel like slow progress
|
|
- **Inability to verify direction** - Can't know if it's right until you see it
|
|
|
|
UI-first solves this by:
|
|
- **Immediate visual verification** - See the UI running with mock data early, giving confidence about direction
|
|
- **Catch misunderstandings early** - Find issues when UI is easy to adjust, not after complex data layer is built
|
|
- **Better data model design** - Building UI first reveals what data shapes actually make sense
|
|
- **Maintains energy** - Working interactive UI (even with fake data) keeps momentum high
|
|
- **Easier iteration** - Refine UX freely with mocks, then build backend to support validated design
|
|
|
|
**Key insight:** UI with mock data is cheap to change. Backend with real data/APIs is expensive to change. So validate the expensive part by building the cheap part first.
|
|
|
|
**Example phase structure** (adapt to project needs, this is inspiration not a strict template):
|
|
- **Phase 1: Project Setup & UI Shell** - Initialize project, setup dev tools, create basic app shell, verify dev server runs and shows basic UI
|
|
- **Phase 2: Complete UI with Mock Data** - Implement ALL UI components with hardcoded/mock data, make it fully interactive and navigable
|
|
- **Phase 3: Data Layer & Backend** - Build database/storage, API endpoints, business logic, backend tests
|
|
- **Phase 4: Integration** - Replace mocks with real data, connect UI to backend, handle loading/error states
|
|
- **Phase 5: Polish & Testing** - Edge cases, error handling, final acceptance criteria verification
|
|
|
|
### Backend-First Planning Approach
|
|
|
|
**When to use:** Projects with no user interface (REST APIs, CLI tools, libraries, background services, data pipelines).
|
|
|
|
**Planning approach:** Structure phases around core functionality, data model, API contracts, and verification strategies appropriate for non-UI projects.
|
|
|
|
## Guidelines
|
|
- **Detect if project has a UI** based on design.md
|
|
- **If UI exists:** Use UI-first planning approach (see above for reasoning)
|
|
- **If no UI:** Use appropriate structure for that project type (backend-first)
|
|
- The 5-phase UI-first structure is an **example for inspiration** - adapt to project needs
|
|
- **Key principle for UI projects:** See working UI with mocks early → build backend → integrate
|
|
- Be specific: every task needs concrete file paths and line numbers
|
|
- Every task MUST have:
|
|
- Test Requirements section
|
|
- Verification Steps section
|
|
- Success criteria (what tests to run, what to verify)
|
|
- Break work into 3-5 discrete phases
|
|
- Each phase should be independently verifiable
|
|
- Order matters - explain why phases come in sequence
|
|
- Map tasks to specific user stories from requirements.md
|
|
- Include "What We're NOT Doing" section to prevent scope creep
|
|
- Plan should be detailed enough to execute mechanically
|
|
|
|
## Chat Output Format
|
|
After completing plan:
|
|
```
|
|
I've created a detailed implementation plan at spec/plan.md.
|
|
|
|
The plan includes:
|
|
- [X] phases with specific tasks
|
|
- File paths and code structures from design.md
|
|
- Acceptance criteria from requirements.md
|
|
- Clear verification checklist
|
|
|
|
Please review and let me know if you'd like any adjustments.
|
|
```
|
|
|
|
## File Output Format
|
|
Create `spec/plan.md`:
|
|
|
|
```markdown
|
|
# Implementation Plan: [Project Name]
|
|
|
|
## Overview
|
|
[1-2 sentence summary of what we're building based on requirements and design]
|
|
|
|
## Current State
|
|
- Empty project / Starting from scratch
|
|
- Target tech stack: [From design.md]
|
|
|
|
## Desired End State
|
|
[Clear description of what "done" looks like, referencing requirements]
|
|
|
|
**Success Criteria:**
|
|
- [ ] All user stories from requirements.md are implemented
|
|
- [ ] All acceptance criteria are met
|
|
- [ ] Application matches design specifications
|
|
- [ ] Code is tested and runs without errors
|
|
|
|
## What We're NOT Doing
|
|
[Explicitly list out-of-scope items from requirements.md]
|
|
|
|
## Implementation Approach
|
|
[High-level strategy: which phases, why this order, key dependencies]
|
|
|
|
---
|
|
|
|
## Phase 1: Project Setup & Foundation
|
|
|
|
### Overview
|
|
Set up the development environment and project structure according to design specifications.
|
|
|
|
### Tasks
|
|
|
|
#### 1.1 Initialize Project
|
|
**Action**:
|
|
- Create project using [tool, e.g., "Vite", "Create React App"]
|
|
- Install dependencies listed in design.md
|
|
- Set up file structure from design.md
|
|
|
|
**Files Created**:
|
|
- `package.json` / `requirements.txt` / [dependency file]
|
|
- `src/` directory structure
|
|
- Configuration files (tsconfig.json, vite.config.js, etc.)
|
|
|
|
**Success Criteria**:
|
|
- [ ] Project builds without errors: `[build command]`
|
|
- [ ] Dev server starts: `[dev command]`
|
|
- [ ] All dependencies installed correctly
|
|
|
|
#### 1.2 Setup Development Tools
|
|
**Action**:
|
|
- Configure linting and formatting
|
|
- Set up testing framework
|
|
- Add scripts to package.json
|
|
|
|
**Success Criteria**:
|
|
- [ ] Linter runs: `[lint command]`
|
|
- [ ] Formatter works: `[format command]`
|
|
- [ ] Test runner works: `[test command]`
|
|
|
|
---
|
|
|
|
## Phase 2: Data Layer
|
|
|
|
### Overview
|
|
Implement data models, storage, and state management as defined in design.md.
|
|
|
|
### Tasks
|
|
|
|
#### 2.1 Define Data Models
|
|
**File**: `src/types/index.ts` (or equivalent)
|
|
**Action**:
|
|
- Implement [Entity1] interface from design.md
|
|
- Implement [Entity2] interface from design.md
|
|
- Add type exports
|
|
|
|
**Code Structure**:
|
|
```typescript
|
|
interface Entity1 {
|
|
id: string;
|
|
field1: string;
|
|
// ... from design
|
|
}
|
|
```
|
|
|
|
**Test Requirements**:
|
|
- [ ] Write tests to verify type definitions are correct
|
|
- [ ] Test type safety with valid and invalid data
|
|
- [ ] Tests pass: `npm run typecheck` or equivalent
|
|
|
|
**Verification Steps**:
|
|
1. Run type checker: `[typecheck command]`
|
|
2. Verify no type errors in output
|
|
3. Expected: Clean compilation, all types defined
|
|
|
|
**Success Criteria**:
|
|
- [ ] All code changes completed
|
|
- [ ] Types compile without errors
|
|
- [ ] All entities from design.md are defined
|
|
- [ ] Type tests written and passing
|
|
|
|
#### 2.2 Implement Storage Layer
|
|
**File**: `src/utils/storage.ts` (or equivalent)
|
|
**Action**:
|
|
- Create [storage approach from design.md]
|
|
- Implement CRUD operations for each entity
|
|
- Add error handling
|
|
|
|
**Functions to Implement**:
|
|
- `create[Entity](data: Entity): Promise<Entity>`
|
|
- `read[Entity](id: string): Promise<Entity>`
|
|
- `update[Entity](id: string, data: Partial<Entity>): Promise<Entity>`
|
|
- `delete[Entity](id: string): Promise<void>`
|
|
|
|
**Test Requirements**:
|
|
- [ ] Write unit tests for each CRUD operation
|
|
- [ ] Test error handling (invalid data, not found, etc.)
|
|
- [ ] Test data persistence and retrieval
|
|
- [ ] Tests pass: `[test command]`
|
|
|
|
**Verification Steps**:
|
|
1. Run tests: `[test command]`
|
|
2. Verify all CRUD operations tested
|
|
3. Expected: All tests passing, 100% coverage on storage functions
|
|
|
|
**Success Criteria**:
|
|
- [ ] All code changes completed
|
|
- [ ] All CRUD operations implemented
|
|
- [ ] Unit tests written for all operations
|
|
- [ ] All tests passing
|
|
- [ ] Error cases handled and tested
|
|
|
|
---
|
|
|
|
## Phase 3: Core Components
|
|
|
|
### Overview
|
|
Build the UI components defined in design.md, focusing on core functionality first.
|
|
|
|
### Tasks
|
|
|
|
#### 3.1 Create [ComponentName] Component
|
|
**File**: `src/components/[ComponentName].tsx` (from design.md)
|
|
**Action**:
|
|
- Implement component as specified in design.md
|
|
- Add props/interface from design
|
|
- Implement event handlers
|
|
- Add basic styling
|
|
|
|
**Component Structure** (from design.md):
|
|
```typescript
|
|
interface ComponentProps {
|
|
// Props from design.md
|
|
}
|
|
|
|
function ComponentName({ prop1, prop2 }: ComponentProps) {
|
|
// Implementation
|
|
}
|
|
```
|
|
|
|
**Implements User Story**: [Reference specific user story from requirements.md]
|
|
|
|
**Test Requirements**:
|
|
- [ ] Write component tests (rendering, props, interactions)
|
|
- [ ] Test event handlers trigger correctly
|
|
- [ ] Test edge cases (empty data, errors, etc.)
|
|
- [ ] Tests pass: `[test command]`
|
|
|
|
**Verification Steps**:
|
|
1. Run tests: `[test command]`
|
|
2. Manual check: Open app, verify component appears correctly
|
|
3. Expected: Tests passing, component renders and functions as designed
|
|
|
|
**Success Criteria**:
|
|
- [ ] All code changes completed
|
|
- [ ] Component implemented per design
|
|
- [ ] Component tests written and passing
|
|
- [ ] Manual verification confirms visual appearance
|
|
- [ ] Event handlers tested and working
|
|
|
|
---
|
|
|
|
## Phase 4: User Flows & Integration
|
|
|
|
### Overview
|
|
Connect components together to implement complete user flows from requirements.md.
|
|
|
|
### Tasks
|
|
|
|
#### 4.1 Implement [Flow Name] Flow
|
|
**User Story**: [Reference specific user story from requirements.md]
|
|
**Components Involved**: [List from design.md]
|
|
|
|
**Action**:
|
|
- Connect [Component A] to [Component B]
|
|
- Implement data flow as per design.md
|
|
- Add error handling for edge cases from requirements.md
|
|
|
|
**Flow Steps** (from design.md):
|
|
1. User [action]
|
|
2. System [response]
|
|
3. User sees [result]
|
|
|
|
**Acceptance Criteria** (from requirements.md):
|
|
- [ ] [Criterion 1 from requirements]
|
|
- [ ] [Criterion 2 from requirements]
|
|
- [ ] [Criterion 3 from requirements]
|
|
|
|
**Edge Cases**:
|
|
- [ ] [Edge case 1 from requirements] handles correctly
|
|
- [ ] [Edge case 2 from requirements] handles correctly
|
|
|
|
---
|
|
|
|
## Phase 5: Polish & Testing
|
|
|
|
### Overview
|
|
Add finishing touches, handle edge cases, and verify all acceptance criteria.
|
|
|
|
### Tasks
|
|
|
|
#### 5.1 UI/UX Polish
|
|
**Action**:
|
|
- Refine styling to match design vision
|
|
- Add loading states
|
|
- Add empty states
|
|
- Improve error messages
|
|
|
|
**Success Criteria**:
|
|
- [ ] UI matches design specifications
|
|
- [ ] All interactive elements are accessible
|
|
- [ ] Loading states are clear
|
|
- [ ] Empty states are helpful
|
|
|
|
#### 5.2 Error Handling
|
|
**Action**:
|
|
- Implement error boundaries (if applicable)
|
|
- Add user-friendly error messages
|
|
- Handle all edge cases from requirements.md
|
|
|
|
**Success Criteria**:
|
|
- [ ] No uncaught errors
|
|
- [ ] Users see helpful error messages
|
|
- [ ] Edge cases handled gracefully
|
|
|
|
#### 5.3 Final Testing
|
|
**Action**:
|
|
- Write unit tests for critical functions
|
|
- Manually test all user flows
|
|
- Test all acceptance criteria from requirements.md
|
|
|
|
**Success Criteria**:
|
|
- [ ] All automated tests pass: `[test command]`
|
|
- [ ] All user stories verified manually
|
|
- [ ] All acceptance criteria met
|
|
|
|
---
|
|
|
|
## Verification Checklist
|
|
|
|
### Requirements Completion
|
|
[For each user story from requirements.md]
|
|
- [ ] User Story 1: [Name]
|
|
- [ ] Acceptance criterion 1
|
|
- [ ] Acceptance criterion 2
|
|
- [ ] User Story 2: [Name]
|
|
- [ ] Acceptance criterion 1
|
|
- [ ] Acceptance criterion 2
|
|
|
|
### Design Implementation
|
|
- [ ] All components from design.md implemented
|
|
- [ ] Data model matches design.md
|
|
- [ ] File structure matches design.md
|
|
- [ ] Tech stack matches design.md
|
|
|
|
### Quality Checks
|
|
- [ ] Code builds without errors: `[build command]`
|
|
- [ ] Linter passes: `[lint command]`
|
|
- [ ] Tests pass: `[test command]`
|
|
- [ ] Application runs: `[dev/start command]`
|
|
|
|
### User Acceptance
|
|
- [ ] Manually test all user flows
|
|
- [ ] Verify all edge cases
|
|
- [ ] Check performance (if requirements specify)
|
|
- [ ] Verify accessibility (if requirements specify)
|
|
|
|
---
|
|
|
|
## Development Notes
|
|
|
|
### Suggested Order
|
|
1. Don't skip phases - each builds on the previous
|
|
2. Verify success criteria before moving to next task
|
|
3. Update this document if you discover issues in specs
|
|
|
|
### If You Get Stuck
|
|
- Review requirements.md for the "why"
|
|
- Review design.md for the "how"
|
|
- Ask questions if specs are unclear
|
|
- Update specs if you find gaps
|
|
|
|
## References
|
|
- Requirements: `spec/requirements.md`
|
|
- Design: `spec/design.md`
|
|
``` |