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,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
|
|
Binary file
|