@baselane/packs 0.1.5 → 0.1.7

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 (445) hide show
  1. package/package.json +2 -2
  2. package/packs/full-harness/pack.json +3093 -0
  3. package/packs/full-harness/rendered/.claude/agents/a11y-architect.md +138 -0
  4. package/packs/full-harness/rendered/.claude/agents/agent-evaluator.md +206 -0
  5. package/packs/full-harness/rendered/.claude/agents/architect.md +209 -0
  6. package/packs/full-harness/rendered/.claude/agents/build-error-resolver.md +114 -0
  7. package/packs/full-harness/rendered/.claude/agents/chief-of-staff.md +149 -0
  8. package/packs/full-harness/rendered/.claude/agents/code-architect.md +71 -0
  9. package/packs/full-harness/rendered/.claude/agents/code-explorer.md +69 -0
  10. package/packs/full-harness/rendered/.claude/agents/code-reviewer.md +312 -0
  11. package/packs/full-harness/rendered/.claude/agents/code-simplifier.md +47 -0
  12. package/packs/full-harness/rendered/.claude/agents/comment-analyzer.md +45 -0
  13. package/packs/full-harness/rendered/.claude/agents/conversation-analyzer.md +52 -0
  14. package/packs/full-harness/rendered/.claude/agents/cpp-build-resolver.md +90 -0
  15. package/packs/full-harness/rendered/.claude/agents/cpp-reviewer.md +64 -0
  16. package/packs/full-harness/rendered/.claude/agents/csharp-reviewer.md +93 -0
  17. package/packs/full-harness/rendered/.claude/agents/dart-build-resolver.md +201 -0
  18. package/packs/full-harness/rendered/.claude/agents/database-reviewer.md +91 -0
  19. package/packs/full-harness/rendered/.claude/agents/django-build-resolver.md +243 -0
  20. package/packs/full-harness/rendered/.claude/agents/django-reviewer.md +149 -0
  21. package/packs/full-harness/rendered/.claude/agents/doc-updater.md +107 -0
  22. package/packs/full-harness/rendered/.claude/agents/docs-lookup.md +64 -0
  23. package/packs/full-harness/rendered/.claude/agents/e2e-runner.md +107 -0
  24. package/packs/full-harness/rendered/.claude/agents/fastapi-reviewer.md +68 -0
  25. package/packs/full-harness/rendered/.claude/agents/flutter-reviewer.md +241 -0
  26. package/packs/full-harness/rendered/.claude/agents/fsharp-reviewer.md +92 -0
  27. package/packs/full-harness/rendered/.claude/agents/gan-evaluator.md +206 -0
  28. package/packs/full-harness/rendered/.claude/agents/gan-generator.md +128 -0
  29. package/packs/full-harness/rendered/.claude/agents/gan-planner.md +96 -0
  30. package/packs/full-harness/rendered/.claude/agents/go-build-resolver.md +94 -0
  31. package/packs/full-harness/rendered/.claude/agents/go-reviewer.md +68 -0
  32. package/packs/full-harness/rendered/.claude/agents/harmonyos-app-resolver.md +173 -0
  33. package/packs/full-harness/rendered/.claude/agents/harness-optimizer.md +32 -0
  34. package/packs/full-harness/rendered/.claude/agents/healthcare-reviewer.md +83 -0
  35. package/packs/full-harness/rendered/.claude/agents/homelab-architect.md +94 -0
  36. package/packs/full-harness/rendered/.claude/agents/java-build-resolver.md +266 -0
  37. package/packs/full-harness/rendered/.claude/agents/java-reviewer.md +179 -0
  38. package/packs/full-harness/rendered/.claude/agents/kotlin-build-resolver.md +118 -0
  39. package/packs/full-harness/rendered/.claude/agents/kotlin-reviewer.md +157 -0
  40. package/packs/full-harness/rendered/.claude/agents/loop-operator.md +33 -0
  41. package/packs/full-harness/rendered/.claude/agents/marketing-agent.md +141 -0
  42. package/packs/full-harness/rendered/.claude/agents/mle-reviewer.md +153 -0
  43. package/packs/full-harness/rendered/.claude/agents/network-architect.md +92 -0
  44. package/packs/full-harness/rendered/.claude/agents/network-config-reviewer.md +94 -0
  45. package/packs/full-harness/rendered/.claude/agents/network-troubleshooter.md +116 -0
  46. package/packs/full-harness/rendered/.claude/agents/opensource-forker.md +198 -0
  47. package/packs/full-harness/rendered/.claude/agents/opensource-packager.md +249 -0
  48. package/packs/full-harness/rendered/.claude/agents/opensource-sanitizer.md +188 -0
  49. package/packs/full-harness/rendered/.claude/agents/performance-optimizer.md +446 -0
  50. package/packs/full-harness/rendered/.claude/agents/php-reviewer.md +92 -0
  51. package/packs/full-harness/rendered/.claude/agents/planner.md +210 -0
  52. package/packs/full-harness/rendered/.claude/agents/pr-test-analyzer.md +45 -0
  53. package/packs/full-harness/rendered/.claude/agents/python-reviewer.md +90 -0
  54. package/packs/full-harness/rendered/.claude/agents/pytorch-build-resolver.md +120 -0
  55. package/packs/full-harness/rendered/.claude/agents/react-build-resolver.md +206 -0
  56. package/packs/full-harness/rendered/.claude/agents/react-reviewer.md +156 -0
  57. package/packs/full-harness/rendered/.claude/agents/refactor-cleaner.md +85 -0
  58. package/packs/full-harness/rendered/.claude/agents/rust-build-resolver.md +148 -0
  59. package/packs/full-harness/rendered/.claude/agents/rust-reviewer.md +85 -0
  60. package/packs/full-harness/rendered/.claude/agents/security-reviewer.md +108 -0
  61. package/packs/full-harness/rendered/.claude/agents/seo-specialist.md +54 -0
  62. package/packs/full-harness/rendered/.claude/agents/silent-failure-hunter.md +50 -0
  63. package/packs/full-harness/rendered/.claude/agents/spec-miner.md +207 -0
  64. package/packs/full-harness/rendered/.claude/agents/swift-build-resolver.md +161 -0
  65. package/packs/full-harness/rendered/.claude/agents/swift-reviewer.md +98 -0
  66. package/packs/full-harness/rendered/.claude/agents/tdd-guide.md +89 -0
  67. package/packs/full-harness/rendered/.claude/agents/type-design-analyzer.md +41 -0
  68. package/packs/full-harness/rendered/.claude/agents/typescript-reviewer.md +96 -0
  69. package/packs/full-harness/rendered/.claude/agents/vue-reviewer.md +195 -0
  70. package/packs/full-harness/rendered/.claude/commands/aside.md +6 -0
  71. package/packs/full-harness/rendered/.claude/commands/auto-update.md +6 -0
  72. package/packs/full-harness/rendered/.claude/commands/build-fix.md +6 -0
  73. package/packs/full-harness/rendered/.claude/commands/checkpoint.md +6 -0
  74. package/packs/full-harness/rendered/.claude/commands/code-review.md +6 -0
  75. package/packs/full-harness/rendered/.claude/commands/cost-report.md +6 -0
  76. package/packs/full-harness/rendered/.claude/commands/cpp-build.md +6 -0
  77. package/packs/full-harness/rendered/.claude/commands/cpp-review.md +6 -0
  78. package/packs/full-harness/rendered/.claude/commands/cpp-test.md +6 -0
  79. package/packs/full-harness/rendered/.claude/commands/ecc-guide.md +6 -0
  80. package/packs/full-harness/rendered/.claude/commands/epic-claim.md +6 -0
  81. package/packs/full-harness/rendered/.claude/commands/epic-decompose.md +6 -0
  82. package/packs/full-harness/rendered/.claude/commands/epic-publish.md +6 -0
  83. package/packs/full-harness/rendered/.claude/commands/epic-review.md +6 -0
  84. package/packs/full-harness/rendered/.claude/commands/epic-sync.md +6 -0
  85. package/packs/full-harness/rendered/.claude/commands/epic-unblock.md +6 -0
  86. package/packs/full-harness/rendered/.claude/commands/epic-validate.md +6 -0
  87. package/packs/full-harness/rendered/.claude/commands/evolve.md +6 -0
  88. package/packs/full-harness/rendered/.claude/commands/fastapi-review.md +6 -0
  89. package/packs/full-harness/rendered/.claude/commands/feature-dev.md +6 -0
  90. package/packs/full-harness/rendered/.claude/commands/flutter-build.md +6 -0
  91. package/packs/full-harness/rendered/.claude/commands/flutter-review.md +6 -0
  92. package/packs/full-harness/rendered/.claude/commands/flutter-test.md +6 -0
  93. package/packs/full-harness/rendered/.claude/commands/gan-build.md +6 -0
  94. package/packs/full-harness/rendered/.claude/commands/gan-design.md +6 -0
  95. package/packs/full-harness/rendered/.claude/commands/go-build.md +6 -0
  96. package/packs/full-harness/rendered/.claude/commands/go-review.md +6 -0
  97. package/packs/full-harness/rendered/.claude/commands/go-test.md +6 -0
  98. package/packs/full-harness/rendered/.claude/commands/gradle-build.md +6 -0
  99. package/packs/full-harness/rendered/.claude/commands/harness-audit.md +6 -0
  100. package/packs/full-harness/rendered/.claude/commands/hookify-configure.md +6 -0
  101. package/packs/full-harness/rendered/.claude/commands/hookify-help.md +6 -0
  102. package/packs/full-harness/rendered/.claude/commands/hookify-list.md +6 -0
  103. package/packs/full-harness/rendered/.claude/commands/hookify.md +6 -0
  104. package/packs/full-harness/rendered/.claude/commands/instinct-export.md +6 -0
  105. package/packs/full-harness/rendered/.claude/commands/instinct-import.md +6 -0
  106. package/packs/full-harness/rendered/.claude/commands/instinct-status.md +6 -0
  107. package/packs/full-harness/rendered/.claude/commands/jira.md +6 -0
  108. package/packs/full-harness/rendered/.claude/commands/kotlin-build.md +6 -0
  109. package/packs/full-harness/rendered/.claude/commands/kotlin-review.md +6 -0
  110. package/packs/full-harness/rendered/.claude/commands/kotlin-test.md +6 -0
  111. package/packs/full-harness/rendered/.claude/commands/learn-eval.md +6 -0
  112. package/packs/full-harness/rendered/.claude/commands/learn.md +6 -0
  113. package/packs/full-harness/rendered/.claude/commands/loop-start.md +6 -0
  114. package/packs/full-harness/rendered/.claude/commands/loop-status.md +6 -0
  115. package/packs/full-harness/rendered/.claude/commands/marketing-campaign.md +6 -0
  116. package/packs/full-harness/rendered/.claude/commands/model-route.md +6 -0
  117. package/packs/full-harness/rendered/.claude/commands/multi-backend.md +6 -0
  118. package/packs/full-harness/rendered/.claude/commands/multi-execute.md +6 -0
  119. package/packs/full-harness/rendered/.claude/commands/multi-frontend.md +6 -0
  120. package/packs/full-harness/rendered/.claude/commands/multi-plan.md +6 -0
  121. package/packs/full-harness/rendered/.claude/commands/multi-workflow.md +6 -0
  122. package/packs/full-harness/rendered/.claude/commands/orch-add-feature.md +6 -0
  123. package/packs/full-harness/rendered/.claude/commands/orch-build-mvp.md +6 -0
  124. package/packs/full-harness/rendered/.claude/commands/orch-change-feature.md +6 -0
  125. package/packs/full-harness/rendered/.claude/commands/orch-fix-defect.md +6 -0
  126. package/packs/full-harness/rendered/.claude/commands/orch-refine-code.md +6 -0
  127. package/packs/full-harness/rendered/.claude/commands/orch-review.md +6 -0
  128. package/packs/full-harness/rendered/.claude/commands/plan-canvas.md +6 -0
  129. package/packs/full-harness/rendered/.claude/commands/plan-prd.md +6 -0
  130. package/packs/full-harness/rendered/.claude/commands/plan.md +6 -0
  131. package/packs/full-harness/rendered/.claude/commands/pm2.md +6 -0
  132. package/packs/full-harness/rendered/.claude/commands/pr.md +6 -0
  133. package/packs/full-harness/rendered/.claude/commands/project-init.md +6 -0
  134. package/packs/full-harness/rendered/.claude/commands/projects.md +6 -0
  135. package/packs/full-harness/rendered/.claude/commands/promote.md +6 -0
  136. package/packs/full-harness/rendered/.claude/commands/prp-commit.md +6 -0
  137. package/packs/full-harness/rendered/.claude/commands/prp-implement.md +6 -0
  138. package/packs/full-harness/rendered/.claude/commands/prp-plan.md +6 -0
  139. package/packs/full-harness/rendered/.claude/commands/prp-pr.md +6 -0
  140. package/packs/full-harness/rendered/.claude/commands/prp-prd.md +6 -0
  141. package/packs/full-harness/rendered/.claude/commands/prune.md +6 -0
  142. package/packs/full-harness/rendered/.claude/commands/python-review.md +6 -0
  143. package/packs/full-harness/rendered/.claude/commands/quality-gate.md +6 -0
  144. package/packs/full-harness/rendered/.claude/commands/react-build.md +6 -0
  145. package/packs/full-harness/rendered/.claude/commands/react-review.md +6 -0
  146. package/packs/full-harness/rendered/.claude/commands/react-test.md +6 -0
  147. package/packs/full-harness/rendered/.claude/commands/refactor-clean.md +6 -0
  148. package/packs/full-harness/rendered/.claude/commands/resume-session.md +6 -0
  149. package/packs/full-harness/rendered/.claude/commands/review-pr.md +6 -0
  150. package/packs/full-harness/rendered/.claude/commands/rust-build.md +6 -0
  151. package/packs/full-harness/rendered/.claude/commands/rust-review.md +6 -0
  152. package/packs/full-harness/rendered/.claude/commands/rust-test.md +6 -0
  153. package/packs/full-harness/rendered/.claude/commands/santa-loop.md +6 -0
  154. package/packs/full-harness/rendered/.claude/commands/save-session.md +6 -0
  155. package/packs/full-harness/rendered/.claude/commands/security-scan.md +6 -0
  156. package/packs/full-harness/rendered/.claude/commands/sessions.md +6 -0
  157. package/packs/full-harness/rendered/.claude/commands/setup-pm.md +6 -0
  158. package/packs/full-harness/rendered/.claude/commands/skill-create.md +6 -0
  159. package/packs/full-harness/rendered/.claude/commands/skill-health.md +6 -0
  160. package/packs/full-harness/rendered/.claude/commands/test-coverage.md +6 -0
  161. package/packs/full-harness/rendered/.claude/commands/update-codemaps.md +6 -0
  162. package/packs/full-harness/rendered/.claude/commands/update-docs.md +6 -0
  163. package/packs/full-harness/rendered/.claude/commands/vue-review.md +6 -0
  164. package/packs/full-harness/rendered/.claude/skills/accessibility/SKILL.md +144 -0
  165. package/packs/full-harness/rendered/.claude/skills/agent-architecture-audit/SKILL.md +254 -0
  166. package/packs/full-harness/rendered/.claude/skills/agent-eval/SKILL.md +143 -0
  167. package/packs/full-harness/rendered/.claude/skills/agent-harness-construction/SKILL.md +72 -0
  168. package/packs/full-harness/rendered/.claude/skills/agent-introspection-debugging/SKILL.md +152 -0
  169. package/packs/full-harness/rendered/.claude/skills/agent-payment-x402/SKILL.md +223 -0
  170. package/packs/full-harness/rendered/.claude/skills/agent-self-evaluation/SKILL.md +181 -0
  171. package/packs/full-harness/rendered/.claude/skills/agent-sort/SKILL.md +214 -0
  172. package/packs/full-harness/rendered/.claude/skills/agentic-engineering/SKILL.md +62 -0
  173. package/packs/full-harness/rendered/.claude/skills/agentic-os/SKILL.md +386 -0
  174. package/packs/full-harness/rendered/.claude/skills/ai-first-engineering/SKILL.md +50 -0
  175. package/packs/full-harness/rendered/.claude/skills/ai-regression-testing/SKILL.md +384 -0
  176. package/packs/full-harness/rendered/.claude/skills/android-clean-architecture/SKILL.md +338 -0
  177. package/packs/full-harness/rendered/.claude/skills/angular-developer/SKILL.md +153 -0
  178. package/packs/full-harness/rendered/.claude/skills/api-connector-builder/SKILL.md +118 -0
  179. package/packs/full-harness/rendered/.claude/skills/api-design/SKILL.md +522 -0
  180. package/packs/full-harness/rendered/.claude/skills/architecture-decision-records/SKILL.md +178 -0
  181. package/packs/full-harness/rendered/.claude/skills/article-writing/SKILL.md +78 -0
  182. package/packs/full-harness/rendered/.claude/skills/automation-audit-ops/SKILL.md +141 -0
  183. package/packs/full-harness/rendered/.claude/skills/autonomous-agent-harness/SKILL.md +272 -0
  184. package/packs/full-harness/rendered/.claude/skills/autonomous-loops/SKILL.md +609 -0
  185. package/packs/full-harness/rendered/.claude/skills/backend-patterns/SKILL.md +560 -0
  186. package/packs/full-harness/rendered/.claude/skills/benchmark/SKILL.md +92 -0
  187. package/packs/full-harness/rendered/.claude/skills/benchmark-methodology/SKILL.md +185 -0
  188. package/packs/full-harness/rendered/.claude/skills/benchmark-optimization-loop/SKILL.md +67 -0
  189. package/packs/full-harness/rendered/.claude/skills/blender-motion-state-inspection/SKILL.md +162 -0
  190. package/packs/full-harness/rendered/.claude/skills/blueprint/SKILL.md +95 -0
  191. package/packs/full-harness/rendered/.claude/skills/brand-discovery/SKILL.md +140 -0
  192. package/packs/full-harness/rendered/.claude/skills/brand-voice/SKILL.md +96 -0
  193. package/packs/full-harness/rendered/.claude/skills/browser-qa/SKILL.md +103 -0
  194. package/packs/full-harness/rendered/.claude/skills/bun-runtime/SKILL.md +83 -0
  195. package/packs/full-harness/rendered/.claude/skills/canary-watch/SKILL.md +106 -0
  196. package/packs/full-harness/rendered/.claude/skills/carrier-relationship-management/SKILL.md +198 -0
  197. package/packs/full-harness/rendered/.claude/skills/cisco-ios-patterns/SKILL.md +162 -0
  198. package/packs/full-harness/rendered/.claude/skills/ck/SKILL.md +143 -0
  199. package/packs/full-harness/rendered/.claude/skills/claude-devfleet/SKILL.md +110 -0
  200. package/packs/full-harness/rendered/.claude/skills/click-path-audit/SKILL.md +243 -0
  201. package/packs/full-harness/rendered/.claude/skills/clickhouse-io/SKILL.md +443 -0
  202. package/packs/full-harness/rendered/.claude/skills/code-tour/SKILL.md +252 -0
  203. package/packs/full-harness/rendered/.claude/skills/codebase-onboarding/SKILL.md +232 -0
  204. package/packs/full-harness/rendered/.claude/skills/codehealth-mcp/SKILL.md +165 -0
  205. package/packs/full-harness/rendered/.claude/skills/coding-standards/SKILL.md +549 -0
  206. package/packs/full-harness/rendered/.claude/skills/competitive-platform-analysis/SKILL.md +209 -0
  207. package/packs/full-harness/rendered/.claude/skills/competitive-report-structure/SKILL.md +157 -0
  208. package/packs/full-harness/rendered/.claude/skills/compose-multiplatform-patterns/SKILL.md +298 -0
  209. package/packs/full-harness/rendered/.claude/skills/config-gc/SKILL.md +118 -0
  210. package/packs/full-harness/rendered/.claude/skills/configure-ecc/SKILL.md +383 -0
  211. package/packs/full-harness/rendered/.claude/skills/connections-optimizer/SKILL.md +188 -0
  212. package/packs/full-harness/rendered/.claude/skills/content-engine/SKILL.md +130 -0
  213. package/packs/full-harness/rendered/.claude/skills/content-hash-cache-pattern/SKILL.md +160 -0
  214. package/packs/full-harness/rendered/.claude/skills/context-budget/SKILL.md +134 -0
  215. package/packs/full-harness/rendered/.claude/skills/continuous-agent-loop/SKILL.md +44 -0
  216. package/packs/full-harness/rendered/.claude/skills/continuous-learning/SKILL.md +130 -0
  217. package/packs/full-harness/rendered/.claude/skills/continuous-learning-v2/SKILL.md +358 -0
  218. package/packs/full-harness/rendered/.claude/skills/cost-aware-llm-pipeline/SKILL.md +182 -0
  219. package/packs/full-harness/rendered/.claude/skills/cost-tracking/SKILL.md +95 -0
  220. package/packs/full-harness/rendered/.claude/skills/council/SKILL.md +202 -0
  221. package/packs/full-harness/rendered/.claude/skills/cpp-coding-standards/SKILL.md +722 -0
  222. package/packs/full-harness/rendered/.claude/skills/cpp-testing/SKILL.md +323 -0
  223. package/packs/full-harness/rendered/.claude/skills/crosspost/SKILL.md +110 -0
  224. package/packs/full-harness/rendered/.claude/skills/csharp-testing/SKILL.md +320 -0
  225. package/packs/full-harness/rendered/.claude/skills/customer-billing-ops/SKILL.md +139 -0
  226. package/packs/full-harness/rendered/.claude/skills/customs-trade-compliance/SKILL.md +248 -0
  227. package/packs/full-harness/rendered/.claude/skills/dart-flutter-patterns/SKILL.md +562 -0
  228. package/packs/full-harness/rendered/.claude/skills/dashboard-builder/SKILL.md +106 -0
  229. package/packs/full-harness/rendered/.claude/skills/data-scraper-agent/SKILL.md +763 -0
  230. package/packs/full-harness/rendered/.claude/skills/data-throughput-accelerator/SKILL.md +70 -0
  231. package/packs/full-harness/rendered/.claude/skills/database-migrations/SKILL.md +428 -0
  232. package/packs/full-harness/rendered/.claude/skills/deep-research/SKILL.md +158 -0
  233. package/packs/full-harness/rendered/.claude/skills/defi-amm-security/SKILL.md +164 -0
  234. package/packs/full-harness/rendered/.claude/skills/delivery-gate/SKILL.md +123 -0
  235. package/packs/full-harness/rendered/.claude/skills/deployment-patterns/SKILL.md +426 -0
  236. package/packs/full-harness/rendered/.claude/skills/design-system/SKILL.md +81 -0
  237. package/packs/full-harness/rendered/.claude/skills/django-celery/SKILL.md +456 -0
  238. package/packs/full-harness/rendered/.claude/skills/django-patterns/SKILL.md +733 -0
  239. package/packs/full-harness/rendered/.claude/skills/django-security/SKILL.md +642 -0
  240. package/packs/full-harness/rendered/.claude/skills/django-tdd/SKILL.md +728 -0
  241. package/packs/full-harness/rendered/.claude/skills/django-verification/SKILL.md +468 -0
  242. package/packs/full-harness/rendered/.claude/skills/dmux-workflows/SKILL.md +190 -0
  243. package/packs/full-harness/rendered/.claude/skills/docker-patterns/SKILL.md +363 -0
  244. package/packs/full-harness/rendered/.claude/skills/documentation-lookup/SKILL.md +89 -0
  245. package/packs/full-harness/rendered/.claude/skills/dotnet-patterns/SKILL.md +320 -0
  246. package/packs/full-harness/rendered/.claude/skills/dynamic-workflow-mode/SKILL.md +122 -0
  247. package/packs/full-harness/rendered/.claude/skills/e2e-testing/SKILL.md +325 -0
  248. package/packs/full-harness/rendered/.claude/skills/ecc-guide/SKILL.md +188 -0
  249. package/packs/full-harness/rendered/.claude/skills/ecc-recipes/SKILL.md +145 -0
  250. package/packs/full-harness/rendered/.claude/skills/ecc-tools-cost-audit/SKILL.md +159 -0
  251. package/packs/full-harness/rendered/.claude/skills/email-ops/SKILL.md +120 -0
  252. package/packs/full-harness/rendered/.claude/skills/energy-procurement/SKILL.md +213 -0
  253. package/packs/full-harness/rendered/.claude/skills/enterprise-agent-ops/SKILL.md +49 -0
  254. package/packs/full-harness/rendered/.claude/skills/error-handling/SKILL.md +375 -0
  255. package/packs/full-harness/rendered/.claude/skills/eval-harness/SKILL.md +268 -0
  256. package/packs/full-harness/rendered/.claude/skills/evm-token-decimals/SKILL.md +128 -0
  257. package/packs/full-harness/rendered/.claude/skills/exa-search/SKILL.md +106 -0
  258. package/packs/full-harness/rendered/.claude/skills/fal-ai-media/SKILL.md +287 -0
  259. package/packs/full-harness/rendered/.claude/skills/fastapi-patterns/SKILL.md +512 -0
  260. package/packs/full-harness/rendered/.claude/skills/finance-billing-ops/SKILL.md +126 -0
  261. package/packs/full-harness/rendered/.claude/skills/flox-environments/SKILL.md +495 -0
  262. package/packs/full-harness/rendered/.claude/skills/flutter-dart-code-review/SKILL.md +434 -0
  263. package/packs/full-harness/rendered/.claude/skills/foundation-models-on-device/SKILL.md +243 -0
  264. package/packs/full-harness/rendered/.claude/skills/frontend-a11y/SKILL.md +441 -0
  265. package/packs/full-harness/rendered/.claude/skills/frontend-design-direction/SKILL.md +91 -0
  266. package/packs/full-harness/rendered/.claude/skills/frontend-patterns/SKILL.md +655 -0
  267. package/packs/full-harness/rendered/.claude/skills/frontend-slides/SKILL.md +183 -0
  268. package/packs/full-harness/rendered/.claude/skills/fsharp-testing/SKILL.md +279 -0
  269. package/packs/full-harness/rendered/.claude/skills/gan-style-harness/SKILL.md +276 -0
  270. package/packs/full-harness/rendered/.claude/skills/gateguard/SKILL.md +131 -0
  271. package/packs/full-harness/rendered/.claude/skills/generating-python-installer/SKILL.md +820 -0
  272. package/packs/full-harness/rendered/.claude/skills/gget/SKILL.md +165 -0
  273. package/packs/full-harness/rendered/.claude/skills/git-workflow/SKILL.md +714 -0
  274. package/packs/full-harness/rendered/.claude/skills/github-ops/SKILL.md +143 -0
  275. package/packs/full-harness/rendered/.claude/skills/golang-patterns/SKILL.md +674 -0
  276. package/packs/full-harness/rendered/.claude/skills/golang-testing/SKILL.md +719 -0
  277. package/packs/full-harness/rendered/.claude/skills/google-workspace-ops/SKILL.md +94 -0
  278. package/packs/full-harness/rendered/.claude/skills/growth-log/SKILL.md +125 -0
  279. package/packs/full-harness/rendered/.claude/skills/healthcare-cdss-patterns/SKILL.md +243 -0
  280. package/packs/full-harness/rendered/.claude/skills/healthcare-emr-patterns/SKILL.md +157 -0
  281. package/packs/full-harness/rendered/.claude/skills/healthcare-eval-harness/SKILL.md +205 -0
  282. package/packs/full-harness/rendered/.claude/skills/healthcare-phi-compliance/SKILL.md +143 -0
  283. package/packs/full-harness/rendered/.claude/skills/hermes-imports/SKILL.md +87 -0
  284. package/packs/full-harness/rendered/.claude/skills/hexagonal-architecture/SKILL.md +275 -0
  285. package/packs/full-harness/rendered/.claude/skills/hipaa-compliance/SKILL.md +76 -0
  286. package/packs/full-harness/rendered/.claude/skills/homelab-network-readiness/SKILL.md +168 -0
  287. package/packs/full-harness/rendered/.claude/skills/homelab-network-setup/SKILL.md +128 -0
  288. package/packs/full-harness/rendered/.claude/skills/homelab-pihole-dns/SKILL.md +273 -0
  289. package/packs/full-harness/rendered/.claude/skills/homelab-vlan-segmentation/SKILL.md +310 -0
  290. package/packs/full-harness/rendered/.claude/skills/homelab-wireguard-vpn/SKILL.md +304 -0
  291. package/packs/full-harness/rendered/.claude/skills/hookify-rules/SKILL.md +128 -0
  292. package/packs/full-harness/rendered/.claude/skills/inherit-legacy-style/SKILL.md +154 -0
  293. package/packs/full-harness/rendered/.claude/skills/intent-driven-development/SKILL.md +360 -0
  294. package/packs/full-harness/rendered/.claude/skills/inventory-demand-planning/SKILL.md +232 -0
  295. package/packs/full-harness/rendered/.claude/skills/investor-materials/SKILL.md +95 -0
  296. package/packs/full-harness/rendered/.claude/skills/investor-outreach/SKILL.md +90 -0
  297. package/packs/full-harness/rendered/.claude/skills/ios-icon-gen/SKILL.md +156 -0
  298. package/packs/full-harness/rendered/.claude/skills/iterative-retrieval/SKILL.md +210 -0
  299. package/packs/full-harness/rendered/.claude/skills/ito-basket-compare/SKILL.md +62 -0
  300. package/packs/full-harness/rendered/.claude/skills/ito-data-atlas-agent/SKILL.md +62 -0
  301. package/packs/full-harness/rendered/.claude/skills/ito-market-intelligence/SKILL.md +59 -0
  302. package/packs/full-harness/rendered/.claude/skills/ito-trade-planner/SKILL.md +66 -0
  303. package/packs/full-harness/rendered/.claude/skills/java-coding-standards/SKILL.md +382 -0
  304. package/packs/full-harness/rendered/.claude/skills/jira-integration/SKILL.md +301 -0
  305. package/packs/full-harness/rendered/.claude/skills/jpa-patterns/SKILL.md +150 -0
  306. package/packs/full-harness/rendered/.claude/skills/knowledge-ops/SKILL.md +153 -0
  307. package/packs/full-harness/rendered/.claude/skills/kotlin-coroutines-flows/SKILL.md +283 -0
  308. package/packs/full-harness/rendered/.claude/skills/kotlin-exposed-patterns/SKILL.md +718 -0
  309. package/packs/full-harness/rendered/.claude/skills/kotlin-ktor-patterns/SKILL.md +688 -0
  310. package/packs/full-harness/rendered/.claude/skills/kotlin-patterns/SKILL.md +710 -0
  311. package/packs/full-harness/rendered/.claude/skills/kotlin-testing/SKILL.md +823 -0
  312. package/packs/full-harness/rendered/.claude/skills/kubernetes-patterns/SKILL.md +754 -0
  313. package/packs/full-harness/rendered/.claude/skills/laravel-patterns/SKILL.md +414 -0
  314. package/packs/full-harness/rendered/.claude/skills/laravel-plugin-discovery/SKILL.md +228 -0
  315. package/packs/full-harness/rendered/.claude/skills/laravel-security/SKILL.md +946 -0
  316. package/packs/full-harness/rendered/.claude/skills/laravel-tdd/SKILL.md +673 -0
  317. package/packs/full-harness/rendered/.claude/skills/laravel-verification/SKILL.md +178 -0
  318. package/packs/full-harness/rendered/.claude/skills/latency-critical-systems/SKILL.md +71 -0
  319. package/packs/full-harness/rendered/.claude/skills/lead-intelligence/SKILL.md +320 -0
  320. package/packs/full-harness/rendered/.claude/skills/liquid-glass-design/SKILL.md +279 -0
  321. package/packs/full-harness/rendered/.claude/skills/literature-review/SKILL.md +191 -0
  322. package/packs/full-harness/rendered/.claude/skills/llm-trading-agent-security/SKILL.md +144 -0
  323. package/packs/full-harness/rendered/.claude/skills/logistics-exception-management/SKILL.md +208 -0
  324. package/packs/full-harness/rendered/.claude/skills/loop-design-check/SKILL.md +141 -0
  325. package/packs/full-harness/rendered/.claude/skills/mailtrap-email-integration/SKILL.md +76 -0
  326. package/packs/full-harness/rendered/.claude/skills/make-interfaces-feel-better/SKILL.md +150 -0
  327. package/packs/full-harness/rendered/.claude/skills/manim-video/SKILL.md +88 -0
  328. package/packs/full-harness/rendered/.claude/skills/market-research/SKILL.md +74 -0
  329. package/packs/full-harness/rendered/.claude/skills/marketing-campaign/SKILL.md +112 -0
  330. package/packs/full-harness/rendered/.claude/skills/mcp-server-patterns/SKILL.md +68 -0
  331. package/packs/full-harness/rendered/.claude/skills/messages-ops/SKILL.md +103 -0
  332. package/packs/full-harness/rendered/.claude/skills/ml-adoption-playbook/SKILL.md +56 -0
  333. package/packs/full-harness/rendered/.claude/skills/mle-workflow/SKILL.md +345 -0
  334. package/packs/full-harness/rendered/.claude/skills/motion-advanced/SKILL.md +592 -0
  335. package/packs/full-harness/rendered/.claude/skills/motion-foundations/SKILL.md +295 -0
  336. package/packs/full-harness/rendered/.claude/skills/motion-patterns/SKILL.md +430 -0
  337. package/packs/full-harness/rendered/.claude/skills/motion-ui/SKILL.md +574 -0
  338. package/packs/full-harness/rendered/.claude/skills/mysql-patterns/SKILL.md +411 -0
  339. package/packs/full-harness/rendered/.claude/skills/nanoclaw-repl/SKILL.md +32 -0
  340. package/packs/full-harness/rendered/.claude/skills/nestjs-patterns/SKILL.md +229 -0
  341. package/packs/full-harness/rendered/.claude/skills/netmiko-ssh-automation/SKILL.md +172 -0
  342. package/packs/full-harness/rendered/.claude/skills/network-bgp-diagnostics/SKILL.md +166 -0
  343. package/packs/full-harness/rendered/.claude/skills/network-config-validation/SKILL.md +209 -0
  344. package/packs/full-harness/rendered/.claude/skills/network-interface-health/SKILL.md +151 -0
  345. package/packs/full-harness/rendered/.claude/skills/nextjs-turbopack/SKILL.md +56 -0
  346. package/packs/full-harness/rendered/.claude/skills/nodejs-keccak256/SKILL.md +100 -0
  347. package/packs/full-harness/rendered/.claude/skills/nutrient-document-processing/SKILL.md +166 -0
  348. package/packs/full-harness/rendered/.claude/skills/nuxt4-patterns/SKILL.md +99 -0
  349. package/packs/full-harness/rendered/.claude/skills/openclaw-persona-forge/SKILL.md +287 -0
  350. package/packs/full-harness/rendered/.claude/skills/opensource-pipeline/SKILL.md +254 -0
  351. package/packs/full-harness/rendered/.claude/skills/orch-add-feature/SKILL.md +43 -0
  352. package/packs/full-harness/rendered/.claude/skills/orch-build-mvp/SKILL.md +47 -0
  353. package/packs/full-harness/rendered/.claude/skills/orch-change-feature/SKILL.md +41 -0
  354. package/packs/full-harness/rendered/.claude/skills/orch-fix-defect/SKILL.md +41 -0
  355. package/packs/full-harness/rendered/.claude/skills/orch-pipeline/SKILL.md +119 -0
  356. package/packs/full-harness/rendered/.claude/skills/orch-refine-code/SKILL.md +42 -0
  357. package/packs/full-harness/rendered/.claude/skills/parallel-execution-optimizer/SKILL.md +70 -0
  358. package/packs/full-harness/rendered/.claude/skills/perl-patterns/SKILL.md +503 -0
  359. package/packs/full-harness/rendered/.claude/skills/perl-security/SKILL.md +502 -0
  360. package/packs/full-harness/rendered/.claude/skills/perl-testing/SKILL.md +474 -0
  361. package/packs/full-harness/rendered/.claude/skills/plan-canvas/SKILL.md +150 -0
  362. package/packs/full-harness/rendered/.claude/skills/plan-orchestrate/SKILL.md +261 -0
  363. package/packs/full-harness/rendered/.claude/skills/plankton-code-quality/SKILL.md +235 -0
  364. package/packs/full-harness/rendered/.claude/skills/postgres-patterns/SKILL.md +146 -0
  365. package/packs/full-harness/rendered/.claude/skills/prediction-market-oracle-research/SKILL.md +62 -0
  366. package/packs/full-harness/rendered/.claude/skills/prediction-market-risk-review/SKILL.md +59 -0
  367. package/packs/full-harness/rendered/.claude/skills/prisma-patterns/SKILL.md +399 -0
  368. package/packs/full-harness/rendered/.claude/skills/product-capability/SKILL.md +140 -0
  369. package/packs/full-harness/rendered/.claude/skills/product-lens/SKILL.md +91 -0
  370. package/packs/full-harness/rendered/.claude/skills/production-audit/SKILL.md +205 -0
  371. package/packs/full-harness/rendered/.claude/skills/production-scheduling/SKILL.md +223 -0
  372. package/packs/full-harness/rendered/.claude/skills/project-flow-ops/SKILL.md +110 -0
  373. package/packs/full-harness/rendered/.claude/skills/prompt-optimizer/SKILL.md +383 -0
  374. package/packs/full-harness/rendered/.claude/skills/pubmed-database/SKILL.md +174 -0
  375. package/packs/full-harness/rendered/.claude/skills/python-patterns/SKILL.md +749 -0
  376. package/packs/full-harness/rendered/.claude/skills/python-testing/SKILL.md +815 -0
  377. package/packs/full-harness/rendered/.claude/skills/pytorch-patterns/SKILL.md +395 -0
  378. package/packs/full-harness/rendered/.claude/skills/quality-nonconformance/SKILL.md +245 -0
  379. package/packs/full-harness/rendered/.claude/skills/quarkus-patterns/SKILL.md +721 -0
  380. package/packs/full-harness/rendered/.claude/skills/quarkus-security/SKILL.md +466 -0
  381. package/packs/full-harness/rendered/.claude/skills/quarkus-tdd/SKILL.md +810 -0
  382. package/packs/full-harness/rendered/.claude/skills/quarkus-verification/SKILL.md +478 -0
  383. package/packs/full-harness/rendered/.claude/skills/ralphinho-rfc-pipeline/SKILL.md +66 -0
  384. package/packs/full-harness/rendered/.claude/skills/react-native-patterns/SKILL.md +325 -0
  385. package/packs/full-harness/rendered/.claude/skills/react-patterns/SKILL.md +340 -0
  386. package/packs/full-harness/rendered/.claude/skills/react-performance/SKILL.md +573 -0
  387. package/packs/full-harness/rendered/.claude/skills/react-testing/SKILL.md +422 -0
  388. package/packs/full-harness/rendered/.claude/skills/recsys-pipeline-architect/SKILL.md +113 -0
  389. package/packs/full-harness/rendered/.claude/skills/recursive-decision-ledger/SKILL.md +77 -0
  390. package/packs/full-harness/rendered/.claude/skills/redis-patterns/SKILL.md +402 -0
  391. package/packs/full-harness/rendered/.claude/skills/regex-vs-llm-structured-text/SKILL.md +219 -0
  392. package/packs/full-harness/rendered/.claude/skills/remotion-video-creation/SKILL.md +41 -0
  393. package/packs/full-harness/rendered/.claude/skills/repo-scan/SKILL.md +77 -0
  394. package/packs/full-harness/rendered/.claude/skills/research-ops/SKILL.md +111 -0
  395. package/packs/full-harness/rendered/.claude/skills/returns-reverse-logistics/SKILL.md +225 -0
  396. package/packs/full-harness/rendered/.claude/skills/rules-distill/SKILL.md +263 -0
  397. package/packs/full-harness/rendered/.claude/skills/rust-patterns/SKILL.md +498 -0
  398. package/packs/full-harness/rendered/.claude/skills/rust-testing/SKILL.md +499 -0
  399. package/packs/full-harness/rendered/.claude/skills/safety-guard/SKILL.md +74 -0
  400. package/packs/full-harness/rendered/.claude/skills/santa-method/SKILL.md +305 -0
  401. package/packs/full-harness/rendered/.claude/skills/scholar-evaluation/SKILL.md +159 -0
  402. package/packs/full-harness/rendered/.claude/skills/search-first/SKILL.md +181 -0
  403. package/packs/full-harness/rendered/.claude/skills/security-bounty-hunter/SKILL.md +97 -0
  404. package/packs/full-harness/rendered/.claude/skills/security-review/SKILL.md +502 -0
  405. package/packs/full-harness/rendered/.claude/skills/security-scan/SKILL.md +164 -0
  406. package/packs/full-harness/rendered/.claude/skills/seo/SKILL.md +153 -0
  407. package/packs/full-harness/rendered/.claude/skills/skill-comply/SKILL.md +56 -0
  408. package/packs/full-harness/rendered/.claude/skills/skill-scout/SKILL.md +139 -0
  409. package/packs/full-harness/rendered/.claude/skills/skill-stocktake/SKILL.md +193 -0
  410. package/packs/full-harness/rendered/.claude/skills/social-graph-ranker/SKILL.md +153 -0
  411. package/packs/full-harness/rendered/.claude/skills/social-publisher/SKILL.md +128 -0
  412. package/packs/full-harness/rendered/.claude/skills/springboot-patterns/SKILL.md +313 -0
  413. package/packs/full-harness/rendered/.claude/skills/springboot-security/SKILL.md +271 -0
  414. package/packs/full-harness/rendered/.claude/skills/springboot-tdd/SKILL.md +157 -0
  415. package/packs/full-harness/rendered/.claude/skills/springboot-verification/SKILL.md +230 -0
  416. package/packs/full-harness/rendered/.claude/skills/strategic-compact/SKILL.md +136 -0
  417. package/packs/full-harness/rendered/.claude/skills/swift-actor-persistence/SKILL.md +142 -0
  418. package/packs/full-harness/rendered/.claude/skills/swift-concurrency-6-2/SKILL.md +216 -0
  419. package/packs/full-harness/rendered/.claude/skills/swift-protocol-di-testing/SKILL.md +189 -0
  420. package/packs/full-harness/rendered/.claude/skills/swiftui-patterns/SKILL.md +259 -0
  421. package/packs/full-harness/rendered/.claude/skills/taste/SKILL.md +263 -0
  422. package/packs/full-harness/rendered/.claude/skills/tdd-workflow/SKILL.md +580 -0
  423. package/packs/full-harness/rendered/.claude/skills/team-agent-orchestration/SKILL.md +109 -0
  424. package/packs/full-harness/rendered/.claude/skills/team-builder/SKILL.md +167 -0
  425. package/packs/full-harness/rendered/.claude/skills/terminal-ops/SKILL.md +108 -0
  426. package/packs/full-harness/rendered/.claude/skills/tinystruct-patterns/SKILL.md +277 -0
  427. package/packs/full-harness/rendered/.claude/skills/token-budget-advisor/SKILL.md +120 -0
  428. package/packs/full-harness/rendered/.claude/skills/ui-demo/SKILL.md +464 -0
  429. package/packs/full-harness/rendered/.claude/skills/ui-to-vue/SKILL.md +133 -0
  430. package/packs/full-harness/rendered/.claude/skills/uncloud/SKILL.md +342 -0
  431. package/packs/full-harness/rendered/.claude/skills/unified-notifications-ops/SKILL.md +186 -0
  432. package/packs/full-harness/rendered/.claude/skills/uspto-database/SKILL.md +176 -0
  433. package/packs/full-harness/rendered/.claude/skills/verification-loop/SKILL.md +126 -0
  434. package/packs/full-harness/rendered/.claude/skills/video-editing/SKILL.md +309 -0
  435. package/packs/full-harness/rendered/.claude/skills/videodb/SKILL.md +371 -0
  436. package/packs/full-harness/rendered/.claude/skills/visa-doc-translate/SKILL.md +117 -0
  437. package/packs/full-harness/rendered/.claude/skills/vite-patterns/SKILL.md +448 -0
  438. package/packs/full-harness/rendered/.claude/skills/vue-patterns/SKILL.md +470 -0
  439. package/packs/full-harness/rendered/.claude/skills/windows-desktop-e2e/SKILL.md +886 -0
  440. package/packs/full-harness/rendered/.claude/skills/workspace-surface-audit/SKILL.md +124 -0
  441. package/packs/full-harness/rendered/.claude/skills/x-api/SKILL.md +233 -0
  442. package/packs/full-harness/rendered/.github/copilot-instructions.md +89529 -0
  443. package/packs/full-harness/rendered/AGENTS.md +9663 -0
  444. package/packs/full-harness/rendered/CLAUDE.md +444 -0
  445. package/packs/full-harness/rendered/GEMINI.md +71959 -0
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Comprehensive Rust code review for ownership, lifetimes, error handling, unsafe usage, and idiomatic patterns. Invokes the rust-reviewer agent.
3
+ argument-hint: [optional arguments]
4
+ ---
5
+
6
+ # Rust Code Review This command invokes the **rust-reviewer** agent for comprehensive Rust-specific code review. ## What This Command Does 1. **Verify Automated Checks**: Run `cargo check`, `cargo clippy -- -D warnings`, `cargo fmt --check`, and `cargo test` — stop if any fail 2. **Identify Rust Changes**: Find modified `.rs` files via `git diff HEAD~1` (or `git diff main...HEAD` for PRs) 3. **Run Security Audit**: Execute `cargo audit` if available 4. **Security Scan**: Check for unsafe usage, command injection, hardcoded secrets 5. **Ownership Review**: Analyze unnecessary clones, lifetime issues, borrowing patterns 6. **Generate Report**: Categorize issues by severity ## When to Use Use `/rust-review` when: - After writing or modifying Rust code - Before committing Rust changes - Reviewing pull requests with Rust code - Onboarding to a new Rust codebase - Learning idiomatic Rust patterns ## Review Categories ### CRITICAL (Must Fix) - Unchecked `unwrap()`/`expect()` in production code paths - `unsafe` without `// SAFETY:` comment documenting invariants - SQL injection via string interpolation in queries - Command injection via unvalidated input in `std::process::Command` - Hardcoded credentials - Use-after-free via raw pointers ### HIGH (Should Fix) - Unnecessary `.clone()` to satisfy borrow checker - `String` parameter where `&str` or `impl AsRef<str>` suffices - Blocking in async context (`std::thread::sleep`, `std::fs`) - Missing `Send`/`Sync` bounds on shared types - Wildcard `_ =>` match on business-critical enums - Large functions (>50 lines) ### MEDIUM (Consider) - Unnecessary allocation in hot paths - Missing `with_capacity` when size is known - Suppressed clippy warnings without justification - Public API without `///` documentation - Consider `#[must_use]` on non-`must_use` return types where ignoring values is likely a bug ## Automated Checks Run ```bash # Build gate (must pass before review) cargo check # Lints and suggestions cargo clippy -- -D warnings # Formatting cargo fmt --check # Tests cargo test # Security audit (if available) if command -v cargo-audit >/dev/null; then cargo audit; else echo "cargo-audit not installed"; fi ``` ## Example Usage ````text User: /rust-review Agent: # Rust Code Review Report ## Files Reviewed - src/service/user.rs (modified) - src/handler/api.rs (modified) ## Static Analysis Results - Build: Successful - Clippy: No warnings - Formatting: Passed - Tests: All passing ## Issues Found [CRITICAL] Unchecked unwrap in Production Path File: src/service/user.rs:28 Issue: Using `.unwrap()` on database query result ```rust let user = db.find_by_id(id).unwrap(); // Panics on missing user ``` Fix: Propagate error with context ```rust let user = db.find_by_id(id) .context("failed to fetch user")?; ``` [HIGH] Unnecessary Clone File: src/handler/api.rs:45 Issue: Cloning String to satisfy borrow checker ```rust let name = user.name.clone(); process(&user, &name); ``` Fix: Restructure to avoid clone ```rust let result = process_name(&user.name); use_user(&user, result); ``` ## Summary - CRITICAL: 1 - HIGH: 1 - MEDIUM: 0 Recommendation: Block merge until CRITICAL issue is fixed ```` ## Approval Criteria | Status | Condition | |--------|-----------| | Approve | No CRITICAL or HIGH issues | | Warning | Only MEDIUM issues (merge with caution) | | Block | CRITICAL or HIGH issues found | ## Integration with Other Commands - Use `/rust-test` first to ensure tests pass - Use `/rust-build` if build errors occur - Use `/rust-review` before committing - Use `/code-review` for non-Rust-specific concerns ## Related - Agent: `agents/rust-reviewer.md` - Skills: `skills/rust-patterns/`, `skills/rust-testing/`
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Enforce TDD workflow for Rust. Write tests first, then implement. Verify 80%+ coverage with cargo-llvm-cov.
3
+ argument-hint: [optional arguments]
4
+ ---
5
+
6
+ # Rust TDD Command This command enforces test-driven development methodology for Rust code using `#[test]`, rstest, proptest, and mockall. ## What This Command Does 1. **Define Types/Traits**: Scaffold function signatures with `todo!()` 2. **Write Tests**: Create comprehensive test module (RED) 3. **Run Tests**: Verify tests fail for the right reason 4. **Implement Code**: Write minimal code to pass (GREEN) 5. **Refactor**: Improve while keeping tests green 6. **Check Coverage**: Ensure 80%+ coverage with cargo-llvm-cov ## When to Use Use `/rust-test` when: - Implementing new Rust functions, methods, or traits - Adding test coverage to existing Rust code - Fixing bugs (write failing test first) - Building critical business logic - Learning TDD workflow in Rust ## TDD Cycle ``` RED -> Write failing test first GREEN -> Implement minimal code to pass REFACTOR -> Improve code, tests stay green REPEAT -> Next test case ``` ## Example Session ````text User: /rust-test I need a function to validate user registration Agent: # TDD Session: Registration Validator ## Step 1: Define Interface ```rust // src/validator.rs pub struct RegistrationRequest { pub name: String, pub email: String, pub password: String, } pub enum ValidationResult { Valid, Invalid(Vec<String>), } pub fn validate_registration(request: &RegistrationRequest) -> ValidationResult { todo!() } ``` ## Step 2: Write Tests (RED) ```rust #[cfg(test)] mod tests { use super::*; #[test] fn valid_registration_returns_valid() { let request = RegistrationRequest { name: "Alice".into(), email: "alice@example.com".into(), password: "SecureP@ss1".into(), }; assert!(matches!(validate_registration(&request), ValidationResult::Valid)); } #[test] fn blank_name_returns_invalid() { let request = RegistrationRequest { name: "".into(), email: "alice@example.com".into(), password: "SecureP@ss1".into(), }; match validate_registration(&request) { ValidationResult::Invalid(errors) => { assert!(errors.contains(&"Name is required".to_string())); } ValidationResult::Valid => panic!("expected Invalid"), } } #[test] fn invalid_email_returns_invalid() { let request = RegistrationRequest { name: "Alice".into(), email: "not-an-email".into(), password: "SecureP@ss1".into(), }; assert!(matches!( validate_registration(&request), ValidationResult::Invalid(_) )); } #[test] fn short_password_returns_invalid() { let request = RegistrationRequest { name: "Alice".into(), email: "alice@example.com".into(), password: "short".into(), }; assert!(matches!( validate_registration(&request), ValidationResult::Invalid(_) )); } } ``` ## Step 3: Run Tests — Verify FAIL ```bash $ cargo test running 4 tests test tests::valid_registration_returns_valid ... FAILED (not yet implemented) test tests::blank_name_returns_invalid ... FAILED test tests::invalid_email_returns_invalid ... FAILED test tests::short_password_returns_invalid ... FAILED ``` Tests fail as expected (todo! panic). ## Step 4: Implement Minimal Code (GREEN) ```rust pub fn validate_registration(request: &RegistrationRequest) -> ValidationResult { let mut errors = Vec::new(); if request.name.trim().is_empty() { errors.push("Name is required".into()); } if !request.email.contains('@') { errors.push("Invalid email format".into()); } if request.password.len() < 8 { errors.push("Password must be at least 8 characters".into()); } if errors.is_empty() { ValidationResult::Valid } else { ValidationResult::Invalid(errors) } } ``` ## Step 5: Run Tests — Verify PASS ```bash $ cargo test running 4 tests test tests::valid_registration_returns_valid ... ok test tests::blank_name_returns_invalid ... ok test tests::invalid_email_returns_invalid ... ok test tests::short_password_returns_invalid ... ok test result: ok. 4 passed; 0 failed ``` All tests passing! ## Step 6: Check Coverage ```bash $ cargo llvm-cov Coverage: 100.0% of lines ``` Coverage: 100% ## TDD Complete! ```` ## Test Patterns ### Unit Tests ```rust #[cfg(test)] mod tests { use super::*; #[test] fn adds_two_numbers() { assert_eq!(add(2, 3), 5); } #[test] fn handles_error() -> Result<(), Box<dyn std::error::Error>> { let result = parse_config(r#"port = 8080"#)?; assert_eq!(result.port, 8080); Ok(()) } } ``` ### Parameterized Tests with rstest ```rust use rstest::{rstest, fixture}; #[rstest] #[case("hello", 5)] #[case("", 0)] #[case("rust", 4)] fn test_string_length(#[case] input: &str, #[case] expected: usize) { assert_eq!(input.len(), expected); } ``` ### Async Tests ```rust #[tokio::test] async fn fetches_data_successfully() { let client = TestClient::new().await; let result = client.get("/data").await; assert!(result.is_ok()); } ``` ### Property-Based Tests ```rust use proptest::prelude::*; proptest! { #[test] fn encode_decode_roundtrip(input in ".*") { let encoded = encode(&input); let decoded = decode(&encoded).unwrap(); assert_eq!(input, decoded); } } ``` ## Coverage Commands ```bash # Summary report cargo llvm-cov # HTML report cargo llvm-cov --html # Fail if below threshold cargo llvm-cov --fail-under-lines 80 # Run specific test cargo test test_name # Run with output cargo test -- --nocapture # Run without stopping on first failure cargo test --no-fail-fast ``` ## Coverage Targets | Code Type | Target | |-----------|--------| | Critical business logic | 100% | | Public API | 90%+ | | General code | 80%+ | | Generated / FFI bindings | Exclude | ## TDD Best Practices **DO:** - Write test FIRST, before any implementation - Run tests after each change - Use `assert_eq!` over `assert!` for better error messages - Use `?` in tests that return `Result` for cleaner output - Test behavior, not implementation - Include edge cases (empty, boundary, error paths) **DON'T:** - Write implementation before tests - Skip the RED phase - Use `#[should_panic]` when `Result::is_err()` works - Use `sleep()` in tests — use channels or `tokio::time::pause()` - Mock everything — prefer integration tests when feasible ## Related Commands - `/rust-build` - Fix build errors - `/rust-review` - Review code after implementation - `verification-loop` skill - Run full verification loop ## Related - Skill: `skills/rust-testing/` - Skill: `skills/rust-patterns/`
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Adversarial dual-review convergence loop — two independent model reviewers must both approve before code ships.
3
+ argument-hint: [optional arguments]
4
+ ---
5
+
6
+ # Santa Loop Adversarial dual-review convergence loop using the santa-method skill. Two independent reviewers — different models, no shared context — must both return NICE before code ships. ## Purpose Run two independent reviewers (Claude Opus + an external model) against the current task output. Both must return NICE before the code is pushed. If either returns NAUGHTY, fix all flagged issues, commit, and re-run fresh reviewers — up to 3 rounds. ## Usage ``` /santa-loop [file-or-glob | description] ``` ## Workflow ### Step 1: Identify What to Review Determine the scope from `$ARGUMENTS` or fall back to uncommitted changes: ```bash git diff --name-only HEAD ``` Read all changed files to build the full review context. If `$ARGUMENTS` specifies a path, file, or description, use that as the scope instead. ### Step 2: Build the Rubric Construct a rubric appropriate to the file types under review. Every criterion must have an objective PASS/FAIL condition. Include at minimum: | Criterion | Pass Condition | |-----------|---------------| | Correctness | Logic is sound, no bugs, handles edge cases | | Security | No secrets, injection, XSS, or OWASP Top 10 issues | | Error handling | Errors handled explicitly, no silent swallowing | | Completeness | All requirements addressed, no missing cases | | Internal consistency | No contradictions between files or sections | | No regressions | Changes don't break existing behavior | Add domain-specific criteria based on file types (e.g., type safety for TS, memory safety for Rust, migration safety for SQL). ### Step 3: Dual Independent Review Launch two reviewers **in parallel** using the Agent tool (both in a single message for concurrent execution). Both must complete before proceeding to the verdict gate. Each reviewer evaluates every rubric criterion as PASS or FAIL, then returns structured JSON: ```json { "verdict": "PASS" | "FAIL", "checks": [ {"criterion": "...", "result": "PASS|FAIL", "detail": "..."} ], "critical_issues": ["..."], "suggestions": ["..."] } ``` The verdict gate (Step 4) maps these to NICE/NAUGHTY: both PASS → NICE, either FAIL → NAUGHTY. #### Reviewer A: Claude Agent (always runs) Launch an Agent (subagent_type: `code-reviewer`, model: `opus`) with the full rubric + all files under review. The prompt must include: - The complete rubric - All file contents under review - "You are an independent quality reviewer. You have NOT seen any other review. Your job is to find problems, not to approve." - Return the structured JSON verdict above #### Reviewer B: External Model (Claude fallback only if no external CLI installed) First, detect which CLIs are available: ```bash command -v codex >/dev/null 2>&1 && echo "codex" || true command -v gemini >/dev/null 2>&1 && echo "gemini" || true ``` Build the reviewer prompt (identical rubric + instructions as Reviewer A) and write it to a unique temp file: ```bash PROMPT_FILE=$(mktemp /tmp/santa-reviewer-b-XXXXXX.txt) cat > "$PROMPT_FILE" << 'EOF' ... full rubric + file contents + reviewer instructions ... EOF ``` Use the first available CLI: **Codex CLI** (if installed) ```bash codex exec --sandbox read-only -m gpt-5.4 -C "$(pwd)" - < "$PROMPT_FILE" rm -f "$PROMPT_FILE" ``` **Gemini CLI** (if installed and codex is not) ```bash gemini -p "$(cat "$PROMPT_FILE")" -m gemini-2.5-pro rm -f "$PROMPT_FILE" ``` **Claude Agent fallback** (only if neither `codex` nor `gemini` is installed) Launch a second Claude Agent (subagent_type: `code-reviewer`, model: `opus`). Log a warning that both reviewers share the same model family — true model diversity was not achieved but context isolation is still enforced. In all cases, the reviewer must return the same structured JSON verdict as Reviewer A. ### Step 4: Verdict Gate - **Both PASS** → **NICE** — proceed to Step 6 (push) - **Either FAIL** → **NAUGHTY** — merge all critical issues from both reviewers, deduplicate, proceed to Step 5 ### Step 5: Fix Cycle (NAUGHTY path) 1. Display all critical issues from both reviewers 2. Fix every flagged issue — change only what was flagged, no drive-by refactors 3. Commit all fixes in a single commit: ``` fix: address santa-loop review findings (round N) ``` 4. Re-run Step 3 with **fresh reviewers** (no memory of previous rounds) 5. Repeat until both return PASS **Maximum 3 iterations.** If still NAUGHTY after 3 rounds, stop and present remaining issues: ``` SANTA LOOP ESCALATION (exceeded 3 iterations) Remaining issues after 3 rounds: - [list all unresolved critical issues from both reviewers] Manual review required before proceeding. ``` Do NOT push. ### Step 6: Push (NICE path) When both reviewers return PASS: ```bash git push -u origin HEAD ``` ### Step 7: Final Report Print the output report (see Output section below). ## Output ``` SANTA VERDICT: [NICE / NAUGHTY (escalated)] Reviewer A (Claude Opus): [PASS/FAIL] Reviewer B ([model used]): [PASS/FAIL] Agreement: Both flagged: [issues caught by both] Reviewer A only: [issues only A caught] Reviewer B only: [issues only B caught] Iterations: [N]/3 Result: [PUSHED / ESCALATED TO USER] ``` ## Notes - Reviewer A (Claude Opus) always runs — guarantees at least one strong reviewer regardless of tooling. - Model diversity is the goal for Reviewer B. GPT-5.4 or Gemini 2.5 Pro gives true independence — different training data, different biases, different blind spots. The Claude-only fallback still provides value via context isolation but loses model diversity. - Strongest available models are used: Opus for Reviewer A, GPT-5.4 or Gemini 2.5 Pro for Reviewer B. - External reviewers run with `--sandbox read-only` (Codex) to prevent repo mutation during review. - Fresh reviewers each round prevents anchoring bias from prior findings. - The rubric is the most important input. Tighten it if reviewers rubber-stamp or flag subjective style issues. - Commits happen on NAUGHTY rounds so fixes are preserved even if the loop is interrupted. - Push only happens after NICE — never mid-loop.
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Save current session state to a dated file in ~/.claude/session-data/ so work can be resumed in a future session with full context.
3
+ argument-hint: [optional arguments]
4
+ ---
5
+
6
+ # Save Session Command Capture everything that happened in this session — what was built, what worked, what failed, what's left — and write it to a dated file so the next session can pick up exactly where this one left off. ## When to Use - End of a work session before closing Claude Code - Before hitting context limits (run this first, then start a fresh session) - After solving a complex problem you want to remember - Any time you need to hand off context to a future session ## Process ### Step 1: Gather context Before writing the file, collect: - Read all files modified during this session (use git diff or recall from conversation) - Review what was discussed, attempted, and decided - Note any errors encountered and how they were resolved (or not) - Check current test/build status if relevant ### Step 2: Create the sessions folder if it doesn't exist Create the canonical sessions folder in the user's Claude home directory: ```bash mkdir -p ~/.claude/session-data ``` ### Step 3: Write the session file Create `~/.claude/session-data/YYYY-MM-DD-<short-id>-session.tmp`, using today's actual date and a short-id that satisfies the rules enforced by `SESSION_FILENAME_REGEX` in `session-manager.js`: - Compatibility characters: letters `a-z` / `A-Z`, digits `0-9`, hyphens `-`, underscores `_` - Compatibility minimum length: 1 character - Recommended style for new files: lowercase letters, digits, and hyphens with 8+ characters to avoid collisions Valid examples: `abc123de`, `a1b2c3d4`, `frontend-worktree-1`, `ChezMoi_2` Avoid for new files: `A`, `test_id1`, `ABC123de` Full valid filename example: `2024-01-15-abc123de-session.tmp` The legacy filename `YYYY-MM-DD-session.tmp` is still valid, but new session files should prefer the short-id form to avoid same-day collisions. ### Step 4: Populate the file with all sections below Write every section honestly. Do not skip sections — write "Nothing yet" or "N/A" if a section genuinely has no content. An incomplete file is worse than an honest empty section. ### Step 5: Show the file to the user After writing, display the full contents and ask: ``` Session saved to [actual resolved path to the session file] Does this look accurate? Anything to correct or add before we close? ``` Wait for confirmation. Make edits if requested. --- ## Session File Format ```markdown # Session: YYYY-MM-DD **Started:** [approximate time if known] **Last Updated:** [current time] **Project:** [project name or path] **Topic:** [one-line summary of what this session was about] --- ## What We Are Building [1-3 paragraphs describing the feature, bug fix, or task. Include enough context that someone with zero memory of this session can understand the goal. Include: what it does, why it's needed, how it fits into the larger system.] --- ## What WORKED (with evidence) [List only things that are confirmed working. For each item include WHY you know it works — test passed, ran in browser, Postman returned 200, etc. Without evidence, move it to "Not Tried Yet" instead.] - **[thing that works]** — confirmed by: [specific evidence] - **[thing that works]** — confirmed by: [specific evidence] If nothing is confirmed working yet: "Nothing confirmed working yet — all approaches still in progress or untested." --- ## What Did NOT Work (and why) [This is the most important section. List every approach tried that failed. For each failure write the EXACT reason so the next session doesn't retry it. Be specific: "threw X error because Y" is useful. "didn't work" is not.] - **[approach tried]** — failed because: [exact reason / error message] - **[approach tried]** — failed because: [exact reason / error message] If nothing failed: "No failed approaches yet." --- ## What Has NOT Been Tried Yet [Approaches that seem promising but haven't been attempted. Ideas from the conversation. Alternative solutions worth exploring. Be specific enough that the next session knows exactly what to try.] - [approach / idea] - [approach / idea] If nothing is queued: "No specific untried approaches identified." --- ## Current State of Files [Every file touched this session. Be precise about what state each file is in.] | File | Status | Notes | | ----------------- | -------------- | -------------------------- | | `path/to/file.ts` | PASS: Complete | [what it does] | | `path/to/file.ts` | In Progress | [what's done, what's left] | | `path/to/file.ts` | FAIL: Broken | [what's wrong] | | `path/to/file.ts` | Not Started | [planned but not touched] | If no files were touched: "No files modified this session." --- ## Decisions Made [Architecture choices, tradeoffs accepted, approaches chosen and why. These prevent the next session from relitigating settled decisions.] - **[decision]** — reason: [why this was chosen over alternatives] If no significant decisions: "No major decisions made this session." --- ## Blockers & Open Questions [Anything unresolved that the next session needs to address or investigate. Questions that came up but weren't answered. External dependencies waiting on.] - [blocker / open question] If none: "No active blockers." --- ## Exact Next Step [If known: The single most important thing to do when resuming. Be precise enough that resuming requires zero thinking about where to start.] [If not known: "Next step not determined — review 'What Has NOT Been Tried Yet' and 'Blockers' sections to decide on direction before starting."] --- ## Environment & Setup Notes [Only fill this if relevant — commands needed to run the project, env vars required, services that need to be running, etc. Skip if standard setup.] [If none: omit this section entirely.] ``` --- ## Example Output ```markdown # Session: 2024-01-15 **Started:** ~2pm **Last Updated:** 5:30pm **Project:** my-app **Topic:** Building JWT authentication with httpOnly cookies --- ## What We Are Building User authentication system for the Next.js app. Users register with email/password, receive a JWT stored in an httpOnly cookie (not localStorage), and protected routes check for a valid token via middleware. The goal is session persistence across browser refreshes without exposing the token to JavaScript. --- ## What WORKED (with evidence) - **`/api/auth/register` endpoint** — confirmed by: Postman POST returns 200 with user object, row visible in Supabase dashboard, bcrypt hash stored correctly - **JWT generation in `lib/auth.ts`** — confirmed by: unit test passes (`npm test -- auth.test.ts`), decoded token at jwt.io shows correct payload - **Password hashing** — confirmed by: `bcrypt.compare()` returns true in test --- ## What Did NOT Work (and why) - **Next-Auth library** — failed because: conflicts with our custom Prisma adapter, threw "Cannot use adapter with credentials provider in this configuration" on every request. Not worth debugging — too opinionated for our setup. - **Storing JWT in localStorage** — failed because: SSR renders happen before localStorage is available, caused React hydration mismatch error on every page load. This approach is fundamentally incompatible with Next.js SSR. --- ## What Has NOT Been Tried Yet - Store JWT as httpOnly cookie in the login route response (most likely solution) - Use `cookies()` from `next/headers` to read token in server components - Write middleware.ts to protect routes by checking cookie existence --- ## Current State of Files | File | Status | Notes | | -------------------------------- | -------------- | ----------------------------------------------- | | `app/api/auth/register/route.ts` | PASS: Complete | Works, tested | | `app/api/auth/login/route.ts` | In Progress | Token generates but not setting cookie yet | | `lib/auth.ts` | PASS: Complete | JWT helpers, all tested | | `middleware.ts` | Not Started | Route protection, needs cookie read logic first | | `app/login/page.tsx` | Not Started | UI not started | --- ## Decisions Made - **httpOnly cookie over localStorage** — reason: prevents XSS token theft, works with SSR - **Custom auth over Next-Auth** — reason: Next-Auth conflicts with our Prisma setup, not worth the fight --- ## Blockers & Open Questions - Does `cookies().set()` work inside a Route Handler or only in Server Actions? Need to verify. --- ## Exact Next Step In `app/api/auth/login/route.ts`, after generating the JWT, set it as an httpOnly cookie using `cookies().set('token', jwt, { httpOnly: true, secure: true, sameSite: 'strict' })`. Then test with Postman — the response should include a `Set-Cookie` header. ``` --- ## Notes - Each session gets its own file — never append to a previous session's file - The "What Did NOT Work" section is the most critical — future sessions will blindly retry failed approaches without it - If the user asks to save mid-session (not just at the end), save what's known so far and mark in-progress items clearly - The file is meant to be read by Claude at the start of the next session via `/resume-session` - Use the canonical global session store: `~/.claude/session-data/` - Prefer the short-id filename form (`YYYY-MM-DD-<short-id>-session.tmp`) for any new session file
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Run AgentShield against agent, hook, MCP, permission, and secret surfaces.
3
+ argument-hint: [optional arguments]
4
+ ---
5
+
6
+ # Security Scan Command Run AgentShield against the current project or a target path, then turn the findings into a prioritized remediation plan. ## Usage `/security-scan [path] [--format text|json|markdown|html] [--min-severity low|medium|high|critical] [--fix]` - `path` (optional): defaults to the current project. Use a `.claude/` path, a repo root, or a checked-in template directory. - `--format`: output format. Use `json` for CI, `markdown` for handoffs, and `html` for standalone review reports. - `--min-severity`: filters lower-priority findings. - `--fix`: applies only AgentShield fixes explicitly marked as safe and auto-fixable. ## Deterministic Engine Prefer the packaged scanner: ```bash npx ecc-agentshield scan --path "${TARGET_PATH:-.}" --format text ``` For local AgentShield development, run from the AgentShield checkout: ```bash npm run scan -- --path "${TARGET_PATH:-.}" --format text ``` Do not invent findings. Use AgentShield output as the source of truth and separate scanner facts from follow-up judgment. ## Review Checklist 1. Identify active runtime findings first: - hardcoded secrets - broad permissions - executable hooks - MCP servers with shell, filesystem, remote transport, or unpinned `npx` - agent prompts that handle untrusted content without defenses 2. Separate lower-confidence inventory: - docs examples - template examples - plugin manifests - project-local optional settings 3. For each critical or high finding, return: - file path - severity - runtime confidence - why it matters - exact remediation - whether it is safe to auto-fix 4. If `--fix` is requested, state the planned edits before applying fixes. 5. Re-run the scan after fixes and report the before/after score. ## Output Contract Return: 1. Security grade and score. 2. Counts by severity and runtime confidence. 3. Critical/high findings with exact paths. 4. Lower-confidence findings grouped separately. 5. A remediation order. 6. Commands run and whether the scan was local, CI, or npx-backed. ## CI Pattern Use AgentShield in GitHub Actions for enforced gates: ```yaml - uses: affaan-m/agentshield@v1 with: path: "." min-severity: "medium" fail-on-findings: true ``` ## Links - Skill: `skills/security-scan/SKILL.md` - Agent: `agents/security-reviewer.md` - Scanner: <https://github.com/affaan-m/agentshield> ## Arguments $ARGUMENTS: - optional target path - optional AgentShield flags
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Manage Claude Code session history, aliases, and session metadata.
3
+ argument-hint: [optional arguments]
4
+ ---
5
+
6
+ # Sessions Command Manage Claude Code session history - list, load, alias, and edit sessions stored in `~/.claude/session-data/` with legacy reads from `~/.claude/sessions/`. ## Usage `/sessions [list|load|alias|info|help] [options]` ## Actions ### List Sessions Display all sessions with metadata, filtering, and pagination. Use `/sessions info` when you need operator-surface context for a swarm: branch, worktree path, and session recency. ```bash /sessions # List all sessions (default) /sessions list # Same as above /sessions list --limit 10 # Show 10 sessions /sessions list --date 2026-02-01 # Filter by date /sessions list --search abc # Search by session ID ``` **Script:** ```bash node -e " const _r = (function(){var p=require('path'),f=require('fs'),o=require('os');var e=process.env.CLAUDE_PLUGIN_ROOT;if(e&&e.trim())return e.trim();var d=p.join(o.homedir(),'.claude');function L(x){try{return require(p.join(x,'scripts','lib','resolve-ecc-root')).resolveEccRoot()}catch(_){return null}}var r=L(d);if(r)return r;var s=['ecc','ecc@ecc','marketplaces/ecc','everything-claude-code','everything-claude-code@everything-claude-code','marketplaces/everything-claude-code'];for(var i=0;i<s.length;i++){r=L(p.join(d,'plugins',s[i]));if(r)return r}try{var g=['ecc','everything-claude-code'];for(var j=0;j<g.length;j++){var c=p.join(d,'plugins','cache',g[j]);var O=f.readdirSync(c);for(var k=0;k<O.length;k++){var q=p.join(c,O[k]);var V=f.readdirSync(q);for(var m=0;m<V.length;m++){r=L(p.join(q,V[m]));if(r)return r}}}}catch(_){}return d})(); const sm = require(_r + '/scripts/lib/session-manager'); const aa = require(_r + '/scripts/lib/session-aliases'); const path = require('path'); const result = sm.getAllSessions({ limit: 20 }); const aliases = aa.listAliases(); const aliasMap = {}; for (const a of aliases) aliasMap[a.sessionPath] = a.name; console.log('Sessions (showing ' + result.sessions.length + ' of ' + result.total + '):'); console.log(''); console.log('ID Date Time Branch Worktree Alias'); console.log('────────────────────────────────────────────────────────────────────'); for (const s of result.sessions) { const alias = aliasMap[s.filename] || ''; const metadata = sm.parseSessionMetadata(sm.getSessionContent(s.sessionPath)); const id = s.shortId === 'no-id' ? '(none)' : s.shortId.slice(0, 8); const time = s.modifiedTime.toTimeString().slice(0, 5); const branch = (metadata.branch || '-').slice(0, 12); const worktree = metadata.worktree ? path.basename(metadata.worktree).slice(0, 18) : '-'; console.log(id.padEnd(8) + ' ' + s.date + ' ' + time + ' ' + branch.padEnd(12) + ' ' + worktree.padEnd(18) + ' ' + alias); } " ``` ### Load Session Load and display a session's content (by ID or alias). ```bash /sessions load <id|alias> # Load session /sessions load 2026-02-01 # By date (for no-id sessions) /sessions load a1b2c3d4 # By short ID /sessions load my-alias # By alias name ``` **Script:** ```bash node -e " const _r = (function(){var p=require('path'),f=require('fs'),o=require('os');var e=process.env.CLAUDE_PLUGIN_ROOT;if(e&&e.trim())return e.trim();var d=p.join(o.homedir(),'.claude');function L(x){try{return require(p.join(x,'scripts','lib','resolve-ecc-root')).resolveEccRoot()}catch(_){return null}}var r=L(d);if(r)return r;var s=['ecc','ecc@ecc','marketplaces/ecc','everything-claude-code','everything-claude-code@everything-claude-code','marketplaces/everything-claude-code'];for(var i=0;i<s.length;i++){r=L(p.join(d,'plugins',s[i]));if(r)return r}try{var g=['ecc','everything-claude-code'];for(var j=0;j<g.length;j++){var c=p.join(d,'plugins','cache',g[j]);var O=f.readdirSync(c);for(var k=0;k<O.length;k++){var q=p.join(c,O[k]);var V=f.readdirSync(q);for(var m=0;m<V.length;m++){r=L(p.join(q,V[m]));if(r)return r}}}}catch(_){}return d})(); const sm = require(_r + '/scripts/lib/session-manager'); const aa = require(_r + '/scripts/lib/session-aliases'); const id = process.argv[1]; // First try to resolve as alias const resolved = aa.resolveAlias(id); const sessionId = resolved ? resolved.sessionPath : id; const session = sm.getSessionById(sessionId, true); if (!session) { console.log('Session not found: ' + id); process.exit(1); } const stats = sm.getSessionStats(session.sessionPath); const size = sm.getSessionSize(session.sessionPath); const aliases = aa.getAliasesForSession(session.filename); console.log('Session: ' + session.filename); console.log('Path: ' + session.sessionPath); console.log(''); console.log('Statistics:'); console.log(' Lines: ' + stats.lineCount); console.log(' Total items: ' + stats.totalItems); console.log(' Completed: ' + stats.completedItems); console.log(' In progress: ' + stats.inProgressItems); console.log(' Size: ' + size); console.log(''); if (aliases.length > 0) { console.log('Aliases: ' + aliases.map(a => a.name).join(', ')); console.log(''); } if (session.metadata.title) { console.log('Title: ' + session.metadata.title); console.log(''); } if (session.metadata.started) { console.log('Started: ' + session.metadata.started); } if (session.metadata.lastUpdated) { console.log('Last Updated: ' + session.metadata.lastUpdated); } if (session.metadata.project) { console.log('Project: ' + session.metadata.project); } if (session.metadata.branch) { console.log('Branch: ' + session.metadata.branch); } if (session.metadata.worktree) { console.log('Worktree: ' + session.metadata.worktree); } " "$ARGUMENTS" ``` ### Create Alias Create a memorable alias for a session. ```bash /sessions alias <id> <name> # Create alias /sessions alias 2026-02-01 today-work # Create alias named "today-work" ``` **Script:** ```bash node -e " const _r = (function(){var p=require('path'),f=require('fs'),o=require('os');var e=process.env.CLAUDE_PLUGIN_ROOT;if(e&&e.trim())return e.trim();var d=p.join(o.homedir(),'.claude');function L(x){try{return require(p.join(x,'scripts','lib','resolve-ecc-root')).resolveEccRoot()}catch(_){return null}}var r=L(d);if(r)return r;var s=['ecc','ecc@ecc','marketplaces/ecc','everything-claude-code','everything-claude-code@everything-claude-code','marketplaces/everything-claude-code'];for(var i=0;i<s.length;i++){r=L(p.join(d,'plugins',s[i]));if(r)return r}try{var g=['ecc','everything-claude-code'];for(var j=0;j<g.length;j++){var c=p.join(d,'plugins','cache',g[j]);var O=f.readdirSync(c);for(var k=0;k<O.length;k++){var q=p.join(c,O[k]);var V=f.readdirSync(q);for(var m=0;m<V.length;m++){r=L(p.join(q,V[m]));if(r)return r}}}}catch(_){}return d})(); const sm = require(_r + '/scripts/lib/session-manager'); const aa = require(_r + '/scripts/lib/session-aliases'); const sessionId = process.argv[1]; const aliasName = process.argv[2]; if (!sessionId || !aliasName) { console.log('Usage: /sessions alias <id> <name>'); process.exit(1); } // Get session filename const session = sm.getSessionById(sessionId); if (!session) { console.log('Session not found: ' + sessionId); process.exit(1); } const result = aa.setAlias(aliasName, session.filename); if (result.success) { console.log('✓ Alias created: ' + aliasName + ' → ' + session.filename); } else { console.log('✗ Error: ' + result.error); process.exit(1); } " "$ARGUMENTS" ``` ### Remove Alias Delete an existing alias. ```bash /sessions alias --remove <name> # Remove alias /sessions unalias <name> # Same as above ``` **Script:** ```bash node -e " const _r = (function(){var p=require('path'),f=require('fs'),o=require('os');var e=process.env.CLAUDE_PLUGIN_ROOT;if(e&&e.trim())return e.trim();var d=p.join(o.homedir(),'.claude');function L(x){try{return require(p.join(x,'scripts','lib','resolve-ecc-root')).resolveEccRoot()}catch(_){return null}}var r=L(d);if(r)return r;var s=['ecc','ecc@ecc','marketplaces/ecc','everything-claude-code','everything-claude-code@everything-claude-code','marketplaces/everything-claude-code'];for(var i=0;i<s.length;i++){r=L(p.join(d,'plugins',s[i]));if(r)return r}try{var g=['ecc','everything-claude-code'];for(var j=0;j<g.length;j++){var c=p.join(d,'plugins','cache',g[j]);var O=f.readdirSync(c);for(var k=0;k<O.length;k++){var q=p.join(c,O[k]);var V=f.readdirSync(q);for(var m=0;m<V.length;m++){r=L(p.join(q,V[m]));if(r)return r}}}}catch(_){}return d})(); const aa = require(_r + '/scripts/lib/session-aliases'); const aliasName = process.argv[1]; if (!aliasName) { console.log('Usage: /sessions alias --remove <name>'); process.exit(1); } const result = aa.deleteAlias(aliasName); if (result.success) { console.log('✓ Alias removed: ' + aliasName); } else { console.log('✗ Error: ' + result.error); process.exit(1); } " "$ARGUMENTS" ``` ### Session Info Show detailed information about a session. ```bash /sessions info <id|alias> # Show session details ``` **Script:** ```bash node -e " const _r = (function(){var p=require('path'),f=require('fs'),o=require('os');var e=process.env.CLAUDE_PLUGIN_ROOT;if(e&&e.trim())return e.trim();var d=p.join(o.homedir(),'.claude');function L(x){try{return require(p.join(x,'scripts','lib','resolve-ecc-root')).resolveEccRoot()}catch(_){return null}}var r=L(d);if(r)return r;var s=['ecc','ecc@ecc','marketplaces/ecc','everything-claude-code','everything-claude-code@everything-claude-code','marketplaces/everything-claude-code'];for(var i=0;i<s.length;i++){r=L(p.join(d,'plugins',s[i]));if(r)return r}try{var g=['ecc','everything-claude-code'];for(var j=0;j<g.length;j++){var c=p.join(d,'plugins','cache',g[j]);var O=f.readdirSync(c);for(var k=0;k<O.length;k++){var q=p.join(c,O[k]);var V=f.readdirSync(q);for(var m=0;m<V.length;m++){r=L(p.join(q,V[m]));if(r)return r}}}}catch(_){}return d})(); const sm = require(_r + '/scripts/lib/session-manager'); const aa = require(_r + '/scripts/lib/session-aliases'); const id = process.argv[1]; const resolved = aa.resolveAlias(id); const sessionId = resolved ? resolved.sessionPath : id; const session = sm.getSessionById(sessionId, true); if (!session) { console.log('Session not found: ' + id); process.exit(1); } const stats = sm.getSessionStats(session.sessionPath); const size = sm.getSessionSize(session.sessionPath); const aliases = aa.getAliasesForSession(session.filename); console.log('Session Information'); console.log('════════════════════'); console.log('ID: ' + (session.shortId === 'no-id' ? '(none)' : session.shortId)); console.log('Filename: ' + session.filename); console.log('Date: ' + session.date); console.log('Modified: ' + session.modifiedTime.toISOString().slice(0, 19).replace('T', ' ')); console.log('Project: ' + (session.metadata.project || '-')); console.log('Branch: ' + (session.metadata.branch || '-')); console.log('Worktree: ' + (session.metadata.worktree || '-')); console.log(''); console.log('Content:'); console.log(' Lines: ' + stats.lineCount); console.log(' Total items: ' + stats.totalItems); console.log(' Completed: ' + stats.completedItems); console.log(' In progress: ' + stats.inProgressItems); console.log(' Size: ' + size); if (aliases.length > 0) { console.log('Aliases: ' + aliases.map(a => a.name).join(', ')); } " "$ARGUMENTS" ``` ### List Aliases Show all session aliases. ```bash /sessions aliases # List all aliases ``` **Script:** ```bash node -e " const _r = (function(){var p=require('path'),f=require('fs'),o=require('os');var e=process.env.CLAUDE_PLUGIN_ROOT;if(e&&e.trim())return e.trim();var d=p.join(o.homedir(),'.claude');function L(x){try{return require(p.join(x,'scripts','lib','resolve-ecc-root')).resolveEccRoot()}catch(_){return null}}var r=L(d);if(r)return r;var s=['ecc','ecc@ecc','marketplaces/ecc','everything-claude-code','everything-claude-code@everything-claude-code','marketplaces/everything-claude-code'];for(var i=0;i<s.length;i++){r=L(p.join(d,'plugins',s[i]));if(r)return r}try{var g=['ecc','everything-claude-code'];for(var j=0;j<g.length;j++){var c=p.join(d,'plugins','cache',g[j]);var O=f.readdirSync(c);for(var k=0;k<O.length;k++){var q=p.join(c,O[k]);var V=f.readdirSync(q);for(var m=0;m<V.length;m++){r=L(p.join(q,V[m]));if(r)return r}}}}catch(_){}return d})(); const aa = require(_r + '/scripts/lib/session-aliases'); const aliases = aa.listAliases(); console.log('Session Aliases (' + aliases.length + '):'); console.log(''); if (aliases.length === 0) { console.log('No aliases found.'); } else { console.log('Name Session File Title'); console.log('─────────────────────────────────────────────────────────────'); for (const a of aliases) { const name = a.name.padEnd(12); const file = (a.sessionPath.length > 30 ? a.sessionPath.slice(0, 27) + '...' : a.sessionPath).padEnd(30); const title = a.title || ''; console.log(name + ' ' + file + ' ' + title); } } " ``` ## Operator Notes - Session files persist `Project`, `Branch`, and `Worktree` in the header so `/sessions info` can disambiguate parallel tmux/worktree runs. - For command-center style monitoring, combine `/sessions info`, `git diff --stat`, and the cost metrics emitted by `scripts/hooks/cost-tracker.js`. ## Arguments $ARGUMENTS: - `list [options]` - List sessions - `--limit <n>` - Max sessions to show (default: 50) - `--date <YYYY-MM-DD>` - Filter by date - `--search <pattern>` - Search in session ID - `load <id|alias>` - Load session content - `alias <id> <name>` - Create alias for session - `alias --remove <name>` - Remove alias - `unalias <name>` - Same as `--remove` - `info <id|alias>` - Show session statistics - `aliases` - List all aliases - `help` - Show this help ## Examples ```bash # List all sessions /sessions list # Create an alias for today's session /sessions alias 2026-02-01 today # Load session by alias /sessions load today # Show session info /sessions info today # Remove alias /sessions alias --remove today # List all aliases /sessions aliases ``` ## Notes - Sessions are stored as markdown files in `~/.claude/session-data/` with legacy reads from `~/.claude/sessions/` - Aliases are stored in `~/.claude/session-aliases.json` - Session IDs can be shortened (first 4-8 characters usually unique enough) - Use aliases for frequently referenced sessions
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Configure your preferred package manager (npm/pnpm/yarn/bun)
3
+ argument-hint: [optional arguments]
4
+ ---
5
+
6
+ # Package Manager Setup Configure your preferred package manager for this project or globally. ## Usage ```bash # Detect current package manager node scripts/setup-package-manager.js --detect # Set global preference node scripts/setup-package-manager.js --global pnpm # Set project preference node scripts/setup-package-manager.js --project bun # List available package managers node scripts/setup-package-manager.js --list ``` ## Detection Priority When determining which package manager to use, the following order is checked: 1. **Environment variable**: `CLAUDE_PACKAGE_MANAGER` 2. **Project config**: `.claude/package-manager.json` 3. **package.json**: `packageManager` field 4. **Lock file**: Presence of package-lock.json, yarn.lock, pnpm-lock.yaml, or bun.lockb 5. **Global config**: `~/.claude/package-manager.json` 6. **Fallback**: First available package manager (pnpm > bun > yarn > npm) ## Configuration Files ### Global Configuration ```json // ~/.claude/package-manager.json { "packageManager": "pnpm" } ``` ### Project Configuration ```json // .claude/package-manager.json { "packageManager": "bun" } ``` ### package.json ```json { "packageManager": "pnpm@8.6.0" } ``` ## Environment Variable Set `CLAUDE_PACKAGE_MANAGER` to override all other detection methods: ```bash # Windows (PowerShell) $env:CLAUDE_PACKAGE_MANAGER = "pnpm" # macOS/Linux export CLAUDE_PACKAGE_MANAGER=pnpm ``` ## Run the Detection To see current package manager detection results, run: ```bash node scripts/setup-package-manager.js --detect ```
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Analyze local git history to extract coding patterns and generate SKILL.md files. Local version of the Skill Creator GitHub App.
3
+ argument-hint: [optional arguments]
4
+ ---
5
+
6
+ # /skill-create - Local Skill Generation Analyze your repository's git history to extract coding patterns and generate SKILL.md files that teach Claude your team's practices. ## Usage ```bash /skill-create # Analyze current repo /skill-create --commits 100 # Analyze last 100 commits /skill-create --output ./skills # Custom output directory /skill-create --instincts # Also generate instincts for continuous-learning-v2 ``` ## What It Does 1. **Parses Git History** - Analyzes commits, file changes, and patterns 2. **Detects Patterns** - Identifies recurring workflows and conventions 3. **Generates SKILL.md** - Creates valid Claude Code skill files 4. **Optionally Creates Instincts** - For the continuous-learning-v2 system ## Analysis Steps ### Step 1: Gather Git Data ```bash # Get recent commits with file changes git log --oneline -n ${COMMITS:-200} --name-only --pretty=format:"%H|%s|%ad" --date=short # Get commit frequency by file git log --oneline -n 200 --name-only | grep -v "^$" | grep -v "^[a-f0-9]" | sort | uniq -c | sort -rn | head -20 # Get commit message patterns git log --oneline -n 200 | cut -d' ' -f2- | head -50 ``` ### Step 2: Detect Patterns Look for these pattern types: | Pattern | Detection Method | |---------|-----------------| | **Commit conventions** | Regex on commit messages (feat:, fix:, chore:) | | **File co-changes** | Files that always change together | | **Workflow sequences** | Repeated file change patterns | | **Architecture** | Folder structure and naming conventions | | **Testing patterns** | Test file locations, naming, coverage | ### Step 3: Generate SKILL.md Output format: ```markdown --- name: {repo-name}-patterns description: Coding patterns extracted from {repo-name} version: 1.0.0 source: local-git-analysis analyzed_commits: {count} --- # {Repo Name} Patterns ## Commit Conventions {detected commit message patterns} ## Code Architecture {detected folder structure and organization} ## Workflows {detected repeating file change patterns} ## Testing Patterns {detected test conventions} ``` ### Step 4: Generate Instincts (if --instincts) For continuous-learning-v2 integration: ```yaml --- id: {repo}-commit-convention trigger: "when writing a commit message" confidence: 0.8 domain: git source: local-repo-analysis --- # Use Conventional Commits ## Action Prefix commits with: feat:, fix:, chore:, docs:, test:, refactor: ## Evidence - Analyzed {n} commits - {percentage}% follow conventional commit format ``` ## GitHub App Integration For advanced features (10k+ commits, team sharing, auto-PRs), use the [Skill Creator GitHub App](https://github.com/apps/skill-creator): - Install: [github.com/apps/skill-creator](https://github.com/apps/skill-creator) - Comment `/skill-creator analyze` on any issue - Receives PR with generated skills ## Related Commands - `/instinct-import` - Import generated instincts - `/instinct-status` - View learned instincts - `/evolve` - Cluster instincts into skills/agents --- *Part of [Everything Claude Code](https://github.com/affaan-m/everything-claude-code)*
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Show skill portfolio health dashboard with charts and analytics
3
+ argument-hint: [optional arguments]
4
+ ---
5
+
6
+ # Skill Health Dashboard Shows a comprehensive health dashboard for all skills in the portfolio with success rate sparklines, failure pattern clustering, pending amendments, and version history. ## Implementation Run the skill health CLI in dashboard mode: ```bash ECC_ROOT="${CLAUDE_PLUGIN_ROOT:-$(node -e "var r=(function(){var p=require('path'),f=require('fs'),o=require('os');var e=process.env.CLAUDE_PLUGIN_ROOT;if(e&&e.trim())return e.trim();var d=p.join(o.homedir(),'.claude');function L(x){try{return require(p.join(x,'scripts','lib','resolve-ecc-root')).resolveEccRoot()}catch(_){return null}}var r=L(d);if(r)return r;var s=['ecc','ecc@ecc','marketplaces/ecc','everything-claude-code','everything-claude-code@everything-claude-code','marketplaces/everything-claude-code'];for(var i=0;i<s.length;i++){r=L(p.join(d,'plugins',s[i]));if(r)return r}try{var g=['ecc','everything-claude-code'];for(var j=0;j<g.length;j++){var c=p.join(d,'plugins','cache',g[j]);var O=f.readdirSync(c);for(var k=0;k<O.length;k++){var q=p.join(c,O[k]);var V=f.readdirSync(q);for(var m=0;m<V.length;m++){r=L(p.join(q,V[m]));if(r)return r}}}}catch(_){}return d})();console.log(r)")}" node "$ECC_ROOT/scripts/skills-health.js" --dashboard ``` For a specific panel only: ```bash ECC_ROOT="${CLAUDE_PLUGIN_ROOT:-$(node -e "var r=(function(){var p=require('path'),f=require('fs'),o=require('os');var e=process.env.CLAUDE_PLUGIN_ROOT;if(e&&e.trim())return e.trim();var d=p.join(o.homedir(),'.claude');function L(x){try{return require(p.join(x,'scripts','lib','resolve-ecc-root')).resolveEccRoot()}catch(_){return null}}var r=L(d);if(r)return r;var s=['ecc','ecc@ecc','marketplaces/ecc','everything-claude-code','everything-claude-code@everything-claude-code','marketplaces/everything-claude-code'];for(var i=0;i<s.length;i++){r=L(p.join(d,'plugins',s[i]));if(r)return r}try{var g=['ecc','everything-claude-code'];for(var j=0;j<g.length;j++){var c=p.join(d,'plugins','cache',g[j]);var O=f.readdirSync(c);for(var k=0;k<O.length;k++){var q=p.join(c,O[k]);var V=f.readdirSync(q);for(var m=0;m<V.length;m++){r=L(p.join(q,V[m]));if(r)return r}}}}catch(_){}return d})();console.log(r)")}" node "$ECC_ROOT/scripts/skills-health.js" --dashboard --panel failures ``` For machine-readable output: ```bash ECC_ROOT="${CLAUDE_PLUGIN_ROOT:-$(node -e "var r=(function(){var p=require('path'),f=require('fs'),o=require('os');var e=process.env.CLAUDE_PLUGIN_ROOT;if(e&&e.trim())return e.trim();var d=p.join(o.homedir(),'.claude');function L(x){try{return require(p.join(x,'scripts','lib','resolve-ecc-root')).resolveEccRoot()}catch(_){return null}}var r=L(d);if(r)return r;var s=['ecc','ecc@ecc','marketplaces/ecc','everything-claude-code','everything-claude-code@everything-claude-code','marketplaces/everything-claude-code'];for(var i=0;i<s.length;i++){r=L(p.join(d,'plugins',s[i]));if(r)return r}try{var g=['ecc','everything-claude-code'];for(var j=0;j<g.length;j++){var c=p.join(d,'plugins','cache',g[j]);var O=f.readdirSync(c);for(var k=0;k<O.length;k++){var q=p.join(c,O[k]);var V=f.readdirSync(q);for(var m=0;m<V.length;m++){r=L(p.join(q,V[m]));if(r)return r}}}}catch(_){}return d})();console.log(r)")}" node "$ECC_ROOT/scripts/skills-health.js" --dashboard --json ``` ## Usage ``` /skill-health # Full dashboard view /skill-health --panel failures # Only failure clustering panel /skill-health --json # Machine-readable JSON output ``` ## What to Do 1. Run the skills-health.js script with --dashboard flag 2. Display the output to the user 3. If any skills are declining, highlight them and suggest running /evolve 4. If there are pending amendments, suggest reviewing them ## Panels - **Success Rate (30d)** — Sparkline charts showing daily success rates per skill - **Failure Patterns** — Clustered failure reasons with horizontal bar chart - **Pending Amendments** — Amendment proposals awaiting review - **Version History** — Timeline of version snapshots per skill
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Analyze coverage, identify gaps, and generate missing tests toward the target threshold.
3
+ argument-hint: [optional arguments]
4
+ ---
5
+
6
+ # Test Coverage Analyze test coverage, identify gaps, and generate missing tests to reach 80%+ coverage. ## Step 1: Detect Test Framework | Indicator | Coverage Command | |-----------|-----------------| | `jest.config.*` or `package.json` jest | `npx jest --coverage --coverageReporters=json-summary` | | `vitest.config.*` | `npx vitest run --coverage` | | `pytest.ini` / `pyproject.toml` pytest | `pytest --cov=src --cov-report=json` | | `Cargo.toml` | `cargo llvm-cov --json` | | `pom.xml` with JaCoCo | `mvn test jacoco:report` | | `go.mod` | `go test -coverprofile=coverage.out ./...` | ## Step 2: Analyze Coverage Report 1. Run the coverage command 2. Parse the output (JSON summary or terminal output) 3. List files **below 80% coverage**, sorted worst-first 4. For each under-covered file, identify: - Untested functions or methods - Missing branch coverage (if/else, switch, error paths) - Dead code that inflates the denominator ## Step 3: Generate Missing Tests For each under-covered file, generate tests following this priority: 1. **Happy path** — Core functionality with valid inputs 2. **Error handling** — Invalid inputs, missing data, network failures 3. **Edge cases** — Empty arrays, null/undefined, boundary values (0, -1, MAX_INT) 4. **Branch coverage** — Each if/else, switch case, ternary ### Test Generation Rules - Place tests adjacent to source: `foo.ts` → `foo.test.ts` (or project convention) - Use existing test patterns from the project (import style, assertion library, mocking approach) - Mock external dependencies (database, APIs, file system) - Each test should be independent — no shared mutable state between tests - Name tests descriptively: `test_create_user_with_duplicate_email_returns_409` ## Step 4: Verify 1. Run the full test suite — all tests must pass 2. Re-run coverage — verify improvement 3. If still below 80%, repeat Step 3 for remaining gaps ## Step 5: Report Show before/after comparison: ``` Coverage Report ────────────────────────────── File Before After src/services/auth.ts 45% 88% src/utils/validation.ts 32% 82% ────────────────────────────── Overall: 67% 84% PASS: ``` ## Focus Areas - Functions with complex branching (high cyclomatic complexity) - Error handlers and catch blocks - Utility functions used across the codebase - API endpoint handlers (request → response flow) - Edge cases: null, undefined, empty string, empty array, zero, negative numbers
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Scan project structure and generate token-lean architecture codemaps.
3
+ argument-hint: [optional arguments]
4
+ ---
5
+
6
+ # Update Codemaps Analyze the codebase structure and generate token-lean architecture documentation. ## Step 1: Scan Project Structure 1. Identify the project type (monorepo, single app, library, microservice) 2. Find all source directories (src/, lib/, app/, packages/) 3. Map entry points (main.ts, index.ts, app.py, main.go, etc.) ## Step 2: Generate Codemaps Create or update codemaps in `docs/CODEMAPS/` (or `.reports/codemaps/`): | File | Contents | |------|----------| | `architecture.md` | High-level system diagram, service boundaries, data flow | | `backend.md` | API routes, middleware chain, service → repository mapping | | `frontend.md` | Page tree, component hierarchy, state management flow | | `data.md` | Database tables, relationships, migration history | | `dependencies.md` | External services, third-party integrations, shared libraries | ### Codemap Format Each codemap should be token-lean — optimized for AI context consumption: ```markdown # Backend Architecture ## Routes POST /api/users → UserController.create → UserService.create → UserRepo.insert GET /api/users/:id → UserController.get → UserService.findById → UserRepo.findById ## Key Files src/services/user.ts (business logic, 120 lines) src/repos/user.ts (database access, 80 lines) ## Dependencies - PostgreSQL (primary data store) - Redis (session cache, rate limiting) - Stripe (payment processing) ``` ## Step 3: Diff Detection 1. If previous codemaps exist, calculate the diff percentage 2. If changes > 30%, show the diff and request user approval before overwriting 3. If changes <= 30%, update in place ## Step 4: Add Metadata Add a freshness header to each codemap: ```markdown <!-- Generated: 2026-02-11 | Files scanned: 142 | Token estimate: ~800 --> ``` ## Step 5: Save Analysis Report Write a summary to `.reports/codemap-diff.txt`: - Files added/removed/modified since last scan - New dependencies detected - Architecture changes (new routes, new services, etc.) - Staleness warnings for docs not updated in 90+ days ## Tips - Focus on **high-level structure**, not implementation details - Prefer **file paths and function signatures** over full code blocks - Keep each codemap under **1000 tokens** for efficient context loading - Use ASCII diagrams for data flow instead of verbose descriptions - Run after major feature additions or refactoring sessions
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Sync documentation from source-of-truth files such as scripts, schemas, routes, and exports.
3
+ argument-hint: [optional arguments]
4
+ ---
5
+
6
+ # Update Documentation Sync documentation with the codebase, generating from source-of-truth files. ## Step 1: Identify Sources of Truth | Source | Generates | |--------|-----------| | `package.json` scripts | Available commands reference | | `.env.example` | Environment variable documentation | | `openapi.yaml` / route files | API endpoint reference | | Source code exports | Public API documentation | | `Dockerfile` / `docker-compose.yml` | Infrastructure setup docs | ## Step 2: Generate Script Reference 1. Read `package.json` (or `Makefile`, `Cargo.toml`, `pyproject.toml`) 2. Extract all scripts/commands with their descriptions 3. Generate a reference table: ```markdown | Command | Description | |---------|-------------| | `npm run dev` | Start development server with hot reload | | `npm run build` | Production build with type checking | | `npm test` | Run test suite with coverage | ``` ## Step 3: Generate Environment Documentation 1. Read `.env.example` (or `.env.template`, `.env.sample`) 2. Extract all variables with their purposes 3. Categorize as required vs optional 4. Document expected format and valid values ```markdown | Variable | Required | Description | Example | |----------|----------|-------------|---------| | `DATABASE_URL` | Yes | PostgreSQL connection string | `postgres://user:pass@host:5432/db` | | `LOG_LEVEL` | No | Logging verbosity (default: info) | `debug`, `info`, `warn`, `error` | ``` ## Step 4: Update Contributing Guide Generate or update `docs/CONTRIBUTING.md` with: - Development environment setup (prerequisites, install steps) - Available scripts and their purposes - Testing procedures (how to run, how to write new tests) - Code style enforcement (linter, formatter, pre-commit hooks) - PR submission checklist ## Step 5: Update Runbook Generate or update `docs/RUNBOOK.md` with: - Deployment procedures (step-by-step) - Health check endpoints and monitoring - Common issues and their fixes - Rollback procedures - Alerting and escalation paths ## Step 6: Staleness Check 1. Find documentation files not modified in 90+ days 2. Cross-reference with recent source code changes 3. Flag potentially outdated docs for manual review ## Step 7: Show Summary ``` Documentation Update ────────────────────────────── Updated: docs/CONTRIBUTING.md (scripts table) Updated: docs/ENV.md (3 new variables) Flagged: docs/DEPLOY.md (142 days stale) Skipped: docs/API.md (no changes detected) ────────────────────────────── ``` ## Rules - **Single source of truth**: Always generate from code, never manually edit generated sections - **Preserve manual sections**: Only update generated sections; leave hand-written prose intact - **Mark generated content**: Use `<!-- AUTO-GENERATED -->` markers around generated sections - **Don't create docs unprompted**: Only create new doc files if the command explicitly requests it
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Comprehensive Vue.js code review for Composition API correctness, reactivity, composable patterns, template security, accessibility, and Vue-specific performance. Invokes the vue-reviewer agent (and typescript-reviewer alongside on .vue/.ts changes).
3
+ argument-hint: [optional arguments]
4
+ ---
5
+
6
+ # Vue Code Review This command invokes the **vue-reviewer** agent for Vue-specific code review. For pull requests touching `.vue` files or Vue-containing `.ts`/`.js` files, both `vue-reviewer` and `typescript-reviewer` should run — each owns a distinct lane. ## What This Command Does 1. **Identify Vue Changes**: Find modified `.vue` files and Vue-related `.ts`/`.js` files via `git diff` 2. **Run Lint**: Execute `eslint` with `eslint-plugin-vue` 3. **Typecheck**: Run `vue-tsc --noEmit` or the project's canonical typecheck command 4. **Review Vue Lanes Only**: Reactivity, composables, template security, accessibility, Vue-specific performance 5. **Generate Report**: Categorize issues by severity (CRITICAL / HIGH / MEDIUM) ## When to Use Use `/vue-review` when: - A PR or commit touches `.vue` files - After writing or modifying Vue components, composables, or Pinia stores - Before merging Vue code - Auditing template security (`v-html`, URL bindings) - Reviewing a new composable for correctness - Auditing Vue Router guards and navigation - Reviewing Nuxt server routes or SSR-specific code For pure `.ts`/`.js` changes with no Vue imports, use `/code-review` (general) or invoke `typescript-reviewer` directly. ## Scope vs `/code-review` and TypeScript Review | Tool | Scope | |---|---| | `vue-reviewer` (this command) | Reactivity, composables, template security, a11y, Vue performance, Pinia/Router | | `typescript-reviewer` | Generic TS/JS — `any` abuse, async correctness, Node security | | `security-reviewer` | Project-wide security audit | | `/code-review` | Generic uncommitted-changes or PR review | On a `.vue` / Vue-related PR, invoke both `vue-reviewer` and `typescript-reviewer`. Findings from each are non-overlapping by design. ## Review Categories ### CRITICAL (Must Fix) - `v-html` with unsanitized input - `:href`/`:src` with unvalidated user URLs (`javascript:`, `data:`) - Secret in client bundle (`VITE_*`, Nuxt `public` runtimeConfig) - Server endpoint without input validation (Nuxt Nitro) - `localStorage`/`sessionStorage` for session tokens - Destructuring reactive props in Vue < 3.5 (breaks reactivity) - `reactive()` object replacement (breaks watchers) - Watcher source tracking a ref object instead of `.value` ### HIGH (Should Fix) - Composable with module-scope side effects - Missing cleanup in composable (watcher, interval, listener) - `v-for` without `:key` or with `key={index}` - `v-if` + `v-for` on same element - Props mutation - Missing prop validation - Route guard returning false without redirect - `useRoute().params` destructured at top-level (snapshot) - `v-model` bound to computed without setter - Accessibility violations (missing labels, non-semantic interactive elements) - Direct store property mutation outside actions ### MEDIUM (Consider) - Options API in new Vue 3 code - Component over 300 lines - `v-show` where `v-if` is more appropriate (or vice versa) - Missing `:max` on `<KeepAlive>` - Missing `shallowRef` for large replaced data - Custom validation instead of vetted form library - `defineExpose` exposing more than necessary - `inheritAttrs` not disabled when using `v-bind="$attrs"` ## Automated Checks Run ```bash # Lint (required) npx eslint . --ext .vue,.ts,.js # Vue-specific typecheck vue-tsc --noEmit # Targeted security rules npx eslint . --rule 'vue/no-v-html: warn' \ --rule 'vue/no-template-target-blank: error' # Supply-chain npm audit ``` If `eslint-plugin-vue` or `vue-tsc` is not configured, the review will flag the gap as a HIGH config issue and continue. ## Example Usage ````text User: /vue-review Agent: # Vue Code Review Report ## Files Reviewed - src/components/UserCard.vue (modified) - src/composables/useUser.ts (new) - src/stores/useUserStore.ts (modified) ## Lint Results PASS: eslint clean PASS: vue-tsc clean ## Issues Found [CRITICAL] Unsanitized v-html File: src/components/UserCard.vue:15 Issue: User-controlled bio rendered as raw HTML via v-html. Why: XSS via stored script tags in user input. Fix: Sanitize with DOMPurify or render as text: ```vue <script setup> import DOMPurify from "dompurify"; const safeBio = computed(() => DOMPurify.sanitize(user.bio)); </script> <template> <div v-html="safeBio" /> </template> ``` [HIGH] Watcher in composable missing cleanup File: src/composables/useUser.ts:22 Issue: `watch` callback fires fetch without AbortController; stale responses can overwrite newer data. Fix: Use onCleanup to abort: ```ts watch(userId, async (newId, _old, onCleanup) => { const controller = new AbortController(); onCleanup(() => controller.abort()); const data = await fetch(`/api/users/${newId}`, { signal: controller.signal }); user.value = await data.json(); }); ``` ## Summary - CRITICAL: 1 - HIGH: 1 - MEDIUM: 0 Recommendation: FAIL: Block merge until CRITICAL issue is fixed ```` ## Approval Criteria | Status | Condition | |---|---| | PASS: Approve | No CRITICAL or HIGH issues | | WARNING: Warning | Only MEDIUM issues (merge with caution) | | FAIL: Block | CRITICAL or HIGH issues found | ## Integration with Other Commands - Run your project's build command first if the build is broken - Run tests to ensure component tests pass - Run `/vue-review` before merging Vue code - Use `/code-review` for non-Vue-specific concerns on the same PR ## Related - Agent: `agents/vue-reviewer.md` - Companion agent: `agents/typescript-reviewer.md` (run alongside for Vue-related TS/JS) - Skills: `skills/vue-patterns/` - Rules: `rules/vue/`
@@ -0,0 +1,144 @@
1
+ ---
2
+ name: accessibility
3
+ description: Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA
4
+ ---
5
+
6
+ # Accessibility (WCAG 2.2)
7
+
8
+ This skill ensures that digital interfaces are Perceivable, Operable, Understandable, and Robust (POUR) for all users, including those using screen readers, switch controls, or keyboard navigation. It focuses on the technical implementation of WCAG 2.2 success criteria.
9
+
10
+ ## When to Use
11
+
12
+ - Defining UI component specifications for Web, iOS, or Android.
13
+ - Auditing existing code for accessibility barriers or compliance gaps.
14
+ - Implementing new WCAG 2.2 standards like Target Size (Minimum) and Focus Appearance.
15
+ - Mapping high-level design requirements to technical attributes (ARIA roles, traits, hints).
16
+
17
+ ## Core Concepts
18
+
19
+ - **POUR Principles**: The foundation of WCAG (Perceivable, Operable, Understandable, Robust).
20
+ - **Semantic Mapping**: Using native elements over generic containers to provide built-in accessibility.
21
+ - **Accessibility Tree**: The representation of the UI that assistive technologies actually "read."
22
+ - **Focus Management**: Controlling the order and visibility of the keyboard/screen reader cursor.
23
+ - **Labeling & Hints**: Providing context through `aria-label`, `accessibilityLabel`, and `contentDescription`.
24
+
25
+ ## How It Works
26
+
27
+ ### Step 1: Identify the Component Role
28
+
29
+ Determine the functional purpose (e.g., Is this a button, a link, or a tab?). Use the most semantic native element available before resorting to custom roles.
30
+
31
+ ### Step 2: Define Perceivable Attributes
32
+
33
+ - Ensure text contrast meets **4.5:1** (normal) or **3:1** (large/UI).
34
+ - Add text alternatives for non-text content (images, icons).
35
+ - Implement responsive reflow (up to 400% zoom without loss of function).
36
+
37
+ ### Step 3: Implement Operable Controls
38
+
39
+ - Ensure a minimum **24x24 CSS pixel** target size (WCAG 2.2 SC 2.5.8).
40
+ - Verify all interactive elements are reachable via keyboard and have a visible focus indicator (SC 2.4.11).
41
+ - Provide single-pointer alternatives for dragging movements.
42
+
43
+ ### Step 4: Ensure Understandable Logic
44
+
45
+ - Use consistent navigation patterns.
46
+ - Provide descriptive error messages and suggestions for correction (SC 3.3.3).
47
+ - Implement "Redundant Entry" (SC 3.3.7) to prevent asking for the same data twice.
48
+
49
+ ### Step 5: Verify Robust Compatibility
50
+
51
+ - Use correct `Name, Role, Value` patterns.
52
+ - Implement `aria-live` or live regions for dynamic status updates.
53
+
54
+ ## Accessibility Architecture Diagram
55
+
56
+ ```mermaid
57
+ flowchart TD
58
+ UI["UI Component"] --> Platform{Platform?}
59
+ Platform -->|Web| ARIA["WAI-ARIA + HTML5"]
60
+ Platform -->|iOS| SwiftUI["Accessibility Traits + Labels"]
61
+ Platform -->|Android| Compose["Semantics + ContentDesc"]
62
+
63
+ ARIA --> AT["Assistive Technology (Screen Readers, Switches)"]
64
+ SwiftUI --> AT
65
+ Compose --> AT
66
+ ```
67
+
68
+ ## Cross-Platform Mapping
69
+
70
+ | Feature | Web (HTML/ARIA) | iOS (SwiftUI) | Android (Compose) |
71
+ | :----------------- | :----------------------- | :----------------------------------- | :---------------------------------------------------------- |
72
+ | **Primary Label** | `aria-label` / `<label>` | `.accessibilityLabel()` | `contentDescription` |
73
+ | **Secondary Hint** | `aria-describedby` | `.accessibilityHint()` | `Modifier.semantics { stateDescription = ... }` |
74
+ | **Action Role** | `role="button"` | `.accessibilityAddTraits(.isButton)` | `Modifier.semantics { role = Role.Button }` |
75
+ | **Live Updates** | `aria-live="polite"` | `.accessibilityLiveRegion(.polite)` | `Modifier.semantics { liveRegion = LiveRegionMode.Polite }` |
76
+
77
+ ## Examples
78
+
79
+ ### Web: Accessible Search
80
+
81
+ ```html
82
+ <form role="search">
83
+ <label for="search-input" class="sr-only">Search products</label>
84
+ <input type="search" id="search-input" placeholder="Search..." />
85
+ <button type="submit" aria-label="Submit Search">
86
+ <svg aria-hidden="true">...</svg>
87
+ </button>
88
+ </form>
89
+ ```
90
+
91
+ ### iOS: Accessible Action Button
92
+
93
+ ```swift
94
+ Button(action: deleteItem) {
95
+ Image(systemName: "trash")
96
+ }
97
+ .accessibilityLabel("Delete item")
98
+ .accessibilityHint("Permanently removes this item from your list")
99
+ .accessibilityAddTraits(.isButton)
100
+ ```
101
+
102
+ ### Android: Accessible Toggle
103
+
104
+ ```kotlin
105
+ Switch(
106
+ checked = isEnabled,
107
+ onCheckedChange = { onToggle() },
108
+ modifier = Modifier.semantics {
109
+ contentDescription = "Enable notifications"
110
+ }
111
+ )
112
+ ```
113
+
114
+ ## Anti-Patterns to Avoid
115
+
116
+ - **Div-Buttons**: Using a `<div>` or `<span>` for a click event without adding a role and keyboard support.
117
+ - **Color-Only Meaning**: Indicating an error or status _only_ with a color change (e.g., turning a border red).
118
+ - **Uncontained Modal Focus**: Modals that don't trap focus, allowing keyboard users to navigate background content while the modal is open. Focus must be contained _and_ escapable via the `Escape` key or an explicit close button (WCAG SC 2.1.2).
119
+ - **Redundant Alt Text**: Using "Image of..." or "Picture of..." in alt text (screen readers already announce the role "Image").
120
+
121
+ ## Best Practices Checklist
122
+
123
+ - [ ] Interactive elements meet the **24x24px** (Web) or **44x44pt** (Native) target size.
124
+ - [ ] Focus indicators are clearly visible and high-contrast.
125
+ - [ ] Modals **contain focus** while open, and release it cleanly on close (`Escape` key or close button).
126
+ - [ ] Dropdowns and menus restore focus to the trigger element on close.
127
+ - [ ] Forms provide text-based error suggestions.
128
+ - [ ] All icon-only buttons have a descriptive text label.
129
+ - [ ] Content reflows properly when text is scaled.
130
+
131
+ ## References
132
+
133
+ - [WCAG 2.2 Guidelines](https://www.w3.org/TR/WCAG22/)
134
+ - [WAI-ARIA Authoring Practices](https://www.w3.org/TR/wai-aria-practices/)
135
+ - [iOS Accessibility Programming Guide](https://developer.apple.com/documentation/accessibility)
136
+ - [iOS Human Interface Guidelines - Accessibility](https://developer.apple.com/design/human-interface-guidelines/accessibility)
137
+ - [Android Accessibility Developer Guide](https://developer.android.com/guide/topics/ui/accessibility)
138
+
139
+ ## Related Skills
140
+
141
+ - `frontend-patterns`
142
+ - `design-system`
143
+ - `liquid-glass-design`
144
+ - `swiftui-patterns`