with one click
plan
Structured project plan format with required sections and examples.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Structured project plan format with required sections and examples.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
You must load this skill if you are creating or updating standalone documentation.
This skill should be used when the user asks to "skillify this", "turn this into a skill", "make a skill out of what we just did", "generalize this task into a reusable skill", or otherwise wants to capture a just-completed session task as a new skill or fold it into an existing one.
Browser automation using the puppeteer NPM package. Use when performing tasks on websites as a user would, taking screenshots, filling forms, or navigating web applications.
Load this skill immediately after a user mentions "@goodfoot/claude-code-hooks" or Claude Code hooks.
Load this skill immediately after a user mentions "@goodfoot/codex-hooks" or Codex hooks.
Load this skill immediately after a user mentions "@goodfoot/codex-hooks" or Codex hooks.
| name | plan |
| description | Structured project plan format with required sections and examples. |
This document provides a comprehensive example of an excellent project plan with clear instructions for each section. The example demonstrates implementing a notification system with real-time updates and user preferences.
Project plans follow a versioning convention:
plan-v1.mdplan-v2.md, plan-v3.md, etc.Most plans should NOT include front matter.
Each goal must be:
❌ Bad: "Make notifications better", "Research libraries", "Try to add real-time" ✅ Good: "Process 100+ notifications/second without UI lag", "Unread count updates within 500ms"
Note: Goals and Objectives mean the same thing - we use both terms for clarity.
</example>
<instructions>
Define clear boundaries for what is and isn't part of this project.
### Include
- List all features that WILL be built
- Be specific about technical limits (e.g., "100 notifications/second")
- Reference existing systems you'll integrate with
### Exclude (CRITICAL - prevents scope creep)
- Explicitly list what will NOT be built
- Features deferred to future versions
- Related functionality that's out of scope
- Platforms or use cases not being addressed
The Exclude section saves more time than any other part by preventing scope creep.
</instructions>
---
## Framework & Technology Stack
<example>
```markdown
## Framework & Technology Stack
### Core Technologies
- Node.js: v20.11.0
- React: react@18.2.0
- TypeScript: typescript@5.3.3
### Frameworks
- Next.js: next@14.1.0 (App Router)
- Express: express@4.18.2
### Testing
- Jest: jest@29.7.0
- Playwright: @playwright/test@1.41.0
- Testing Library: @testing-library/react@14.1.2
### Key Libraries
- WebSocket: socket.io@4.6.1 - Real-time communication
- State Management: zustand@4.5.0 - Client state management
- Validation: zod@3.22.4 - Schema validation
- Database: @prisma/client@5.8.0 - ORM
### Version-Specific Features Used
- React (react@18.2.0): Suspense boundaries, concurrent rendering
- Node.js v20.11.0: Native WebCrypto API, stable test runner
- TypeScript (typescript@5.3.3): satisfies operator, const type parameters
Document all framework and library versions that constrain the implementation.
Populate from technology stack identification in analysis phase.
Technical spikes are empirical investigations that resolve uncertainty through working code and prototypes. They produce actionable insights that inform technical decisions.
Strategic Spikes (Comparing Alternatives):
Tactical Spikes (Validating Chosen Approach):
Type: Strategic Spike
[PROJECT_PATH]/scratchpad/realtime-comparison/ contains:
approach-socketio/ - Socket.io prototype with Redis adapterapproach-sse/ - EventSource implementation with POST fallbackapproach-polling/ - Polling strategy with state managementcomparison.md - Side-by-side analysisrecommendation.md - Selection rationaleType: Tactical Spike
[PROJECT_PATH]/scratchpad/socketio-redis-test/ contains server prototype and Redis configType: Tactical Spike
[PROJECT_PATH]/scratchpad/zustand-typescript-satisfies/notification-store.tsType: Tactical Spike
[PROJECT_PATH]/scratchpad/virtual-scroll-test/NotificationList.tsx with profiling results</example>
---
## Technical Approach
<example>
```markdown
## Technical Approach
1. **Create notification store interface** (packages/web/src/stores/notification-store.ts:12)
- Add `notifications: Notification[]` array to state
- Add `unreadCount: number` computed property
- Implement queue management with priority sorting
2. **Define notification message types** (packages/shared/src/types/events.ts:45)
- Create `NotificationEvent` interface with type, priority, payload
- Add to existing EventType enum for type safety
- Include timestamp and unique ID generation
3. **Build WebSocket subscription handler** (packages/web/src/hooks/use-notification-stream.ts)
- Subscribe to user-specific notification channel
- Handle reconnection with missed notification catch-up
- Implement client-side deduplication by event ID
4. **Create notification center component** (packages/web/src/components/ui/notification-center.tsx)
- Dropdown panel triggered by bell icon in header
- Virtual scrolling for large notification lists
- Mark-as-read on hover with debounce
5. **Add preference management** (packages/api/src/services/user-preferences.ts:78)
- Store notification settings per category
- Apply filters at event emission point
- Cache preferences for performance
6. **Implement batching logic** (packages/api/src/services/notification-batcher.ts)
- Collect events in 100ms windows
- Group by recipient and notification type
- Send as single WebSocket message per batch
Describe the implementation steps in concrete but flexible terms.
:78)Include code examples that clarify complex structures without dictating implementation:
```typescript // Example: Notification data structure (clarifies format) interface Notification { id: string; type: 'comment' | 'mention' | 'system'; priority: 1 | 2 | 3; // 1 = high, 3 = low timestamp: number; read: boolean; data: Record; }// Example: WebSocket event format (defines contract) type NotificationBatch = { type: 'notification.batch'; notifications: Notification[]; missedCount?: number; // For reconnection scenarios };
</example>
<instructions>
Include code examples ONLY when they clarify contracts or complex data structures.
Good code examples show:
1. Type definitions and interfaces for data structures
2. API contracts between systems
3. Expected data transformations (input → output format)
4. Integration points with existing code (with file references)
5. Configuration shapes or option objects
Never include:
1. Full function implementations
2. Step-by-step algorithms
3. UI component implementations
4. Error handling code
5. Business logic details
Keep examples minimal - just enough to clarify without constraining implementation choices.
</instructions>
---
## Dependency Analysis
<example>
```markdown
## Dependency Analysis
### High-Impact Files
- packages/shared/src/types/events.ts (743 imports) - Core event types used throughout system
- packages/web/src/hooks/use-websocket.ts (521 imports) - WebSocket connection hook all real-time features use
- packages/api/src/middleware/auth.ts (234 imports) - Auth required for notification filtering
### Key Integration Points
- packages/web/src/components/layout/header.tsx - Where notification bell icon mounts
- packages/api/src/services/event-emitter.ts - Central event dispatch for notifications
- packages/web/src/stores/index.ts - Store registry for new notification store
### External Dependencies
- @supabase/ssr: ^0.0.10 (authentication)
- zod: ^3.22.0 (validation, already in package.json)
Identify files that are critical dependencies or integration points for your implementation.
Include actual import counts in parentheses (e.g., "auth.ts (234 imports)") to indicate risk level. List files where your new code connects to existing systems with brief descriptions.
Provide ALL quality validation commands that must pass for implementation to be considered complete.
Minimum Required Commands (must include at minimum):
yarn typecheck, tsc --noEmit)yarn test)yarn lint, eslint)Additional Validation Commands (include when applicable):
yarn test:e2e)yarn test:integration)yarn test:contract)Process:
For multiple packages:
## Validation Commands
### packages/[package-1]
- Type check: 'cd packages/[package-1] && yarn typecheck'
- Test: 'cd packages/[package-1] && yarn test'
- Lint: 'cd packages/[package-1] && yarn lint'
### packages/[package-2]
- Type check: 'cd packages/[package-2] && yarn typecheck'
- Test: 'cd packages/[package-2] && yarn test:e2e'
- Lint: 'cd packages/[package-2] && yarn lint'
Note: These commands will be executed by the orchestrator to verify implementation quality. ALL commands must pass with zero errors.
Include commands for:
yarn build)yarn dev)yarn add package@version)yarn tsx src/script.ts)yarn migrate)yarn deploy)Do NOT include in this section:
Skip this section entirely if there are no operational commands to document.
Risk: High-frequency events could overwhelm clients Mitigation: Server-side rate limiting at 100 events/second per user
Risk: Notifications lost during WebSocket reconnection Mitigation: Include last-received timestamp in reconnect, server replays missed
Risk: Storage quota exceeded with too many notifications Mitigation: Implement rolling window keeping only last 1000 notifications
</example>
<instructions>
Identify technical risks that could cause the implementation to fail or perform poorly.
Focus on:
1. Technical risks only (not project management risks)
2. Specific, discovered concerns (not generic worries)
3. Actionable mitigations (not "be careful")
Common risk categories:
- Browser compatibility differences
- Performance degradation at scale
- Network reliability issues
- State synchronization problems
- Resource limitations (memory, storage)
- Security or permission constraints
Format each risk as:
- **Risk**: [Specific technical concern]
**Mitigation**: [Concrete solution or approach]
Include 3-5 most significant risks. More than 5 suggests over-analysis.
</instructions>
---
## Implementation References (Optional)
<example>
```markdown
## Implementation References
- Event patterns: packages/api/src/services/analytics-events.ts:123 - Similar event batching
- WebSocket setup: packages/web/src/hooks/use-chat.ts:45 - Real-time subscription pattern
- Dropdown UI: packages/web/src/components/ui/dropdown-menu.tsx:12 - Reusable dropdown
- Virtual scroll: packages/web/src/components/tables/data-table.tsx:234 - Virtual rendering
- Storage: https://developer.mozilla.org/en-US/docs/Web/API/Storage_API/Storage_quotas
Include this section ONLY when you have specific, helpful references.
Good references include:
Guidelines:
Skip this section if you don't have genuinely useful references.
Assumptions (believed true, unvalidated):
</example>
<instructions>
Document uncertainties explicitly:
- Use checkboxes for trackable decisions ([ ] open, [x] resolved)
- Include deadlines or dependencies where applicable
- List assumptions separately—these are risks if wrong
- Update as questions resolve—add Decision Record to project log
Source: project-plan-report.md line 33, 52
> "Noting it in the PRD flags it for resolution... if some aspects are uncertain,
> acknowledge them in the plan rather than papering over them."
</instructions>
---
## User Scenarios (Optional)
<example>
```markdown
## User Scenarios
### Scenario: Real-time mention notification
1. Alice is editing document "Q3 Report"
2. Bob mentions @Alice in a comment
3. Within 500ms, Alice sees bell icon increment and toast notification
4. Alice clicks notification, navigates to comment
5. Notification marked as read automatically
Include 1-3 scenarios illustrating key user journeys:
- Use specific names (Alice, Bob) for clarity
- Include concrete values (500ms, not "quickly")
- Show complete user experience from trigger to completion
- Helps testers derive accurate test cases
Only include for complex features where prose requirements might be ambiguous.
### 1. Vague Goals ❌ "Improve notification system performance" ✅ "Process 100+ notifications/second without UI lag"❌ "Create processNotification() function that takes a Notification object..." ✅ "Build notification processing pipeline with priority ordering"
❌ Only listing what's included ✅ Both Include AND Exclude sections
❌ "Risk: Performance issues. Mitigation: Optimize the code" ✅ "Risk: High-frequency events could overwhelm clients. Mitigation: Server-side rate limiting at 100 events/second"
❌ "Update notification service (probably in src/services/notifications.ts)" ✅ "Update notification dispatcher (packages/api/src/services/event-emitter.ts:234)"
❌ "React: latest" or "Node.js: current" ✅ "React: 18.2.0" or "React: react@18.2.0" (both acceptable)
### The Wishlist Plan **Symptoms**: 20+ goals, no clear priority, "wouldn't it be nice if..." **Fix**: Ruthlessly cut to 3-7 goals that directly solve the stated problemSymptoms: Step-by-step algorithms, complete function signatures, UI specs Fix: Stay at "what to build" level, leave "how" to implementers
Symptoms: TBD throughout, vague language, "we'll figure it out" Fix: Resolve unknowns via spikes before planning, or mark as explicit blockers
Symptoms: Scope Include is long, Exclude is empty or minimal Fix: Exclude section should be longer—explicitly reject adjacent features
Symptoms: Generic risks, placeholder text, inapplicable sections Fix: Every section must contain project-specific content or be omitted
Symptoms: Plan doesn't match current implementation or decisions Fix: Update plan when scope changes, add Decision Record to project log
Symptoms: Requirements without rationale, "because I said so" decisions, missing trade-off documentation Fix: Add rationale inline or in dedicated section, document alternatives considered
Source: project-plan-report.md lines 72-73
1. **Precision**: Use verified file paths with line numbers 2. **YAGNI**: Only features solving the immediate problem 3. **Integration Over Innovation**: Reuse existing patterns 4. **Examples Clarify, Not Constrain**: Show data shapes, not implementations 5. **Test the Risks**: Focus on what could actually fail 6. **Scope Exclusions Prevent Creep**: Explicitly state what's NOT includedTestability: For each requirement, ask "How would we test this?" If no clear test exists, the requirement needs more specificity.
Ubiquitous Language: Use consistent terminology matching the codebase.
If code says ShoppingCart, plan says "Shopping Cart" not "Basket."
Source: project-plan-report.md lines 101-102
"The PRD should speak the same language as the code and business domain... ensures no translation gap between requirements and implementation."
Evolution Readiness: Structure plans for change—modular sections, explicit uncertainties, version tracking.
Decisions in Log, Not Plan: Significant decisions are captured in the project
log (log.md) as Decision Records. Plans reference outcomes, not decision history.
This keeps plans focused on "what to build" while the log captures "why we chose this."
The best plan answers "what" and "where" while leaving "how" to the implementer.
### Quick Assessment (use before loading full methodologies)For lightweight issues, apply these inline checks without loading methodology files:
Load full methodology only when remediation guidance is needed or the issue is complex.
Select and load methodology documents based on the quality issues you encounter during assessment:
methodology/vague-language-detection.md if requirements contain subjective terms like "fast", "user-friendly", or "scalable" without definitions. Provides systematic patterns for identifying ambiguous language and transforming it into specific, measurable criteria. Use when you cannot envision a clear test case for a requirement or when numeric thresholds are missing from performance claims.methodology/coherence-checking.md if plan sections appear to contradict each other or use inconsistent terminology. Provides verification processes for cross-referencing values, terms, and scope items across all plan sections. Use when performance targets differ between sections, terminology is inconsistent, or scope boundaries conflict with technical approach.methodology/rationale-capture.md if technical decisions lack justification or trade-offs are undocumented. Provides patterns for capturing technology selection reasoning, constraint origins, and exclusion rationale. Use when future maintainers would ask "why was this done?" or when scope exclusions lack explanation.methodology/scope-management.md if the Exclude section is sparse or features use speculative language like "might need" or "for future use". Provides YAGNI assessment framework and scope defense protocols for maintaining clear project boundaries. Use when features aren't tied to the problem statement or when scope creep indicators appear in Technical Approach.methodology/testability-assessment.md if you cannot answer "How would we test this?" for a requirement. Provides criteria for verifying requirements are observable, measurable, and deterministic with clear pass/fail conditions. Use when goals use subjective success criteria or acceptance criteria are abstract.methodology/nfr-completeness.md if non-functional requirements are missing or assumed but not documented. Provides checklists for performance, reliability, security, and scalability coverage with assessment questions for each category. Use when there are no latency targets for user-facing operations or when scalability expectations are based on hope rather than evidence.methodology/document-evolution.md if open questions are hidden in prose rather than explicit or sections aren't modular. Provides mechanisms for decision tracking via project log, open questions management, and modular section structure that supports iterative refinement. Use when assessing whether the plan can evolve healthily as implementation progresses.# Implementation Project: [Title]✅ Verified file paths with line numbers ✅ WHAT to build, not HOW ✅ Exclude v2 features explicitly ❌ No implementation details ❌ No guessed file paths ❌ No vague goals