voidmachine 0.0.0 → 4.0.0

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 (341) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +123 -4
  3. package/bin/void-harness.mjs +12 -0
  4. package/bin/void-machine.mjs +12 -0
  5. package/core-assets/.claude-plugin/plugin.json +253 -0
  6. package/core-assets/.gitkeep +0 -0
  7. package/core-assets/PHILOSOPHY.md +218 -0
  8. package/core-assets/PROJECT-DOCTRINE.template.md +14 -0
  9. package/core-assets/adapters/security/manifest.yaml +96 -0
  10. package/core-assets/agents/.gitkeep +0 -0
  11. package/core-assets/agents/accessibility-specialist.md +59 -0
  12. package/core-assets/agents/api-integration-engineer.md +59 -0
  13. package/core-assets/agents/code-explorer.md +94 -0
  14. package/core-assets/agents/code-explorer.source +7 -0
  15. package/core-assets/agents/data-migration-engineer.md +59 -0
  16. package/core-assets/agents/devex-docs-engineer.md +57 -0
  17. package/core-assets/agents/doctrine-critic.md +91 -0
  18. package/core-assets/agents/doctrine-critic.source +11 -0
  19. package/core-assets/agents/domain-architect.md +56 -0
  20. package/core-assets/agents/experience-designer.md +59 -0
  21. package/core-assets/agents/frontend-engineer.md +60 -0
  22. package/core-assets/agents/independent-code-reviewer.md +61 -0
  23. package/core-assets/agents/migration-planner.md +97 -0
  24. package/core-assets/agents/migration-planner.source +7 -0
  25. package/core-assets/agents/observability-sre-engineer.md +59 -0
  26. package/core-assets/agents/pdf-specialist.md +58 -0
  27. package/core-assets/agents/performance-engineer.md +58 -0
  28. package/core-assets/agents/product-challenger.md +55 -0
  29. package/core-assets/agents/security-engineer.md +66 -0
  30. package/core-assets/agents/silent-failure-hunter.md +94 -0
  31. package/core-assets/agents/silent-failure-hunter.source +8 -0
  32. package/core-assets/agents/solution-architect.md +57 -0
  33. package/core-assets/agents/test-qa-engineer.md +60 -0
  34. package/core-assets/agents/type-design-analyzer.md +93 -0
  35. package/core-assets/agents/type-design-analyzer.source +8 -0
  36. package/core-assets/agents/visual-craft-director.md +62 -0
  37. package/core-assets/codex/hooks.json +157 -0
  38. package/core-assets/contract-history/visual-craft-director/v2.yaml +43 -0
  39. package/core-assets/data/catalog.v3.json +10479 -0
  40. package/core-assets/data/certification.json +1800 -0
  41. package/core-assets/data/identity.json +8 -0
  42. package/core-assets/data/model.json +4226 -0
  43. package/core-assets/enforce/ci-enforce.sh +183 -0
  44. package/core-assets/hooks/_checks.sh +145 -0
  45. package/core-assets/hooks/_hooklib.sh +163 -0
  46. package/core-assets/hooks/_syntax-worker.cjs +503 -0
  47. package/core-assets/hooks/_void-hook.mjs +5459 -0
  48. package/core-assets/hooks/activation-meter.sh +13 -0
  49. package/core-assets/hooks/anti-ai-slop-grep.sh +38 -0
  50. package/core-assets/hooks/auto-format.sh +9 -0
  51. package/core-assets/hooks/axe-precommit.sh +35 -0
  52. package/core-assets/hooks/block-dangerous-bash.sh +10 -0
  53. package/core-assets/hooks/block-protected-push.sh +81 -0
  54. package/core-assets/hooks/boundary-direction-check.sh +10 -0
  55. package/core-assets/hooks/control-character-grep.sh +10 -0
  56. package/core-assets/hooks/fowler-refactors.txt +71 -0
  57. package/core-assets/hooks/large-cl-grep.sh +9 -0
  58. package/core-assets/hooks/llm-cost-precommit.sh +55 -0
  59. package/core-assets/hooks/migration-lint.sh +58 -0
  60. package/core-assets/hooks/migration-pr-template.sh +55 -0
  61. package/core-assets/hooks/no-ai-design-slop.sh +10 -0
  62. package/core-assets/hooks/no-any-grep.sh +10 -0
  63. package/core-assets/hooks/no-as-cast-grep.sh +10 -0
  64. package/core-assets/hooks/no-console-log-grep.sh +10 -0
  65. package/core-assets/hooks/no-null-grep.sh +10 -0
  66. package/core-assets/hooks/no-only-no-skip.sh +10 -0
  67. package/core-assets/hooks/outcome-meter.sh +13 -0
  68. package/core-assets/hooks/pre-PR-review-evidence.sh +47 -0
  69. package/core-assets/hooks/protect-sensitive-files.sh +10 -0
  70. package/core-assets/hooks/refactor-named-grep.sh +49 -0
  71. package/core-assets/hooks/secret-in-content.sh +10 -0
  72. package/core-assets/hooks/sessionstart-context.sh +9 -0
  73. package/core-assets/hooks/stop-typecheck.sh +9 -0
  74. package/core-assets/hooks/tdd-guard.md +90 -0
  75. package/core-assets/hooks/tdd-guard.sh +10 -0
  76. package/core-assets/hooks/test-name-lint.sh +10 -0
  77. package/core-assets/hooks/tidying-commit-prefix.sh +37 -0
  78. package/core-assets/hooks/trim-large-output.sh +9 -0
  79. package/core-assets/hooks/tsc-noemit-precommit.sh +22 -0
  80. package/core-assets/hooks/ubiquitous-language-lint.sh +58 -0
  81. package/core-assets/hooks/viewport-screenshot-gate.sh +48 -0
  82. package/core-assets/modules/.gitkeep +0 -0
  83. package/core-assets/packs/pack-mobile/skills/void-eas-build-profile/.source +7 -0
  84. package/core-assets/packs/pack-mobile/skills/void-eas-build-profile/SKILL.md +164 -0
  85. package/core-assets/packs/pack-mobile/skills/void-eas-build-profile/harness.yaml +14 -0
  86. package/core-assets/packs/pack-mobile/skills/void-expo-config-plugins/.source +7 -0
  87. package/core-assets/packs/pack-mobile/skills/void-expo-config-plugins/SKILL.md +178 -0
  88. package/core-assets/packs/pack-mobile/skills/void-expo-config-plugins/harness.yaml +14 -0
  89. package/core-assets/packs/pack-mobile/skills/void-expo-router-pattern/.source +8 -0
  90. package/core-assets/packs/pack-mobile/skills/void-expo-router-pattern/SKILL.md +209 -0
  91. package/core-assets/packs/pack-mobile/skills/void-expo-router-pattern/harness.yaml +14 -0
  92. package/core-assets/packs/pack-mobile/skills/void-ota-update-strategy/.source +7 -0
  93. package/core-assets/packs/pack-mobile/skills/void-ota-update-strategy/SKILL.md +194 -0
  94. package/core-assets/packs/pack-mobile/skills/void-ota-update-strategy/harness.yaml +14 -0
  95. package/core-assets/packs/pack-monorepo/skills/void-dependency-direction/.source +5 -0
  96. package/core-assets/packs/pack-monorepo/skills/void-dependency-direction/SKILL.md +160 -0
  97. package/core-assets/packs/pack-monorepo/skills/void-dependency-direction/harness.yaml +14 -0
  98. package/core-assets/packs/pack-monorepo/skills/void-package-extraction/.source +5 -0
  99. package/core-assets/packs/pack-monorepo/skills/void-package-extraction/SKILL.md +70 -0
  100. package/core-assets/packs/pack-monorepo/skills/void-package-extraction/harness.yaml +14 -0
  101. package/core-assets/packs/pack-monorepo/skills/void-service-package/.source +5 -0
  102. package/core-assets/packs/pack-monorepo/skills/void-service-package/SKILL.md +122 -0
  103. package/core-assets/packs/pack-monorepo/skills/void-service-package/harness.yaml +14 -0
  104. package/core-assets/packs/pack-monorepo/skills/void-turbo-pipeline-tuning/.source +7 -0
  105. package/core-assets/packs/pack-monorepo/skills/void-turbo-pipeline-tuning/SKILL.md +116 -0
  106. package/core-assets/packs/pack-monorepo/skills/void-turbo-pipeline-tuning/harness.yaml +14 -0
  107. package/core-assets/packs/pack-nextjs/skills/void-cache-component-pattern/.source +5 -0
  108. package/core-assets/packs/pack-nextjs/skills/void-cache-component-pattern/SKILL.md +162 -0
  109. package/core-assets/packs/pack-nextjs/skills/void-cache-component-pattern/harness.yaml +14 -0
  110. package/core-assets/packs/pack-nextjs/skills/void-instrumentation-setup/.source +5 -0
  111. package/core-assets/packs/pack-nextjs/skills/void-instrumentation-setup/SKILL.md +161 -0
  112. package/core-assets/packs/pack-nextjs/skills/void-instrumentation-setup/harness.yaml +14 -0
  113. package/core-assets/packs/pack-nextjs/skills/void-loading-error-boundaries/.source +5 -0
  114. package/core-assets/packs/pack-nextjs/skills/void-loading-error-boundaries/SKILL.md +176 -0
  115. package/core-assets/packs/pack-nextjs/skills/void-loading-error-boundaries/harness.yaml +14 -0
  116. package/core-assets/packs/pack-nextjs/skills/void-parallel-routes-slots/.source +5 -0
  117. package/core-assets/packs/pack-nextjs/skills/void-parallel-routes-slots/SKILL.md +129 -0
  118. package/core-assets/packs/pack-nextjs/skills/void-parallel-routes-slots/harness.yaml +14 -0
  119. package/core-assets/packs/pack-nextjs/skills/void-route-group-decision/.source +5 -0
  120. package/core-assets/packs/pack-nextjs/skills/void-route-group-decision/SKILL.md +107 -0
  121. package/core-assets/packs/pack-nextjs/skills/void-route-group-decision/harness.yaml +14 -0
  122. package/core-assets/packs/pack-pwa/skills/void-install-prompt-ux/.source +5 -0
  123. package/core-assets/packs/pack-pwa/skills/void-install-prompt-ux/SKILL.md +153 -0
  124. package/core-assets/packs/pack-pwa/skills/void-install-prompt-ux/harness.yaml +14 -0
  125. package/core-assets/packs/pack-pwa/skills/void-manifest-checklist/.source +5 -0
  126. package/core-assets/packs/pack-pwa/skills/void-manifest-checklist/SKILL.md +204 -0
  127. package/core-assets/packs/pack-pwa/skills/void-manifest-checklist/harness.yaml +14 -0
  128. package/core-assets/packs/pack-pwa/skills/void-offline-first-mutation/.source +8 -0
  129. package/core-assets/packs/pack-pwa/skills/void-offline-first-mutation/SKILL.md +266 -0
  130. package/core-assets/packs/pack-pwa/skills/void-offline-first-mutation/harness.yaml +14 -0
  131. package/core-assets/packs/pack-pwa/skills/void-service-worker-strategy/.source +5 -0
  132. package/core-assets/packs/pack-pwa/skills/void-service-worker-strategy/SKILL.md +178 -0
  133. package/core-assets/packs/pack-pwa/skills/void-service-worker-strategy/harness.yaml +14 -0
  134. package/core-assets/packs/pack-react/skills/void-accessibility-check/.source +8 -0
  135. package/core-assets/packs/pack-react/skills/void-accessibility-check/SKILL.md +136 -0
  136. package/core-assets/packs/pack-react/skills/void-accessibility-check/harness.yaml +14 -0
  137. package/core-assets/packs/pack-react/skills/void-client-vs-server-component/.source +5 -0
  138. package/core-assets/packs/pack-react/skills/void-client-vs-server-component/SKILL.md +116 -0
  139. package/core-assets/packs/pack-react/skills/void-client-vs-server-component/harness.yaml +14 -0
  140. package/core-assets/packs/pack-react/skills/void-form-pattern/.source +7 -0
  141. package/core-assets/packs/pack-react/skills/void-form-pattern/SKILL.md +157 -0
  142. package/core-assets/packs/pack-react/skills/void-form-pattern/harness.yaml +14 -0
  143. package/core-assets/packs/pack-react/skills/void-state-architecture/.source +5 -0
  144. package/core-assets/packs/pack-react/skills/void-state-architecture/SKILL.md +160 -0
  145. package/core-assets/packs/pack-react/skills/void-state-architecture/harness.yaml +14 -0
  146. package/core-assets/packs/pack-server/skills/void-background-job-pattern/.source +6 -0
  147. package/core-assets/packs/pack-server/skills/void-background-job-pattern/SKILL.md +214 -0
  148. package/core-assets/packs/pack-server/skills/void-background-job-pattern/harness.yaml +14 -0
  149. package/core-assets/packs/pack-server/skills/void-drizzle-migration-safe/.source +6 -0
  150. package/core-assets/packs/pack-server/skills/void-drizzle-migration-safe/SKILL.md +168 -0
  151. package/core-assets/packs/pack-server/skills/void-drizzle-migration-safe/harness.yaml +14 -0
  152. package/core-assets/packs/pack-server/skills/void-env-validation/.source +6 -0
  153. package/core-assets/packs/pack-server/skills/void-env-validation/SKILL.md +131 -0
  154. package/core-assets/packs/pack-server/skills/void-env-validation/harness.yaml +14 -0
  155. package/core-assets/packs/pack-server/skills/void-rate-limit-strategy/.source +6 -0
  156. package/core-assets/packs/pack-server/skills/void-rate-limit-strategy/SKILL.md +149 -0
  157. package/core-assets/packs/pack-server/skills/void-rate-limit-strategy/harness.yaml +14 -0
  158. package/core-assets/packs/pack-server/skills/void-server-action/.source +7 -0
  159. package/core-assets/packs/pack-server/skills/void-server-action/SKILL.md +181 -0
  160. package/core-assets/packs/pack-server/skills/void-server-action/harness.yaml +14 -0
  161. package/core-assets/packs/pack-server/skills/void-testing-server-modules/.source +7 -0
  162. package/core-assets/packs/pack-server/skills/void-testing-server-modules/SKILL.md +73 -0
  163. package/core-assets/packs/pack-server/skills/void-testing-server-modules/harness.yaml +14 -0
  164. package/core-assets/packs/pack-server/skills/void-webhook-handler-pattern/.source +7 -0
  165. package/core-assets/packs/pack-server/skills/void-webhook-handler-pattern/SKILL.md +205 -0
  166. package/core-assets/packs/pack-server/skills/void-webhook-handler-pattern/harness.yaml +14 -0
  167. package/core-assets/policies/core.yaml +95 -0
  168. package/core-assets/policies/ui.yaml +23 -0
  169. package/core-assets/profiles/base.yaml +29 -0
  170. package/core-assets/profiles/expo-config.yaml +36 -0
  171. package/core-assets/profiles/expo.yaml +35 -0
  172. package/core-assets/profiles/monorepo.yaml +33 -0
  173. package/core-assets/profiles/nextjs-config.yaml +31 -0
  174. package/core-assets/profiles/nextjs.yaml +31 -0
  175. package/core-assets/profiles/node-server.yaml +31 -0
  176. package/core-assets/profiles/pwa.yaml +33 -0
  177. package/core-assets/profiles/react.yaml +39 -0
  178. package/core-assets/profiles/sql.yaml +39 -0
  179. package/core-assets/profiles/typescript.yaml +39 -0
  180. package/core-assets/skills/.gitkeep +0 -0
  181. package/core-assets/skills/void-accessibility/.source +15 -0
  182. package/core-assets/skills/void-accessibility/SKILL.md +275 -0
  183. package/core-assets/skills/void-accessibility/harness.yaml +17 -0
  184. package/core-assets/skills/void-api-and-interface-design/.source +13 -0
  185. package/core-assets/skills/void-api-and-interface-design/SKILL.md +231 -0
  186. package/core-assets/skills/void-api-and-interface-design/harness.yaml +16 -0
  187. package/core-assets/skills/void-async-safety/.source +13 -0
  188. package/core-assets/skills/void-async-safety/SKILL.md +287 -0
  189. package/core-assets/skills/void-async-safety/harness.yaml +16 -0
  190. package/core-assets/skills/void-audit/.source +15 -0
  191. package/core-assets/skills/void-audit/SKILL.md +83 -0
  192. package/core-assets/skills/void-audit/harness.yaml +14 -0
  193. package/core-assets/skills/void-autopilot/.source +21 -0
  194. package/core-assets/skills/void-autopilot/SKILL.md +358 -0
  195. package/core-assets/skills/void-autopilot/harness.yaml +14 -0
  196. package/core-assets/skills/void-brainstorm/.source +14 -0
  197. package/core-assets/skills/void-brainstorm/SKILL.md +271 -0
  198. package/core-assets/skills/void-brainstorm/harness.yaml +14 -0
  199. package/core-assets/skills/void-checkpoint/.source +39 -0
  200. package/core-assets/skills/void-checkpoint/SKILL.md +227 -0
  201. package/core-assets/skills/void-checkpoint/harness.yaml +14 -0
  202. package/core-assets/skills/void-claude-md/.source +15 -0
  203. package/core-assets/skills/void-claude-md/SKILL.md +180 -0
  204. package/core-assets/skills/void-claude-md/harness.yaml +14 -0
  205. package/core-assets/skills/void-code-review/.source +14 -0
  206. package/core-assets/skills/void-code-review/SKILL.md +232 -0
  207. package/core-assets/skills/void-code-review/harness.yaml +15 -0
  208. package/core-assets/skills/void-commit-discipline/.source +9 -0
  209. package/core-assets/skills/void-commit-discipline/SKILL.md +211 -0
  210. package/core-assets/skills/void-commit-discipline/harness.yaml +15 -0
  211. package/core-assets/skills/void-context/.source +15 -0
  212. package/core-assets/skills/void-context/SKILL.md +167 -0
  213. package/core-assets/skills/void-context/harness.yaml +14 -0
  214. package/core-assets/skills/void-debug/.source +11 -0
  215. package/core-assets/skills/void-debug/SKILL.md +211 -0
  216. package/core-assets/skills/void-debug/harness.yaml +14 -0
  217. package/core-assets/skills/void-decide/.source +9 -0
  218. package/core-assets/skills/void-decide/SKILL.md +147 -0
  219. package/core-assets/skills/void-decide/harness.yaml +14 -0
  220. package/core-assets/skills/void-devex-audit/.source +8 -0
  221. package/core-assets/skills/void-devex-audit/SKILL.md +113 -0
  222. package/core-assets/skills/void-devex-audit/harness.yaml +15 -0
  223. package/core-assets/skills/void-doctor/.source +15 -0
  224. package/core-assets/skills/void-doctor/SKILL.md +83 -0
  225. package/core-assets/skills/void-doctor/harness.yaml +14 -0
  226. package/core-assets/skills/void-domain-driven-design/.source +13 -0
  227. package/core-assets/skills/void-domain-driven-design/SKILL.md +292 -0
  228. package/core-assets/skills/void-domain-driven-design/harness.yaml +15 -0
  229. package/core-assets/skills/void-frontend-design/.source +19 -0
  230. package/core-assets/skills/void-frontend-design/SKILL.md +274 -0
  231. package/core-assets/skills/void-frontend-design/harness.yaml +17 -0
  232. package/core-assets/skills/void-functional/.source +14 -0
  233. package/core-assets/skills/void-functional/SKILL.md +312 -0
  234. package/core-assets/skills/void-functional/harness.yaml +15 -0
  235. package/core-assets/skills/void-graph/.source +15 -0
  236. package/core-assets/skills/void-graph/SKILL.md +80 -0
  237. package/core-assets/skills/void-graph/harness.yaml +14 -0
  238. package/core-assets/skills/void-hexagonal-architecture/.source +12 -0
  239. package/core-assets/skills/void-hexagonal-architecture/SKILL.md +276 -0
  240. package/core-assets/skills/void-hexagonal-architecture/harness.yaml +15 -0
  241. package/core-assets/skills/void-implement/.source +39 -0
  242. package/core-assets/skills/void-implement/SKILL.md +183 -0
  243. package/core-assets/skills/void-implement/harness.yaml +14 -0
  244. package/core-assets/skills/void-learn/.source +13 -0
  245. package/core-assets/skills/void-learn/SKILL.md +226 -0
  246. package/core-assets/skills/void-learn/harness.yaml +14 -0
  247. package/core-assets/skills/void-llm-cost-discipline/.source +13 -0
  248. package/core-assets/skills/void-llm-cost-discipline/SKILL.md +299 -0
  249. package/core-assets/skills/void-llm-cost-discipline/harness.yaml +15 -0
  250. package/core-assets/skills/void-make-pdf/.source +9 -0
  251. package/core-assets/skills/void-make-pdf/SKILL.md +52 -0
  252. package/core-assets/skills/void-make-pdf/harness.yaml +15 -0
  253. package/core-assets/skills/void-merge/.source +8 -0
  254. package/core-assets/skills/void-merge/SKILL.md +111 -0
  255. package/core-assets/skills/void-merge/harness.yaml +14 -0
  256. package/core-assets/skills/void-migrations/.source +13 -0
  257. package/core-assets/skills/void-migrations/SKILL.md +264 -0
  258. package/core-assets/skills/void-migrations/harness.yaml +17 -0
  259. package/core-assets/skills/void-observability/.source +12 -0
  260. package/core-assets/skills/void-observability/SKILL.md +245 -0
  261. package/core-assets/skills/void-observability/harness.yaml +15 -0
  262. package/core-assets/skills/void-plan/.source +15 -0
  263. package/core-assets/skills/void-plan/SKILL.md +239 -0
  264. package/core-assets/skills/void-plan/harness.yaml +14 -0
  265. package/core-assets/skills/void-plan-review/.source +12 -0
  266. package/core-assets/skills/void-plan-review/SKILL.md +128 -0
  267. package/core-assets/skills/void-plan-review/harness.yaml +15 -0
  268. package/core-assets/skills/void-qa/.source +15 -0
  269. package/core-assets/skills/void-qa/SKILL.md +103 -0
  270. package/core-assets/skills/void-qa/harness.yaml +15 -0
  271. package/core-assets/skills/void-refactor/.source +9 -0
  272. package/core-assets/skills/void-refactor/SKILL.md +220 -0
  273. package/core-assets/skills/void-refactor/harness.yaml +15 -0
  274. package/core-assets/skills/void-retrospective/.source +9 -0
  275. package/core-assets/skills/void-retrospective/SKILL.md +71 -0
  276. package/core-assets/skills/void-retrospective/harness.yaml +15 -0
  277. package/core-assets/skills/void-security-audit/.source +12 -0
  278. package/core-assets/skills/void-security-audit/SKILL.md +138 -0
  279. package/core-assets/skills/void-security-audit/harness.yaml +15 -0
  280. package/core-assets/skills/void-security-guidance/.source +12 -0
  281. package/core-assets/skills/void-security-guidance/SKILL.md +255 -0
  282. package/core-assets/skills/void-security-guidance/harness.yaml +15 -0
  283. package/core-assets/skills/void-source-driven-development/.source +12 -0
  284. package/core-assets/skills/void-source-driven-development/SKILL.md +158 -0
  285. package/core-assets/skills/void-source-driven-development/harness.yaml +15 -0
  286. package/core-assets/skills/void-tdd/.source +15 -0
  287. package/core-assets/skills/void-tdd/SKILL.md +394 -0
  288. package/core-assets/skills/void-tdd/harness.yaml +15 -0
  289. package/core-assets/skills/void-testing/.source +19 -0
  290. package/core-assets/skills/void-testing/SKILL.md +301 -0
  291. package/core-assets/skills/void-testing/harness.yaml +17 -0
  292. package/core-assets/skills/void-ticket/.source +18 -0
  293. package/core-assets/skills/void-ticket/SKILL.md +239 -0
  294. package/core-assets/skills/void-ticket/harness.yaml +14 -0
  295. package/core-assets/skills/void-typescript-strict/.source +10 -0
  296. package/core-assets/skills/void-typescript-strict/SKILL.md +294 -0
  297. package/core-assets/skills/void-typescript-strict/harness.yaml +17 -0
  298. package/core-assets/skills/void-ui-review/.source +12 -0
  299. package/core-assets/skills/void-ui-review/SKILL.md +97 -0
  300. package/core-assets/skills/void-ui-review/harness.yaml +15 -0
  301. package/core-assets/skills/void-verify/.source +12 -0
  302. package/core-assets/skills/void-verify/SKILL.md +184 -0
  303. package/core-assets/skills/void-verify/harness.yaml +15 -0
  304. package/core-assets/specialists/accessibility-specialist.source +11 -0
  305. package/core-assets/specialists/accessibility-specialist.yaml +30 -0
  306. package/core-assets/specialists/api-integration-engineer.source +11 -0
  307. package/core-assets/specialists/api-integration-engineer.yaml +30 -0
  308. package/core-assets/specialists/data-migration-engineer.source +11 -0
  309. package/core-assets/specialists/data-migration-engineer.yaml +30 -0
  310. package/core-assets/specialists/devex-docs-engineer.source +11 -0
  311. package/core-assets/specialists/devex-docs-engineer.yaml +29 -0
  312. package/core-assets/specialists/domain-architect.source +11 -0
  313. package/core-assets/specialists/domain-architect.yaml +28 -0
  314. package/core-assets/specialists/experience-designer.source +15 -0
  315. package/core-assets/specialists/experience-designer.yaml +38 -0
  316. package/core-assets/specialists/frontend-engineer.source +11 -0
  317. package/core-assets/specialists/frontend-engineer.yaml +32 -0
  318. package/core-assets/specialists/independent-code-reviewer.source +10 -0
  319. package/core-assets/specialists/independent-code-reviewer.yaml +37 -0
  320. package/core-assets/specialists/migrations.json +15 -0
  321. package/core-assets/specialists/observability-sre-engineer.source +11 -0
  322. package/core-assets/specialists/observability-sre-engineer.yaml +30 -0
  323. package/core-assets/specialists/pdf-specialist.source +11 -0
  324. package/core-assets/specialists/pdf-specialist.yaml +29 -0
  325. package/core-assets/specialists/performance-engineer.source +11 -0
  326. package/core-assets/specialists/performance-engineer.yaml +29 -0
  327. package/core-assets/specialists/product-challenger.source +10 -0
  328. package/core-assets/specialists/product-challenger.yaml +27 -0
  329. package/core-assets/specialists/security-engineer.source +13 -0
  330. package/core-assets/specialists/security-engineer.yaml +41 -0
  331. package/core-assets/specialists/solution-architect.source +13 -0
  332. package/core-assets/specialists/solution-architect.yaml +32 -0
  333. package/core-assets/specialists/test-qa-engineer.source +14 -0
  334. package/core-assets/specialists/test-qa-engineer.yaml +35 -0
  335. package/core-assets/specialists/visual-craft-director.source +17 -0
  336. package/core-assets/specialists/visual-craft-director.yaml +60 -0
  337. package/core-assets/templates/github/dependency-audit.mjs +54 -0
  338. package/core-assets/templates/github/void-dependency-audit.yml +35 -0
  339. package/core-assets/templates/github/void-security.yml +85 -0
  340. package/dist/main.js +57001 -0
  341. package/package.json +66 -4
