codymaster 7.0.1 → 7.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/README.md +117 -2
  3. package/dist/agent/codex.js +73 -21
  4. package/dist/agent-dispatch.js +63 -48
  5. package/dist/cli/commands/brain.js +18 -0
  6. package/dist/cli/commands/design-studio.js +1 -1
  7. package/dist/cm-suggest.js +3 -3
  8. package/dist/dashboard-project-summary.js +9 -0
  9. package/dist/dashboard.js +11 -5
  10. package/dist/execution-analyzer.js +9 -1
  11. package/dist/judge.js +16 -15
  12. package/dist/mcp-context-server.js +45 -23
  13. package/dist/mcp-skills-tools.js +2 -2
  14. package/dist/skill-chain.js +26 -3
  15. package/dist/skill-token-report.js +105 -0
  16. package/dist/sprint-pipeline.js +3 -3
  17. package/dist/ui/onboarding.js +3 -4
  18. package/dist/utils/design-taste.js +1 -1
  19. package/dist/utils/output-compress.js +8 -0
  20. package/package.json +3 -2
  21. package/public/dashboard/app.js +40 -13
  22. package/public/dashboard/index.html +190 -5
  23. package/public/dashboard/style.css +1 -1
  24. package/scripts/build-skills.mjs +36 -2
  25. package/scripts/mcp-bridge.js +41 -24
  26. package/scripts/pack-plugin.mjs +206 -0
  27. package/skills/cm-ads-tracker/SKILL.md +401 -0
  28. package/skills/cm-ads-tracker/evals/evals.json +55 -0
  29. package/skills/cm-ads-tracker/references/gtm-architecture.md +321 -0
  30. package/skills/cm-ads-tracker/references/industry-events.md +294 -0
  31. package/skills/cm-ads-tracker/references/platforms-api.md +238 -0
  32. package/skills/cm-ads-tracker/templates/capi-payload.md +79 -0
  33. package/skills/cm-ads-tracker/templates/datalayer-push.js +104 -0
  34. package/skills/cm-ads-tracker/templates/gtm-variables.js +56 -0
  35. package/skills/cm-auto-publisher/SKILL.md +81 -0
  36. package/skills/cm-booking-calendar/SKILL.md +521 -0
  37. package/skills/cm-booking-calendar/references/industry-patterns.md +527 -0
  38. package/skills/cm-booking-calendar/templates/booking-form.css +626 -0
  39. package/skills/cm-booking-calendar/templates/booking-form.html +477 -0
  40. package/skills/cm-booking-calendar/templates/calendar-engine.js +419 -0
  41. package/skills/cm-booking-calendar/templates/calendar-export.js +395 -0
  42. package/skills/cm-booking-calendar/templates/reminder-config.js +629 -0
  43. package/skills/cm-brainstorm-idea/SKILL.md +5 -5
  44. package/skills/cm-code-review/SKILL.md +2 -2
  45. package/skills/cm-codeintell/SKILL.md +47 -580
  46. package/skills/cm-codeintell/references/integration-workflows.md +23 -0
  47. package/skills/cm-codeintell/references/layer-0-skeleton.md +54 -0
  48. package/skills/cm-codeintell/references/layer-1-codegraph.md +58 -0
  49. package/skills/cm-codeintell/references/layer-2-architecture.md +31 -0
  50. package/skills/cm-codeintell/references/layer-3-context-builder.md +32 -0
  51. package/skills/cm-content-factory/.content-factory-state.json +132 -0
  52. package/skills/cm-content-factory/.git 2/logs/refs/heads/main +1 -0
  53. package/skills/cm-content-factory/.git 2/logs/refs/remotes/origin/main +1 -0
  54. package/skills/cm-content-factory/.git 2/objects/02/fb0956734b5f8ba3f918b7defd04a89cfe0076 +0 -0
  55. package/skills/cm-content-factory/.git 2/objects/08/1e129d75dc6feac6c02037272e6bd1a04e3324 +0 -0
  56. package/skills/cm-content-factory/.git 2/objects/0c/5393416f3c5e01c9a655a802bff0dd52f76f0a +0 -0
  57. package/skills/cm-content-factory/.git 2/objects/10/0b9be46978a946a77188f68be725098a122001 +0 -0
  58. package/skills/cm-content-factory/.git 2/objects/10/cf041167fc9843610eb3d90259ef3396315fdc +0 -0
  59. package/skills/cm-content-factory/.git 2/objects/12/5e19538dd6e1338ffe74f6c4c165b00435bf48 +0 -0
  60. package/skills/cm-content-factory/.git 2/objects/16/a9b9d0088d5c1347628b45a2620b479d8ad57c +0 -0
  61. package/skills/cm-content-factory/.git 2/objects/17/8c2a9ef93c33ae4eec9d58e82321f9229843a1 +0 -0
  62. package/skills/cm-content-factory/.git 2/objects/25/397ae41d09104d763bdcac2695209d85cdea89 +0 -0
  63. package/skills/cm-content-factory/.git 2/objects/2f/a836b7947f2d458e1f639788bf4bb0983a3305 +0 -0
  64. package/skills/cm-content-factory/.git 2/objects/3a/baaaf0a1c0909c0828335791557125fba911e0 +0 -0
  65. package/skills/cm-content-factory/.git 2/objects/42/2924221b81f5ce3c4e4daac9a64a24f9b01f9a +0 -0
  66. package/skills/cm-content-factory/.git 2/objects/42/ec0ce707447dc11446a34c9995fb8533801731 +0 -0
  67. package/skills/cm-content-factory/.git 2/objects/46/e43ce92866d56ce74b1d750db307cfe6154a15 +0 -0
  68. package/skills/cm-content-factory/.git 2/objects/48/5e41b633c63f55b8277bcc59f44f67681f671a +0 -0
  69. package/skills/cm-content-factory/.git 2/objects/49/49c596a3a89fa240642acd95dd3258e261eb09 +0 -0
  70. package/skills/cm-content-factory/.git 2/objects/50/9d42d8412ef8eaf7f7e138476bac2e4d10ce60 +0 -0
  71. package/skills/cm-content-factory/.git 2/objects/55/0c8c389d981b463ef849aeb792d8be3ccb6ec8 +0 -0
  72. package/skills/cm-content-factory/.git 2/objects/5d/82d3b18410cdda3ace3677436f0cb599dbe2d2 +0 -0
  73. package/skills/cm-content-factory/.git 2/objects/60/0617c58e871a38b33bf29e282d132bb3c381ad +0 -0
  74. package/skills/cm-content-factory/.git 2/objects/6a/8369a99c687b7245c92ffaf0e0f0dab9014504 +0 -0
  75. package/skills/cm-content-factory/.git 2/objects/79/bea435d40ab531c1aaf6be0432c6a5b7aaed21 +0 -0
  76. package/skills/cm-content-factory/.git 2/objects/7e/5ebd79251c2f14e4aceb86c74b6b6daae6b500 +0 -0
  77. package/skills/cm-content-factory/.git 2/objects/81/98a822a60178d6d5023ddb3e222cddf048742e +0 -0
  78. package/skills/cm-content-factory/.git 2/objects/86/0a0e1943dfe53411d2e499a1f16f46a96ef758 +0 -0
  79. package/skills/cm-content-factory/.git 2/objects/86/971fb55fdc081fdbae52376f0f13e57a4e9b04 +0 -0
  80. package/skills/cm-content-factory/.git 2/objects/88/b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d +0 -0
  81. package/skills/cm-content-factory/.git 2/objects/90/8737edb6b7809e32cc01590b4e08ba42a9d40d +0 -0
  82. package/skills/cm-content-factory/.git 2/objects/93/d5a8a9a7d4fb7f11491cb596a6880528725118 +0 -0
  83. package/skills/cm-content-factory/.git 2/objects/98/46a2ab81d0c3b3eb00ef88fc56989aa7e9f316 +0 -0
  84. package/skills/cm-content-factory/.git 2/objects/9b/d8dd1e49cf274eaf9c555f3ab39dce7af5715e +0 -0
  85. package/skills/cm-content-factory/.git 2/objects/a1/13329fb0cec96ae78b222d33a24c3b5bc7fa1f +0 -0
  86. package/skills/cm-content-factory/.git 2/objects/a9/e6effe626e8a3aea3a8fc3364b492191c6e7d0 +0 -0
  87. package/skills/cm-content-factory/.git 2/objects/ad/6de7e48d9782cca9353d1ff0aa1aab7fe1df85 +0 -0
  88. package/skills/cm-content-factory/.git 2/objects/af/54ae316f771ff692e299ffcd8bf2f06b413b59 +0 -0
  89. package/skills/cm-content-factory/.git 2/objects/b0/4cb8b0b00dad633e731c1472161419e738d674 +0 -0
  90. package/skills/cm-content-factory/.git 2/objects/b3/094abb0b9ed46419b269e4a4e36a459690e3b0 +0 -0
  91. package/skills/cm-content-factory/.git 2/objects/b9/435c5d4baac2cfc5c83009ddd27b46b60db5f1 +0 -0
  92. package/skills/cm-content-factory/.git 2/objects/ba/5da17dbaec5ec2dcfdfd126aead518d1171d5c +0 -0
  93. package/skills/cm-content-factory/.git 2/objects/c0/bf58703aa258ba5dd63083bebaec8f223d844c +0 -0
  94. package/skills/cm-content-factory/.git 2/objects/c4/701a34edf1fc1bad58ccc57bd03f9426acb59a +0 -0
  95. package/skills/cm-content-factory/.git 2/objects/c7/5ccce9a4e5cc74d9b3174550cf6d993ca43638 +0 -0
  96. package/skills/cm-content-factory/.git 2/objects/c7/710d59b5a35b0f1f0a0399386643a0bd94c929 +0 -0
  97. package/skills/cm-content-factory/.git 2/objects/d1/fe58237112e953e5fec52da22cf38e08be3df9 +5 -0
  98. package/skills/cm-content-factory/.git 2/objects/d2/2bbe9fd2f74c95bc5583e803f5e435f1e2cd86 +0 -0
  99. package/skills/cm-content-factory/.git 2/objects/d7/e72852ea2bff74581dbf247d400120086229f4 +0 -0
  100. package/skills/cm-content-factory/.git 2/objects/d8/d4c3b5553e4fd72807e1d4b49ef07d9ef3ac35 +0 -0
  101. package/skills/cm-content-factory/.git 2/objects/dc/75050c2876f6a02ae2a53a3c886f395b622977 +0 -0
  102. package/skills/cm-content-factory/.git 2/objects/ee/e8546f95acec500187c08a28a8b9ee02db0dec +0 -0
  103. package/skills/cm-content-factory/.git 2/objects/ef/263c059208b416c2146434f10cb2b9fabcba16 +0 -0
  104. package/skills/cm-content-factory/.git 2/objects/f3/ae597e84d9a59b88acd21c99bde2eaf686d785 +0 -0
  105. package/skills/cm-content-factory/.git 2/objects/f3/f6f5673c821d3d8e76fa267a9e882e7a5387ea +0 -0
  106. package/skills/cm-content-factory/.git 2/objects/f9/6e6d0ad02624dd11d5848594d056caef7a5e8b +0 -0
  107. package/skills/cm-content-factory/.git 2/objects/ff/278988fc1edf0db3abcf18de795f4cc0b4f3e1 +0 -0
  108. package/skills/cm-content-factory/.git 2/refs/heads/main +1 -0
  109. package/skills/cm-content-factory/.git 2/refs/remotes/origin/main +1 -0
  110. package/skills/cm-content-factory/.pytest_cache 2/v/cache/nodeids +76 -0
  111. package/skills/cm-content-factory/.pytest_cache 2/v/cache/stepwise +1 -0
  112. package/skills/cm-content-factory/AGENTS.md +61 -0
  113. package/skills/cm-content-factory/CLAUDE.md +63 -0
  114. package/skills/cm-content-factory/CURSOR.md +43 -0
  115. package/skills/cm-content-factory/Content Factory.zip +0 -0
  116. package/skills/cm-content-factory/SKILL.md +416 -0
  117. package/skills/cm-content-factory/cf +313 -0
  118. package/skills/cm-content-factory/config.schema.json +397 -0
  119. package/skills/cm-content-factory/dashboard/app.js +556 -0
  120. package/skills/cm-content-factory/dashboard/index.html +397 -0
  121. package/skills/cm-content-factory/dashboard/style.css +1211 -0
  122. package/skills/cm-content-factory/examples/01-real-estate.config.json +146 -0
  123. package/skills/cm-content-factory/examples/02-personal-finance.config.json +146 -0
  124. package/skills/cm-content-factory/examples/03-health-wellness.config.json +147 -0
  125. package/skills/cm-content-factory/examples/04-saas-software.config.json +147 -0
  126. package/skills/cm-content-factory/examples/05-legal-services.config.json +147 -0
  127. package/skills/cm-content-factory/examples/06-insurance.config.json +146 -0
  128. package/skills/cm-content-factory/examples/07-ecommerce-dropship.config.json +146 -0
  129. package/skills/cm-content-factory/examples/08-online-education.config.json +147 -0
  130. package/skills/cm-content-factory/examples/09-crypto-defi.config.json +147 -0
  131. package/skills/cm-content-factory/examples/10-beauty-skincare.config.json +147 -0
  132. package/skills/cm-content-factory/examples/11-home-services.config.json +146 -0
  133. package/skills/cm-content-factory/examples/12-dental-clinic.config.json +147 -0
  134. package/skills/cm-content-factory/examples/13-pet-care.config.json +147 -0
  135. package/skills/cm-content-factory/examples/14-travel-hospitality.config.json +147 -0
  136. package/skills/cm-content-factory/examples/15-ai-automation.config.json +147 -0
  137. package/skills/cm-content-factory/examples/16-wedding-events.config.json +147 -0
  138. package/skills/cm-content-factory/examples/17-fitness-coaching.config.json +148 -0
  139. package/skills/cm-content-factory/examples/18-cybersecurity.config.json +147 -0
  140. package/skills/cm-content-factory/examples/19-food-restaurant.config.json +148 -0
  141. package/skills/cm-content-factory/examples/20-solar-energy.config.json +147 -0
  142. package/skills/cm-content-factory/examples/fitness-blog.config.json +116 -0
  143. package/skills/cm-content-factory/examples/tech-blog.config.json +107 -0
  144. package/skills/cm-content-factory/extensions/EXTENSION_GUIDE.md +72 -0
  145. package/skills/cm-content-factory/extensions/hooks.py +126 -0
  146. package/skills/cm-content-factory/extensions/openclaw_adapter.py +132 -0
  147. package/skills/cm-content-factory/landing/docs/content/changelog.md +36 -0
  148. package/skills/cm-content-factory/landing/docs/content/deployment.md +46 -0
  149. package/skills/cm-content-factory/landing/docs/content/execution-flow.md +67 -0
  150. package/skills/cm-content-factory/landing/docs/content/openspace.md +27 -0
  151. package/skills/cm-content-factory/landing/docs/content/openviking.md +33 -0
  152. package/skills/cm-content-factory/landing/docs/content/use-cases.md +26 -0
  153. package/skills/cm-content-factory/landing/docs/content/v5-intro.md +28 -0
  154. package/skills/cm-content-factory/landing/docs/index.html +240 -0
  155. package/skills/cm-content-factory/landing/index.html +680 -0
  156. package/skills/cm-content-factory/landing/script.js +143 -0
  157. package/skills/cm-content-factory/landing/style.css +1216 -0
  158. package/skills/cm-content-factory/landing/translations.js +508 -0
  159. package/skills/cm-content-factory/logs/events.jsonl +11 -0
  160. package/skills/cm-content-factory/profiles/_template.profile.json +231 -0
  161. package/skills/cm-content-factory/profiles/finance.profile.json +278 -0
  162. package/skills/cm-content-factory/profiles/legal.profile.json +263 -0
  163. package/skills/cm-content-factory/profiles/medical-research.profile.json +321 -0
  164. package/skills/cm-content-factory/profiles/technology.profile.json +275 -0
  165. package/skills/cm-content-factory/scripts/agent_dispatcher.py +266 -0
  166. package/skills/cm-content-factory/scripts/audit.py +106 -0
  167. package/skills/cm-content-factory/scripts/dashboard_server.py +225 -0
  168. package/skills/cm-content-factory/scripts/deploy.py +146 -0
  169. package/skills/cm-content-factory/scripts/extract.py +132 -0
  170. package/skills/cm-content-factory/scripts/landing_generator.py +459 -0
  171. package/skills/cm-content-factory/scripts/memory.py +521 -0
  172. package/skills/cm-content-factory/scripts/monetize.py +239 -0
  173. package/skills/cm-content-factory/scripts/pipeline.py +357 -0
  174. package/skills/cm-content-factory/scripts/plan.py +163 -0
  175. package/skills/cm-content-factory/scripts/publish.py +145 -0
  176. package/skills/cm-content-factory/scripts/research.py +337 -0
  177. package/skills/cm-content-factory/scripts/scaffold.py +464 -0
  178. package/skills/cm-content-factory/scripts/scoreboard.py +336 -0
  179. package/skills/cm-content-factory/scripts/seo.py +90 -0
  180. package/skills/cm-content-factory/scripts/state_manager.py +320 -0
  181. package/skills/cm-content-factory/scripts/token_manager.py +268 -0
  182. package/skills/cm-content-factory/scripts/validate.py +221 -0
  183. package/skills/cm-content-factory/scripts/wizard.py +329 -0
  184. package/skills/cm-content-factory/scripts/write.py +93 -0
  185. package/skills/cm-content-factory/sites/docs-site/src/assets/houston.webp +0 -0
  186. package/skills/cm-content-factory/sites/docs-site/src/content/docs/architecture.md +90 -0
  187. package/skills/cm-content-factory/sites/docs-site/src/content/docs/data-flow.md +54 -0
  188. package/skills/cm-content-factory/sites/docs-site/src/content/docs/deployment.md +38 -0
  189. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/index.md +65 -0
  190. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/lc-content-lifecycle.md +48 -0
  191. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/seq-write-mode.md +39 -0
  192. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/uj-first-batch.md +42 -0
  193. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-content-pipeline.md +51 -0
  194. package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-learning-cycle.md +52 -0
  195. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/configuration.md +86 -0
  196. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/installation.md +80 -0
  197. package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/intro.md +58 -0
  198. package/skills/cm-content-factory/sites/docs-site/src/content/docs/index.md +102 -0
  199. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/index.md +45 -0
  200. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/optimize-seo.md +29 -0
  201. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/scale-content-production.md +55 -0
  202. package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/standardize-quality.md +29 -0
  203. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-cmo-huong.md +41 -0
  204. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-content-lead-khoa.md +40 -0
  205. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/index.md +56 -0
  206. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-content-manager-lan.md +46 -0
  207. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-seo-minh.md +45 -0
  208. package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-writer-tu.md +45 -0
  209. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/content-pipeline.md +108 -0
  210. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/index.md +22 -0
  211. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/memory-system.md +52 -0
  212. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/seo-optimization.md +58 -0
  213. package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/troubleshooting-guide.md +92 -0
  214. package/skills/cm-content-factory/sites/docs-site/src/styles/custom.css +575 -0
  215. package/skills/cm-content-factory/tests/conftest.py +66 -0
  216. package/skills/cm-content-factory/tests/test_agent_dispatcher.py +125 -0
  217. package/skills/cm-content-factory/tests/test_memory.py +128 -0
  218. package/skills/cm-content-factory/tests/test_pipeline.py +107 -0
  219. package/skills/cm-content-factory/tests/test_research.py +56 -0
  220. package/skills/cm-content-factory/tests/test_state_manager.py +131 -0
  221. package/skills/cm-content-factory/tests/test_token_manager.py +110 -0
  222. package/skills/cm-content-factory/tests/test_wizard.py +121 -0
  223. package/skills/cm-continuity/SKILL.md +49 -480
  224. package/skills/cm-continuity/references/cm-uri-scheme.md +23 -0
  225. package/skills/cm-continuity/references/continuity-template.md +48 -0
  226. package/skills/cm-continuity/references/mcp-context-server.md +27 -0
  227. package/skills/cm-continuity/references/memory-architecture.md +26 -0
  228. package/skills/cm-continuity/references/memory-audit.md +18 -0
  229. package/skills/cm-continuity/references/session-protocol.md +31 -0
  230. package/skills/cm-continuity/references/storage-formats.md +20 -0
  231. package/skills/cm-cro-methodology/SKILL.md +290 -0
  232. package/skills/cm-cro-methodology/references/COPYWRITING.md +178 -0
  233. package/skills/cm-cro-methodology/references/OBJECTIONS.md +135 -0
  234. package/skills/cm-cro-methodology/references/PERSUASION.md +158 -0
  235. package/skills/cm-cro-methodology/references/RESEARCH.md +220 -0
  236. package/skills/cm-cro-methodology/references/funnel-analysis.md +365 -0
  237. package/skills/cm-cro-methodology/references/testing-methodology.md +330 -0
  238. package/skills/cm-design-system/SKILL.md +5 -6
  239. package/skills/cm-execution/SKILL.md +61 -379
  240. package/skills/cm-execution/references/mode-a-batch.md +28 -0
  241. package/skills/cm-execution/references/mode-b-subagent.md +46 -0
  242. package/skills/cm-execution/references/mode-c-parallel.md +39 -0
  243. package/skills/cm-execution/references/mode-d-rarv.md +62 -0
  244. package/skills/cm-execution/references/mode-e-triz-parallel.md +53 -0
  245. package/skills/cm-execution/references/mode-f-party.md +61 -0
  246. package/skills/cm-execution/references/persona-dispatch.md +22 -0
  247. package/skills/cm-execution/references/security-rules.md +47 -0
  248. package/skills/cm-google-form/SKILL.md +266 -0
  249. package/skills/cm-google-form/templates/apps-script.js +55 -0
  250. package/skills/cm-google-form/templates/form-markup.html +110 -0
  251. package/skills/cm-google-form/templates/form-submit.js +201 -0
  252. package/skills/cm-google-form/templates/toast.css +152 -0
  253. package/skills/cm-growth-hacking/SKILL.md +282 -0
  254. package/skills/cm-growth-hacking/bottom-sheet-engine.md +261 -0
  255. package/skills/cm-growth-hacking/calendar-integration.md +264 -0
  256. package/skills/cm-growth-hacking/references/engagement-patterns.md +346 -0
  257. package/skills/cm-growth-hacking/templates/bottom-sheet.css +528 -0
  258. package/skills/cm-growth-hacking/templates/bottom-sheet.js +269 -0
  259. package/skills/cm-growth-hacking/templates/calendar-cta.js +213 -0
  260. package/skills/cm-growth-hacking/templates/tracking-events.js +211 -0
  261. package/skills/cm-growth-hacking/templates/trigger-manager.js +254 -0
  262. package/skills/cm-growth-hacking/tracking-events.md +246 -0
  263. package/skills/cm-growth-hacking/trigger-system.md +342 -0
  264. package/skills/cm-how-it-work/SKILL.md +8 -9
  265. package/skills/cm-identity-guard/SKILL.md +4 -4
  266. package/skills/cm-jtbd/SKILL.md +98 -0
  267. package/skills/cm-notebooklm/SKILL.md +156 -0
  268. package/skills/cm-notebooklm/references/command_reference.md +94 -0
  269. package/skills/cm-notebooklm/references/workflows.md +60 -0
  270. package/skills/cm-notebooklm/resources/knowledge_sources.md +106 -0
  271. package/skills/cm-notebooklm/scripts/brain-sync.sh +453 -0
  272. package/skills/cm-notebooklm/scripts/graduate_wisdom.py +101 -0
  273. package/skills/cm-planning/SKILL.md +3 -3
  274. package/skills/cm-project-bootstrap/SKILL.md +2 -2
  275. package/skills/cm-quality-gate/SKILL.md +1 -1
  276. package/skills/cm-readit/SKILL.md +289 -0
  277. package/skills/cm-readit/audio-player.md +206 -0
  278. package/skills/cm-readit/examples/blog-reader.js +352 -0
  279. package/skills/cm-readit/examples/voice-cro.js +390 -0
  280. package/skills/cm-readit/tts-engine.md +262 -0
  281. package/skills/cm-readit/ui-patterns.md +362 -0
  282. package/skills/cm-readit/voice-cro.md +223 -0
  283. package/skills/cm-safe-deploy/SKILL.md +80 -510
  284. package/skills/cm-safe-deploy/references/gate-0-5-security-scan.md +31 -0
  285. package/skills/cm-safe-deploy/references/gate-0-secret-hygiene.md +68 -0
  286. package/skills/cm-safe-deploy/references/gate-1-syntax.md +23 -0
  287. package/skills/cm-safe-deploy/references/gate-2-test-suite.md +28 -0
  288. package/skills/cm-safe-deploy/references/gate-3-i18n.md +19 -0
  289. package/skills/cm-safe-deploy/references/gate-4-5-build-dist.md +16 -0
  290. package/skills/cm-safe-deploy/references/gate-6-deploy-smoke.md +18 -0
  291. package/skills/cm-safe-deploy/references/rollback.md +17 -0
  292. package/skills/cm-safe-deploy/references/setup-new-project.md +20 -0
  293. package/skills/cm-skill-index/SKILL.md +15 -15
  294. package/skills/cm-start/SKILL.md +1 -1
  295. package/skills/cm-tdd/SKILL.md +51 -356
  296. package/skills/cm-tdd/references/bugfix-example.md +15 -0
  297. package/skills/cm-tdd/references/rationalizations.md +20 -0
  298. package/skills/cm-tdd/references/red-green-refactor.md +33 -0
  299. package/skills/cm-tdd/references/stuck-debugging.md +18 -0
  300. package/skills/cm-tdd/references/test-quality.md +19 -0
  301. package/skills/cm-ux-master/SKILL.md +368 -115
  302. package/skills/profiles/core.txt +1 -4
  303. package/skills/profiles/design.txt +1 -2
  304. package/skills/profiles/full.txt +10 -16
  305. package/skills/profiles/growth.txt +9 -9
  306. package/skills/profiles/top35.json +13 -13
  307. package/skills/cm-conductor-worktrees/SKILL.archive.md +0 -28
  308. package/skills/cm-conductor-worktrees/SKILL.md +0 -26
  309. package/skills/cm-dashboard/SKILL.archive.md +0 -15
  310. package/skills/cm-dashboard/SKILL.md +0 -26
  311. package/skills/cm-dashboard/ui/app.js +0 -1278
  312. package/skills/cm-dashboard/ui/index.html +0 -206
  313. package/skills/cm-dashboard/ui/style.css +0 -440
  314. package/skills/cm-design-studio/SKILL.archive.md +0 -34
  315. package/skills/cm-design-studio/SKILL.md +0 -26
  316. package/skills/cm-engineering-meta/SKILL.archive.md +0 -73
  317. package/skills/cm-engineering-meta/SKILL.md +0 -26
  318. package/skills/cm-git-worktrees/SKILL.archive.md +0 -157
  319. package/skills/cm-git-worktrees/SKILL.md +0 -26
  320. package/skills/cm-post-deploy-canary/SKILL.archive.md +0 -22
  321. package/skills/cm-post-deploy-canary/SKILL.md +0 -26
  322. package/skills/cm-qa-visual-cli/SKILL.archive.md +0 -22
  323. package/skills/cm-qa-visual-cli/SKILL.md +0 -26
  324. package/skills/cm-second-opinion-cli/SKILL.archive.md +0 -23
  325. package/skills/cm-second-opinion-cli/SKILL.md +0 -26
  326. package/skills/cm-secret-shield/SKILL.archive.md +0 -580
  327. package/skills/cm-secret-shield/SKILL.md +0 -26
  328. package/skills/cm-security-gate/SKILL.archive.md +0 -239
  329. package/skills/cm-security-gate/SKILL.md +0 -26
  330. package/skills/cm-skill-health/SKILL.archive.md +0 -83
  331. package/skills/cm-skill-health/SKILL.md +0 -26
  332. package/skills/cm-skill-mastery/SKILL.archive.md +0 -156
  333. package/skills/cm-skill-mastery/SKILL.md +0 -26
  334. package/skills/cm-skill-search/SKILL.archive.md +0 -49
  335. package/skills/cm-skill-search/SKILL.md +0 -26
  336. package/skills/cm-skill-share/SKILL.archive.md +0 -58
  337. package/skills/cm-skill-share/SKILL.md +0 -26
  338. package/skills/cm-test-gate/SKILL.archive.md +0 -245
  339. package/skills/cm-test-gate/SKILL.md +0 -26
  340. package/skills/cm-ui-preview/SKILL.archive.md +0 -153
  341. package/skills/cm-ui-preview/SKILL.md +0 -26
