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.
Files changed (190) hide show
  1. package/README.md +719 -0
  2. package/VERSION +1 -0
  3. package/docs/ANVIL-REPO-IMPLEMENTATION-PLAN.md +441 -0
  4. package/docs/FIRST-SKILL-TUTORIAL.md +408 -0
  5. package/docs/INSTALLATION-RETRO-NOTES.md +458 -0
  6. package/docs/INSTALLATION.md +984 -0
  7. package/docs/anvil-hud.md +469 -0
  8. package/docs/anvil-init.md +255 -0
  9. package/docs/anvil-state.md +210 -0
  10. package/docs/boris-cherny-ralph-wiggum-insights.md +608 -0
  11. package/docs/command-reference.md +2022 -0
  12. package/docs/hooks-tts.md +368 -0
  13. package/docs/implementation-guide.md +810 -0
  14. package/docs/linear-github-integration.md +247 -0
  15. package/docs/local-issues.md +677 -0
  16. package/docs/patterns/README.md +419 -0
  17. package/docs/planning-responsibilities.md +139 -0
  18. package/docs/session-workflow.md +573 -0
  19. package/docs/simplification-plan-template.md +297 -0
  20. package/docs/simplification-principles.md +129 -0
  21. package/docs/specifications/CCS-RALPH-INTEGRATION-DESIGN.md +633 -0
  22. package/docs/specifications/CCS-RESEARCH-REPORT.md +169 -0
  23. package/docs/specifications/PLAN-ANV-verification-ralph-wiggum.md +403 -0
  24. package/docs/specifications/PLAN-parallel-tracks-anvil-memory-ccs.md +494 -0
  25. package/docs/specifications/SPEC-ANV-VRW/component-01-verify.md +208 -0
  26. package/docs/specifications/SPEC-ANV-VRW/component-02-stop-gate.md +226 -0
  27. package/docs/specifications/SPEC-ANV-VRW/component-03-posttooluse.md +209 -0
  28. package/docs/specifications/SPEC-ANV-VRW/component-04-ralph-wiggum.md +604 -0
  29. package/docs/specifications/SPEC-ANV-VRW/component-05-atomic-actions.md +311 -0
  30. package/docs/specifications/SPEC-ANV-VRW/component-06-verify-subagent.md +264 -0
  31. package/docs/specifications/SPEC-ANV-VRW/component-07-claude-md.md +363 -0
  32. package/docs/specifications/SPEC-ANV-VRW/index.md +182 -0
  33. package/docs/specifications/SPEC-ANV-anvil-memory.md +573 -0
  34. package/docs/specifications/SPEC-ANV-context-checkpoints.md +781 -0
  35. package/docs/specifications/SPEC-ANV-verification-ralph-wiggum.md +789 -0
  36. package/docs/sync.md +122 -0
  37. package/global/CLAUDE.md +140 -0
  38. package/global/agents/verify-app.md +164 -0
  39. package/global/commands/anvil-settings.md +527 -0
  40. package/global/commands/anvil-sync.md +121 -0
  41. package/global/commands/change.md +197 -0
  42. package/global/commands/clarify.md +252 -0
  43. package/global/commands/cleanup.md +292 -0
  44. package/global/commands/commit-push-pr.md +207 -0
  45. package/global/commands/decay-review.md +127 -0
  46. package/global/commands/discover.md +158 -0
  47. package/global/commands/doc-coverage.md +122 -0
  48. package/global/commands/evidence.md +307 -0
  49. package/global/commands/explore.md +121 -0
  50. package/global/commands/force-exit.md +135 -0
  51. package/global/commands/handoff.md +191 -0
  52. package/global/commands/healthcheck.md +302 -0
  53. package/global/commands/hud.md +84 -0
  54. package/global/commands/insights.md +319 -0
  55. package/global/commands/linear-setup.md +184 -0
  56. package/global/commands/lint-fix.md +198 -0
  57. package/global/commands/orient.md +510 -0
  58. package/global/commands/plan.md +228 -0
  59. package/global/commands/ralph.md +346 -0
  60. package/global/commands/ready.md +182 -0
  61. package/global/commands/release.md +305 -0
  62. package/global/commands/retro.md +96 -0
  63. package/global/commands/shard.md +166 -0
  64. package/global/commands/spec.md +227 -0
  65. package/global/commands/sprint.md +184 -0
  66. package/global/commands/tasks.md +228 -0
  67. package/global/commands/test-and-commit.md +151 -0
  68. package/global/commands/validate.md +132 -0
  69. package/global/commands/verify.md +251 -0
  70. package/global/commands/weekly-review.md +156 -0
  71. package/global/hooks/__pycache__/ralph_context_monitor.cpython-314.pyc +0 -0
  72. package/global/hooks/__pycache__/statusline_agent_sync.cpython-314.pyc +0 -0
  73. package/global/hooks/anvil_memory_observe.ts +322 -0
  74. package/global/hooks/anvil_memory_session.ts +166 -0
  75. package/global/hooks/anvil_memory_stop.ts +187 -0
  76. package/global/hooks/parse_transcript.py +116 -0
  77. package/global/hooks/post_merge_cleanup.sh +132 -0
  78. package/global/hooks/post_tool_format.sh +215 -0
  79. package/global/hooks/ralph_context_monitor.py +240 -0
  80. package/global/hooks/ralph_stop.sh +502 -0
  81. package/global/hooks/statusline.sh +1110 -0
  82. package/global/hooks/statusline_agent_sync.py +224 -0
  83. package/global/hooks/stop_gate.sh +250 -0
  84. package/global/lib/.claude/anvil-state.json +21 -0
  85. package/global/lib/__pycache__/agent_registry.cpython-314.pyc +0 -0
  86. package/global/lib/__pycache__/claim_service.cpython-314.pyc +0 -0
  87. package/global/lib/__pycache__/coderabbit_service.cpython-314.pyc +0 -0
  88. package/global/lib/__pycache__/config_service.cpython-314.pyc +0 -0
  89. package/global/lib/__pycache__/coordination_service.cpython-314.pyc +0 -0
  90. package/global/lib/__pycache__/doc_coverage_service.cpython-314.pyc +0 -0
  91. package/global/lib/__pycache__/gate_logger.cpython-314.pyc +0 -0
  92. package/global/lib/__pycache__/github_service.cpython-314.pyc +0 -0
  93. package/global/lib/__pycache__/hygiene_service.cpython-314.pyc +0 -0
  94. package/global/lib/__pycache__/issue_models.cpython-314.pyc +0 -0
  95. package/global/lib/__pycache__/issue_provider.cpython-314.pyc +0 -0
  96. package/global/lib/__pycache__/linear_data_service.cpython-314.pyc +0 -0
  97. package/global/lib/__pycache__/linear_provider.cpython-314.pyc +0 -0
  98. package/global/lib/__pycache__/local_provider.cpython-314.pyc +0 -0
  99. package/global/lib/__pycache__/quality_service.cpython-314.pyc +0 -0
  100. package/global/lib/__pycache__/ralph_state.cpython-314.pyc +0 -0
  101. package/global/lib/__pycache__/state_manager.cpython-314.pyc +0 -0
  102. package/global/lib/__pycache__/transcript_parser.cpython-314.pyc +0 -0
  103. package/global/lib/__pycache__/verification_runner.cpython-314.pyc +0 -0
  104. package/global/lib/__pycache__/verify_iteration.cpython-314.pyc +0 -0
  105. package/global/lib/__pycache__/verify_subagent.cpython-314.pyc +0 -0
  106. package/global/lib/agent_registry.py +995 -0
  107. package/global/lib/anvil-state.sh +435 -0
  108. package/global/lib/claim_service.py +515 -0
  109. package/global/lib/coderabbit_service.py +314 -0
  110. package/global/lib/config_service.py +423 -0
  111. package/global/lib/coordination_service.py +331 -0
  112. package/global/lib/doc_coverage_service.py +1305 -0
  113. package/global/lib/gate_logger.py +316 -0
  114. package/global/lib/github_service.py +310 -0
  115. package/global/lib/handoff_generator.py +775 -0
  116. package/global/lib/hygiene_service.py +712 -0
  117. package/global/lib/issue_models.py +257 -0
  118. package/global/lib/issue_provider.py +339 -0
  119. package/global/lib/linear_data_service.py +210 -0
  120. package/global/lib/linear_provider.py +987 -0
  121. package/global/lib/linear_provider.py.backup +671 -0
  122. package/global/lib/local_provider.py +486 -0
  123. package/global/lib/orient_fast.py +457 -0
  124. package/global/lib/quality_service.py +470 -0
  125. package/global/lib/ralph_prompt_generator.py +563 -0
  126. package/global/lib/ralph_state.py +1202 -0
  127. package/global/lib/state_manager.py +417 -0
  128. package/global/lib/transcript_parser.py +597 -0
  129. package/global/lib/verification_runner.py +557 -0
  130. package/global/lib/verify_iteration.py +490 -0
  131. package/global/lib/verify_subagent.py +250 -0
  132. package/global/skills/README.md +155 -0
  133. package/global/skills/quality-gates/SKILL.md +252 -0
  134. package/global/skills/skill-template/SKILL.md +109 -0
  135. package/global/skills/testing-strategies/SKILL.md +337 -0
  136. package/global/templates/CHANGE-template.md +105 -0
  137. package/global/templates/HANDOFF-template.md +63 -0
  138. package/global/templates/PLAN-template.md +111 -0
  139. package/global/templates/SPEC-template.md +93 -0
  140. package/global/templates/ralph/PROMPT.md.template +89 -0
  141. package/global/templates/ralph/fix_plan.md.template +31 -0
  142. package/global/templates/ralph/progress.txt.template +23 -0
  143. package/global/tests/__pycache__/test_doc_coverage.cpython-314.pyc +0 -0
  144. package/global/tests/test_doc_coverage.py +520 -0
  145. package/global/tests/test_issue_models.py +299 -0
  146. package/global/tests/test_local_provider.py +323 -0
  147. package/global/tools/README.md +178 -0
  148. package/global/tools/__pycache__/anvil-hud.cpython-314.pyc +0 -0
  149. package/global/tools/anvil-hud.py +3622 -0
  150. package/global/tools/anvil-hud.py.bak +3318 -0
  151. package/global/tools/anvil-issue.py +432 -0
  152. package/global/tools/anvil-memory/CLAUDE.md +49 -0
  153. package/global/tools/anvil-memory/README.md +42 -0
  154. package/global/tools/anvil-memory/bun.lock +25 -0
  155. package/global/tools/anvil-memory/bunfig.toml +9 -0
  156. package/global/tools/anvil-memory/package.json +23 -0
  157. package/global/tools/anvil-memory/src/__tests__/ccs/context-monitor.test.ts +535 -0
  158. package/global/tools/anvil-memory/src/__tests__/ccs/edge-cases.test.ts +645 -0
  159. package/global/tools/anvil-memory/src/__tests__/ccs/fixtures.ts +363 -0
  160. package/global/tools/anvil-memory/src/__tests__/ccs/index.ts +8 -0
  161. package/global/tools/anvil-memory/src/__tests__/ccs/integration.test.ts +417 -0
  162. package/global/tools/anvil-memory/src/__tests__/ccs/prompt-generator.test.ts +571 -0
  163. package/global/tools/anvil-memory/src/__tests__/ccs/ralph-stop.test.ts +440 -0
  164. package/global/tools/anvil-memory/src/__tests__/ccs/test-utils.ts +252 -0
  165. package/global/tools/anvil-memory/src/__tests__/commands.test.ts +657 -0
  166. package/global/tools/anvil-memory/src/__tests__/db.test.ts +641 -0
  167. package/global/tools/anvil-memory/src/__tests__/hooks.test.ts +272 -0
  168. package/global/tools/anvil-memory/src/__tests__/performance.test.ts +427 -0
  169. package/global/tools/anvil-memory/src/__tests__/test-utils.ts +113 -0
  170. package/global/tools/anvil-memory/src/commands/checkpoint.ts +197 -0
  171. package/global/tools/anvil-memory/src/commands/get.ts +115 -0
  172. package/global/tools/anvil-memory/src/commands/init.ts +94 -0
  173. package/global/tools/anvil-memory/src/commands/observe.ts +163 -0
  174. package/global/tools/anvil-memory/src/commands/search.ts +112 -0
  175. package/global/tools/anvil-memory/src/db.ts +638 -0
  176. package/global/tools/anvil-memory/src/index.ts +205 -0
  177. package/global/tools/anvil-memory/src/types.ts +122 -0
  178. package/global/tools/anvil-memory/tsconfig.json +29 -0
  179. package/global/tools/ralph-loop.sh +359 -0
  180. package/package.json +45 -0
  181. package/scripts/anvil +822 -0
  182. package/scripts/extract_patterns.py +222 -0
  183. package/scripts/init-project.sh +541 -0
  184. package/scripts/install.sh +229 -0
  185. package/scripts/postinstall.js +41 -0
  186. package/scripts/rollback.sh +188 -0
  187. package/scripts/sync.sh +623 -0
  188. package/scripts/test-statusline.sh +248 -0
  189. package/scripts/update_claude_md.py +224 -0
  190. package/scripts/verify.sh +255 -0
