anvil-dev-framework 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +719 -0
- package/VERSION +1 -0
- package/docs/ANVIL-REPO-IMPLEMENTATION-PLAN.md +441 -0
- package/docs/FIRST-SKILL-TUTORIAL.md +408 -0
- package/docs/INSTALLATION-RETRO-NOTES.md +458 -0
- package/docs/INSTALLATION.md +984 -0
- package/docs/anvil-hud.md +469 -0
- package/docs/anvil-init.md +255 -0
- package/docs/anvil-state.md +210 -0
- package/docs/boris-cherny-ralph-wiggum-insights.md +608 -0
- package/docs/command-reference.md +2022 -0
- package/docs/hooks-tts.md +368 -0
- package/docs/implementation-guide.md +810 -0
- package/docs/linear-github-integration.md +247 -0
- package/docs/local-issues.md +677 -0
- package/docs/patterns/README.md +419 -0
- package/docs/planning-responsibilities.md +139 -0
- package/docs/session-workflow.md +573 -0
- package/docs/simplification-plan-template.md +297 -0
- package/docs/simplification-principles.md +129 -0
- package/docs/specifications/CCS-RALPH-INTEGRATION-DESIGN.md +633 -0
- package/docs/specifications/CCS-RESEARCH-REPORT.md +169 -0
- package/docs/specifications/PLAN-ANV-verification-ralph-wiggum.md +403 -0
- package/docs/specifications/PLAN-parallel-tracks-anvil-memory-ccs.md +494 -0
- package/docs/specifications/SPEC-ANV-VRW/component-01-verify.md +208 -0
- package/docs/specifications/SPEC-ANV-VRW/component-02-stop-gate.md +226 -0
- package/docs/specifications/SPEC-ANV-VRW/component-03-posttooluse.md +209 -0
- package/docs/specifications/SPEC-ANV-VRW/component-04-ralph-wiggum.md +604 -0
- package/docs/specifications/SPEC-ANV-VRW/component-05-atomic-actions.md +311 -0
- package/docs/specifications/SPEC-ANV-VRW/component-06-verify-subagent.md +264 -0
- package/docs/specifications/SPEC-ANV-VRW/component-07-claude-md.md +363 -0
- package/docs/specifications/SPEC-ANV-VRW/index.md +182 -0
- package/docs/specifications/SPEC-ANV-anvil-memory.md +573 -0
- package/docs/specifications/SPEC-ANV-context-checkpoints.md +781 -0
- package/docs/specifications/SPEC-ANV-verification-ralph-wiggum.md +789 -0
- package/docs/sync.md +122 -0
- package/global/CLAUDE.md +140 -0
- package/global/agents/verify-app.md +164 -0
- package/global/commands/anvil-settings.md +527 -0
- package/global/commands/anvil-sync.md +121 -0
- package/global/commands/change.md +197 -0
- package/global/commands/clarify.md +252 -0
- package/global/commands/cleanup.md +292 -0
- package/global/commands/commit-push-pr.md +207 -0
- package/global/commands/decay-review.md +127 -0
- package/global/commands/discover.md +158 -0
- package/global/commands/doc-coverage.md +122 -0
- package/global/commands/evidence.md +307 -0
- package/global/commands/explore.md +121 -0
- package/global/commands/force-exit.md +135 -0
- package/global/commands/handoff.md +191 -0
- package/global/commands/healthcheck.md +302 -0
- package/global/commands/hud.md +84 -0
- package/global/commands/insights.md +319 -0
- package/global/commands/linear-setup.md +184 -0
- package/global/commands/lint-fix.md +198 -0
- package/global/commands/orient.md +510 -0
- package/global/commands/plan.md +228 -0
- package/global/commands/ralph.md +346 -0
- package/global/commands/ready.md +182 -0
- package/global/commands/release.md +305 -0
- package/global/commands/retro.md +96 -0
- package/global/commands/shard.md +166 -0
- package/global/commands/spec.md +227 -0
- package/global/commands/sprint.md +184 -0
- package/global/commands/tasks.md +228 -0
- package/global/commands/test-and-commit.md +151 -0
- package/global/commands/validate.md +132 -0
- package/global/commands/verify.md +251 -0
- package/global/commands/weekly-review.md +156 -0
- package/global/hooks/__pycache__/ralph_context_monitor.cpython-314.pyc +0 -0
- package/global/hooks/__pycache__/statusline_agent_sync.cpython-314.pyc +0 -0
- package/global/hooks/anvil_memory_observe.ts +322 -0
- package/global/hooks/anvil_memory_session.ts +166 -0
- package/global/hooks/anvil_memory_stop.ts +187 -0
- package/global/hooks/parse_transcript.py +116 -0
- package/global/hooks/post_merge_cleanup.sh +132 -0
- package/global/hooks/post_tool_format.sh +215 -0
- package/global/hooks/ralph_context_monitor.py +240 -0
- package/global/hooks/ralph_stop.sh +502 -0
- package/global/hooks/statusline.sh +1110 -0
- package/global/hooks/statusline_agent_sync.py +224 -0
- package/global/hooks/stop_gate.sh +250 -0
- package/global/lib/.claude/anvil-state.json +21 -0
- package/global/lib/__pycache__/agent_registry.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/claim_service.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/coderabbit_service.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/config_service.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/coordination_service.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/doc_coverage_service.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/gate_logger.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/github_service.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/hygiene_service.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/issue_models.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/issue_provider.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/linear_data_service.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/linear_provider.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/local_provider.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/quality_service.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/ralph_state.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/state_manager.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/transcript_parser.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/verification_runner.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/verify_iteration.cpython-314.pyc +0 -0
- package/global/lib/__pycache__/verify_subagent.cpython-314.pyc +0 -0
- package/global/lib/agent_registry.py +995 -0
- package/global/lib/anvil-state.sh +435 -0
- package/global/lib/claim_service.py +515 -0
- package/global/lib/coderabbit_service.py +314 -0
- package/global/lib/config_service.py +423 -0
- package/global/lib/coordination_service.py +331 -0
- package/global/lib/doc_coverage_service.py +1305 -0
- package/global/lib/gate_logger.py +316 -0
- package/global/lib/github_service.py +310 -0
- package/global/lib/handoff_generator.py +775 -0
- package/global/lib/hygiene_service.py +712 -0
- package/global/lib/issue_models.py +257 -0
- package/global/lib/issue_provider.py +339 -0
- package/global/lib/linear_data_service.py +210 -0
- package/global/lib/linear_provider.py +987 -0
- package/global/lib/linear_provider.py.backup +671 -0
- package/global/lib/local_provider.py +486 -0
- package/global/lib/orient_fast.py +457 -0
- package/global/lib/quality_service.py +470 -0
- package/global/lib/ralph_prompt_generator.py +563 -0
- package/global/lib/ralph_state.py +1202 -0
- package/global/lib/state_manager.py +417 -0
- package/global/lib/transcript_parser.py +597 -0
- package/global/lib/verification_runner.py +557 -0
- package/global/lib/verify_iteration.py +490 -0
- package/global/lib/verify_subagent.py +250 -0
- package/global/skills/README.md +155 -0
- package/global/skills/quality-gates/SKILL.md +252 -0
- package/global/skills/skill-template/SKILL.md +109 -0
- package/global/skills/testing-strategies/SKILL.md +337 -0
- package/global/templates/CHANGE-template.md +105 -0
- package/global/templates/HANDOFF-template.md +63 -0
- package/global/templates/PLAN-template.md +111 -0
- package/global/templates/SPEC-template.md +93 -0
- package/global/templates/ralph/PROMPT.md.template +89 -0
- package/global/templates/ralph/fix_plan.md.template +31 -0
- package/global/templates/ralph/progress.txt.template +23 -0
- package/global/tests/__pycache__/test_doc_coverage.cpython-314.pyc +0 -0
- package/global/tests/test_doc_coverage.py +520 -0
- package/global/tests/test_issue_models.py +299 -0
- package/global/tests/test_local_provider.py +323 -0
- package/global/tools/README.md +178 -0
- package/global/tools/__pycache__/anvil-hud.cpython-314.pyc +0 -0
- package/global/tools/anvil-hud.py +3622 -0
- package/global/tools/anvil-hud.py.bak +3318 -0
- package/global/tools/anvil-issue.py +432 -0
- package/global/tools/anvil-memory/CLAUDE.md +49 -0
- package/global/tools/anvil-memory/README.md +42 -0
- package/global/tools/anvil-memory/bun.lock +25 -0
- package/global/tools/anvil-memory/bunfig.toml +9 -0
- package/global/tools/anvil-memory/package.json +23 -0
- package/global/tools/anvil-memory/src/__tests__/ccs/context-monitor.test.ts +535 -0
- package/global/tools/anvil-memory/src/__tests__/ccs/edge-cases.test.ts +645 -0
- package/global/tools/anvil-memory/src/__tests__/ccs/fixtures.ts +363 -0
- package/global/tools/anvil-memory/src/__tests__/ccs/index.ts +8 -0
- package/global/tools/anvil-memory/src/__tests__/ccs/integration.test.ts +417 -0
- package/global/tools/anvil-memory/src/__tests__/ccs/prompt-generator.test.ts +571 -0
- package/global/tools/anvil-memory/src/__tests__/ccs/ralph-stop.test.ts +440 -0
- package/global/tools/anvil-memory/src/__tests__/ccs/test-utils.ts +252 -0
- package/global/tools/anvil-memory/src/__tests__/commands.test.ts +657 -0
- package/global/tools/anvil-memory/src/__tests__/db.test.ts +641 -0
- package/global/tools/anvil-memory/src/__tests__/hooks.test.ts +272 -0
- package/global/tools/anvil-memory/src/__tests__/performance.test.ts +427 -0
- package/global/tools/anvil-memory/src/__tests__/test-utils.ts +113 -0
- package/global/tools/anvil-memory/src/commands/checkpoint.ts +197 -0
- package/global/tools/anvil-memory/src/commands/get.ts +115 -0
- package/global/tools/anvil-memory/src/commands/init.ts +94 -0
- package/global/tools/anvil-memory/src/commands/observe.ts +163 -0
- package/global/tools/anvil-memory/src/commands/search.ts +112 -0
- package/global/tools/anvil-memory/src/db.ts +638 -0
- package/global/tools/anvil-memory/src/index.ts +205 -0
- package/global/tools/anvil-memory/src/types.ts +122 -0
- package/global/tools/anvil-memory/tsconfig.json +29 -0
- package/global/tools/ralph-loop.sh +359 -0
- package/package.json +45 -0
- package/scripts/anvil +822 -0
- package/scripts/extract_patterns.py +222 -0
- package/scripts/init-project.sh +541 -0
- package/scripts/install.sh +229 -0
- package/scripts/postinstall.js +41 -0
- package/scripts/rollback.sh +188 -0
- package/scripts/sync.sh +623 -0
- package/scripts/test-statusline.sh +248 -0
- package/scripts/update_claude_md.py +224 -0
- package/scripts/verify.sh +255 -0
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
# /verify - Verification Feedback Loop
|
|
2
|
+
|
|
3
|
+
> Run verification suite with automatic iteration on failure. This is the highest-impact technique from Boris Cherny's methodology.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
- After implementing a feature or fix
|
|
7
|
+
- Before committing changes
|
|
8
|
+
- When tests, lint, or types are failing
|
|
9
|
+
- As part of any completion workflow
|
|
10
|
+
|
|
11
|
+
## Why This Matters
|
|
12
|
+
> Boris Cherny: "Verification is #1... 2-3x quality improvement"
|
|
13
|
+
|
|
14
|
+
Traditional workflow: Code → Commit → Find errors later
|
|
15
|
+
Verification workflow: Code → Verify → Fix → Verify → Commit clean
|
|
16
|
+
|
|
17
|
+
The iteration loop catches issues immediately, reducing rework.
|
|
18
|
+
|
|
19
|
+
## Arguments
|
|
20
|
+
- (none) - Run full verification suite
|
|
21
|
+
- `--test-only` - Run tests only, skip lint/types
|
|
22
|
+
- `--lint-only` - Run lint only
|
|
23
|
+
- `--quick` - Skip type checking (faster iteration)
|
|
24
|
+
- `--max N` - Override max iterations (default: 3)
|
|
25
|
+
|
|
26
|
+
## Execution Steps
|
|
27
|
+
|
|
28
|
+
### Step 1: Run Verification Suite
|
|
29
|
+
Execute all configured verification commands in order:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Detect project type and run appropriate commands
|
|
33
|
+
# Node.js projects
|
|
34
|
+
npm test
|
|
35
|
+
npm run lint
|
|
36
|
+
npm run typecheck
|
|
37
|
+
|
|
38
|
+
# Python projects
|
|
39
|
+
pytest
|
|
40
|
+
ruff check .
|
|
41
|
+
mypy .
|
|
42
|
+
|
|
43
|
+
# Or custom commands from .claude/settings.yaml
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Step 2: Analyze Results
|
|
47
|
+
**If ALL pass:**
|
|
48
|
+
```
|
|
49
|
+
✅ Verification passed
|
|
50
|
+
Tests: 47 passed
|
|
51
|
+
Lint: clean
|
|
52
|
+
Types: clean
|
|
53
|
+
|
|
54
|
+
Ready for commit.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**If ANY fail:**
|
|
58
|
+
```
|
|
59
|
+
❌ Verification failed - 3 test failures
|
|
60
|
+
|
|
61
|
+
Analyzing failures...
|
|
62
|
+
- src/auth/login.test.ts:45 - Expected 200, got 401
|
|
63
|
+
- src/auth/login.test.ts:67 - Timeout after 5000ms
|
|
64
|
+
- src/utils/format.test.ts:12 - undefined is not a function
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Step 3: Iterate on Failures (max 3 times)
|
|
68
|
+
For each failing file:
|
|
69
|
+
1. **Re-read** the failing file to get current state
|
|
70
|
+
2. **Analyze** the specific error message and location
|
|
71
|
+
3. **Apply** a targeted fix (minimal change)
|
|
72
|
+
4. **Re-run** only the failing command
|
|
73
|
+
5. **Repeat** until pass or max iterations reached
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Attempting fix (iteration 1/3)...
|
|
77
|
+
→ Reading src/auth/login.test.ts
|
|
78
|
+
→ Issue: Mock not returning expected status
|
|
79
|
+
→ Fix: Update mock return value
|
|
80
|
+
→ Re-running tests...
|
|
81
|
+
|
|
82
|
+
Attempting fix (iteration 2/3)...
|
|
83
|
+
→ Reading src/utils/format.test.ts
|
|
84
|
+
→ Issue: Function renamed but test not updated
|
|
85
|
+
→ Fix: Update test to use new function name
|
|
86
|
+
→ Re-running tests...
|
|
87
|
+
|
|
88
|
+
✅ Verification passed after 2 iterations
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Step 4: Report Final State
|
|
92
|
+
|
|
93
|
+
**Success:**
|
|
94
|
+
```
|
|
95
|
+
✅ Verification passed
|
|
96
|
+
Iterations: 2
|
|
97
|
+
Tests: 47 passed
|
|
98
|
+
Lint: clean
|
|
99
|
+
Types: clean
|
|
100
|
+
|
|
101
|
+
All checks passed. Ready for commit.
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Failure after max iterations:**
|
|
105
|
+
```
|
|
106
|
+
⚠️ Verification failed after 3 attempts
|
|
107
|
+
|
|
108
|
+
Remaining issues:
|
|
109
|
+
1. src/auth/login.test.ts:67 - Timeout (may need mock adjustment)
|
|
110
|
+
2. Integration test requires live database
|
|
111
|
+
|
|
112
|
+
These issues need manual intervention.
|
|
113
|
+
Suggested actions:
|
|
114
|
+
- Review timeout configuration
|
|
115
|
+
- Check if test requires external dependencies
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Configuration
|
|
119
|
+
|
|
120
|
+
Project-specific settings in `.claude/settings.yaml`:
|
|
121
|
+
|
|
122
|
+
```yaml
|
|
123
|
+
verification:
|
|
124
|
+
commands:
|
|
125
|
+
test: "npm test" # or "pytest", "cargo test"
|
|
126
|
+
lint: "npm run lint" # or "ruff check .", "cargo clippy"
|
|
127
|
+
types: "npm run typecheck" # or "mypy .", "cargo check"
|
|
128
|
+
max_iterations: 3
|
|
129
|
+
required_for_completion: true
|
|
130
|
+
timeout_seconds: 300
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Detecting Project Type
|
|
134
|
+
|
|
135
|
+
If no config exists, auto-detect:
|
|
136
|
+
|
|
137
|
+
| File Exists | Project Type | Commands |
|
|
138
|
+
|-------------|--------------|----------|
|
|
139
|
+
| `package.json` | Node.js | npm test, npm run lint, npm run typecheck |
|
|
140
|
+
| `pyproject.toml` | Python | pytest, ruff check, mypy |
|
|
141
|
+
| `Cargo.toml` | Rust | cargo test, cargo clippy, cargo check |
|
|
142
|
+
| `go.mod` | Go | go test ./..., golangci-lint run |
|
|
143
|
+
|
|
144
|
+
## Anti-Patterns
|
|
145
|
+
|
|
146
|
+
| Don't | Do Instead |
|
|
147
|
+
|-------|------------|
|
|
148
|
+
| ❌ Make broad changes during fix | ✅ Make minimal, targeted fixes |
|
|
149
|
+
| ❌ Continue past max iterations | ✅ Escalate and ask for help |
|
|
150
|
+
| ❌ Ignore failing checks | ✅ Address every failure |
|
|
151
|
+
| ❌ Change unrelated code | ✅ Only fix the specific error |
|
|
152
|
+
| ❌ Skip verification to save time | ✅ Always verify before commit |
|
|
153
|
+
| ❌ Commit with failing tests | ✅ Fix all issues first |
|
|
154
|
+
|
|
155
|
+
## Examples
|
|
156
|
+
|
|
157
|
+
### Basic Usage
|
|
158
|
+
```
|
|
159
|
+
User: /verify
|
|
160
|
+
|
|
161
|
+
Claude: Running verification suite...
|
|
162
|
+
✅ Verification passed
|
|
163
|
+
Tests: 47 passed
|
|
164
|
+
Lint: clean
|
|
165
|
+
Types: clean
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### With Failures
|
|
169
|
+
```
|
|
170
|
+
User: /verify
|
|
171
|
+
|
|
172
|
+
Claude: Running verification suite...
|
|
173
|
+
❌ 2 test failures detected
|
|
174
|
+
|
|
175
|
+
Attempting fix (iteration 1/3)...
|
|
176
|
+
→ Fixed missing mock in auth.test.ts
|
|
177
|
+
|
|
178
|
+
Re-running tests...
|
|
179
|
+
✅ Verification passed after 1 iteration
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Quick Mode
|
|
183
|
+
```
|
|
184
|
+
User: /verify --quick
|
|
185
|
+
|
|
186
|
+
Claude: Running quick verification (no type check)...
|
|
187
|
+
✅ Tests: 47 passed
|
|
188
|
+
✅ Lint: clean
|
|
189
|
+
⏭️ Types: skipped (--quick mode)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Max Iterations Exceeded
|
|
193
|
+
```
|
|
194
|
+
User: /verify
|
|
195
|
+
|
|
196
|
+
Claude: Running verification suite...
|
|
197
|
+
❌ Test failure detected
|
|
198
|
+
|
|
199
|
+
Attempting fix (iteration 1/3)... failed
|
|
200
|
+
Attempting fix (iteration 2/3)... failed
|
|
201
|
+
Attempting fix (iteration 3/3)... failed
|
|
202
|
+
|
|
203
|
+
⚠️ Could not fix automatically after 3 attempts.
|
|
204
|
+
|
|
205
|
+
Issue: Integration test requires database connection
|
|
206
|
+
File: src/db/connection.test.ts:34
|
|
207
|
+
|
|
208
|
+
This needs manual review. Possible causes:
|
|
209
|
+
- Missing test database setup
|
|
210
|
+
- Environment variable not set
|
|
211
|
+
- Network connectivity issue
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## State File
|
|
215
|
+
|
|
216
|
+
Verification state is persisted at `.claude/verification-state.json`:
|
|
217
|
+
|
|
218
|
+
```json
|
|
219
|
+
{
|
|
220
|
+
"last_run": "2026-01-04T14:30:00Z",
|
|
221
|
+
"status": "passed",
|
|
222
|
+
"iterations": 2,
|
|
223
|
+
"results": {
|
|
224
|
+
"tests": { "passed": true, "count": 47 },
|
|
225
|
+
"lint": { "passed": true, "errors": 0 },
|
|
226
|
+
"types": { "passed": true, "errors": 0 }
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
This state is used by:
|
|
232
|
+
- Stop hook gate (block exit if verification required)
|
|
233
|
+
- Ralph Wiggum mode (track iteration progress)
|
|
234
|
+
- Statusline (show verification status)
|
|
235
|
+
|
|
236
|
+
## Integration Points
|
|
237
|
+
|
|
238
|
+
| Component | Integration |
|
|
239
|
+
|-----------|-------------|
|
|
240
|
+
| Stop Hook Gate | Reads verification state to allow/block exit |
|
|
241
|
+
| Ralph Wiggum Mode | Uses verify as completion gate |
|
|
242
|
+
| `/evidence` | Captures verification output as proof |
|
|
243
|
+
| Statusline | Shows pass/fail indicator |
|
|
244
|
+
|
|
245
|
+
## Key Behaviors
|
|
246
|
+
|
|
247
|
+
1. **Always run all checks** - Don't skip steps even if early ones fail
|
|
248
|
+
2. **Parse errors precisely** - Extract file paths and line numbers
|
|
249
|
+
3. **Fix targeted** - Minimal changes to address specific errors
|
|
250
|
+
4. **Track iterations** - Know when to stop and escalate
|
|
251
|
+
5. **Report clearly** - User should always know current state
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# /weekly-review - Generate Analytics and Recommendations
|
|
2
|
+
|
|
3
|
+
> Weekly review of development process with metrics and improvement suggestions.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
- End of each week (Friday recommended)
|
|
7
|
+
- Before sprint planning
|
|
8
|
+
- When process feels inefficient
|
|
9
|
+
- Monthly/quarterly reviews
|
|
10
|
+
|
|
11
|
+
## Execution Steps
|
|
12
|
+
|
|
13
|
+
### Step 1: Gather Week's Data
|
|
14
|
+
|
|
15
|
+
**From Linear**:
|
|
16
|
+
- Issues completed this week
|
|
17
|
+
- Issues created this week
|
|
18
|
+
- Current backlog size
|
|
19
|
+
- Blocked issues
|
|
20
|
+
- Average cycle time
|
|
21
|
+
|
|
22
|
+
**From Git**:
|
|
23
|
+
```bash
|
|
24
|
+
# Commits this week
|
|
25
|
+
git log --oneline --since="7 days ago"
|
|
26
|
+
|
|
27
|
+
# Files changed
|
|
28
|
+
git diff --stat HEAD~7..HEAD 2>/dev/null || git log --stat --since="7 days ago"
|
|
29
|
+
|
|
30
|
+
# PRs merged (if using GitHub)
|
|
31
|
+
gh pr list --state merged --search "merged:>=$(date -v-7d +%Y-%m-%d)"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**From Handoffs**:
|
|
35
|
+
- Sessions this week
|
|
36
|
+
- Context switches
|
|
37
|
+
- Discovered work filed
|
|
38
|
+
|
|
39
|
+
### Step 2: Calculate Metrics
|
|
40
|
+
|
|
41
|
+
| Metric | Calculation |
|
|
42
|
+
|--------|-------------|
|
|
43
|
+
| Velocity | Issues completed / week |
|
|
44
|
+
| Throughput | PRs merged / week |
|
|
45
|
+
| Cycle Time | Avg days from start to done |
|
|
46
|
+
| Discovery Rate | Discovered issues / planned issues |
|
|
47
|
+
| Block Rate | % of time spent blocked |
|
|
48
|
+
|
|
49
|
+
### Step 3: Analyze Patterns
|
|
50
|
+
|
|
51
|
+
Look for:
|
|
52
|
+
- Repeated blockers
|
|
53
|
+
- Scope creep patterns
|
|
54
|
+
- Quality issues (reverts, hotfixes)
|
|
55
|
+
- Estimation accuracy
|
|
56
|
+
- Context switch frequency
|
|
57
|
+
|
|
58
|
+
### Step 4: Generate Weekly Report
|
|
59
|
+
|
|
60
|
+
Output:
|
|
61
|
+
```markdown
|
|
62
|
+
## Weekly Review: [Week of Date]
|
|
63
|
+
|
|
64
|
+
### Velocity Metrics
|
|
65
|
+
| Metric | This Week | Last Week | Trend |
|
|
66
|
+
|--------|-----------|-----------|-------|
|
|
67
|
+
| Issues Completed | 8 | 6 | ↑ |
|
|
68
|
+
| PRs Merged | 5 | 4 | ↑ |
|
|
69
|
+
| Commits | 23 | 18 | ↑ |
|
|
70
|
+
| Discovered Issues | 3 | 5 | ↓ |
|
|
71
|
+
|
|
72
|
+
### Cycle Time
|
|
73
|
+
| Stage | Avg Time |
|
|
74
|
+
|-------|----------|
|
|
75
|
+
| Todo → In Progress | 1.2 days |
|
|
76
|
+
| In Progress → Review | 2.3 days |
|
|
77
|
+
| Review → Done | 0.5 days |
|
|
78
|
+
| **Total** | **4.0 days** |
|
|
79
|
+
|
|
80
|
+
### Quality Indicators
|
|
81
|
+
| Indicator | Count |
|
|
82
|
+
|-----------|-------|
|
|
83
|
+
| Reverts | 0 |
|
|
84
|
+
| Hotfixes | 1 |
|
|
85
|
+
| Failed CI | 3 |
|
|
86
|
+
| CodeRabbit Issues | 12 |
|
|
87
|
+
|
|
88
|
+
### Backlog Health
|
|
89
|
+
- **Active Issues**: 42 (target: <50) ✅
|
|
90
|
+
- **Blocked Issues**: 5 (12%)
|
|
91
|
+
- **Oldest Issue**: 14 days (ENG-89)
|
|
92
|
+
|
|
93
|
+
### Session Analysis
|
|
94
|
+
- **Sessions**: 8
|
|
95
|
+
- **Avg Session Length**: 2.5 hours
|
|
96
|
+
- **Context Switches**: 4
|
|
97
|
+
- **Handoffs Created**: 6
|
|
98
|
+
|
|
99
|
+
### Wins This Week 🎉
|
|
100
|
+
1. [Significant accomplishment]
|
|
101
|
+
2. [Significant accomplishment]
|
|
102
|
+
|
|
103
|
+
### Challenges
|
|
104
|
+
1. [Challenge encountered]
|
|
105
|
+
2. [Challenge encountered]
|
|
106
|
+
|
|
107
|
+
### Patterns Observed
|
|
108
|
+
- [Pattern 1]: [Observation and impact]
|
|
109
|
+
- [Pattern 2]: [Observation and impact]
|
|
110
|
+
|
|
111
|
+
### Recommendations
|
|
112
|
+
1. **[Area]**: [Specific recommendation]
|
|
113
|
+
2. **[Area]**: [Specific recommendation]
|
|
114
|
+
3. **[Area]**: [Specific recommendation]
|
|
115
|
+
|
|
116
|
+
### Focus for Next Week
|
|
117
|
+
1. [Priority 1]
|
|
118
|
+
2. [Priority 2]
|
|
119
|
+
3. [Priority 3]
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
*Review generated: [timestamp]*
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Step 5: Archive Report
|
|
126
|
+
Save to: `.claude/analytics/weekly-[YYYY-WW].md`
|
|
127
|
+
|
|
128
|
+
## Metrics Reference
|
|
129
|
+
|
|
130
|
+
### Health Indicators
|
|
131
|
+
|
|
132
|
+
| Metric | Healthy | Warning | Critical |
|
|
133
|
+
|--------|---------|---------|----------|
|
|
134
|
+
| Active Issues | <50 | 50-75 | >75 |
|
|
135
|
+
| Blocked % | <10% | 10-25% | >25% |
|
|
136
|
+
| Cycle Time | <5 days | 5-10 days | >10 days |
|
|
137
|
+
| Discovery Rate | <30% | 30-50% | >50% |
|
|
138
|
+
| Reverts/week | 0 | 1-2 | >2 |
|
|
139
|
+
|
|
140
|
+
### Trend Indicators
|
|
141
|
+
- ↑ Improving
|
|
142
|
+
- → Stable
|
|
143
|
+
- ↓ Declining
|
|
144
|
+
|
|
145
|
+
## Key Behaviors
|
|
146
|
+
- Consistent weekly cadence
|
|
147
|
+
- Compare to previous weeks
|
|
148
|
+
- Actionable recommendations
|
|
149
|
+
- Celebrate wins
|
|
150
|
+
- Be honest about challenges
|
|
151
|
+
|
|
152
|
+
## Integration Points
|
|
153
|
+
- Follows: Week's work
|
|
154
|
+
- Precedes: Sprint planning
|
|
155
|
+
- Creates: `.claude/analytics/weekly-*.md`
|
|
156
|
+
- Triggers: `/decay-review` for cleanup
|
|
Binary file
|
|
Binary file
|