@@ -1,7 +1,14 @@
1
1
  ---
2
2
  name: cm-tdd
3
- description: Use when implementing any feature or bugfix, before writing implementation code
3
+ description: Use when implementing any feature or bugfix. Routes to the core Red-Green-Refactor loop, test quality guidance, rationalization handling, examples, or stuck-state recovery.
4
4
  token_budget: 1500
5
+ token_core: 380
6
+ token_refs:
7
+ red-green-refactor: 620
8
+ test-quality: 360
9
+ rationalizations: 520
10
+ bugfix-example: 340
11
+ stuck-debugging: 260
5
12
  compressed: true
6
13
  deprecated: false
7
14
  ---
@@ -9,373 +16,61 @@ deprecated: false
9
16
  # Test-Driven Development (TDD)
10
17
 
11
18
  ## TL;DR
12
- - **Use when** writing or fixing any feature/bugfix
13
- - **Cycle**: red (failing test) green (minimal code) refactor
14
- - **No prod code** without a failing test first
15
- - **Next**: cm-execution or cm-code-review
16
-
17
- ## Overview
18
-
19
- Write the test first. Watch it fail. Write minimal code to pass.
20
-
21
- **Core principle:** If you didn't watch the test fail, you don't know if it tests the right thing.
22
-
23
- **Violating the letter of the rules is violating the spirit of the rules.**
19
+ - **Use when** writing or fixing code
20
+ - **Cycle**: RedGreenRefactor
21
+ - **Rule**: no production code without a failing test first
22
+ - **Next**: `cm-execution` or `cm-code-review`
24
23
 
