@rubix0270/arboris 1.0.2 → 1.0.3

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 (451) hide show
  1. package/package.json +8 -20
  2. package/run.mjs +10 -0
  3. package/dist/cli.mjs +0 -383
  4. package/manifest.json +0 -323
  5. package/prisma/skills/accessibility/SKILL.md +0 -147
  6. package/prisma/skills/agent-architecture-audit/SKILL.md +0 -257
  7. package/prisma/skills/agent-eval/SKILL.md +0 -146
  8. package/prisma/skills/agent-harness-construction/SKILL.md +0 -74
  9. package/prisma/skills/agent-introspection-debugging/SKILL.md +0 -154
  10. package/prisma/skills/agent-payment-x402/SKILL.md +0 -225
  11. package/prisma/skills/agent-self-evaluation/SKILL.md +0 -182
  12. package/prisma/skills/agent-self-evaluation/examples/high-score-example.md +0 -87
  13. package/prisma/skills/agent-self-evaluation/examples/low-score-example.md +0 -86
  14. package/prisma/skills/agent-self-evaluation/references/evaluation-criteria.md +0 -71
  15. package/prisma/skills/agent-self-evaluation/references/hook-integration.md +0 -64
  16. package/prisma/skills/agent-self-evaluation/scripts/evaluate.py +0 -408
  17. package/prisma/skills/agent-self-evaluation/templates/evaluation-report.md +0 -86
  18. package/prisma/skills/agent-sort/SKILL.md +0 -216
  19. package/prisma/skills/agentic-engineering/SKILL.md +0 -64
  20. package/prisma/skills/agentic-os/SKILL.md +0 -388
  21. package/prisma/skills/ai-first-engineering/SKILL.md +0 -52
  22. package/prisma/skills/ai-regression-testing/SKILL.md +0 -386
  23. package/prisma/skills/android-clean-architecture/SKILL.md +0 -340
  24. package/prisma/skills/angular-developer/SKILL.md +0 -155
  25. package/prisma/skills/angular-developer/references/angular-animations.md +0 -160
  26. package/prisma/skills/angular-developer/references/angular-aria.md +0 -410
  27. package/prisma/skills/angular-developer/references/cli.md +0 -86
  28. package/prisma/skills/angular-developer/references/component-harnesses.md +0 -59
  29. package/prisma/skills/angular-developer/references/component-styling.md +0 -91
  30. package/prisma/skills/angular-developer/references/components.md +0 -117
  31. package/prisma/skills/angular-developer/references/creating-services.md +0 -97
  32. package/prisma/skills/angular-developer/references/data-resolvers.md +0 -69
  33. package/prisma/skills/angular-developer/references/define-routes.md +0 -67
  34. package/prisma/skills/angular-developer/references/defining-providers.md +0 -72
  35. package/prisma/skills/angular-developer/references/di-fundamentals.md +0 -120
  36. package/prisma/skills/angular-developer/references/e2e-testing.md +0 -56
  37. package/prisma/skills/angular-developer/references/effects.md +0 -83
  38. package/prisma/skills/angular-developer/references/hierarchical-injectors.md +0 -43
  39. package/prisma/skills/angular-developer/references/host-elements.md +0 -80
  40. package/prisma/skills/angular-developer/references/injection-context.md +0 -63
  41. package/prisma/skills/angular-developer/references/inputs.md +0 -101
  42. package/prisma/skills/angular-developer/references/linked-signal.md +0 -59
  43. package/prisma/skills/angular-developer/references/loading-strategies.md +0 -61
  44. package/prisma/skills/angular-developer/references/mcp.md +0 -108
  45. package/prisma/skills/angular-developer/references/navigate-to-routes.md +0 -69
  46. package/prisma/skills/angular-developer/references/outputs.md +0 -86
  47. package/prisma/skills/angular-developer/references/reactive-forms.md +0 -122
  48. package/prisma/skills/angular-developer/references/rendering-strategies.md +0 -44
  49. package/prisma/skills/angular-developer/references/resource.md +0 -77
  50. package/prisma/skills/angular-developer/references/route-animations.md +0 -56
  51. package/prisma/skills/angular-developer/references/route-guards.md +0 -52
  52. package/prisma/skills/angular-developer/references/router-lifecycle.md +0 -45
  53. package/prisma/skills/angular-developer/references/router-testing.md +0 -87
  54. package/prisma/skills/angular-developer/references/show-routes-with-outlets.md +0 -68
  55. package/prisma/skills/angular-developer/references/signal-forms.md +0 -795
  56. package/prisma/skills/angular-developer/references/signals-overview.md +0 -94
  57. package/prisma/skills/angular-developer/references/tailwind-css.md +0 -69
  58. package/prisma/skills/angular-developer/references/template-driven-forms.md +0 -114
  59. package/prisma/skills/angular-developer/references/testing-fundamentals.md +0 -65
  60. package/prisma/skills/api-connector-builder/SKILL.md +0 -121
  61. package/prisma/skills/api-design/SKILL.md +0 -524
  62. package/prisma/skills/architecture-decision-records/SKILL.md +0 -180
  63. package/prisma/skills/article-writing/SKILL.md +0 -80
  64. package/prisma/skills/automation-audit-ops/SKILL.md +0 -143
  65. package/prisma/skills/autonomous-agent-harness/SKILL.md +0 -274
  66. package/prisma/skills/autonomous-loops/SKILL.md +0 -611
  67. package/prisma/skills/backend-patterns/SKILL.md +0 -562
  68. package/prisma/skills/benchmark/SKILL.md +0 -94
  69. package/prisma/skills/benchmark-methodology/SKILL.md +0 -190
  70. package/prisma/skills/benchmark-optimization-loop/SKILL.md +0 -70
  71. package/prisma/skills/blender-motion-state-inspection/SKILL.md +0 -165
  72. package/prisma/skills/blueprint/SKILL.md +0 -106
  73. package/prisma/skills/brand-discovery/SKILL.md +0 -145
  74. package/prisma/skills/brand-discovery/references/10_purpose-why.md +0 -40
  75. package/prisma/skills/brand-discovery/references/20_positioning.md +0 -44
  76. package/prisma/skills/brand-discovery/references/30_audience-niche.md +0 -52
  77. package/prisma/skills/brand-discovery/references/40_personality-archetype.md +0 -57
  78. package/prisma/skills/brand-discovery/references/50_voice-tone.md +0 -59
  79. package/prisma/skills/brand-discovery/references/60_narrative-story.md +0 -50
  80. package/prisma/skills/brand-discovery/references/70_founder-tension.md +0 -49
  81. package/prisma/skills/brand-discovery/references/90_SYNTHESIS.md +0 -133
  82. package/prisma/skills/brand-voice/SKILL.md +0 -98
  83. package/prisma/skills/brand-voice/references/voice-profile-schema.md +0 -55
  84. package/prisma/skills/browser-qa/SKILL.md +0 -105
  85. package/prisma/skills/bun-runtime/SKILL.md +0 -85
  86. package/prisma/skills/canary-watch/SKILL.md +0 -108
  87. package/prisma/skills/carrier-relationship-management/SKILL.md +0 -212
  88. package/prisma/skills/cisco-ios-patterns/SKILL.md +0 -164
  89. package/prisma/skills/ck/SKILL.md +0 -148
  90. package/prisma/skills/ck/commands/forget.mjs +0 -44
  91. package/prisma/skills/ck/commands/info.mjs +0 -24
  92. package/prisma/skills/ck/commands/init.mjs +0 -143
  93. package/prisma/skills/ck/commands/list.mjs +0 -40
  94. package/prisma/skills/ck/commands/migrate.mjs +0 -202
  95. package/prisma/skills/ck/commands/resume.mjs +0 -36
  96. package/prisma/skills/ck/commands/save.mjs +0 -210
  97. package/prisma/skills/ck/commands/shared.mjs +0 -387
  98. package/prisma/skills/ck/hooks/session-start.mjs +0 -224
  99. package/prisma/skills/claude-devfleet/SKILL.md +0 -112
  100. package/prisma/skills/click-path-audit/SKILL.md +0 -245
  101. package/prisma/skills/clickhouse-io/SKILL.md +0 -440
  102. package/prisma/skills/code-tour/SKILL.md +0 -254
  103. package/prisma/skills/codebase-onboarding/SKILL.md +0 -234
  104. package/prisma/skills/codehealth-mcp/SKILL.md +0 -167
  105. package/prisma/skills/coding-standards/SKILL.md +0 -551
  106. package/prisma/skills/competitive-platform-analysis/SKILL.md +0 -214
  107. package/prisma/skills/competitive-report-structure/SKILL.md +0 -162
  108. package/prisma/skills/compose-multiplatform-patterns/SKILL.md +0 -300
  109. package/prisma/skills/config-gc/SKILL.md +0 -120
  110. package/prisma/skills/configure-ecc/SKILL.md +0 -385
  111. package/prisma/skills/connections-optimizer/SKILL.md +0 -190
  112. package/prisma/skills/content-engine/SKILL.md +0 -132
  113. package/prisma/skills/content-hash-cache-pattern/SKILL.md +0 -162
  114. package/prisma/skills/context-budget/SKILL.md +0 -136
  115. package/prisma/skills/continuous-agent-loop/SKILL.md +0 -46
  116. package/prisma/skills/continuous-learning/SKILL.md +0 -132
  117. package/prisma/skills/continuous-learning/config.json +0 -18
  118. package/prisma/skills/continuous-learning/evaluate-session.sh +0 -69
  119. package/prisma/skills/continuous-learning-v2/SKILL.md +0 -361
  120. package/prisma/skills/continuous-learning-v2/agents/observer-loop.sh +0 -359
  121. package/prisma/skills/continuous-learning-v2/agents/observer.md +0 -189
  122. package/prisma/skills/continuous-learning-v2/agents/session-guardian.sh +0 -150
  123. package/prisma/skills/continuous-learning-v2/agents/start-observer.sh +0 -248
  124. package/prisma/skills/continuous-learning-v2/config.json +0 -8
  125. package/prisma/skills/continuous-learning-v2/hooks/observe.sh +0 -585
  126. package/prisma/skills/continuous-learning-v2/scripts/detect-project.sh +0 -322
  127. package/prisma/skills/continuous-learning-v2/scripts/instinct-cli.py +0 -1956
  128. package/prisma/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +0 -31
  129. package/prisma/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +0 -68
  130. package/prisma/skills/continuous-learning-v2/scripts/test_parse_instinct.py +0 -1421
  131. package/prisma/skills/cost-aware-llm-pipeline/SKILL.md +0 -184
  132. package/prisma/skills/cost-tracking/SKILL.md +0 -97
  133. package/prisma/skills/council/SKILL.md +0 -204
  134. package/prisma/skills/cpp-coding-standards/SKILL.md +0 -724
  135. package/prisma/skills/cpp-testing/SKILL.md +0 -325
  136. package/prisma/skills/crosspost/SKILL.md +0 -112
  137. package/prisma/skills/csharp-testing/SKILL.md +0 -322
  138. package/prisma/skills/customer-billing-ops/SKILL.md +0 -141
  139. package/prisma/skills/customs-trade-compliance/SKILL.md +0 -263
  140. package/prisma/skills/dart-flutter-patterns/SKILL.md +0 -564
  141. package/prisma/skills/dashboard-builder/SKILL.md +0 -109
  142. package/prisma/skills/data-scraper-agent/SKILL.md +0 -765
  143. package/prisma/skills/data-throughput-accelerator/SKILL.md +0 -73
  144. package/prisma/skills/database-migrations/SKILL.md +0 -430
  145. package/prisma/skills/deep-research/SKILL.md +0 -160
  146. package/prisma/skills/defi-amm-security/SKILL.md +0 -167
  147. package/prisma/skills/delivery-gate/SKILL.md +0 -126
  148. package/prisma/skills/delivery-gate/hooks/quality-gate.py +0 -220
  149. package/prisma/skills/deployment-patterns/SKILL.md +0 -428
  150. package/prisma/skills/design-system/SKILL.md +0 -83
  151. package/prisma/skills/django-celery/SKILL.md +0 -458
  152. package/prisma/skills/django-patterns/SKILL.md +0 -735
  153. package/prisma/skills/django-security/SKILL.md +0 -644
  154. package/prisma/skills/django-tdd/SKILL.md +0 -730
  155. package/prisma/skills/django-verification/SKILL.md +0 -470
  156. package/prisma/skills/dmux-workflows/SKILL.md +0 -192
  157. package/prisma/skills/docker-patterns/SKILL.md +0 -365
  158. package/prisma/skills/documentation-lookup/SKILL.md +0 -91
  159. package/prisma/skills/dotnet-patterns/SKILL.md +0 -322
  160. package/prisma/skills/dynamic-workflow-mode/SKILL.md +0 -124
  161. package/prisma/skills/e2e-testing/SKILL.md +0 -327
  162. package/prisma/skills/ecc-guide/SKILL.md +0 -190
  163. package/prisma/skills/ecc-recipes/SKILL.md +0 -149
  164. package/prisma/skills/ecc-tools-cost-audit/SKILL.md +0 -161
  165. package/prisma/skills/email-ops/SKILL.md +0 -122
  166. package/prisma/skills/energy-procurement/SKILL.md +0 -228
  167. package/prisma/skills/enterprise-agent-ops/SKILL.md +0 -51
  168. package/prisma/skills/error-handling/SKILL.md +0 -377
  169. package/prisma/skills/eval-harness/SKILL.md +0 -271
  170. package/prisma/skills/evm-token-decimals/SKILL.md +0 -131
  171. package/prisma/skills/exa-search/SKILL.md +0 -108
  172. package/prisma/skills/fal-ai-media/SKILL.md +0 -289
  173. package/prisma/skills/fastapi-patterns/SKILL.md +0 -514
  174. package/prisma/skills/finance-billing-ops/SKILL.md +0 -128
  175. package/prisma/skills/flox-environments/SKILL.md +0 -497
  176. package/prisma/skills/flutter-dart-code-review/SKILL.md +0 -436
  177. package/prisma/skills/foundation-models-on-device/SKILL.md +0 -243
  178. package/prisma/skills/frontend-a11y/SKILL.md +0 -446
  179. package/prisma/skills/frontend-design-direction/SKILL.md +0 -93
  180. package/prisma/skills/frontend-patterns/SKILL.md +0 -657
  181. package/prisma/skills/frontend-slides/SKILL.md +0 -185
  182. package/prisma/skills/frontend-slides/STYLE_PRESETS.md +0 -330
  183. package/prisma/skills/frontend-slides/animation-patterns.md +0 -122
  184. package/prisma/skills/frontend-slides/html-template.md +0 -419
  185. package/prisma/skills/frontend-slides/scripts/export-pdf.sh +0 -418
  186. package/prisma/skills/frontend-slides/scripts/extract-pptx.py +0 -96
  187. package/prisma/skills/frontend-slides/viewport-base.css +0 -153
  188. package/prisma/skills/fsharp-testing/SKILL.md +0 -281
  189. package/prisma/skills/gan-style-harness/SKILL.md +0 -279
  190. package/prisma/skills/gateguard/SKILL.md +0 -133
  191. package/prisma/skills/generating-python-installer/SKILL.md +0 -820
  192. package/prisma/skills/git-workflow/SKILL.md +0 -716
  193. package/prisma/skills/github-ops/SKILL.md +0 -145
  194. package/prisma/skills/golang-patterns/SKILL.md +0 -675
  195. package/prisma/skills/golang-testing/SKILL.md +0 -721
  196. package/prisma/skills/google-workspace-ops/SKILL.md +0 -96
  197. package/prisma/skills/growth-log/SKILL.md +0 -128
  198. package/prisma/skills/healthcare-cdss-patterns/SKILL.md +0 -246
  199. package/prisma/skills/healthcare-emr-patterns/SKILL.md +0 -160
  200. package/prisma/skills/healthcare-eval-harness/SKILL.md +0 -208
  201. package/prisma/skills/healthcare-phi-compliance/SKILL.md +0 -146
  202. package/prisma/skills/hermes-imports/SKILL.md +0 -89
  203. package/prisma/skills/hexagonal-architecture/SKILL.md +0 -277
  204. package/prisma/skills/hipaa-compliance/SKILL.md +0 -79
  205. package/prisma/skills/homelab-network-readiness/SKILL.md +0 -170
  206. package/prisma/skills/homelab-network-setup/SKILL.md +0 -130
  207. package/prisma/skills/homelab-pihole-dns/SKILL.md +0 -275
  208. package/prisma/skills/homelab-vlan-segmentation/SKILL.md +0 -312
  209. package/prisma/skills/homelab-wireguard-vpn/SKILL.md +0 -306
  210. package/prisma/skills/hookify-rules/SKILL.md +0 -128
  211. package/prisma/skills/inherit-legacy-style/SKILL.md +0 -157
  212. package/prisma/skills/intent-driven-development/SKILL.md +0 -360
  213. package/prisma/skills/inventory-demand-planning/SKILL.md +0 -247
  214. package/prisma/skills/investor-materials/SKILL.md +0 -97
  215. package/prisma/skills/investor-outreach/SKILL.md +0 -92
  216. package/prisma/skills/ios-icon-gen/SKILL.md +0 -158
  217. package/prisma/skills/ios-icon-gen/scripts/generate_icons.swift +0 -258
  218. package/prisma/skills/ios-icon-gen/scripts/iconify_gen.sh +0 -235
  219. package/prisma/skills/iterative-retrieval/SKILL.md +0 -212
  220. package/prisma/skills/ito-basket-compare/SKILL.md +0 -64
  221. package/prisma/skills/ito-data-atlas-agent/SKILL.md +0 -64
  222. package/prisma/skills/ito-market-intelligence/SKILL.md +0 -61
  223. package/prisma/skills/ito-trade-planner/SKILL.md +0 -68
  224. package/prisma/skills/java-coding-standards/SKILL.md +0 -384
  225. package/prisma/skills/jira-integration/SKILL.md +0 -303
  226. package/prisma/skills/jpa-patterns/SKILL.md +0 -152
  227. package/prisma/skills/knowledge-ops/SKILL.md +0 -155
  228. package/prisma/skills/kotlin-coroutines-flows/SKILL.md +0 -285
  229. package/prisma/skills/kotlin-exposed-patterns/SKILL.md +0 -720
  230. package/prisma/skills/kotlin-ktor-patterns/SKILL.md +0 -690
  231. package/prisma/skills/kotlin-patterns/SKILL.md +0 -712
  232. package/prisma/skills/kotlin-testing/SKILL.md +0 -825
  233. package/prisma/skills/kubernetes-patterns/SKILL.md +0 -756
  234. package/prisma/skills/laravel-patterns/SKILL.md +0 -416
  235. package/prisma/skills/laravel-plugin-discovery/SKILL.md +0 -230
  236. package/prisma/skills/laravel-security/SKILL.md +0 -948
  237. package/prisma/skills/laravel-tdd/SKILL.md +0 -675
  238. package/prisma/skills/laravel-verification/SKILL.md +0 -180
  239. package/prisma/skills/latency-critical-systems/SKILL.md +0 -74
  240. package/prisma/skills/lead-intelligence/SKILL.md +0 -322
  241. package/prisma/skills/lead-intelligence/agents/enrichment-agent.md +0 -85
  242. package/prisma/skills/lead-intelligence/agents/mutual-mapper.md +0 -75
  243. package/prisma/skills/lead-intelligence/agents/outreach-drafter.md +0 -98
  244. package/prisma/skills/lead-intelligence/agents/signal-scorer.md +0 -60
  245. package/prisma/skills/liquid-glass-design/SKILL.md +0 -279
  246. package/prisma/skills/llm-trading-agent-security/SKILL.md +0 -147
  247. package/prisma/skills/logistics-exception-management/SKILL.md +0 -222
  248. package/prisma/skills/loop-design-check/SKILL.md +0 -143
  249. package/prisma/skills/mailtrap-email-integration/SKILL.md +0 -77
  250. package/prisma/skills/make-interfaces-feel-better/SKILL.md +0 -152
  251. package/prisma/skills/manim-video/SKILL.md +0 -90
  252. package/prisma/skills/manim-video/assets/network_graph_scene.py +0 -52
  253. package/prisma/skills/market-research/SKILL.md +0 -76
  254. package/prisma/skills/marketing-campaign/SKILL.md +0 -114
  255. package/prisma/skills/mcp-server-patterns/SKILL.md +0 -70
  256. package/prisma/skills/messages-ops/SKILL.md +0 -105
  257. package/prisma/skills/ml-adoption-playbook/SKILL.md +0 -57
  258. package/prisma/skills/mle-workflow/SKILL.md +0 -347
  259. package/prisma/skills/motion-advanced/SKILL.md +0 -596
  260. package/prisma/skills/motion-foundations/SKILL.md +0 -299
  261. package/prisma/skills/motion-patterns/SKILL.md +0 -434
  262. package/prisma/skills/motion-ui/SKILL.md +0 -576
  263. package/prisma/skills/mysql-patterns/SKILL.md +0 -413
  264. package/prisma/skills/nanoclaw-repl/SKILL.md +0 -34
  265. package/prisma/skills/nestjs-patterns/SKILL.md +0 -231
  266. package/prisma/skills/netmiko-ssh-automation/SKILL.md +0 -174
  267. package/prisma/skills/network-bgp-diagnostics/SKILL.md +0 -168
  268. package/prisma/skills/network-config-validation/SKILL.md +0 -211
  269. package/prisma/skills/network-interface-health/SKILL.md +0 -153
  270. package/prisma/skills/nextjs-turbopack/SKILL.md +0 -58
  271. package/prisma/skills/nodejs-keccak256/SKILL.md +0 -103
  272. package/prisma/skills/nutrient-document-processing/SKILL.md +0 -168
  273. package/prisma/skills/nuxt4-patterns/SKILL.md +0 -101
  274. package/prisma/skills/openclaw-persona-forge/SKILL.md +0 -289
  275. package/prisma/skills/openclaw-persona-forge/gacha.py +0 -224
  276. package/prisma/skills/openclaw-persona-forge/gacha.sh +0 -5
  277. package/prisma/skills/openclaw-persona-forge/references/avatar-style.md +0 -124
  278. package/prisma/skills/openclaw-persona-forge/references/boundary-rules.md +0 -53
  279. package/prisma/skills/openclaw-persona-forge/references/error-handling.md +0 -53
  280. package/prisma/skills/openclaw-persona-forge/references/identity-tension.md +0 -48
  281. package/prisma/skills/openclaw-persona-forge/references/naming-system.md +0 -39
  282. package/prisma/skills/openclaw-persona-forge/references/output-template.md +0 -166
  283. package/prisma/skills/opensource-pipeline/SKILL.md +0 -256
  284. package/prisma/skills/orch-add-feature/SKILL.md +0 -45
  285. package/prisma/skills/orch-build-mvp/SKILL.md +0 -49
  286. package/prisma/skills/orch-change-feature/SKILL.md +0 -43
  287. package/prisma/skills/orch-fix-defect/SKILL.md +0 -43
  288. package/prisma/skills/orch-pipeline/SKILL.md +0 -121
  289. package/prisma/skills/orch-refine-code/SKILL.md +0 -44
  290. package/prisma/skills/parallel-execution-optimizer/SKILL.md +0 -73
  291. package/prisma/skills/perl-patterns/SKILL.md +0 -505
  292. package/prisma/skills/perl-security/SKILL.md +0 -504
  293. package/prisma/skills/perl-testing/SKILL.md +0 -476
  294. package/prisma/skills/plan-orchestrate/SKILL.md +0 -263
  295. package/prisma/skills/plankton-code-quality/SKILL.md +0 -237
  296. package/prisma/skills/postgres-patterns/SKILL.md +0 -148
  297. package/prisma/skills/prediction-market-oracle-research/SKILL.md +0 -64
  298. package/prisma/skills/prediction-market-risk-review/SKILL.md +0 -61
  299. package/prisma/skills/prisma-patterns/SKILL.md +0 -401
  300. package/prisma/skills/product-capability/SKILL.md +0 -142
  301. package/prisma/skills/product-lens/SKILL.md +0 -93
  302. package/prisma/skills/production-audit/SKILL.md +0 -207
  303. package/prisma/skills/production-scheduling/SKILL.md +0 -238
  304. package/prisma/skills/project-flow-ops/SKILL.md +0 -112
  305. package/prisma/skills/prompt-optimizer/SKILL.md +0 -398
  306. package/prisma/skills/python-patterns/SKILL.md +0 -751
  307. package/prisma/skills/python-testing/SKILL.md +0 -817
  308. package/prisma/skills/pytorch-patterns/SKILL.md +0 -397
  309. package/prisma/skills/quality-nonconformance/SKILL.md +0 -260
  310. package/prisma/skills/quarkus-patterns/SKILL.md +0 -723
  311. package/prisma/skills/quarkus-security/SKILL.md +0 -468
  312. package/prisma/skills/quarkus-tdd/SKILL.md +0 -812
  313. package/prisma/skills/quarkus-verification/SKILL.md +0 -480
  314. package/prisma/skills/ralphinho-rfc-pipeline/SKILL.md +0 -68
  315. package/prisma/skills/react-native-patterns/SKILL.md +0 -326
  316. package/prisma/skills/react-patterns/SKILL.md +0 -342
  317. package/prisma/skills/react-performance/SKILL.md +0 -575
  318. package/prisma/skills/react-testing/SKILL.md +0 -424
  319. package/prisma/skills/recsys-pipeline-architect/SKILL.md +0 -115
  320. package/prisma/skills/recursive-decision-ledger/SKILL.md +0 -80
  321. package/prisma/skills/redis-patterns/SKILL.md +0 -404
  322. package/prisma/skills/regex-vs-llm-structured-text/SKILL.md +0 -221
  323. package/prisma/skills/remotion-video-creation/SKILL.md +0 -43
  324. package/prisma/skills/remotion-video-creation/rules/3d.md +0 -86
  325. package/prisma/skills/remotion-video-creation/rules/animations.md +0 -29
  326. package/prisma/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +0 -173
  327. package/prisma/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +0 -100
  328. package/prisma/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +0 -108
  329. package/prisma/skills/remotion-video-creation/rules/assets.md +0 -78
  330. package/prisma/skills/remotion-video-creation/rules/audio.md +0 -172
  331. package/prisma/skills/remotion-video-creation/rules/calculate-metadata.md +0 -104
  332. package/prisma/skills/remotion-video-creation/rules/can-decode.md +0 -75
  333. package/prisma/skills/remotion-video-creation/rules/charts.md +0 -58
  334. package/prisma/skills/remotion-video-creation/rules/compositions.md +0 -146
  335. package/prisma/skills/remotion-video-creation/rules/display-captions.md +0 -126
  336. package/prisma/skills/remotion-video-creation/rules/extract-frames.md +0 -229
  337. package/prisma/skills/remotion-video-creation/rules/fonts.md +0 -152
  338. package/prisma/skills/remotion-video-creation/rules/get-audio-duration.md +0 -58
  339. package/prisma/skills/remotion-video-creation/rules/get-video-dimensions.md +0 -68
  340. package/prisma/skills/remotion-video-creation/rules/get-video-duration.md +0 -58
  341. package/prisma/skills/remotion-video-creation/rules/gifs.md +0 -138
  342. package/prisma/skills/remotion-video-creation/rules/images.md +0 -130
  343. package/prisma/skills/remotion-video-creation/rules/import-srt-captions.md +0 -67
  344. package/prisma/skills/remotion-video-creation/rules/lottie.md +0 -67
  345. package/prisma/skills/remotion-video-creation/rules/measuring-dom-nodes.md +0 -34
  346. package/prisma/skills/remotion-video-creation/rules/measuring-text.md +0 -143
  347. package/prisma/skills/remotion-video-creation/rules/sequencing.md +0 -106
  348. package/prisma/skills/remotion-video-creation/rules/tailwind.md +0 -11
  349. package/prisma/skills/remotion-video-creation/rules/text-animations.md +0 -20
  350. package/prisma/skills/remotion-video-creation/rules/timing.md +0 -179
  351. package/prisma/skills/remotion-video-creation/rules/transcribe-captions.md +0 -19
  352. package/prisma/skills/remotion-video-creation/rules/transitions.md +0 -122
  353. package/prisma/skills/remotion-video-creation/rules/trimming.md +0 -52
  354. package/prisma/skills/remotion-video-creation/rules/videos.md +0 -171
  355. package/prisma/skills/repo-scan/SKILL.md +0 -79
  356. package/prisma/skills/research-ops/SKILL.md +0 -113
  357. package/prisma/skills/returns-reverse-logistics/SKILL.md +0 -240
  358. package/prisma/skills/rules-distill/SKILL.md +0 -265
  359. package/prisma/skills/rules-distill/scripts/scan-rules.sh +0 -58
  360. package/prisma/skills/rules-distill/scripts/scan-skills.sh +0 -129
  361. package/prisma/skills/rust-patterns/SKILL.md +0 -500
  362. package/prisma/skills/rust-testing/SKILL.md +0 -501
  363. package/prisma/skills/safety-guard/SKILL.md +0 -76
  364. package/prisma/skills/santa-method/SKILL.md +0 -307
  365. package/prisma/skills/scientific-db-pubmed-database/SKILL.md +0 -176
  366. package/prisma/skills/scientific-db-uspto-database/SKILL.md +0 -178
  367. package/prisma/skills/scientific-pkg-gget/SKILL.md +0 -167
  368. package/prisma/skills/scientific-thinking-literature-review/SKILL.md +0 -193
  369. package/prisma/skills/scientific-thinking-scholar-evaluation/SKILL.md +0 -161
  370. package/prisma/skills/search-first/SKILL.md +0 -183
  371. package/prisma/skills/security-bounty-hunter/SKILL.md +0 -100
  372. package/prisma/skills/security-review/SKILL.md +0 -504
  373. package/prisma/skills/security-review/cloud-infrastructure-security.md +0 -361
  374. package/prisma/skills/security-scan/SKILL.md +0 -166
  375. package/prisma/skills/seo/SKILL.md +0 -155
  376. package/prisma/skills/skill-comply/SKILL.md +0 -59
  377. package/prisma/skills/skill-comply/fixtures/compliant_trace.jsonl +0 -5
  378. package/prisma/skills/skill-comply/fixtures/noncompliant_trace.jsonl +0 -3
  379. package/prisma/skills/skill-comply/fixtures/tdd_spec.yaml +0 -44
  380. package/prisma/skills/skill-comply/prompts/classifier.md +0 -24
  381. package/prisma/skills/skill-comply/prompts/scenario_generator.md +0 -62
  382. package/prisma/skills/skill-comply/prompts/spec_generator.md +0 -42
  383. package/prisma/skills/skill-comply/pyproject.toml +0 -15
  384. package/prisma/skills/skill-comply/scripts/__init__.py +0 -0
  385. package/prisma/skills/skill-comply/scripts/classifier.py +0 -85
  386. package/prisma/skills/skill-comply/scripts/grader.py +0 -124
  387. package/prisma/skills/skill-comply/scripts/parser.py +0 -107
  388. package/prisma/skills/skill-comply/scripts/report.py +0 -170
  389. package/prisma/skills/skill-comply/scripts/run.py +0 -127
  390. package/prisma/skills/skill-comply/scripts/runner.py +0 -194
  391. package/prisma/skills/skill-comply/scripts/scenario_generator.py +0 -70
  392. package/prisma/skills/skill-comply/scripts/spec_generator.py +0 -72
  393. package/prisma/skills/skill-comply/scripts/utils.py +0 -13
  394. package/prisma/skills/skill-comply/tests/test_grader.py +0 -197
  395. package/prisma/skills/skill-comply/tests/test_parser.py +0 -90
  396. package/prisma/skills/skill-comply/tests/test_runner.py +0 -172
  397. package/prisma/skills/skill-scout/SKILL.md +0 -141
  398. package/prisma/skills/skill-stocktake/SKILL.md +0 -195
  399. package/prisma/skills/skill-stocktake/scripts/quick-diff.sh +0 -87
  400. package/prisma/skills/skill-stocktake/scripts/save-results.sh +0 -56
  401. package/prisma/skills/skill-stocktake/scripts/scan.sh +0 -170
  402. package/prisma/skills/social-graph-ranker/SKILL.md +0 -155
  403. package/prisma/skills/social-publisher/SKILL.md +0 -130
  404. package/prisma/skills/springboot-patterns/SKILL.md +0 -315
  405. package/prisma/skills/springboot-security/SKILL.md +0 -273
  406. package/prisma/skills/springboot-tdd/SKILL.md +0 -159
  407. package/prisma/skills/springboot-verification/SKILL.md +0 -232
  408. package/prisma/skills/strategic-compact/SKILL.md +0 -136
  409. package/prisma/skills/swift-actor-persistence/SKILL.md +0 -144
  410. package/prisma/skills/swift-concurrency-6-2/SKILL.md +0 -216
  411. package/prisma/skills/swift-protocol-di-testing/SKILL.md +0 -191
  412. package/prisma/skills/swiftui-patterns/SKILL.md +0 -259
  413. package/prisma/skills/taste/SKILL.md +0 -264
  414. package/prisma/skills/taste/references/genre-taxonomy.md +0 -87
  415. package/prisma/skills/tdd-workflow/SKILL.md +0 -583
  416. package/prisma/skills/team-agent-orchestration/SKILL.md +0 -111
  417. package/prisma/skills/team-builder/SKILL.md +0 -169
  418. package/prisma/skills/terminal-ops/SKILL.md +0 -110
  419. package/prisma/skills/tinystruct-patterns/SKILL.md +0 -279
  420. package/prisma/skills/tinystruct-patterns/references/architecture.md +0 -90
  421. package/prisma/skills/tinystruct-patterns/references/data-handling.md +0 -60
  422. package/prisma/skills/tinystruct-patterns/references/database.md +0 -99
  423. package/prisma/skills/tinystruct-patterns/references/routing.md +0 -64
  424. package/prisma/skills/tinystruct-patterns/references/system-usage.md +0 -97
  425. package/prisma/skills/tinystruct-patterns/references/testing.md +0 -72
  426. package/prisma/skills/token-budget-advisor/SKILL.md +0 -134
  427. package/prisma/skills/ui-demo/SKILL.md +0 -466
  428. package/prisma/skills/ui-to-vue/SKILL.md +0 -135
  429. package/prisma/skills/uncloud/SKILL.md +0 -344
  430. package/prisma/skills/unified-notifications-ops/SKILL.md +0 -188
  431. package/prisma/skills/verification-loop/SKILL.md +0 -127
  432. package/prisma/skills/video-editing/SKILL.md +0 -311
  433. package/prisma/skills/videodb/SKILL.md +0 -375
  434. package/prisma/skills/videodb/reference/api-reference.md +0 -550
  435. package/prisma/skills/videodb/reference/capture-reference.md +0 -407
  436. package/prisma/skills/videodb/reference/capture.md +0 -101
  437. package/prisma/skills/videodb/reference/editor.md +0 -443
  438. package/prisma/skills/videodb/reference/generative.md +0 -331
  439. package/prisma/skills/videodb/reference/rtstream-reference.md +0 -564
  440. package/prisma/skills/videodb/reference/rtstream.md +0 -65
  441. package/prisma/skills/videodb/reference/search.md +0 -230
  442. package/prisma/skills/videodb/reference/streaming.md +0 -406
  443. package/prisma/skills/videodb/reference/use-cases.md +0 -118
  444. package/prisma/skills/videodb/scripts/ws_listener.py +0 -282
  445. package/prisma/skills/visa-doc-translate/README.md +0 -86
  446. package/prisma/skills/visa-doc-translate/SKILL.md +0 -117
  447. package/prisma/skills/vite-patterns/SKILL.md +0 -450
  448. package/prisma/skills/vue-patterns/SKILL.md +0 -471
  449. package/prisma/skills/windows-desktop-e2e/SKILL.md +0 -888
  450. package/prisma/skills/workspace-surface-audit/SKILL.md +0 -126
  451. package/prisma/skills/x-api/SKILL.md +0 -235
