Initial commit
This commit is contained in:
255
commands/plan-do-check-act.md
Normal file
255
commands/plan-do-check-act.md
Normal file
@@ -0,0 +1,255 @@
|
||||
---
|
||||
description: Iterative PDCA cycle for systematic experimentation and continuous improvement
|
||||
argument-hint: Optional improvement goal or problem to address
|
||||
---
|
||||
|
||||
# Plan-Do-Check-Act (PDCA)
|
||||
|
||||
Apply PDCA cycle for continuous improvement through iterative problem-solving and process optimization.
|
||||
|
||||
## Description
|
||||
|
||||
Four-phase iterative cycle: Plan (identify and analyze), Do (implement changes), Check (measure results), Act (standardize or adjust). Enables systematic experimentation and improvement.
|
||||
|
||||
## Usage
|
||||
|
||||
`/plan-do-check-act [improvement_goal]`
|
||||
|
||||
## Variables
|
||||
|
||||
- GOAL: Improvement target or problem to address (default: prompt for input)
|
||||
- CYCLE_NUMBER: Which PDCA iteration (default: 1)
|
||||
|
||||
## Steps
|
||||
|
||||
### Phase 1: PLAN
|
||||
|
||||
1. Define the problem or improvement goal
|
||||
2. Analyze current state (baseline metrics)
|
||||
3. Identify root causes (use `/why` or `/cause-and-effect`)
|
||||
4. Develop hypothesis: "If we change X, Y will improve"
|
||||
5. Design experiment: what to change, how to measure success
|
||||
6. Set success criteria (measurable targets)
|
||||
|
||||
### Phase 2: DO
|
||||
|
||||
1. Implement the planned change (small scale first)
|
||||
2. Document what was actually done
|
||||
3. Record any deviations from plan
|
||||
4. Collect data throughout implementation
|
||||
5. Note unexpected observations
|
||||
|
||||
### Phase 3: CHECK
|
||||
|
||||
1. Measure results against success criteria
|
||||
2. Compare to baseline (before vs. after)
|
||||
3. Analyze data: did hypothesis hold?
|
||||
4. Identify what worked and what didn't
|
||||
5. Document learnings and insights
|
||||
|
||||
### Phase 4: ACT
|
||||
|
||||
1. **If successful**: Standardize the change
|
||||
- Update documentation
|
||||
- Train team
|
||||
- Create checklist/automation
|
||||
- Monitor for regression
|
||||
2. **If unsuccessful**: Learn and adjust
|
||||
- Understand why it failed
|
||||
- Refine hypothesis
|
||||
- Start new PDCA cycle with adjusted plan
|
||||
3. **If partially successful**:
|
||||
- Standardize what worked
|
||||
- Plan next cycle for remaining issues
|
||||
|
||||
## Examples
|
||||
|
||||
### Example 1: Reducing Build Time
|
||||
|
||||
```
|
||||
CYCLE 1
|
||||
───────
|
||||
PLAN:
|
||||
Problem: Docker build takes 45 minutes
|
||||
Current State: Full rebuild every time, no layer caching
|
||||
Root Cause: Package manager cache not preserved between builds
|
||||
Hypothesis: Caching dependencies will reduce build to <10 minutes
|
||||
Change: Add layer caching for package.json + node_modules
|
||||
Success Criteria: Build time <10 minutes on unchanged dependencies
|
||||
|
||||
DO:
|
||||
- Restructured Dockerfile: COPY package*.json before src files
|
||||
- Added .dockerignore for node_modules
|
||||
- Configured CI cache for Docker layers
|
||||
- Tested on 3 builds
|
||||
|
||||
CHECK:
|
||||
Results:
|
||||
- Unchanged dependencies: 8 minutes ✓ (was 45)
|
||||
- Changed dependencies: 12 minutes (was 45)
|
||||
- Fresh builds: 45 minutes (same, expected)
|
||||
Analysis: 82% reduction on cached builds, hypothesis confirmed
|
||||
|
||||
ACT:
|
||||
Standardize:
|
||||
✓ Merged Dockerfile changes
|
||||
✓ Updated CI pipeline config
|
||||
✓ Documented in README
|
||||
✓ Added build time monitoring
|
||||
|
||||
New Problem: 12 minutes still slow when deps change
|
||||
→ Start CYCLE 2
|
||||
|
||||
|
||||
CYCLE 2
|
||||
───────
|
||||
PLAN:
|
||||
Problem: Build still 12 min when dependencies change
|
||||
Current State: npm install rebuilds all packages
|
||||
Root Cause: Some packages compile from source
|
||||
Hypothesis: Pre-built binaries will reduce to <5 minutes
|
||||
Change: Use npm ci instead of install, configure binary mirrors
|
||||
Success Criteria: Build <5 minutes on dependency changes
|
||||
|
||||
DO:
|
||||
- Changed to npm ci (uses package-lock.json)
|
||||
- Added .npmrc with binary mirror configs
|
||||
- Tested across 5 dependency updates
|
||||
|
||||
CHECK:
|
||||
Results:
|
||||
- Dependency changes: 4.5 minutes ✓ (was 12)
|
||||
- Compilation errors reduced to 0 (was 3)
|
||||
Analysis: npm ci faster + more reliable, hypothesis confirmed
|
||||
|
||||
ACT:
|
||||
Standardize:
|
||||
✓ Use npm ci everywhere (local + CI)
|
||||
✓ Committed .npmrc
|
||||
✓ Updated developer onboarding docs
|
||||
|
||||
Total improvement: 45min → 4.5min (90% reduction)
|
||||
✓ PDCA complete, monitor for 2 weeks
|
||||
```
|
||||
|
||||
### Example 2: Reducing Production Bugs
|
||||
|
||||
```
|
||||
CYCLE 1
|
||||
───────
|
||||
PLAN:
|
||||
Problem: 8 production bugs per month
|
||||
Current State: Manual testing only, no automated tests
|
||||
Root Cause: Regressions not caught before release
|
||||
Hypothesis: Adding integration tests will reduce bugs by 50%
|
||||
Change: Implement integration test suite for critical paths
|
||||
Success Criteria: <4 bugs per month after 1 month
|
||||
|
||||
DO:
|
||||
Week 1-2: Wrote integration tests for:
|
||||
- User authentication flow
|
||||
- Payment processing
|
||||
- Data export
|
||||
Week 3: Set up CI to run tests
|
||||
Week 4: Team training on test writing
|
||||
Coverage: 3 critical paths (was 0)
|
||||
|
||||
CHECK:
|
||||
Results after 1 month:
|
||||
- Production bugs: 6 (was 8)
|
||||
- Bugs caught in CI: 4
|
||||
- Test failures (false positives): 2
|
||||
Analysis: 25% reduction, not 50% target
|
||||
Insight: Bugs are in areas without tests yet
|
||||
|
||||
ACT:
|
||||
Partially successful:
|
||||
✓ Keep existing tests (prevented 4 bugs)
|
||||
✓ Fix flaky tests
|
||||
|
||||
Adjust for CYCLE 2:
|
||||
- Expand test coverage to all user flows
|
||||
- Add tests for bug-prone areas
|
||||
→ Start CYCLE 2
|
||||
|
||||
|
||||
CYCLE 2
|
||||
───────
|
||||
PLAN:
|
||||
Problem: Still 6 bugs/month, need <4
|
||||
Current State: 3 critical paths tested, 12 paths total
|
||||
Root Cause: UI interaction bugs not covered by integration tests
|
||||
Hypothesis: E2E tests for all user flows will reach <4 bugs
|
||||
Change: Add E2E tests for remaining 9 flows
|
||||
Success Criteria: <4 bugs per month, 80% coverage
|
||||
|
||||
DO:
|
||||
Week 1-3: Added E2E tests for all user flows
|
||||
Week 4: Set up visual regression testing
|
||||
Coverage: 12/12 user flows (was 3/12)
|
||||
|
||||
CHECK:
|
||||
Results after 1 month:
|
||||
- Production bugs: 3 ✓ (was 6)
|
||||
- Bugs caught in CI: 8 (was 4)
|
||||
- Test maintenance time: 3 hours/week
|
||||
Analysis: Target achieved! 62% reduction from baseline
|
||||
|
||||
ACT:
|
||||
Standardize:
|
||||
✓ Made tests required for all PRs
|
||||
✓ Added test checklist to PR template
|
||||
✓ Scheduled weekly test review
|
||||
✓ Created runbook for test maintenance
|
||||
|
||||
Monitor: Track bug rate and test effectiveness monthly
|
||||
✓ PDCA complete
|
||||
```
|
||||
|
||||
### Example 3: Improving Code Review Speed
|
||||
|
||||
```
|
||||
PLAN:
|
||||
Problem: PRs take 3 days average to merge
|
||||
Current State: Manual review, no automation
|
||||
Root Cause: Reviewers wait to see if CI passes before reviewing
|
||||
Hypothesis: Auto-review + faster CI will reduce to <1 day
|
||||
Change: Add automated checks + split long CI jobs
|
||||
Success Criteria: Average time to merge <1 day (8 hours)
|
||||
|
||||
DO:
|
||||
- Set up automated linter checks (fail fast)
|
||||
- Split test suite into parallel jobs
|
||||
- Added PR template with self-review checklist
|
||||
- CI time: 45min → 15min
|
||||
- Tracked PR merge time for 2 weeks
|
||||
|
||||
CHECK:
|
||||
Results:
|
||||
- Average time to merge: 1.5 days (was 3)
|
||||
- Time waiting for CI: 15min (was 45min)
|
||||
- Time waiting for review: 1.3 days (was 2+ days)
|
||||
Analysis: CI faster, but review still bottleneck
|
||||
|
||||
ACT:
|
||||
Partially successful:
|
||||
✓ Keep fast CI improvements
|
||||
|
||||
Insight: Real bottleneck is reviewer availability, not CI
|
||||
Adjust for new PDCA:
|
||||
- Focus on reviewer availability/notification
|
||||
- Consider rotating review assignments
|
||||
→ Start new PDCA cycle with different hypothesis
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- Start with small, measurable changes (not big overhauls)
|
||||
- PDCA is iterative—multiple cycles normal
|
||||
- Failed experiments are learning opportunities
|
||||
- Document everything: easier to see patterns across cycles
|
||||
- Success criteria must be measurable (not subjective)
|
||||
- Phase 4 "Act" determines next cycle or completion
|
||||
- If stuck after 3 cycles, revisit root cause analysis
|
||||
- PDCA works for technical and process improvements
|
||||
- Use `/analyse-problem` (A3) for comprehensive documentation
|
||||
Reference in New Issue
Block a user