mirror of
https://github.com/jpawlowski/hass.tibber_prices.git
synced 2026-03-29 21:03:40 +00:00
docs: add refactoring guide and planning directory documentation
- Introduced a comprehensive refactoring guide detailing when and how to plan major refactorings, including a structured planning process and real-world examples. - Created a README for the planning directory, outlining its purpose, document lifecycle, and best practices for creating planning documents.
This commit is contained in:
parent
fa40c00f67
commit
cf221725a2
5 changed files with 704 additions and 0 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -32,3 +32,6 @@ home-assistant_v2.db*
|
|||
*.temp
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Planning documents (work-in-progress)
|
||||
planning/
|
||||
|
|
|
|||
123
AGENTS.md
123
AGENTS.md
|
|
@ -105,6 +105,129 @@ If you detect 3+ related minor changes (e.g., multiple constant renames during r
|
|||
|
||||
This ensures the documentation stays accurate and useful as the codebase evolves, while maintaining user control over what gets documented.
|
||||
|
||||
## Planning Major Refactorings
|
||||
|
||||
**Purpose**: Large-scale architectural changes require careful planning before implementation.
|
||||
|
||||
**Planning Directory**: `/planning/` (git-ignored, safe for iteration)
|
||||
|
||||
**When to Create a Planning Document:**
|
||||
|
||||
Create a detailed plan when:
|
||||
|
||||
- 🔴 **Major refactoring** (>5 files, >500 lines changed)
|
||||
- 🔴 **Architectural changes** (new packages, module restructuring)
|
||||
- 🔴 **Breaking changes** (API changes, config format migrations)
|
||||
- 🟡 **Complex features** (multiple moving parts, unclear best approach)
|
||||
|
||||
Skip planning for:
|
||||
|
||||
- 🟢 Bug fixes (straightforward, <100 lines)
|
||||
- 🟢 Small features (<3 files, clear approach)
|
||||
- 🟢 Documentation updates
|
||||
- 🟢 Cosmetic changes (formatting, renaming)
|
||||
|
||||
**Planning Document Lifecycle:**
|
||||
|
||||
1. **Planning Phase** (WIP in `/planning/`)
|
||||
|
||||
- Create `planning/<feature>-refactoring-plan.md`
|
||||
- Iterate freely (git-ignored, no commit pressure)
|
||||
- AI can help refine without polluting git history
|
||||
- Multiple revisions until plan is solid
|
||||
|
||||
2. **Implementation Phase** (Active work)
|
||||
|
||||
- Use plan as reference during coding
|
||||
- Update plan if issues discovered
|
||||
- Track progress through phases
|
||||
- Test after each phase
|
||||
|
||||
3. **Completion Phase** (After implementation)
|
||||
|
||||
- **Option A**: Move to `docs/development/` if lasting value
|
||||
|
||||
- Example: `planning/module-splitting-plan.md` → `docs/development/module-splitting-plan.md`
|
||||
- Update status to "✅ COMPLETED"
|
||||
- Commit as historical reference
|
||||
|
||||
- **Option B**: Delete if superseded
|
||||
|
||||
- Plan served its purpose
|
||||
- Code and AGENTS.md are source of truth
|
||||
|
||||
- **Option C**: Archive in `planning/archive/`
|
||||
- Keep locally for "why we didn't do X" reference
|
||||
- Don't commit (git-ignored)
|
||||
|
||||
**Required Planning Document Sections:**
|
||||
|
||||
```markdown
|
||||
# <Feature> Refactoring Plan
|
||||
|
||||
**Status**: 🔄 PLANNING | 🚧 IN PROGRESS | ✅ COMPLETED | ❌ CANCELLED
|
||||
**Created**: YYYY-MM-DD
|
||||
**Last Updated**: YYYY-MM-DD
|
||||
|
||||
## Problem Statement
|
||||
|
||||
- What's the issue?
|
||||
- Why does it need fixing?
|
||||
- Current pain points
|
||||
|
||||
## Proposed Solution
|
||||
|
||||
- High-level approach
|
||||
- File structure (before/after)
|
||||
- Module responsibilities
|
||||
|
||||
## Migration Strategy
|
||||
|
||||
- Phase-by-phase breakdown
|
||||
- File lifecycle (CREATE/MODIFY/DELETE/RENAME)
|
||||
- Dependencies between phases
|
||||
- Testing checkpoints
|
||||
|
||||
## Risks & Mitigation
|
||||
|
||||
- What could go wrong?
|
||||
- How to prevent it?
|
||||
- Rollback strategy
|
||||
|
||||
## Success Criteria
|
||||
|
||||
- Measurable improvements
|
||||
- Testing requirements
|
||||
- Verification steps
|
||||
```
|
||||
|
||||
**Example**: See `docs/development/module-splitting-plan.md` for a completed plan (moved from `planning/` after successful implementation).
|
||||
|
||||
**Integration with AGENTS.md:**
|
||||
|
||||
After successful refactoring:
|
||||
|
||||
1. Update AGENTS.md with new patterns/conventions
|
||||
2. Move plan to `docs/development/` if valuable for future reference
|
||||
3. Planning doc is temporary scaffolding; AGENTS.md is permanent guide
|
||||
|
||||
**Best Practices:**
|
||||
|
||||
✅ **DO:**
|
||||
|
||||
- Iterate freely in `/planning/` (git-ignored)
|
||||
- Break complex changes into clear phases
|
||||
- Document file lifecycle explicitly
|
||||
- Include code examples and patterns
|
||||
- Plan testing after each phase
|
||||
|
||||
❌ **DON'T:**
|
||||
|
||||
- Start coding before plan is solid
|
||||
- Skip the "Why?" section
|
||||
- Commit `/planning/` files (they're ignored!)
|
||||
- Over-plan trivial changes
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
**Core Data Flow:**
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ This section contains documentation for contributors and maintainers of the Tibb
|
|||
- **[Testing](testing.md)** - How to run tests and write new test cases
|
||||
- **[Release Management](release-management.md)** - Release workflow and versioning process
|
||||
- **[Coding Guidelines](coding-guidelines.md)** - Style guide, linting, and best practices
|
||||
- **[Refactoring Guide](refactoring-guide.md)** - How to plan and execute major refactorings
|
||||
|
||||
## 🤖 AI Documentation
|
||||
|
||||
|
|
|
|||
414
docs/development/refactoring-guide.md
Normal file
414
docs/development/refactoring-guide.md
Normal file
|
|
@ -0,0 +1,414 @@
|
|||
# Refactoring Guide
|
||||
|
||||
This guide explains how to plan and execute major refactorings in this project.
|
||||
|
||||
## When to Plan a Refactoring
|
||||
|
||||
Not every code change needs a detailed plan. Create a refactoring plan when:
|
||||
|
||||
🔴 **Major changes requiring planning:**
|
||||
|
||||
- Splitting modules into packages (>5 files affected, >500 lines moved)
|
||||
- Architectural changes (new packages, module restructuring)
|
||||
- Breaking changes (API changes, config format migrations)
|
||||
|
||||
🟡 **Medium changes that might benefit from planning:**
|
||||
|
||||
- Complex features with multiple moving parts
|
||||
- Changes affecting many files (>3 files, unclear best approach)
|
||||
- Refactorings with unclear scope
|
||||
|
||||
🟢 **Small changes - no planning needed:**
|
||||
|
||||
- Bug fixes (straightforward, <100 lines)
|
||||
- Small features (<3 files, clear approach)
|
||||
- Documentation updates
|
||||
- Cosmetic changes (formatting, renaming)
|
||||
|
||||
## The Planning Process
|
||||
|
||||
### 1. Create a Planning Document
|
||||
|
||||
Create a file in the `planning/` directory (git-ignored for free iteration):
|
||||
|
||||
```bash
|
||||
# Example:
|
||||
touch planning/my-feature-refactoring-plan.md
|
||||
```
|
||||
|
||||
**Note:** The `planning/` directory is git-ignored, so you can iterate freely without polluting git history.
|
||||
|
||||
### 2. Use the Planning Template
|
||||
|
||||
Every planning document should include:
|
||||
|
||||
```markdown
|
||||
# <Feature> Refactoring Plan
|
||||
|
||||
**Status**: 🔄 PLANNING | 🚧 IN PROGRESS | ✅ COMPLETED | ❌ CANCELLED
|
||||
**Created**: YYYY-MM-DD
|
||||
**Last Updated**: YYYY-MM-DD
|
||||
|
||||
## Problem Statement
|
||||
|
||||
- What's the issue?
|
||||
- Why does it need fixing?
|
||||
- Current pain points
|
||||
|
||||
## Proposed Solution
|
||||
|
||||
- High-level approach
|
||||
- File structure (before/after)
|
||||
- Module responsibilities
|
||||
|
||||
## Migration Strategy
|
||||
|
||||
- Phase-by-phase breakdown
|
||||
- File lifecycle (CREATE/MODIFY/DELETE/RENAME)
|
||||
- Dependencies between phases
|
||||
- Testing checkpoints
|
||||
|
||||
## Risks & Mitigation
|
||||
|
||||
- What could go wrong?
|
||||
- How to prevent it?
|
||||
- Rollback strategy
|
||||
|
||||
## Success Criteria
|
||||
|
||||
- Measurable improvements
|
||||
- Testing requirements
|
||||
- Verification steps
|
||||
```
|
||||
|
||||
See `planning/README.md` for detailed template explanation.
|
||||
|
||||
### 3. Iterate Freely
|
||||
|
||||
Since `planning/` is git-ignored:
|
||||
|
||||
- Draft multiple versions
|
||||
- Get AI assistance without commit pressure
|
||||
- Refine until the plan is solid
|
||||
- No need to clean up intermediate versions
|
||||
|
||||
### 4. Implementation Phase
|
||||
|
||||
Once plan is approved:
|
||||
|
||||
- Follow the phases defined in the plan
|
||||
- Test after each phase (don't skip!)
|
||||
- Update plan if issues discovered
|
||||
- Track progress through phase status
|
||||
|
||||
### 5. After Completion
|
||||
|
||||
**Option A: Archive in docs/development/**
|
||||
If the plan has lasting value (successful pattern, reusable approach):
|
||||
|
||||
```bash
|
||||
mv planning/my-feature-refactoring-plan.md docs/development/
|
||||
git add docs/development/my-feature-refactoring-plan.md
|
||||
git commit -m "docs: archive successful refactoring plan"
|
||||
```
|
||||
|
||||
**Option B: Delete**
|
||||
If the plan served its purpose and code is the source of truth:
|
||||
|
||||
```bash
|
||||
rm planning/my-feature-refactoring-plan.md
|
||||
```
|
||||
|
||||
**Option C: Keep locally (not committed)**
|
||||
For "why we didn't do X" reference:
|
||||
|
||||
```bash
|
||||
mkdir -p planning/archive
|
||||
mv planning/my-feature-refactoring-plan.md planning/archive/
|
||||
# Still git-ignored, just organized
|
||||
```
|
||||
|
||||
## Real-World Example
|
||||
|
||||
The **sensor/ package refactoring** (Nov 2025) is a successful example:
|
||||
|
||||
**Before:**
|
||||
|
||||
- `sensor.py` - 2,574 lines, hard to navigate
|
||||
|
||||
**After:**
|
||||
|
||||
- `sensor/` package with 5 focused modules
|
||||
- Each module <800 lines
|
||||
- Clear separation of concerns
|
||||
|
||||
**Process:**
|
||||
|
||||
1. Created `planning/module-splitting-plan.md` (now in `docs/development/`)
|
||||
2. Defined 6 phases with clear file lifecycle
|
||||
3. Implemented phase by phase
|
||||
4. Tested after each phase
|
||||
5. Documented in AGENTS.md
|
||||
6. Moved plan to `docs/development/` as reference
|
||||
|
||||
**Key learnings:**
|
||||
|
||||
- Temporary `_impl.py` files avoid Python package conflicts
|
||||
- Test after EVERY phase (don't accumulate changes)
|
||||
- Clear file lifecycle (CREATE/MODIFY/DELETE/RENAME)
|
||||
- Phase-by-phase approach enables safe rollback
|
||||
|
||||
See the complete plan: [module-splitting-plan.md](module-splitting-plan.md)
|
||||
|
||||
## Phase-by-Phase Implementation
|
||||
|
||||
### Why Phases Matter
|
||||
|
||||
Breaking refactorings into phases:
|
||||
|
||||
- ✅ Enables testing after each change (catch bugs early)
|
||||
- ✅ Allows rollback to last good state
|
||||
- ✅ Makes progress visible
|
||||
- ✅ Reduces cognitive load (focus on one thing)
|
||||
- ❌ Takes more time (but worth it!)
|
||||
|
||||
### Phase Structure
|
||||
|
||||
Each phase should:
|
||||
|
||||
1. **Have clear goal** - What's being changed?
|
||||
2. **Document file lifecycle** - CREATE/MODIFY/DELETE/RENAME
|
||||
3. **Define success criteria** - How to verify it worked?
|
||||
4. **Include testing steps** - What to test?
|
||||
5. **Estimate time** - Realistic time budget
|
||||
|
||||
### Example Phase Documentation
|
||||
|
||||
```markdown
|
||||
### Phase 3: Extract Helper Functions (Session 3)
|
||||
|
||||
**Goal**: Move pure utility functions to helpers.py
|
||||
|
||||
**File Lifecycle**:
|
||||
|
||||
- ✨ CREATE `sensor/helpers.py` (utility functions)
|
||||
- ✏️ MODIFY `sensor/core.py` (import from helpers.py)
|
||||
|
||||
**Steps**:
|
||||
|
||||
1. Create sensor/helpers.py
|
||||
2. Move pure functions (no state, no self)
|
||||
3. Add comprehensive docstrings
|
||||
4. Update imports in core.py
|
||||
|
||||
**Estimated time**: 45 minutes
|
||||
|
||||
**Success criteria**:
|
||||
|
||||
- ✅ All pure functions moved
|
||||
- ✅ `./scripts/lint-check` passes
|
||||
- ✅ HA starts successfully
|
||||
- ✅ All entities work correctly
|
||||
```
|
||||
|
||||
## Testing Strategy
|
||||
|
||||
### After Each Phase
|
||||
|
||||
Minimum testing checklist:
|
||||
|
||||
```bash
|
||||
# 1. Linting passes
|
||||
./scripts/lint-check
|
||||
|
||||
# 2. Home Assistant starts
|
||||
./scripts/develop
|
||||
# Watch for startup errors in logs
|
||||
|
||||
# 3. Integration loads
|
||||
# Check: Settings → Devices & Services → Tibber Prices
|
||||
# Verify: All entities appear
|
||||
|
||||
# 4. Basic functionality
|
||||
# Test: Data updates without errors
|
||||
# Check: Entity states update correctly
|
||||
```
|
||||
|
||||
### Comprehensive Testing (Final Phase)
|
||||
|
||||
After completing all phases:
|
||||
|
||||
- Test all entities (sensors, binary sensors)
|
||||
- Test configuration flow (add/modify/remove)
|
||||
- Test options flow (change settings)
|
||||
- Test services (custom service calls)
|
||||
- Test error handling (disconnect API, invalid data)
|
||||
- Test caching (restart HA, verify cache loads)
|
||||
- Test time-based updates (quarter-hour refresh)
|
||||
|
||||
## Common Pitfalls
|
||||
|
||||
### ❌ Skip Planning for Large Changes
|
||||
|
||||
**Problem:** "This seems straightforward, I'll just start coding..."
|
||||
|
||||
**Result:** Halfway through, realize the approach doesn't work. Wasted time.
|
||||
|
||||
**Solution:** If unsure, spend 30 minutes on a rough plan. Better to plan and discard than get stuck.
|
||||
|
||||
### ❌ Implement All Phases at Once
|
||||
|
||||
**Problem:** "I'll do all phases, then test everything..."
|
||||
|
||||
**Result:** 10+ files changed, 2000+ lines modified, hard to debug if something breaks.
|
||||
|
||||
**Solution:** Test after EVERY phase. Commit after each successful phase.
|
||||
|
||||
### ❌ Forget to Update Documentation
|
||||
|
||||
**Problem:** Code is refactored, but AGENTS.md and docs/ still reference old structure.
|
||||
|
||||
**Result:** AI/humans get confused by outdated documentation.
|
||||
|
||||
**Solution:** Include "Documentation Phase" at the end of every refactoring plan.
|
||||
|
||||
### ❌ Ignore the Planning Directory
|
||||
|
||||
**Problem:** "I'll just create the plan in docs/ directly..."
|
||||
|
||||
**Result:** Git history polluted with draft iterations, or pressure to "commit something" too early.
|
||||
|
||||
**Solution:** Always use `planning/` for work-in-progress. Move to `docs/` only when done.
|
||||
|
||||
## Integration with AI Development
|
||||
|
||||
This project uses AI heavily (GitHub Copilot, Claude). The planning process supports AI development:
|
||||
|
||||
**AI reads from:**
|
||||
|
||||
- `AGENTS.md` - Long-term memory, patterns, conventions (AI-focused)
|
||||
- `docs/development/` - Human-readable guides (human-focused)
|
||||
- `planning/` - Active refactoring plans (shared context)
|
||||
|
||||
**AI updates:**
|
||||
|
||||
- `AGENTS.md` - When patterns change
|
||||
- `planning/*.md` - During refactoring implementation
|
||||
- `docs/development/` - After successful completion
|
||||
|
||||
**Why separate AGENTS.md and docs/development/?**
|
||||
|
||||
- `AGENTS.md`: Technical, comprehensive, AI-optimized
|
||||
- `docs/development/`: Practical, focused, human-optimized
|
||||
- Both stay in sync but serve different audiences
|
||||
|
||||
See [AGENTS.md](../../AGENTS.md) section "Planning Major Refactorings" for AI-specific guidance.
|
||||
|
||||
## Tools and Resources
|
||||
|
||||
### Planning Directory
|
||||
|
||||
- `planning/` - Git-ignored workspace for drafts
|
||||
- `planning/README.md` - Detailed planning documentation
|
||||
- `planning/*.md` - Active refactoring plans
|
||||
|
||||
### Example Plans
|
||||
|
||||
- `docs/development/module-splitting-plan.md` - ✅ Completed, archived
|
||||
- `planning/config-flow-refactoring-plan.md` - 🔄 Planned (1013 lines → 4 modules)
|
||||
- `planning/binary-sensor-refactoring-plan.md` - 🔄 Planned (644 lines → 4 modules)
|
||||
- `planning/coordinator-refactoring-plan.md` - 🔄 Planned (1446 lines, high complexity)
|
||||
|
||||
### Helper Scripts
|
||||
|
||||
```bash
|
||||
./scripts/lint-check # Verify code quality
|
||||
./scripts/develop # Start HA for testing
|
||||
./scripts/lint # Auto-fix issues
|
||||
```
|
||||
|
||||
## FAQ
|
||||
|
||||
### Q: When should I create a plan vs. just start coding?
|
||||
|
||||
**A:** If you're asking this question, you probably need a plan. 😊
|
||||
|
||||
Simple rule: If you can't describe the entire change in 3 sentences, create a plan.
|
||||
|
||||
### Q: How detailed should the plan be?
|
||||
|
||||
**A:** Detailed enough to execute without major surprises, but not a line-by-line script.
|
||||
|
||||
Good plan level:
|
||||
|
||||
- Lists all files affected (CREATE/MODIFY/DELETE)
|
||||
- Defines phases with clear boundaries
|
||||
- Includes testing strategy
|
||||
- Estimates time per phase
|
||||
|
||||
Too detailed:
|
||||
|
||||
- Exact code snippets for every change
|
||||
- Line-by-line instructions
|
||||
|
||||
Too vague:
|
||||
|
||||
- "Refactor sensor.py to be better"
|
||||
- No phase breakdown
|
||||
- No testing strategy
|
||||
|
||||
### Q: What if the plan changes during implementation?
|
||||
|
||||
**A:** Update the plan! Planning documents are living documents.
|
||||
|
||||
If you discover:
|
||||
|
||||
- Better approach → Update "Proposed Solution"
|
||||
- More phases needed → Add to "Migration Strategy"
|
||||
- New risks → Update "Risks & Mitigation"
|
||||
|
||||
Document WHY the plan changed (helps future refactorings).
|
||||
|
||||
### Q: Should every refactoring follow this process?
|
||||
|
||||
**A:** No! Use judgment:
|
||||
|
||||
- **Small changes (<100 lines, clear approach)**: Just do it, no plan needed
|
||||
- **Medium changes (unclear scope)**: Write rough outline, refine if needed
|
||||
- **Large changes (>500 lines, >5 files)**: Full planning process
|
||||
|
||||
### Q: How do I know when a refactoring is successful?
|
||||
|
||||
**A:** Check the "Success Criteria" from your plan:
|
||||
|
||||
Typical criteria:
|
||||
|
||||
- ✅ All linting checks pass
|
||||
- ✅ HA starts without errors
|
||||
- ✅ All entities functional
|
||||
- ✅ No regressions (existing features work)
|
||||
- ✅ Code easier to understand/modify
|
||||
- ✅ Documentation updated
|
||||
|
||||
If you can't tick all boxes, the refactoring isn't done.
|
||||
|
||||
## Summary
|
||||
|
||||
**Key takeaways:**
|
||||
|
||||
1. **Plan when scope is unclear** (>500 lines, >5 files, breaking changes)
|
||||
2. **Use planning/ directory** for free iteration (git-ignored)
|
||||
3. **Work in phases** and test after each phase
|
||||
4. **Document file lifecycle** (CREATE/MODIFY/DELETE/RENAME)
|
||||
5. **Update documentation** after completion (AGENTS.md, docs/)
|
||||
6. **Archive or delete** plan after implementation
|
||||
|
||||
**Remember:** Good planning prevents half-finished refactorings and makes rollback easier when things go wrong.
|
||||
|
||||
---
|
||||
|
||||
**Next steps:**
|
||||
|
||||
- Read `planning/README.md` for detailed template
|
||||
- Check `docs/development/module-splitting-plan.md` for real example
|
||||
- Browse `planning/` for active refactoring plans
|
||||
163
planning/README.md
Normal file
163
planning/README.md
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
# Planning Directory
|
||||
|
||||
**Purpose**: Work-in-progress planning documents for major refactorings and architectural changes.
|
||||
|
||||
**Status**: 🚫 **GIT-IGNORED** (files in this directory are NOT committed to the repository)
|
||||
|
||||
---
|
||||
|
||||
## Why This Directory Exists
|
||||
|
||||
Large-scale refactorings require careful planning before implementation. This directory provides a space for:
|
||||
|
||||
1. **Detailed planning documents** - Breaking down complex changes into phases
|
||||
2. **Architecture proposals** - Evaluating different approaches
|
||||
3. **Migration strategies** - Step-by-step transformation plans
|
||||
4. **Risk analysis** - Identifying potential issues before coding
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
planning/
|
||||
├── README.md # This file
|
||||
├── <feature>-refactoring-plan.md # Active planning documents
|
||||
└── archive/ # Completed plans (optional)
|
||||
```
|
||||
|
||||
## Document Lifecycle
|
||||
|
||||
### 1. **Planning Phase** (WIP, in planning/)
|
||||
|
||||
- Document created in `planning/`
|
||||
- Iterative refinement with AI assistance
|
||||
- Multiple revisions until plan is solid
|
||||
- **NOT committed to git** (allows messy iteration)
|
||||
|
||||
### 2. **Review Phase** (Ready for implementation)
|
||||
|
||||
- Plan is reviewed and finalized
|
||||
- Decision: Implement or Archive
|
||||
|
||||
### 3. **Implementation Phase** (Active work)
|
||||
|
||||
- Plan used as reference during implementation
|
||||
- Can be updated as issues are discovered
|
||||
- Still in `planning/` until complete
|
||||
|
||||
### 4. **Completion Phase** (Done)
|
||||
|
||||
- **Option A**: Move to `docs/development/` as historical reference
|
||||
|
||||
- Rename: `planning/config-flow-refactoring-plan.md` → `docs/development/config-flow-refactoring.md`
|
||||
- Update status to "✅ COMPLETED"
|
||||
- Commit to repository as documentation
|
||||
|
||||
- **Option B**: Delete if superseded by code/docs
|
||||
|
||||
- Plan served its purpose
|
||||
- Code and AGENTS.md are the source of truth
|
||||
|
||||
- **Option C**: Archive in `planning/archive/`
|
||||
- Keep for reference but don't commit
|
||||
- Useful for "why we didn't do X" decisions
|
||||
|
||||
## Planning Document Template
|
||||
|
||||
See `docs/development/module-splitting-plan.md` for a successful example of a completed plan that was moved to documentation.
|
||||
|
||||
### Required Sections
|
||||
|
||||
1. **Status & Metadata**
|
||||
|
||||
```markdown
|
||||
**Status**: 🔄 PLANNING | 🚧 IN PROGRESS | ✅ COMPLETED | ❌ CANCELLED
|
||||
**Created**: YYYY-MM-DD
|
||||
**Last Updated**: YYYY-MM-DD
|
||||
```
|
||||
|
||||
2. **Problem Statement**
|
||||
|
||||
- What's the issue?
|
||||
- Why does it need fixing?
|
||||
- Current pain points
|
||||
|
||||
3. **Proposed Solution**
|
||||
|
||||
- High-level approach
|
||||
- File structure (before/after)
|
||||
- Module responsibilities
|
||||
|
||||
4. **Migration Strategy**
|
||||
|
||||
- Phase-by-phase breakdown
|
||||
- Dependencies between phases
|
||||
- Testing checkpoints
|
||||
|
||||
5. **Risks & Mitigation**
|
||||
|
||||
- What could go wrong?
|
||||
- How to prevent it?
|
||||
- Rollback strategy
|
||||
|
||||
6. **Success Criteria**
|
||||
- How do we know it worked?
|
||||
- Metrics to measure
|
||||
- Testing requirements
|
||||
|
||||
## Active Plans
|
||||
|
||||
<!-- Update this list as plans are created/completed -->
|
||||
|
||||
- None (all previous plans completed and moved to docs/)
|
||||
|
||||
## Best Practices
|
||||
|
||||
### ✅ DO:
|
||||
|
||||
- Iterate freely - planning/ is git-ignored for a reason
|
||||
- Break complex changes into clear phases
|
||||
- Document file lifecycle (CREATE/MODIFY/DELETE/RENAME)
|
||||
- Include code examples and patterns
|
||||
- Estimate time per phase
|
||||
- Plan testing after each phase
|
||||
|
||||
### ❌ DON'T:
|
||||
|
||||
- Start coding before plan is solid
|
||||
- Skip the "Why?" section
|
||||
- Forget to update status as you progress
|
||||
- Commit planning/ files to git (they're ignored!)
|
||||
- Over-plan simple changes (some things don't need a plan)
|
||||
|
||||
## When to Create a Planning Document
|
||||
|
||||
**Create a plan when:**
|
||||
|
||||
- 🔴 Major refactoring (>5 files, >500 lines changed)
|
||||
- 🔴 Architectural changes (new packages, restructuring)
|
||||
- 🔴 Breaking changes (API changes, config format changes)
|
||||
- 🟡 Complex features (multiple moving parts, unclear approach)
|
||||
|
||||
**Skip planning for:**
|
||||
|
||||
- 🟢 Bug fixes (straightforward)
|
||||
- 🟢 Small features (<3 files, clear approach)
|
||||
- 🟢 Documentation updates
|
||||
- 🟢 Cosmetic changes (formatting, renaming)
|
||||
|
||||
## Integration with AGENTS.md
|
||||
|
||||
When planning is complete and implementation successful:
|
||||
|
||||
1. Update `AGENTS.md` with new patterns/conventions
|
||||
2. Move plan to `docs/development/` if it has lasting value
|
||||
3. Delete or archive if superseded by docs
|
||||
|
||||
The planning document and `AGENTS.md` serve different purposes:
|
||||
|
||||
- **Planning doc**: Temporary guide DURING transformation
|
||||
- **AGENTS.md**: Permanent guide AFTER transformation
|
||||
|
||||
---
|
||||
|
||||
**Remember**: Planning documents are throwaway scaffolding. The real documentation lives in `AGENTS.md` and `docs/`.
|
||||
Loading…
Reference in a new issue