@@ -1,167 +0,0 @@
1
- ---
2
- name: defi-amm-security
3
- description: Security checklist for Solidity AMM contracts, liquidity pools, and swap flows. Covers reentrancy, CEI ordering, donation or inflation attacks, oracle manipulation, slippage, admin controls, and integer math.
4
- metadata:
5
- origin: ECC direct-port adaptation
6
- version: "1.0.0"
7
- ---
8
-
9
- # DeFi AMM Security
10
-
11
- Critical vulnerability patterns and hardened implementations for Solidity AMM contracts, LP vaults, and swap functions.
12
-
13
- ## When to Use
14
-
15
- - Writing or auditing a Solidity AMM or liquidity-pool contract
16
- - Implementing swap, deposit, withdraw, mint, or burn flows that hold token balances
17
- - Reviewing any contract that uses `token.balanceOf(address(this))` in share or reserve math
18
- - Adding fee setters, pausers, oracle updates, or other admin functions to a DeFi protocol
19
-
20
- ## How It Works
21
-
22
- Use this as a checklist-plus-pattern library. Review every user entrypoint against the categories below and prefer the hardened examples over hand-rolled variants.
23
-
24
- ## Execution Safety
25
-
26
- The shell commands in this skill are local audit examples. Run them only in a trusted checkout or disposable sandbox, and do not splice untrusted contract names, paths, RPC URLs, private keys, or user-supplied flags into shell commands. Ask before installing tools or running long fuzzing/static-analysis jobs that may consume significant local or paid resources.
27
-
28
- Never include secrets, private keys, seed phrases, API tokens, or mainnet signing credentials in command examples, logs, or reports.
29
-
30
- ## Examples
31
-
32
- ### Reentrancy: enforce CEI order
33
-
34
- Vulnerable:
35
-
36
- ```solidity
37
- function withdraw(uint256 amount) external {
38
- require(balances[msg.sender] >= amount);
39
- token.transfer(msg.sender, amount);
40
- balances[msg.sender] -= amount;
41
- }
42
- ```
43
-
44
- Safe:
45
-
46
- ```solidity
47
- import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
48
- import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
49
-
50
- using SafeERC20 for IERC20;
51
-
52
- function withdraw(uint256 amount) external nonReentrant {
53
- require(balances[msg.sender] >= amount, "Insufficient");
54
- balances[msg.sender] -= amount;
55
- token.safeTransfer(msg.sender, amount);
56
- }
57
- ```
58
-
59
- Do not write your own guard when a hardened library exists.
60
-
61
- ### Donation or inflation attacks
62
-
63
- Using `token.balanceOf(address(this))` directly for share math lets attackers manipulate the denominator by sending tokens to the contract outside the intended path.
64
-
65
- ```solidity
66
- // Vulnerable
67
- function deposit(uint256 assets) external returns (uint256 shares) {
68
- shares = (assets * totalShares) / token.balanceOf(address(this));
69
- }
70
- ```
71
-
72
- ```solidity
73
- // Safe
74
- uint256 private _totalAssets;
75
-
76
- function deposit(uint256 assets) external nonReentrant returns (uint256 shares) {
77
- uint256 balBefore = token.balanceOf(address(this));
78
- token.safeTransferFrom(msg.sender, address(this), assets);
79
- uint256 received = token.balanceOf(address(this)) - balBefore;
80
-
81
- shares = totalShares == 0 ? received : (received * totalShares) / _totalAssets;
82
- _totalAssets += received;
83
- totalShares += shares;
84
- }
85
- ```
86
-
87
- Track internal accounting and measure actual tokens received.
88
-
89
- ### Oracle manipulation
90
-
91
- Spot prices are flash-loan manipulable. Prefer TWAP.
92
-
93
- ```solidity
94
- uint32[] memory secondsAgos = new uint32[](2);
95
- secondsAgos[0] = 1800;
96
- secondsAgos[1] = 0;
97
- (int56[] memory tickCumulatives,) = IUniswapV3Pool(pool).observe(secondsAgos);
98
- int24 twapTick = int24(
99
- (tickCumulatives[1] - tickCumulatives[0]) / int56(uint56(30 minutes))
100
- );
101
- uint160 sqrtPriceX96 = TickMath.getSqrtRatioAtTick(twapTick);
102
- ```
103
-
104
- ### Slippage protection
105
-
106
- Every swap path needs caller-provided slippage and a deadline.
107
-
108
- ```solidity
109
- function swap(
110
- uint256 amountIn,
111
- uint256 amountOutMin,
112
- uint256 deadline
113
- ) external returns (uint256 amountOut) {
114
- require(block.timestamp <= deadline, "Expired");
115
- amountOut = _calculateOut(amountIn);
116
- require(amountOut >= amountOutMin, "Slippage exceeded");
117
- _executeSwap(amountIn, amountOut);
118
- }
119
- ```
120
-
121
- ### Safe reserve math
122
-
123
- ```solidity
124
- import {FullMath} from "@uniswap/v3-core/contracts/libraries/FullMath.sol";
125
-
126
- uint256 result = FullMath.mulDiv(a, b, c);
127
- ```
128
-
129
- For large reserve math, avoid naive `a * b / c` when overflow risk exists.
130
-
131
- ### Admin controls
132
-
133
- ```solidity
134
- import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
135
-
136
- contract MyAMM is Ownable2Step {
137
- function setFee(uint256 fee) external onlyOwner { ... }
138
- function pause() external onlyOwner { ... }
139
- }
140
- ```
141
-
142
- Prefer explicit acceptance for ownership transfer and gate every privileged path.
143
-
144
- ## Security Checklist
145
-
146
- - Reentrancy-exposed entrypoints use `nonReentrant`
147
- - CEI ordering is respected
148
- - Share math does not depend on raw `balanceOf(address(this))`
149
- - ERC-20 transfers use `SafeERC20`
150
- - Deposits measure actual tokens received
151
- - Oracle reads use TWAP or another manipulation-resistant source
152
- - Swaps require `amountOutMin` and `deadline`
153
- - Overflow-sensitive reserve math uses safe primitives like `mulDiv`
154
- - Admin functions are access-controlled
155
- - Emergency pause exists and is tested
156
- - Static analysis and fuzzing are run before production
157
-
158
- ## Audit Tools
159
-
160
- ```bash
161
- pip install slither-analyzer
162
- slither . --exclude-dependencies
163
-
164
- echidna-test . --contract YourAMM --config echidna.yaml
165
-
166
- forge test --fuzz-runs 10000
167
- ```
@@ -1,126 +0,0 @@
1
- ---
2
- name: delivery-gate
3
- description: Stop hook that blocks Claude from finishing until quality checks pass. Detects rationalization patterns (surface text heuristics), stale learning logs (filesystem mtime), and low disk space. Complements self-audit by mechanically enforcing learning capture habits.
4
- version: 1.1.1
5
- metadata:
6
- origin: ECC
7
- ---
8
-
9
- # Delivery Gate — Mechanical Quality Gate for Claude Code
10
-
11
- A **Stop hook** that checks three things before Claude can finish a session, using only **deterministic checks** — file modification timestamps, disk usage, and regex patterns on the transcript text. No AI inference.
12
-
13
- This is distinct from reasoning gates (like `self-audit`): delivery-gate checks machine-verifiable facts; self-audit checks output quality across four reasoning dimensions. Together they form defense in depth:
14
- - **delivery-gate**: "Was the learning library touched today? Is disk space safe?"
15
- - **self-audit**: "Is the file content correct, complete, and honest?"
16
-
17
- This is the same pattern as CI pipeline gates — automated, deterministic checks that verify machine-readable facts rather than trusting self-reported status.
18
-
19
- ## What It Checks
20
-
21
- | Check | Mechanism | On Hit |
22
- |-------|-----------|--------|
23
- | Rationalization patterns | Regex on transcript tail | **Warning only** (never blocks) |
24
- | Stale learning libraries | mtime on 5 configurable paths | Warning if some stale; **Block** if >=3 stale OR growth-log stale + complex task |
25
- | Disk space < 50GB | `shutil.disk_usage` | Warning |
26
- | Disk space < 15GB | `shutil.disk_usage` | **Block** (exit 2) |
27
-
28
- Rationalization detection warns about patterns like "skip tests for now" and "pre-existing bug" — surface signals that thinking may have been cut short. It never blocks on its own, because regex heuristics can false-positive. The blocking conditions are: disk critical, `>=3 learning libs stale`, OR `growth-log` specifically stale (all require complex task >=3 edits).
29
-
30
- ## Why
31
-
32
- Claude Code's built-in checks cover code quality (build → type → lint → test). But there's a different failure mode: the agent produces working code while the **session hygiene was neglected** — learning not captured, rationalized shortcuts, disk running out silently.
33
-
34
- Over many sessions of "ship and forget," the human hasn't grown. This hook enforces the habit: complex task → must touch learning libraries.
35
-
36
- ## Install
37
-
38
- ```bash
39
- cp quality-gate.py ~/.claude/scripts/
40
- ```
41
-
42
- Add to `~/.claude/settings.json`:
43
- ```json
44
- {
45
- "hooks": {
46
- "Stop": [{
47
- "hooks": [{
48
- "type": "command",
49
- "command": "python3 ~/.claude/scripts/quality-gate.py",
50
- "timeout": 5000
51
- }]
52
- }]
53
- }
54
- }
55
- ```
56
-
57
- ## Learning Libraries
58
-
59
- Create these files in your project's memory directory. The hook checks if at least one was updated today:
60
-
61
- ```
62
- memory/
63
- ├── growth-log/ # Daily learning entries (directory)
64
- ├── decisions/log.md # Decision log
65
- ├── output-index.md # Index of session outputs
66
- ├── ratings-tracker.md # Skill ratings over time
67
- └── tooling_capabilities.md # Known tools inventory
68
- ```
69
-
70
- Customize the `LIBS` dict to match your own file structure.
71
-
72
- ## Configuration
73
-
74
- Edit `quality-gate.py`:
75
-
76
- | Variable | Default | Purpose |
77
- |----------|---------|---------|
78
- | `RATIONALIZE` | 4 patterns | Regex patterns for rationalization detection |
79
- | `LIBS` | 5 libraries | Files/dirs to check for today's updates |
80
- | `COMPLEX_THRESHOLD` | 3 | Edit/Write calls to classify as complex |
81
- | `DISK_WARN_GB` | 50 | Warn below this |
82
- | `DISK_CRIT_GB` | 15 | Block below this |
83
-
84
- ## Examples
85
-
86
- **Simple session — allowed:**
87
- ```
88
- edit_count=1 (< 3, not complex) → exit 0
89
- ```
90
-
91
- **Complex task, learning captured — allowed:**
92
- ```
93
- edit_count=5 (complex) → checks LIBS → growth-log updated today → exit 0
94
- ```
95
-
96
- **Complex task, no learning — BLOCKED:**
97
- ```
98
- edit_count=4 (complex) → checks LIBS → all 5 stale → exit 2
99
- stderr: "Blocked: complex task completed but no learning captured today."
100
- ```
101
-
102
- **Low disk space — BLOCKED:**
103
- ```
104
- disk_free=12GB < 15GB critical → exit 2
105
- stderr: "Blocked: disk space at 12GB (threshold: 15GB)."
106
- ```
107
-
108
- ## Limitations
109
-
110
- The hook enforces the **habit** of touching learning libraries, not the **quality** of what was recorded. If `output-index.md` is updated but `growth-log` is skipped, the hook passes (1 of 5 libraries touched). This is by design: mechanical gates check machine-verifiable facts. For content quality verification, pair with `self-audit`.
111
-
112
- ## Compatibility
113
-
114
- - Python 3.8+ (uses `from __future__ import annotations`)
115
- - Cross-platform: Windows, macOS, Linux
116
- - Zero dependencies beyond stdlib
117
-
118
- ## Quality
119
-
120
- This code went through 4 rounds of automated code review (CodeRabbit + Greptile) with 9 real bugs found and fixed.
121
-
122
- ## See Also
123
-
124
- - `self-audit` — Reasoning quality gate (completeness/consistency/groundedness/honesty)
125
- - `verification-loop` — Code quality checks (build/type/lint/test)
126
- - `gateguard` — PreToolUse safety gate
@@ -1,220 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Stop hook: quality gate with delivery check.
4
- Detects incomplete work, stale learning logs, and low disk space.
5
- Blocks Claude from stopping when a complex task completed without learning capture.
6
-
7
- Install: cp this file to ~/.claude/scripts/quality-gate.py
8
- Configure: Add to settings.json hooks.Stop
9
- """
10
- from __future__ import annotations
11
-
12
- import sys
13
- import os
14
- import re
15
- import json
16
- import datetime
17
- import shutil
18
- import logging
19
- from typing import Optional
20
-
21
- # ---- Configuration ----
22
- RATIONALIZE = [
23
- r'(?:this|that)\s+is\s+a\s+pre[- ]existing\s+(?:issue|bug)\b(?!\s+(?:that|which|and))',
24
- r'skipping\s+(?:tests?|lint|coverage|type[- ]check)\s+for\s+now',
25
- r'(?:tests?|coverage)\s+(?:are|is)\s+(?:failing|broken)\s+but\s+(?:I|we)\s+(?:\'ll|can|will)\s+(?:fix|address|resolve|handle)',
26
- r'(?:not\s+addressing|won\'t\s+fix|leaving)\s+the\s+(?:failing|broken)\s+(?:tests?|builds?|integration\s+tests?)',
27
- ]
28
-
29
- LIBS = {
30
- 'ratings-tracker': 'ratings-tracker.md',
31
- 'decisions-log': 'decisions/log.md',
32
- 'growth-log': 'growth-log/',
33
- 'output-index': 'output-index.md',
34
- 'tooling-capabilities': 'tooling_capabilities.md',
35
- }
36
-
37
- MIN_CHARS = 40
38
- COMPLEX_THRESHOLD = 3
39
- DISK_REMIND_GB = 50
40
- DISK_WARN_GB = 30
41
- DISK_CRIT_GB = 15
42
- # ---- End Configuration ----
43
-
44
- logging.basicConfig(
45
- stream=sys.stderr,
46
- format='%(levelname)s: %(message)s',
47
- level=logging.INFO,
48
- )
49
- log = logging.getLogger('quality-gate')
50
-
51
-
52
- def get_project_memory_dir() -> Optional[str]:
53
- """Find the current project's memory directory.
54
-
55
- Returns None if no memory directory exists for this project.
56
- Does NOT fall back to other projects (privacy boundary)."""
57
- cwd = os.environ.get('CLAUDE_PROJECT_DIR', os.getcwd())
58
- safe = cwd.replace(':', '-').replace('\\', '-').replace('/', '-')
59
- mem = os.path.expanduser(f'~/.claude/projects/{safe}/memory')
60
- log.info('Looking for memory dir: cwd=%s -> %s', cwd, mem)
61
- if os.path.isdir(mem):
62
- return mem
63
- return None
64
-
65
-
66
- def check_disk() -> Optional[int]:
67
- """Check free space on the disk containing the home directory.
68
-
69
- Works cross-platform: macOS, Linux, Windows.
70
- Returns free GB, or None if the home directory is unavailable."""
71
- try:
72
- home = os.path.expanduser('~')
73
- free_gb = shutil.disk_usage(home).free // (2**30)
74
- return free_gb
75
- except (FileNotFoundError, PermissionError, OSError):
76
- log.warning('cannot check disk space (home dir inaccessible)')
77
- return None
78
-
79
-
80
- def check_stale_libs(mem_dir: str) -> list[str]:
81
- """Return list of library names not updated today.
82
-
83
- Per-file OSError handling: individual unreadable files are skipped,
84
- but the scan continues for remaining libraries."""
85
- today = datetime.date.today()
86
- stale: list[str] = []
87
- for name, path in LIBS.items():
88
- full = os.path.join(mem_dir, path)
89
- try:
90
- if os.path.isdir(full):
91
- has_today = False
92
- for dirpath, _dirnames, filenames in os.walk(full):
93
- for f in filenames:
94
- fp = os.path.join(dirpath, f)
95
- try:
96
- mt = datetime.datetime.fromtimestamp(os.path.getmtime(fp)).date()
97
- if mt == today:
98
- has_today = True
99
- break
100
- except OSError:
101
- continue
102
- if has_today:
103
- break
104
- if not has_today:
105
- stale.append(name)
106
- elif os.path.exists(full):
107
- try:
108
- mt = datetime.datetime.fromtimestamp(os.path.getmtime(full)).date()
109
- if mt != today:
110
- stale.append(name)
111
- except OSError:
112
- stale.append(name)
113
- else:
114
- stale.append(name)
115
- except OSError as e:
116
- log.warning('cannot access lib %s: %s', name, e)
117
- stale.append(name)
118
- return stale
119
-
120
-
121
- def count_edits(text: str) -> int:
122
- """Count Edit/Write tool invocations in the full transcript.
123
-
124
- Matches structured tool-call JSON patterns to avoid false-positives
125
- from ordinary English prose. Scans entire transcript."""
126
- return len(re.findall(r'"name":\s*"(?:Edit|Write)"', text))
127
-
128
-
129
- def main() -> None:
130
- raw = sys.stdin.read()
131
- # Stop hooks write feedback to stderr, not stdout.
132
- # Claude Code reads stderr as the hook's response message.
133
- # Do NOT echo raw JSON to stdout — it would overwrite the blocking reason.
134
-
135
- # Resolve transcript: Stop hooks may receive raw text OR JSON with transcript_path.
136
- transcript = raw
137
- try:
138
- payload = json.loads(raw)
139
- if isinstance(payload, dict) and 'transcript_path' in payload:
140
- tp = os.path.expanduser(payload['transcript_path'])
141
- if os.path.exists(tp):
142
- with open(tp, 'r', encoding='utf-8') as f:
143
- transcript = f.read()
144
- else:
145
- log.warning('transcript_path %s not found, falling back to raw stdin', tp)
146
- except (json.JSONDecodeError, TypeError, OSError):
147
- pass
148
-
149
- # 1. Disk check — three-level: remind / warn / block
150
- disk_free = check_disk()
151
- if disk_free is not None:
152
- if disk_free < DISK_CRIT_GB:
153
- log.warning('Blocked: disk space at %dGB (<%dGB). Free space before continuing.',
154
- disk_free, DISK_CRIT_GB)
155
- sys.exit(2)
156
- if disk_free < DISK_WARN_GB:
157
- log.warning('WARN: disk space at %dGB (<%dGB)', disk_free, DISK_WARN_GB)
158
- elif disk_free < DISK_REMIND_GB:
159
- log.info('Reminder: disk space at %dGB (<%dGB)', disk_free, DISK_REMIND_GB)
160
-
161
- # 2. Short session — skip remaining checks
162
- if len(transcript) < MIN_CHARS:
163
- sys.exit(0)
164
-
165
- tail = transcript[-8000:]
166
-
167
- # 3. Rationalization pattern detection
168
- hits = []
169
- for p in RATIONALIZE:
170
- m = re.search(p, tail, re.IGNORECASE)
171
- if m:
172
- hits.append(m.group(0)[:80])
173
- if hits:
174
- log.warning('quality-gate: rationalization detected — %s', hits)
175
-
176
- # 4. Learning capture check
177
- mem_dir = get_project_memory_dir()
178
- edit_count = count_edits(transcript)
179
- is_complex = edit_count >= COMPLEX_THRESHOLD
180
-
181
- if mem_dir:
182
- stale = check_stale_libs(mem_dir)
183
- else:
184
- # No memory dir — setup incomplete.
185
- # Warn but DO NOT block: blocking here deadlocks new users
186
- # who haven't created the memory directory yet.
187
- if is_complex:
188
- log.warning('No project memory directory found — cannot verify learning capture.')
189
- log.warning('Set up memory/ per delivery-gate SKILL.md to enable enforcement.')
190
- stale = []
191
-
192
- parts = []
193
- if is_complex:
194
- status_icons = ['X' if s in stale else 'O' for s in LIBS]
195
- parts.append(
196
- f'\n Complex task ({edit_count} edits). '
197
- f'Check: [{"][".join(f"{k}:{v}" for k,v in zip(LIBS.keys(), status_icons))}]'
198
- )
199
- if stale:
200
- parts.append(f' Stale ({len(stale)}): {", ".join(stale)}')
201
-
202
- if parts:
203
- log.warning('\n'.join(parts))
204
-
205
- # 5. Block if complex task completed without learning capture
206
- if is_complex:
207
- if len(stale) >= 3:
208
- log.warning('Blocked: complex task but >=3 learning libs stale.')
209
- log.warning(f'Stale: {", ".join(stale)}. Update before stopping.')
210
- sys.exit(2)
211
- if 'growth-log' in stale:
212
- log.warning('Blocked: code changes made but no growth-log update.')
213
- log.warning('Write growth-log before stopping (even if "no new learnings").')
214
- sys.exit(2)
215
-
216
- sys.exit(0)
217
-
218
-
219
- if __name__ == '__main__':
220
- main()