@@ -0,0 +1,178 @@
1
+ # Anvil Tools
2
+
3
+ Global tools that enhance the Anvil development workflow.
4
+
5
+ ## anvil-hud.py
6
+
7
+ Terminal dashboard for multi-agent Claude Code visibility. Shows all active Claude Code agents across all projects in real-time.
8
+
9
+ ### Usage
10
+
11
+ ```bash
12
+ # Start the dashboard
13
+ uv run global/tools/anvil-hud.py
14
+
15
+ # Start with demo data (for testing)
16
+ uv run global/tools/anvil-hud.py --demo
17
+ ```
18
+
19
+ ### Keybindings
20
+
21
+ | Key | Action |
22
+ |-----|--------|
23
+ | `q` | Quit |
24
+ | `r` | Force refresh |
25
+ | `d` | Toggle detailed view (shows tool timeline) |
26
+ | `s` | Open settings panel |
27
+ | `?` | Show help overlay |
28
+ | `m` | Toggle between Focused/Full mode |
29
+ | `1-5` | Jump to panel (Agents/Kanban/Quality/Costs/Coord) |
30
+ | `Tab` | Next panel (in Focused Mode) |
31
+ | `Shift+Tab` | Previous panel (in Focused Mode) |
32
+ | `Esc` | Close any overlay |
33
+
34
+ ### Display Modes (HUD v3)
35
+
36
+ **Focused Mode** (default)
37
+ - Shows one panel at a time, full-width
38
+ - Tab bar shows available panels
39
+ - Best for quick status checks
40
+
41
+ **Full Mode**
42
+ - Shows all panels simultaneously
43
+ - Traditional multi-panel overview
44
+ - Best for multi-agent coordination
45
+
46
+ Toggle with `m` key. Mode persists via config.
47
+
48
+ ### Features
49
+
50
+ **Agent Cards**
51
+ - Real-time status indicators (active/idle)
52
+ - Project name and Linear issue context
53
+ - Model info (Opus, Sonnet, Haiku)
54
+ - Context usage bar with color coding (green <50%, yellow <80%, red >80%)
55
+ - Current workflow phase
56
+ - Session cost tracking
57
+ - Last activity timestamp
58
+
59
+ **Detailed View** (press `d`)
60
+ - Recent tool timeline (last 5 tools)
61
+ - Tool execution durations when available
62
+ - Auto-refreshes with main display
63
+
64
+ **Aggregate Panel**
65
+ - Active agent count
66
+ - "At Risk" count (agents >80% context)
67
+ - Total cost across all sessions
68
+ - Average context usage
69
+ - Phase breakdown (when multiple agents)
70
+
71
+ **Notifications**
72
+ - Warning at 80% context usage
73
+ - Critical alert at 90% context usage
74
+ - One-time per agent per threshold (not spammy)
75
+
76
+ ### Setup
77
+
78
+ The HUD requires agent registration via hooks. Add these to your project's `.claude/settings.local.json`:
79
+
80
+ ```json
81
+ {
82
+ "hooks": {
83
+ "session_start": [".claude/hooks/session_start.py --load-context --register-agent"],
84
+ "post_tool_use": [".claude/hooks/post_tool_use.py --update-agent"],
85
+ "stop": [".claude/hooks/stop.py --cleanup-agent"]
86
+ }
87
+ }
88
+ ```
89
+
90
+ Copy the hook files from `project/hooks/` to your project's `.claude/hooks/` directory.
91
+
92
+ ### Configuration
93
+
94
+ HUD settings are stored in `~/.anvil/hud-config.yaml` (global) or `.anvil/hud-config.yaml` (per-project):
95
+
96
+ ```yaml
97
+ # Billing model: "api" (pay-per-use) or "subscription" (Pro/Max)
98
+ # When "subscription", cost alerts are disabled
99
+ budget:
100
+ billing_model: subscription # or "api" for pay-per-use
101
+ agent_warn_threshold: 5.0 # Warn at $5 (api only)
102
+ agent_crit_threshold: 10.0 # Critical at $10 (api only)
103
+
104
+ # Context thresholds
105
+ context:
106
+ warn_threshold_pct: 80
107
+ crit_threshold_pct: 90
108
+
109
+ # Display mode
110
+ hud:
111
+ default_mode: focused # or "full"
112
+ ```
113
+
114
+ **Environment Variables**:
115
+ - `ANVIL_BILLING_MODEL=subscription` — Disable cost alerts for Pro/Max users
116
+ - `ANVIL_HUD_MODE=focused` — Default display mode
117
+
118
+ | Setting | Default | Description |
119
+ |---------|---------|-------------|
120
+ | `budget.billing_model` | `api` | `api` (pay-per-use) or `subscription` (Pro/Max) |
121
+ | `budget.agent_warn_threshold` | `5.0` | Cost warning threshold ($) |
122
+ | `budget.agent_crit_threshold` | `10.0` | Cost critical threshold ($) |
123
+ | `context.warn_threshold_pct` | `80` | Context warning (%) |
124
+ | `context.crit_threshold_pct` | `90` | Context critical (%) |
125
+ | `hud.default_mode` | `focused` | Default display mode |
126
+
127
+ Legacy settings in `.claude/anvil.config.json` are still supported for backward compatibility.
128
+
129
+ ### Architecture
130
+
131
+ The HUD uses a shared registry at `~/.anvil/agents.json` that all Claude Code sessions can write to:
132
+
133
+ ```
134
+ ~/.anvil/
135
+ ├── agents.json # Lightweight registry (all agents)
136
+ └── state/
137
+ └── {agent-id}.json # Detailed state per agent
138
+ ```
139
+
140
+ **Files:**
141
+ - `global/lib/agent_registry.py` - Registry management API
142
+ - `global/tools/anvil-hud.py` - TUI dashboard
143
+ - `project/hooks/*.py` - Integration hooks
144
+
145
+ ### Recommended Setup
146
+
147
+ Run the HUD in a split terminal pane:
148
+
149
+ **Warp**
150
+ 1. Right-click → Split pane
151
+ 2. Run `uv run global/tools/anvil-hud.py`
152
+
153
+ **tmux**
154
+ ```bash
155
+ # Split vertically
156
+ tmux split-window -h
157
+ uv run global/tools/anvil-hud.py
158
+ ```
159
+
160
+ **iTerm2**
161
+ 1. Cmd+D (vertical split)
162
+ 2. Run the HUD command
163
+
164
+ ### Troubleshooting
165
+
166
+ **No agents showing**
167
+ - Verify hooks are configured in `.claude/settings.local.json`
168
+ - Check that hooks have `--register-agent` and `--update-agent` flags
169
+ - Ensure `~/.anvil/` directory exists and is writable
170
+
171
+ **Stale agents appearing**
172
+ - Agents auto-cleanup after 30 minutes of inactivity
173
+ - Force refresh with `r` key
174
+ - Check if hooks have `--cleanup-agent` on stop
175
+
176
+ **Context not updating**
177
+ - Verify `post_tool_use.py` has `--update-agent` flag
178
+ - Check that hook is receiving context_window data from Claude Code