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,255 @@
1
+ #!/bin/bash
2
+
3
+ #
4
+ # Anvil Development Framework - Verification Script
5
+ #
6
+ # Verifies that Anvil is correctly installed and configured
7
+ #
8
+
9
+ set -e
10
+
11
+ # Colors
12
+ RED='\033[0;31m'
13
+ GREEN='\033[0;32m'
14
+ YELLOW='\033[1;33m'
15
+ BLUE='\033[0;34m'
16
+ NC='\033[0m' # No Color
17
+
18
+ # Counters
19
+ PASS=0
20
+ FAIL=0
21
+ WARN=0
22
+
23
+ # Banner
24
+ echo ""
25
+ echo -e "${BLUE}Anvil Installation Verification${NC}"
26
+ echo "════════════════════════════════"
27
+ echo ""
28
+
29
+ # Helper functions
30
+ check_pass() {
31
+ echo -e " ${GREEN}✓${NC} $1"
32
+ ((PASS++))
33
+ }
34
+
35
+ check_fail() {
36
+ echo -e " ${RED}✗${NC} $1"
37
+ ((FAIL++))
38
+ }
39
+
40
+ check_warn() {
41
+ echo -e " ${YELLOW}⚠${NC} $1"
42
+ ((WARN++))
43
+ }
44
+
45
+ check_file() {
46
+ if [ -f "$1" ]; then
47
+ check_pass "$2"
48
+ return 0
49
+ else
50
+ check_fail "$2"
51
+ return 1
52
+ fi
53
+ }
54
+
55
+ check_dir() {
56
+ if [ -d "$1" ]; then
57
+ check_pass "$2"
58
+ return 0
59
+ else
60
+ check_fail "$2"
61
+ return 1
62
+ fi
63
+ }
64
+
65
+ check_tool() {
66
+ if command -v "$1" &> /dev/null; then
67
+ check_pass "$1 installed"
68
+ return 0
69
+ else
70
+ check_fail "$1 not found"
71
+ return 1
72
+ fi
73
+ }
74
+
75
+ check_tool_optional() {
76
+ if command -v "$1" &> /dev/null; then
77
+ check_pass "$1 installed"
78
+ return 0
79
+ else
80
+ check_warn "$1 not found (optional)"
81
+ return 1
82
+ fi
83
+ }
84
+
85
+ # ═══════════════════════════════════════════════════════════════════════════
86
+ # GLOBAL INSTALLATION CHECKS
87
+ # ═══════════════════════════════════════════════════════════════════════════
88
+
89
+ echo -e "${BLUE}Global Installation (~/.claude/)${NC}"
90
+ echo ""
91
+
92
+ # Check directory structure
93
+ check_dir "$HOME/.claude" "~/.claude exists"
94
+ check_dir "$HOME/.claude/commands" "~/.claude/commands exists"
95
+ check_dir "$HOME/.claude/templates" "~/.claude/templates exists"
96
+ check_dir "$HOME/.claude/skills" "~/.claude/skills exists"
97
+
98
+ # Check commands (should be 14+)
99
+ CMD_COUNT=$(ls "$HOME/.claude/commands"/*.md 2>/dev/null | wc -l | tr -d ' ')
100
+ if [ "$CMD_COUNT" -ge 14 ]; then
101
+ check_pass "Commands installed ($CMD_COUNT files)"
102
+ else
103
+ check_fail "Commands missing (found $CMD_COUNT, expected 14+)"
104
+ fi
105
+
106
+ # Check templates (should be 4)
107
+ TPL_COUNT=$(ls "$HOME/.claude/templates"/*-template.md 2>/dev/null | wc -l | tr -d ' ')
108
+ if [ "$TPL_COUNT" -ge 4 ]; then
109
+ check_pass "Templates installed ($TPL_COUNT files)"
110
+ else
111
+ check_fail "Templates missing (found $TPL_COUNT, expected 4)"
112
+ fi
113
+
114
+ # Check version file
115
+ check_file "$HOME/.claude/.anvil-version" "Version file exists"
116
+
117
+ echo ""
118
+
119
+ # ═══════════════════════════════════════════════════════════════════════════
120
+ # PROJECT INSTALLATION CHECKS (if in a project)
121
+ # ═══════════════════════════════════════════════════════════════════════════
122
+
123
+ if [ -d ".claude" ]; then
124
+ echo -e "${BLUE}Project Installation (.claude/)${NC}"
125
+ echo ""
126
+
127
+ # Check directory structure
128
+ check_dir ".claude/specs" ".claude/specs exists"
129
+ check_dir ".claude/changes" ".claude/changes exists"
130
+ check_dir ".claude/handoffs" ".claude/handoffs exists"
131
+ check_dir ".claude/examples" ".claude/examples exists"
132
+
133
+ # Check key files
134
+ check_file ".claude/CLAUDE.md" "CLAUDE.md exists"
135
+ check_file ".claude/constitution.md" "constitution.md exists"
136
+ check_file ".claude/product.md" "product.md exists"
137
+
138
+ echo ""
139
+ fi
140
+
141
+ # ═══════════════════════════════════════════════════════════════════════════
142
+ # QUALITY GATES CHECKS (if in a project)
143
+ # ═══════════════════════════════════════════════════════════════════════════
144
+
145
+ if [ -d ".claude" ]; then
146
+ echo -e "${BLUE}Quality Gates${NC}"
147
+ echo ""
148
+
149
+ # Check config files
150
+ if [ -f ".coderabbit.yaml" ]; then
151
+ check_pass ".coderabbit.yaml exists"
152
+ else
153
+ check_warn ".coderabbit.yaml missing (CodeRabbit disabled)"
154
+ fi
155
+
156
+ if [ -f ".pre-commit-config.yaml" ]; then
157
+ check_pass ".pre-commit-config.yaml exists"
158
+ else
159
+ check_warn ".pre-commit-config.yaml missing (pre-commit disabled)"
160
+ fi
161
+
162
+ if [ -d ".semgrep/rules" ]; then
163
+ SEMGREP_COUNT=$(ls .semgrep/rules/*.yaml 2>/dev/null | wc -l | tr -d ' ')
164
+ if [ "$SEMGREP_COUNT" -gt 0 ]; then
165
+ check_pass "Semgrep rules installed ($SEMGREP_COUNT files)"
166
+ else
167
+ check_warn "Semgrep rules directory empty"
168
+ fi
169
+ else
170
+ check_warn ".semgrep/rules missing (Semgrep disabled)"
171
+ fi
172
+
173
+ # Test pre-commit if available
174
+ if [ -f ".pre-commit-config.yaml" ] && command -v pre-commit &> /dev/null; then
175
+ echo ""
176
+ echo -e "${BLUE}Running pre-commit check...${NC}"
177
+ if pre-commit run --all-files > /dev/null 2>&1; then
178
+ check_pass "pre-commit passes"
179
+ else
180
+ check_warn "pre-commit has failures (run 'pre-commit run --all-files' to see details)"
181
+ fi
182
+ fi
183
+
184
+ echo ""
185
+ fi
186
+
187
+ # ═══════════════════════════════════════════════════════════════════════════
188
+ # TOOL CHECKS
189
+ # ═══════════════════════════════════════════════════════════════════════════
190
+
191
+ echo -e "${BLUE}Required Tools${NC}"
192
+ echo ""
193
+
194
+ check_tool "node"
195
+ check_tool "npm"
196
+ check_tool "git"
197
+
198
+ echo ""
199
+ echo -e "${BLUE}Optional Tools${NC}"
200
+ echo ""
201
+
202
+ check_tool_optional "semgrep"
203
+ check_tool_optional "trivy"
204
+ check_tool_optional "gitleaks"
205
+ check_tool_optional "pre-commit"
206
+
207
+ echo ""
208
+
209
+ # ═══════════════════════════════════════════════════════════════════════════
210
+ # LINEAR CONNECTION CHECK
211
+ # ═══════════════════════════════════════════════════════════════════════════
212
+
213
+ echo -e "${BLUE}Linear Integration${NC}"
214
+ echo ""
215
+
216
+ if [ -n "$LINEAR_API_KEY" ]; then
217
+ check_pass "LINEAR_API_KEY is set"
218
+ else
219
+ check_warn "LINEAR_API_KEY not set (Linear CLI disabled)"
220
+ fi
221
+
222
+ # Check for Linear CLI script
223
+ if [ -f "$HOME/.claude/skills/linear-skill/scripts/linear.py" ]; then
224
+ check_pass "Linear CLI script exists"
225
+ else
226
+ check_warn "Linear CLI script not found"
227
+ fi
228
+
229
+ echo ""
230
+
231
+ # ═══════════════════════════════════════════════════════════════════════════
232
+ # SUMMARY
233
+ # ═══════════════════════════════════════════════════════════════════════════
234
+
235
+ echo "════════════════════════════════════════"
236
+ echo ""
237
+ echo -e " ${GREEN}Passed:${NC} $PASS"
238
+ echo -e " ${RED}Failed:${NC} $FAIL"
239
+ echo -e " ${YELLOW}Warnings:${NC} $WARN"
240
+ echo ""
241
+
242
+ if [ $FAIL -eq 0 ]; then
243
+ echo -e "${GREEN}✓ Anvil installation verified!${NC}"
244
+ if [ $WARN -gt 0 ]; then
245
+ echo -e "${YELLOW} (Some optional components missing)${NC}"
246
+ fi
247
+ exit 0
248
+ else
249
+ echo -e "${RED}✗ Anvil installation has issues.${NC}"
250
+ echo ""
251
+ echo "Run the following to fix:"
252
+ echo " ./scripts/install.sh # Reinstall global"
253
+ echo " ./scripts/init-project.sh # Reinitialize project"
254
+ exit 1
255
+ fi