@@ -0,0 +1,394 @@
1
+ ---
2
+ name: void-tdd
3
+ description: TDD in three modes (strict/souple/exploratory) chosen by path. Iron Law in strict (no prod code without a failing test), mutation gate if tooled, anti-rustine. Use for any feature, bugfix, refactor.
4
+ ---
5
+
6
+ # tdd — voidcorp craftsman edition
7
+
8
+ Curated aggregate of the best TDD practices for the TypeScript/web stack 2026. Ported from the DECLIK `void-tdd` skill (377 LOC, already top-5%), adapted to be stack-agnostic via `.void/config.json`.
9
+
10
+ **Attribution**: see `.source` in this directory. Primary sources: DECLIK port (which itself distills superpowers/test-driven-development + citypaul/tdd + nizos/tdd-guard). This skill **does not reinvent**; it composes at the right level for void-machine consumers.
11
+
12
+ The companion hook `tdd-guard` (see `../../hooks/tdd-guard.sh`) materializes the structural floor at the Edit/Write level: a sibling test file or an explicitly declared E2E test file MUST exist before governed production code is edited. It does not run the suite, so the failing-first (RED) step stays the engineer's discipline.
13
+
14
+ For E2E coverage, put `// tdd-cover: e2e tests/e2e/route.spec.ts` on the production
15
+ file's first line. The literal project-relative path must name an existing regular
16
+ `.test`/`.spec` JS/TS file inside the physical project root. One valid declaration
17
+ satisfies the structural floor; malformed, misplaced or conflicting declarations
18
+ refuse. It does not prove the route is covered or the suite passed. Keep real
19
+ test evidence, and never use exploratory mode to mean "tested elsewhere".
20
+
21
+ ---
22
+
23
+ ## Modes
24
+
25
+ Three postures, chosen by context. If unsure of the mode, ask explicitly before coding.
26
+
27
+ | Mode | When | Posture |
28
+ |---|---|---|
29
+ | **strict** | New behavior on production code, hotfix on paying surface, refactor that changes observable behavior, DB integration that affects business invariants | Iron Law (zero line of production code without a failing test that requested it) + mutation testing when the project has a mutation runner + 100% coverage + commit/PR evidence trail |
30
+ | **souple** | Integration glue tested at a higher level (E2E + handler covers the chain), framework wiring, config | RED-GREEN-REFACTOR without mutation gate, ≥ 80% coverage on business code, no commit-by-phase ritual |
31
+ | **exploratory** | Documented spike, throwaway POC, scripts marked as such, draft work | No TDD obligation. The file MUST declare throwaway status + deletion date in a header comment. If the code survives the spike, it transitions to strict before merging to prod. |
32
+
33
+ ### Auto-detection heuristic
34
+
35
+ If no explicit `Mode:` marker is in the task or a file header comment, apply:
36
+
37
+ - Path matches `<config.paths.business>` and not in `<config.paths.spikes>` nor in `docs/` → **strict**
38
+ - Path matches `<config.paths.spikes>`, draft folder, or scaffolds → **exploratory**
39
+ - Path matches `<config.paths.serverActions>` (boundary HTTP / Server Action) AND the pure logic is in `services/` with strict tests → **souple** on the handler, **strict** on the service
40
+ - Otherwise → **souple** + ask confirmation if in doubt
41
+
42
+ Paths come from `voidcorp.config.json`. Defaults are documented in `packages/core/claude/skills/void-tdd/defaults.md`.
43
+
44
+ ### Override
45
+
46
+ The user can impose a mode via:
47
+
48
+ - Prompt marker: "implement X in strict mode" / "spike in exploratory mode"
49
+ - File header comment: `// tdd-mode: strict`
50
+ - Repo-wide: `.void/config.json` → `{ "modes": { "tdd": "strict" } }`
51
+
52
+ ---
53
+
54
+ ## Iron Law (strict only)
55
+
56
+ ```
57
+ ZERO LINE OF PRODUCTION CODE WITHOUT A FAILING TEST THAT REQUESTED IT.
58
+ ```
59
+
60
+ **No exception without explicit permission.** Keep the spirit AND the letter — violating one violates both.
61
+
62
+ ### If you wrote code before the test (strict)
63
+
64
+ - You **delete** it. Delete means delete.
65
+ - Do not keep anything "as reference"
66
+ - Do not "adapt" existing code while writing the tests
67
+ - Do not look at the deleted code while re-implementing
68
+ - Implement fresh from the tests
69
+
70
+ Sunk-cost fallacy: the time is already lost. Keeping unverified code is technical debt, not an asset.
71
+
72
+ ---
73
+
74
+ ## Cycle
75
+
76
+ ### Strict mode
77
+
78
+ ```
79
+ RED → Verify RED → GREEN → Verify GREEN → [MUTATE → KILL MUTANTS] → REFACTOR
80
+ ```
81
+
82
+ The bracketed steps run only when the project has a mutation runner (see MUTATE below).
83
+
84
+ ### Souple mode
85
+
86
+ ```
87
+ RED → GREEN → REFACTOR (if it has value)
88
+ ```
89
+
90
+ ### Exploratory mode
91
+
92
+ ```
93
+ Code → [does the demo prove the idea?] → either transition to strict before merge, or delete.
94
+ ```
95
+
96
+ ### RED — write the failing test
97
+
98
+ One thing tested, a name that states the behavior, real code — assert on the observable
99
+ outcome, never on a mock's call count (that tests the mock, not the behavior). Mocks live
100
+ only at infrastructure boundaries. The full technique (how to express the test, factories,
101
+ mocking policy) is the `void-testing` skill's job; TDD owns only *when* and *that* it fails first.
102
+
103
+ Before finalizing the test, scan the mutator rules (boundaries, boolean combinations, equality, arithmetic identities, array/string ops, optional chaining, side effects). This scan needs no tooling and no runner: it is how you write a test that a mutant could not survive, whether or not the project can actually run one.
104
+
105
+ ### Verify RED — watch it fail
106
+
107
+ **Strict: mandatory. Never skip.**
108
+
109
+ ```bash
110
+ <config.commands.testUnit> path/to/file.test.ts
111
+ ```
112
+
113
+ Confirm:
114
+
115
+ - Test fails (not a syntax error)
116
+ - The failure message matches what you expect
117
+ - Fails because the feature is missing, not because of a typo
118
+
119
+ ### GREEN — minimal code
120
+
121
+ ```typescript
122
+ async function retryOperation<T>(fn: () => Promise<T>): Promise<T> {
123
+ for (let i = 0; i < 3; i++) {
124
+ try { return await fn(); }
125
+ catch (e) { if (i === 2) throw e; }
126
+ }
127
+ throw new Error('unreachable');
128
+ }
129
+ ```
130
+
131
+ **No more.** No speculative configuration options. No refactor during GREEN.
132
+
133
+ ### Verify GREEN
134
+
135
+ ```bash
136
+ <config.commands.testUnit> path/to/file.test.ts
137
+ ```
138
+
139
+ Confirm:
140
+
141
+ - Test passes
142
+ - Other tests still pass
143
+ - Pristine output (no warnings, no errors)
144
+
145
+ ### MUTATE (strict, only when a mutation runner is present)
146
+
147
+ The harness ships no mutation runner and installs none. `init` detects Stryker in the project's
148
+ dependencies and writes `commands.mutation` into `.void/config.json` only on that signal, so the
149
+ presence of that key *is* the capability check.
150
+
151
+ - Key present → run `<config.commands.mutation> --mutate <path>`, produce a killed/survived/score
152
+ report, and treat the gate as mandatory in strict.
153
+ - Key absent → the gate does not apply. Never invent a `stryker` command and never block the cycle
154
+ on it; the mutator scan at RED carries the intent instead. Adopting a runner is a project
155
+ decision, not something this skill performs.
156
+
157
+ ### KILL MUTANTS (strict, when MUTATE ran)
158
+
159
+ For each survivor:
160
+
161
+ - If the case value is clear → add a test
162
+ - If ambiguous (business judgment) → ask the user via AskUserQuestion before patching
163
+
164
+ All tests must pass after fix.
165
+
166
+ ### REFACTOR
167
+
168
+ After GREEN (and after MUTATE/KILL in strict), assess the improvements.
169
+
170
+ | Priority | Action | Examples |
171
+ |---|---|---|
172
+ | Critical | Now | Knowledge duplication, > 3 nesting levels, critical surviving mutations |
173
+ | High | This session | Magic numbers, unclear names, functions > 30 lines |
174
+ | Nice | Later | Minor renames, single-use helpers |
175
+ | Skip | Do not touch | Already clean code |
176
+
177
+ Tests must stay green at every step.
178
+
179
+ Load the `void-refactor` skill for the detailed methodology (RED-GREEN-REFACTOR strict commit boundaries).
180
+
181
+ ---
182
+
183
+ ## Stack glue
184
+
185
+ ### Commands (read from `voidcorp.config.json`)
186
+
187
+ - Unit: `<config.commands.testUnit>` (e.g. `bunx vitest run`, `pnpm vitest`, `npm test`)
188
+ - E2E: `<config.commands.testE2e>` (e.g. `bunx playwright test`)
189
+ - Mutation: `<config.commands.mutation>` (e.g. `bunx stryker run`) — absent when no mutation runner is detected
190
+ - Watch: `<config.commands.testWatch>` (e.g. `bunx vitest --watch`)
191
+
192
+ ### Conventions
193
+
194
+ - Test files: `Name.test.ts` co-located with the source file
195
+ - Real-I/O integration tests: `Name.integration.test.ts`
196
+ - E2E Playwright: `<config.paths.e2e>` (e.g. `apps/*/tests/e2e/*.spec.ts`)
197
+
198
+ See the `void-testing` skill for the full technique catalog (factories over `beforeEach`, fixture externalization, behavior-first naming, snapshot policy).
199
+
200
+ ### Schema contracts at trust boundaries
201
+
202
+ If you touch a schema in `<config.paths.contracts>` (Zod schemas at trust boundaries):
203
+
204
+ 1. RED: add a `parse()` case that should fail (invalid data) or succeed (valid data)
205
+ 2. GREEN: modify the schema
206
+ 3. Verify: every downstream call site that consumes this type must compile AND pass its tests
207
+
208
+ The contract is the **single source of truth**, never redefined in tests.
209
+
210
+ ### Frontend behavior (strict)
211
+
212
+ For a UI change, RED lives at the smallest observable surface: component, hook, store, accessibility
213
+ contract, or rendered state. Cover every applicable loading/empty/error/success/partial state named
214
+ by the pre-build experience brief. An interactive control needs a role-first keyboard regression
215
+ test before any E2E proof; E2E may confirm the journey but cannot be the first place a keyboard bug
216
+ is caught. Record passing test evidence against the current diff hash so a later UI edit invalidates
217
+ the proof instead of inheriting green.
218
+
219
+ ### Anti-pattern detected too often
220
+
221
+ Mocking the DB or Server Actions to make a test pass: it breaks at the next refactor without
222
+ protecting anything. Prefer integration tests (pglite / dev DB branch) or invoking the action
223
+ directly. Full anti-mock-business rationale: the `void-testing` skill.
224
+
225
+ ---
226
+
227
+ ## Coverage (strict)
228
+
229
+ 100% by default on the business layer (services + domain). Verification before PR approval:
230
+
231
+ ```bash
232
+ <config.commands.testUnit> --coverage
233
+ ```
234
+
235
+ Target reading:
236
+
237
+ ```
238
+ All files | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
239
+ ----------|---------|----------|---------|---------|---
240
+ All files | 100 | 100 | 100 | 100 |
241
+ ```
242
+
243
+ ### Exception
244
+
245
+ If 100% is impossible (e.g. a Sentry wrapper whose init branch is not testable without an HTTP cassette):
246
+
247
+ 1. Document in the package README: why + where the missing coverage is compensated (integration/E2E)
248
+ 2. Explicit Folpe approval
249
+ 3. List in repo CLAUDE.md under "Test coverage exceptions"
250
+
251
+ Burden of proof on the requester. 100% remains the default.
252
+
253
+ ---
254
+
255
+ ## TDD Evidence (strict)
256
+
257
+ The commit history must show the RED → GREEN → [MUTATE → KILL] → REFACTOR progression.
258
+
259
+ ```
260
+ abc123 test: add failing test for retryOperation backoff
261
+ def456 feat: implement retryOperation exponential backoff
262
+ ghi789 test: strengthen boundary tests post-mutation (kills 3 survivors)
263
+ jkl012 refactor: extract backoff helper for clarity
264
+ ```
265
+
266
+ ### Documented exceptions
267
+
268
+ If evidence is not linear (multi-session, grouped refactor, context resume), document in the PR:
269
+
270
+ ```markdown
271
+ ## TDD Evidence
272
+
273
+ RED phase: commit c925187
274
+ GREEN phase: commits 5e0055b, 9a246d0
275
+ MUTATE + KILL: commit 7b8c9d0
276
+ REFACTOR: commit 11dbd1a
277
+
278
+ Test Evidence:
279
+ - 4/4 tests passing (vitest run, 7.7s)
280
+ - Mutation score: 94% (3/52 documented survivors)
281
+ ```
282
+
283
+ Exception on the evidence presentation, **never on the process**.
284
+
285
+ ---
286
+
287
+ ## Anti-rustine integrated
288
+
289
+ If you are tempted to:
290
+
291
+ - Skip TDD "just this once"
292
+ - Mock everything to "make the test pass"
293
+ - Cast `as any` to avoid real modeling
294
+ - Add a test after the fact that passes immediately
295
+
296
+ → Stop signal. Redesign the approach. Source: project-level "no rustine" rule.
297
+
298
+ A test that is hard to write = a design that is hard to use. The test is the API oracle.
299
+
300
+ ---
301
+
302
+ ## Red Flags (strict)
303
+
304
+ Source: superpowers/test-driven-development. Keep the full list — this is the anti-drift psychology.
305
+
306
+ - Code written before the test
307
+ - Test written after the implementation
308
+ - Test that passes immediately
309
+ - Cannot explain why the test failed
310
+ - Tests added "later"
311
+ - Rationalization "just this once"
312
+ - "I already tested it manually"
313
+ - "Tests after reach the same goal"
314
+ - "It is the spirit, not the ritual"
315
+ - "Keep as reference" / "adapt the existing code"
316
+ - "I already spent X hours, deleting is a waste"
317
+ - "TDD is dogmatic, I am pragmatic"
318
+ - "This case is different because..."
319
+
320
+ → **All these phrases mean: delete, start over in strict.**
321
+
322
+ ---
323
+
324
+ ## Common Rationalizations
325
+
326
+ | Excuse | Reality |
327
+ |---|---|
328
+ | "Too simple to test" | Simple code breaks. The test takes 30 seconds. |
329
+ | "I test afterward" | Tests that pass immediately prove nothing. |
330
+ | "Tests after reach the same goal" | After-tests answer "what does this code do." Before-tests answer "what should this code do." |
331
+ | "I tested it manually" | Manual ≠ systematic. No trace, not re-executable. |
332
+ | "X hours of work to delete = waste" | Sunk-cost fallacy. Keeping unverified code is debt. |
333
+ | "Keep as reference, write tests first" | You will adapt it. That is testing-after. Delete = delete. |
334
+ | "Need to explore first" | OK. Throw away the exploration, restart in strict. |
335
+ | "Hard to test = design not clear" | Listen to the test. Hard to test = hard to use. |
336
+ | "TDD will slow me down" | TDD is faster than debugging in prod. Pragmatic = test-first. |
337
+ | "Manual is faster" | Manual does not prove edge cases. You will re-test on every change. |
338
+
339
+ ---
340
+
341
+ ## Verification checklist
342
+
343
+ Before marking the work complete:
344
+
345
+ - [ ] TDD mode identified at start (strict / souple / exploratory)
346
+ - [ ] Every line of production code has a test that requested it (strict)
347
+ - [ ] Watched every test fail before impl (strict)
348
+ - [ ] Every test fails for the right reason (feature missing, not typo)
349
+ - [ ] Minimal code to pass each test
350
+ - [ ] All tests pass
351
+ - [ ] Pristine output (no warnings, no errors)
352
+ - [ ] Tests use real code (mocks only where unavoidable)
353
+ - [ ] Edge cases and errors covered
354
+ - [ ] Mutation testing run + survivors handled (strict, when `commands.mutation` exists)
355
+ - [ ] Coverage verified 100% or exception documented (strict)
356
+ - [ ] Commit history shows TDD evidence or documented exception (strict)
357
+ - [ ] Refactor evaluated and applied where it has value (all Critical/High priorities addressed)
358
+
359
+ Cannot check every box in strict? You skipped TDD. Restart.
360
+
361
+ ---
362
+
363
+ ## When you are stuck
364
+
365
+ | Problem | Solution |
366
+ |---|---|
367
+ | Do not know how to test | Write the desired signature. Write the assertion first. Ask the user. |
368
+ | Test too complex | Design too complex. Simplify the API. |
369
+ | Must mock everything | Code too coupled. Use parameter injection (see `void-hexagonal-architecture` skill). |
370
+ | Huge test setup | Extract helpers. Still complex? Rethink the design. |
371
+ | Mode not obvious | Ask the user. Default to souple > strict when in doubt. |
372
+
373
+ ---
374
+
375
+ ## Debugging integration
376
+
377
+ Bug found? **Write a failing test that reproduces it before any fix.** Follow the TDD cycle of the applicable mode. The test proves the fix and prevents the regression.
378
+
379
+ Never fix a bug without a reproducing test.
380
+
381
+ See the `void-debug` skill for the upstream root-cause discipline.
382
+
383
+ ---
384
+
385
+ ## Final rule
386
+
387
+ ```
388
+ Production code → a test exists and failed first (strict)
389
+ → a test exists (souple)
390
+ → the code is marked as throwaway (exploratory)
391
+ Otherwise → this is not voidcorp tdd.
392
+ ```
393
+
394
+ No exception without explicit permission from the human partner.
@@ -0,0 +1,15 @@
1
+ # Harness metadata for this skill. Not part of the Agent Skills
2
+ # specification, and never copied into a consumer project: the SKILL.md
3
+ # beside it stays portable and validates against the official six fields.
4
+ # Read by this repository's graph, and by the installer for `runtimes`.
5
+ kind: standard
6
+ activation: always
7
+ owner: folpe
8
+ runtimes: [claude, codex]
9
+ enforcement:
10
+ floor: ci
11
+ inline:
12
+ claude: pretooluse
13
+ codex: pretooluse
14
+ hermes: ci-only
15
+ eval_targets: [claude/anthropic/opus]
@@ -0,0 +1,19 @@
1
+ Sources for `void-testing` skill (see `docs/plans/skill-audits/void-testing.md` for full audit):
2
+
3
+ - Kent C. Dodds "Common Testing Mistakes" + Testing Library philosophy — https://kentcdodds.com/blog/common-mistakes-with-react-testing-library
4
+ - James Shore "Testing Without Mocks" (Art of Agile Development 2nd ed.) — https://www.jamesshore.com/v2/books/aoad2/testing_without_mocks — sociable tests, nullable infrastructure
5
+ - Martin Fowler "Mocks Aren't Stubs" — https://martinfowler.com/articles/mocksArentStubs.html — terminology baseline (dummy / stub / spy / mock / fake)
6
+ - citypaul/.dotfiles testing notes — pyramid ratios, fixture externalization
7
+ - superpowers test patterns — verify-test-fails-for-right-reason, pristine output
8
+ - Vitest docs — https://vitest.dev — tactical specifics in pack-monorepo
9
+ - Playwright docs — https://playwright.dev — tactical specifics in pack-nextjs-pwa
10
+ - Next.js CLI — https://nextjs.org/docs/app/api-reference/cli/next — build and serve the deployment-equivalent artifact
11
+ - Playwright fixtures, parallelism and auth — https://playwright.dev/docs/test-fixtures, https://playwright.dev/docs/test-parallel, https://playwright.dev/docs/auth — isolated worker state and authentication setup
12
+ - Better Auth rate limits — https://better-auth.com/docs/concepts/rate-limit — preserve production defaults and prove client-facing denial
13
+ - MSW (Mock Service Worker) — https://mswjs.io — HTTP boundary mocking
14
+ - pglite — https://pglite.dev — in-memory Postgres for fast integration tests
15
+
16
+ Strategy: distill. Author from sources; framework specifics live in packs. Hooks: no-only-no-skip, test-name-lint, no-business-mock, no-snapshot-default.
17
+
18
+ DEV-444 adaptation: Testing Library's role-first principle is extended to keyboard input and explicit
19
+ applicable-state coverage without moving TDD cycle ownership into this skill.