25
24
  ## When to Use
26
-
27
- **Always:**
28
-
29
- - New features
30
- - Bug fixes
31
- - Refactoring
32
- - Behavior changes
33
-
34
- **Exceptions (ask your human partner):**
35
-
36
- - Throwaway prototypes
37
- - Generated code
38
- - Configuration files
39
-
40
- Thinking "skip TDD just this once"? Stop. That's rationalization.
25
+ - new features
26
+ - bug fixes
27
+ - refactors
28
+ - behavior changes
41
29
 
42
30
  ## The Iron Law
43
-
44
- ```
31
+ ```text
45
32
  NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
46
33
  ```
47
34
 
48
- Write code before the test? Delete it. Start over.
49
-
50
- **No exceptions:**
51
-
52
- - Don't keep it as "reference"
53
- - Don't "adapt" it while writing tests
54
- - Don't look at it
55
- - Delete means delete
56
-
57
- Implement fresh from tests. Period.
58
-
59
- ## Red-Green-Refactor
60
-
61
- ```dot
62
- digraph tdd_cycle {
63
- rankdir=LR;
64
- red [label="RED\nWrite failing test", shape=box, style=filled, fillcolor="#ffcccc"];
65
- verify_red [label="Verify fails\ncorrectly", shape=diamond];
66
- green [label="GREEN\nMinimal code", shape=box, style=filled, fillcolor="#ccffcc"];
67
- verify_green [label="Verify passes\nAll green", shape=diamond];
68
- refactor [label="REFACTOR\nClean up", shape=box, style=filled, fillcolor="#ccccff"];
69
- next [label="Next", shape=ellipse];
70
-
71
- red -> verify_red;
72
- verify_red -> green [label="yes"];
73
- verify_red -> red [label="wrong\nfailure"];
74
- green -> verify_green;
75
- verify_green -> refactor [label="yes"];
76
- verify_green -> green [label="no"];
77
- refactor -> verify_green [label="stay\ngreen"];
78
- verify_green -> next;
79
- next -> red;
80
- }
81
- ```
82
-
83
- ### Step 0: Check Working Memory
84
-
85
- Before writing ANY test, check `.cm/CONTINUITY.md`:
86
-
87
- - **"Mistakes & Learnings"** → Are there known edge cases for this area?
88
- - **"Working Context"** → What patterns/conventions are being followed?
89
- - **"Key Decisions"** → Any architecture choices that affect test design?
90
-
91
- > **Token savings:** Writes better tests on first try by knowing past failures.
92
- > **Quality boost:** Tests cover edge cases that caused bugs before.
93
-
94
- ### RED - Write Failing Test
95
-
96
- Write one minimal test showing what should happen.
97
-
98
- ```typescript test('retries failed operations 3 times', async () => { let attempts = 0; const operation = () => { attempts++; if (attempts < 3) throw new Error('fail'); return 'success'; };
99
-
100
- const result = await retryOperation(operation);
101
-
102
- expect(result).toBe('success');
103
- expect(attempts).toBe(3);
104
- });
105
-
106
- ```
107
- Clear name, tests real behavior, one thing
108
- </Good>
109
-
110
- <Bad>
111
- ```typescript
112
- test('retry works', async () => {
113
- const mock = jest.fn()
114
- .mockRejectedValueOnce(new Error())
115
- .mockRejectedValueOnce(new Error())
116
- .mockResolvedValueOnce('success');
117
- await retryOperation(mock);
118
- expect(mock).toHaveBeenCalledTimes(3);
119
- });
120
- ```
121
-
122
- Vague name, tests mock not code
123
-
124
-
125
- **Requirements:**
126
-
127
- - One behavior
128
- - Clear name
129
- - Real code (no mocks unless unavoidable)
130
-
131
- ### Verify RED - Watch It Fail
132
-
133
- **MANDATORY. Never skip.**
134
-
135
- ```bash
136
- npm test path/to/test.test.ts
137
- ```
138
-
139
- Confirm:
140
-
141
- - Test fails (not errors)
142
- - Failure message is expected
143
- - Fails because feature missing (not typos)
144
-
145
- **Test passes?** You're testing existing behavior. Fix test.
146
-
147
- **Test errors?** Fix error, re-run until it fails correctly.
148
-
149
- ### GREEN - Minimal Code
150
-
151
- Write simplest code to pass the test.
152
-
153
- ```typescript async function retryOperation(fn: () => Promise): Promise { for (let i = 0; i < 3; i++) { try { return await fn(); } catch (e) { if (i === 2) throw e; } } throw new Error('unreachable'); } ``` Just enough to pass
154
-
155
- ```typescript async function retryOperation( fn: () => Promise, options?: { maxRetries?: number; backoff?: 'linear' | 'exponential'; onRetry?: (attempt: number) => void; } ): Promise { // YAGNI } ``` Over-engineered
156
-
157
- Don't add features, refactor other code, or "improve" beyond the test.
158
-
159
- ### Verify GREEN - Watch It Pass
160
-
161
- **MANDATORY.**
162
-
163
- ```bash
164
- npm test path/to/test.test.ts
165
- ```
166
-
167
- Confirm:
168
-
169
- - Test passes
170
- - Other tests still pass
171
- - Output pristine (no errors, warnings)
172
-
173
- **Test fails?** Fix code, not test.
174
-
175
- **Other tests fail?** Fix now.
176
-
177
- ### REFACTOR - Clean Up
178
-
179
- After green only:
180
-
181
- - Remove duplication
182
- - Improve names
183
- - Extract helpers
184
-
185
- Keep tests green. Don't add behavior.
186
-
187
- ### Repeat
188
-
189
- Next failing test for next feature.
190
-
191
- ## Good Tests
192
-
193
-
194
- | Quality | Good | Bad |
195
- | ---------------- | ----------------------------------- | --------------------------------------------------- |
196
- | **Minimal** | One thing. "and" in name? Split it. | `test('validates email and domain and whitespace')` |
197
- | **Clear** | Name describes behavior | `test('test1')` |
198
- | **Shows intent** | Demonstrates desired API | Obscures what code should do |
199
-
200
-
201
- ## Why Order Matters
202
-
203
- **"I'll write tests after to verify it works"**
204
-
205
- Tests written after code pass immediately. Passing immediately proves nothing:
206
-
207
- - Might test wrong thing
208
- - Might test implementation, not behavior
209
- - Might miss edge cases you forgot
210
- - You never saw it catch the bug
211
-
212
- Test-first forces you to see the test fail, proving it actually tests something.
213
-
214
- **"I already manually tested all the edge cases"**
215
-
216
- Manual testing is ad-hoc. You think you tested everything but:
217
-
218
- - No record of what you tested
219
- - Can't re-run when code changes
220
- - Easy to forget cases under pressure
221
- - "It worked when I tried it" ≠ comprehensive
222
-
223
- Automated tests are systematic. They run the same way every time.
224
-
225
- **"Deleting X hours of work is wasteful"**
226
-
227
- Sunk cost fallacy. The time is already gone. Your choice now:
228
-
229
- - Delete and rewrite with TDD (X more hours, high confidence)
230
- - Keep it and add tests after (30 min, low confidence, likely bugs)
231
-
232
- The "waste" is keeping code you can't trust. Working code without real tests is technical debt.
233
-
234
- **"TDD is dogmatic, being pragmatic means adapting"**
235
-
236
- TDD IS pragmatic:
237
-
238
- - Finds bugs before commit (faster than debugging after)
239
- - Prevents regressions (tests catch breaks immediately)
240
- - Documents behavior (tests show how to use code)
241
- - Enables refactoring (change freely, tests catch breaks)
242
-
243
- "Pragmatic" shortcuts = debugging in production = slower.
244
-
245
- **"Tests after achieve the same goals - it's spirit not ritual"**
246
-
247
- No. Tests-after answer "What does this do?" Tests-first answer "What should this do?"
248
-
249
- Tests-after are biased by your implementation. You test what you built, not what's required. You verify remembered edge cases, not discovered ones.
250
-
251
- Tests-first force edge case discovery before implementing. Tests-after verify you remembered everything (you didn't).
252
-
253
- 30 minutes of tests after ≠ TDD. You get coverage, lose proof tests work.
254
-
255
- ## Common Rationalizations
256
-
257
-
258
- | Excuse | Reality |
259
- | -------------------------------------- | ----------------------------------------------------------------------- |
260
- | "Too simple to test" | Simple code breaks. Test takes 30 seconds. |
261
- | "I'll test after" | Tests passing immediately prove nothing. |
262
- | "Tests after achieve same goals" | Tests-after = "what does this do?" Tests-first = "what should this do?" |
263
- | "Already manually tested" | Ad-hoc ≠ systematic. No record, can't re-run. |
264
- | "Deleting X hours is wasteful" | Sunk cost fallacy. Keeping unverified code is technical debt. |
265
- | "Keep as reference, write tests first" | You'll adapt it. That's testing after. Delete means delete. |
266
- | "Need to explore first" | Fine. Throw away exploration, start with TDD. |
267
- | "Test hard = design unclear" | Listen to test. Hard to test = hard to use. |
268
- | "TDD will slow me down" | TDD faster than debugging. Pragmatic = test-first. |
269
- | "Manual test faster" | Manual doesn't prove edge cases. You'll re-test every change. |
270
- | "Existing code has no tests" | You're improving it. Add tests for existing code. |
271
-
272
-
273
- ## Red Flags - STOP and Start Over
274
-
275
- - Code before test
276
- - Test after implementation
277
- - Test passes immediately
278
- - Can't explain why test failed
279
- - Tests added "later"
280
- - Rationalizing "just this once"
281
- - "I already manually tested it"
282
- - "Tests after achieve the same purpose"
283
- - "It's about spirit not ritual"
284
- - "Keep as reference" or "adapt existing code"
285
- - "Already spent X hours, deleting is wasteful"
286
- - "TDD is dogmatic, I'm being pragmatic"
287
- - "This is different because..."
288
-
289
- **All of these mean: Delete code. Start over with TDD.**
290
-
291
- ## Example: Bug Fix
292
-
293
- **Bug:** Empty email accepted
294
-
295
- **RED**
296
-
297
- ```typescript
298
- test('rejects empty email', async () => {
299
- const result = await submitForm({ email: '' });
300
- expect(result.error).toBe('Email required');
301
- });
302
- ```
303
-
304
- **Verify RED**
305
-
306
- ```bash
307
- $ npm test
308
- FAIL: expected 'Email required', got undefined
309
- ```
310
-
311
- **GREEN**
312
-
313
- ```typescript
314
- function submitForm(data: FormData) {
315
- if (!data.email?.trim()) {
316
- return { error: 'Email required' };
317
- }
318
- // ...
319
- }
320
- ```
321
-
322
- **Verify GREEN**
35
+ ## Choose the Need
323
36
 
324
- ```bash
325
- $ npm test
326
- PASS
327
37
  ```
38
+ Need to execute the normal TDD loop?
39
+ └─ YES → Red-Green-Refactor
328
40
 
329
- **REFACTOR**
330
- Extract validation for multiple fields if needed.
331
-
332
- ## Verification Checklist
333
-
334
- Before marking work complete:
335
-
336
- - Every new function/method has a test
337
- - Watched each test fail before implementing
338
- - Each test failed for expected reason (feature missing, not typo)
339
- - Wrote minimal code to pass each test
340
- - All tests pass
341
- - Output pristine (no errors, warnings)
342
- - Tests use real code (mocks only if unavoidable)
343
- - Edge cases and errors covered
344
-
345
- Can't check all boxes? You skipped TDD. Start over.
346
-
347
- ## When Stuck
348
-
41
+ Need help designing or reviewing test quality?
42
+ └─ YES Test Quality
349
43
 
350
- | Problem | Solution |
351
- | ---------------------- | -------------------------------------------------------------------- |
352
- | Don't know how to test | Write wished-for API. Write assertion first. Ask your human partner. |
353
- | Test too complicated | Design too complicated. Simplify interface. |
354
- | Must mock everything | Code too coupled. Use dependency injection. |
355
- | Test setup huge | Extract helpers. Still complex? Simplify design. |
44
+ Need to counter "skip TDD" rationalizations?
45
+ └─ YES Rationalizations
356
46
 
47
+ Need a worked bug-fix example?
48
+ └─ YES → Bugfix Example
357
49
 
358
- ## Debugging Integration
359
-
360
- Bug found? Write failing test reproducing it. Follow TDD cycle. Test proves fix and prevents regression.
361
-
362
- Never fix bugs without a test.
363
-
364
- ## Karpathy Discipline — Goal-Driven Execution
365
-
366
- TDD is the canonical form of goal-driven execution. Reinforce it:
367
- - **Translate vague tasks into verifiable goals before writing code.**
368
- - "Add validation" → "Test invalid inputs fail; valid inputs pass."
369
- - "Fix the bug" → "Test reproduces it red; fix turns it green."
370
- - "Refactor X" → "Same tests green before and after."
371
- - **Strong success criteria let you loop independently.** Weak criteria ("make it work") force the user to babysit.
372
- - **Minimum code to pass.** Don't over-implement to "anticipate" the next test — write that test first.
373
-
374
- ## Final Rule
375
-
376
- ```
377
- Production code → test exists and failed first
378
- Otherwise → not TDD
50
+ Are you blocked or unsure how to continue?
51
+ └─ YES → Stuck / Debugging
379
52
  ```
380
53
 
381
- No exceptions without your human partner's permission.
54
+ | Need | Summary | Load |
55
+ |---|---|---|
56
+ | Normal execution | core TDD loop and verification | `references/red-green-refactor.md` |
57
+ | Test quality | what good tests look like | `references/test-quality.md` |
58
+ | Reinforcement | anti-rationalization guidance | `references/rationalizations.md` |
59
+ | Example | concrete bug-fix walkthrough | `references/bugfix-example.md` |
60
+ | Recovery | how to proceed when stuck | `references/stuck-debugging.md` |
61
+
62
+ ## Load Rules
63
+ - Load `red-green-refactor.md` for normal execution.
64
+ - Load `test-quality.md` when designing or reviewing tests.
65
+ - Load `rationalizations.md` only when the user or agent is trying to bypass TDD discipline.
66
+ - Load `bugfix-example.md` only for coaching or example use.
67
+ - Load `stuck-debugging.md` only when blocked.
68
+
69
+ ## Non-Negotiables
70
+ - Watch the test fail before writing production code.
71
+ - Keep implementation minimal until green.
72
+ - Refactor only after green.
73
+ - Re-run verification after each meaningful change.
74
+
75
+ ## The Bottom Line
76
+ **Write the failing test first. Pass it minimally. Refactor only after green.**
@@ -0,0 +1,15 @@
1
+ # Bugfix Example
2
+
3
+ > Use when a concrete example helps teach or reinforce the loop.
4
+
5
+ ## Example Shape
6
+ 1. Reproduce the bug with a failing test
7
+ 2. Verify the failure matches the bug
8
+ 3. Implement the smallest fix
9
+ 4. Re-run the failing test and nearby tests
10
+ 5. Refactor if needed after green
11
+
12
+ ## Why It Helps
13
+ - shows how to start from symptoms
14
+ - demonstrates proof before implementation
15
+ - gives a concrete mental model for bug-fix TDD
@@ -0,0 +1,20 @@
1
+ # Common Rationalizations
2
+
3
+ > Load only when discipline is slipping and TDD needs reinforcement.
4
+
5
+ ## Common Excuses
6
+ - too simple to test
7
+ - I already tested manually
8
+ - I will add tests after
9
+ - deleting the existing code is wasteful
10
+ - being pragmatic means skipping process
11
+
12
+ ## Response Pattern
13
+ - manual testing is not repeatable
14
+ - tests-after do not prove the test would have caught the bug
15
+ - passing immediately proves very little
16
+ - code without trusted tests is technical debt
17
+ - pragmatic shortcuts usually move cost into debugging later
18
+
19
+ ## Rule
20
+ Do not let convenience arguments silently replace the process.
@@ -0,0 +1,33 @@
1
+ # Red-Green-Refactor
2
+
3
+ > Default reference for normal TDD execution.
4
+
5
+ ## Step 0: Check Working Memory
6
+ - review known edge cases in continuity
7
+ - review working context and key decisions
8
+
9
+ ## RED
10
+ 1. Write one failing test for one behavior.
11
+ 2. Make sure it fails for the expected reason.
12
+
13
+ ## VERIFY RED
14
+ - run the specific test
15
+ - confirm failure is meaningful, not a typo or setup issue
16
+
17
+ ## GREEN
18
+ 1. Write the simplest code that passes.
19
+ 2. Avoid speculative options, helpers, or extra behavior.
20
+
21
+ ## VERIFY GREEN
22
+ - rerun the test
23
+ - confirm it passes cleanly
24
+ - confirm related tests still pass if relevant
25
+
26
+ ## REFACTOR
27
+ - improve names
28
+ - reduce duplication
29
+ - keep behavior unchanged
30
+ - rerun tests after cleanup
31
+
32
+ ## Rule
33
+ If you did not see the test fail, you do not know that it tests the right thing.
@@ -0,0 +1,18 @@
1
+ # Stuck / Debugging
2
+
3
+ > Use when the TDD loop stalls.
4
+
5
+ ## When Stuck
6
+ - simplify the failing scenario
7
+ - isolate one behavior
8
+ - verify the test harness itself
9
+ - reduce mocks
10
+ - use `cm-debugging` if the root cause is unclear
11
+
12
+ ## Escalation
13
+ - if repeated failures do not clarify the issue
14
+ - if you cannot produce a meaningful failing test
15
+ - if the system under test is too tangled to isolate quickly
16
+
17
+ ## Rule
18
+ When blocked, simplify before expanding.
@@ -0,0 +1,19 @@
1
+ # Test Quality
2
+
3
+ > Use when designing or reviewing tests.
4
+
5
+ ## Good Tests
6
+ - one behavior per test
7
+ - clear name
8
+ - behavior-focused, not implementation-biased
9
+ - minimal mocking unless unavoidable
10
+ - readable enough to act as usage documentation
11
+
12
+ ## Bad Test Signals
13
+ - vague names like `test1`
14
+ - multiple behaviors in one assertion cluster
15
+ - mocks proving the mock, not the real behavior
16
+ - tests that pass before the feature is written
17
+
18
+ ## Rule
19
+ If a test name contains “and”, it probably wants to be split.