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.
- package/CHANGELOG.md +64 -0
- package/README.md +117 -2
- package/dist/agent/codex.js +73 -21
- package/dist/agent-dispatch.js +63 -48
- package/dist/cli/commands/brain.js +18 -0
- package/dist/cli/commands/design-studio.js +1 -1
- package/dist/cm-suggest.js +3 -3
- package/dist/dashboard-project-summary.js +9 -0
- package/dist/dashboard.js +11 -5
- package/dist/execution-analyzer.js +9 -1
- package/dist/judge.js +16 -15
- package/dist/mcp-context-server.js +45 -23
- package/dist/mcp-skills-tools.js +2 -2
- package/dist/skill-chain.js +26 -3
- package/dist/skill-token-report.js +105 -0
- package/dist/sprint-pipeline.js +3 -3
- package/dist/ui/onboarding.js +3 -4
- package/dist/utils/design-taste.js +1 -1
- package/dist/utils/output-compress.js +8 -0
- package/package.json +3 -2
- package/public/dashboard/app.js +40 -13
- package/public/dashboard/index.html +190 -5
- package/public/dashboard/style.css +1 -1
- package/scripts/build-skills.mjs +36 -2
- package/scripts/mcp-bridge.js +41 -24
- package/scripts/pack-plugin.mjs +206 -0
- package/skills/cm-ads-tracker/SKILL.md +401 -0
- package/skills/cm-ads-tracker/evals/evals.json +55 -0
- package/skills/cm-ads-tracker/references/gtm-architecture.md +321 -0
- package/skills/cm-ads-tracker/references/industry-events.md +294 -0
- package/skills/cm-ads-tracker/references/platforms-api.md +238 -0
- package/skills/cm-ads-tracker/templates/capi-payload.md +79 -0
- package/skills/cm-ads-tracker/templates/datalayer-push.js +104 -0
- package/skills/cm-ads-tracker/templates/gtm-variables.js +56 -0
- package/skills/cm-auto-publisher/SKILL.md +81 -0
- package/skills/cm-booking-calendar/SKILL.md +521 -0
- package/skills/cm-booking-calendar/references/industry-patterns.md +527 -0
- package/skills/cm-booking-calendar/templates/booking-form.css +626 -0
- package/skills/cm-booking-calendar/templates/booking-form.html +477 -0
- package/skills/cm-booking-calendar/templates/calendar-engine.js +419 -0
- package/skills/cm-booking-calendar/templates/calendar-export.js +395 -0
- package/skills/cm-booking-calendar/templates/reminder-config.js +629 -0
- package/skills/cm-brainstorm-idea/SKILL.md +5 -5
- package/skills/cm-code-review/SKILL.md +2 -2
- package/skills/cm-codeintell/SKILL.md +47 -580
- package/skills/cm-codeintell/references/integration-workflows.md +23 -0
- package/skills/cm-codeintell/references/layer-0-skeleton.md +54 -0
- package/skills/cm-codeintell/references/layer-1-codegraph.md +58 -0
- package/skills/cm-codeintell/references/layer-2-architecture.md +31 -0
- package/skills/cm-codeintell/references/layer-3-context-builder.md +32 -0
- package/skills/cm-content-factory/.content-factory-state.json +132 -0
- package/skills/cm-content-factory/.git 2/logs/refs/heads/main +1 -0
- package/skills/cm-content-factory/.git 2/logs/refs/remotes/origin/main +1 -0
- package/skills/cm-content-factory/.git 2/objects/02/fb0956734b5f8ba3f918b7defd04a89cfe0076 +0 -0
- package/skills/cm-content-factory/.git 2/objects/08/1e129d75dc6feac6c02037272e6bd1a04e3324 +0 -0
- package/skills/cm-content-factory/.git 2/objects/0c/5393416f3c5e01c9a655a802bff0dd52f76f0a +0 -0
- package/skills/cm-content-factory/.git 2/objects/10/0b9be46978a946a77188f68be725098a122001 +0 -0
- package/skills/cm-content-factory/.git 2/objects/10/cf041167fc9843610eb3d90259ef3396315fdc +0 -0
- package/skills/cm-content-factory/.git 2/objects/12/5e19538dd6e1338ffe74f6c4c165b00435bf48 +0 -0
- package/skills/cm-content-factory/.git 2/objects/16/a9b9d0088d5c1347628b45a2620b479d8ad57c +0 -0
- package/skills/cm-content-factory/.git 2/objects/17/8c2a9ef93c33ae4eec9d58e82321f9229843a1 +0 -0
- package/skills/cm-content-factory/.git 2/objects/25/397ae41d09104d763bdcac2695209d85cdea89 +0 -0
- package/skills/cm-content-factory/.git 2/objects/2f/a836b7947f2d458e1f639788bf4bb0983a3305 +0 -0
- package/skills/cm-content-factory/.git 2/objects/3a/baaaf0a1c0909c0828335791557125fba911e0 +0 -0
- package/skills/cm-content-factory/.git 2/objects/42/2924221b81f5ce3c4e4daac9a64a24f9b01f9a +0 -0
- package/skills/cm-content-factory/.git 2/objects/42/ec0ce707447dc11446a34c9995fb8533801731 +0 -0
- package/skills/cm-content-factory/.git 2/objects/46/e43ce92866d56ce74b1d750db307cfe6154a15 +0 -0
- package/skills/cm-content-factory/.git 2/objects/48/5e41b633c63f55b8277bcc59f44f67681f671a +0 -0
- package/skills/cm-content-factory/.git 2/objects/49/49c596a3a89fa240642acd95dd3258e261eb09 +0 -0
- package/skills/cm-content-factory/.git 2/objects/50/9d42d8412ef8eaf7f7e138476bac2e4d10ce60 +0 -0
- package/skills/cm-content-factory/.git 2/objects/55/0c8c389d981b463ef849aeb792d8be3ccb6ec8 +0 -0
- package/skills/cm-content-factory/.git 2/objects/5d/82d3b18410cdda3ace3677436f0cb599dbe2d2 +0 -0
- package/skills/cm-content-factory/.git 2/objects/60/0617c58e871a38b33bf29e282d132bb3c381ad +0 -0
- package/skills/cm-content-factory/.git 2/objects/6a/8369a99c687b7245c92ffaf0e0f0dab9014504 +0 -0
- package/skills/cm-content-factory/.git 2/objects/79/bea435d40ab531c1aaf6be0432c6a5b7aaed21 +0 -0
- package/skills/cm-content-factory/.git 2/objects/7e/5ebd79251c2f14e4aceb86c74b6b6daae6b500 +0 -0
- package/skills/cm-content-factory/.git 2/objects/81/98a822a60178d6d5023ddb3e222cddf048742e +0 -0
- package/skills/cm-content-factory/.git 2/objects/86/0a0e1943dfe53411d2e499a1f16f46a96ef758 +0 -0
- package/skills/cm-content-factory/.git 2/objects/86/971fb55fdc081fdbae52376f0f13e57a4e9b04 +0 -0
- package/skills/cm-content-factory/.git 2/objects/88/b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d +0 -0
- package/skills/cm-content-factory/.git 2/objects/90/8737edb6b7809e32cc01590b4e08ba42a9d40d +0 -0
- package/skills/cm-content-factory/.git 2/objects/93/d5a8a9a7d4fb7f11491cb596a6880528725118 +0 -0
- package/skills/cm-content-factory/.git 2/objects/98/46a2ab81d0c3b3eb00ef88fc56989aa7e9f316 +0 -0
- package/skills/cm-content-factory/.git 2/objects/9b/d8dd1e49cf274eaf9c555f3ab39dce7af5715e +0 -0
- package/skills/cm-content-factory/.git 2/objects/a1/13329fb0cec96ae78b222d33a24c3b5bc7fa1f +0 -0
- package/skills/cm-content-factory/.git 2/objects/a9/e6effe626e8a3aea3a8fc3364b492191c6e7d0 +0 -0
- package/skills/cm-content-factory/.git 2/objects/ad/6de7e48d9782cca9353d1ff0aa1aab7fe1df85 +0 -0
- package/skills/cm-content-factory/.git 2/objects/af/54ae316f771ff692e299ffcd8bf2f06b413b59 +0 -0
- package/skills/cm-content-factory/.git 2/objects/b0/4cb8b0b00dad633e731c1472161419e738d674 +0 -0
- package/skills/cm-content-factory/.git 2/objects/b3/094abb0b9ed46419b269e4a4e36a459690e3b0 +0 -0
- package/skills/cm-content-factory/.git 2/objects/b9/435c5d4baac2cfc5c83009ddd27b46b60db5f1 +0 -0
- package/skills/cm-content-factory/.git 2/objects/ba/5da17dbaec5ec2dcfdfd126aead518d1171d5c +0 -0
- package/skills/cm-content-factory/.git 2/objects/c0/bf58703aa258ba5dd63083bebaec8f223d844c +0 -0
- package/skills/cm-content-factory/.git 2/objects/c4/701a34edf1fc1bad58ccc57bd03f9426acb59a +0 -0
- package/skills/cm-content-factory/.git 2/objects/c7/5ccce9a4e5cc74d9b3174550cf6d993ca43638 +0 -0
- package/skills/cm-content-factory/.git 2/objects/c7/710d59b5a35b0f1f0a0399386643a0bd94c929 +0 -0
- package/skills/cm-content-factory/.git 2/objects/d1/fe58237112e953e5fec52da22cf38e08be3df9 +5 -0
- package/skills/cm-content-factory/.git 2/objects/d2/2bbe9fd2f74c95bc5583e803f5e435f1e2cd86 +0 -0
- package/skills/cm-content-factory/.git 2/objects/d7/e72852ea2bff74581dbf247d400120086229f4 +0 -0
- package/skills/cm-content-factory/.git 2/objects/d8/d4c3b5553e4fd72807e1d4b49ef07d9ef3ac35 +0 -0
- package/skills/cm-content-factory/.git 2/objects/dc/75050c2876f6a02ae2a53a3c886f395b622977 +0 -0
- package/skills/cm-content-factory/.git 2/objects/ee/e8546f95acec500187c08a28a8b9ee02db0dec +0 -0
- package/skills/cm-content-factory/.git 2/objects/ef/263c059208b416c2146434f10cb2b9fabcba16 +0 -0
- package/skills/cm-content-factory/.git 2/objects/f3/ae597e84d9a59b88acd21c99bde2eaf686d785 +0 -0
- package/skills/cm-content-factory/.git 2/objects/f3/f6f5673c821d3d8e76fa267a9e882e7a5387ea +0 -0
- package/skills/cm-content-factory/.git 2/objects/f9/6e6d0ad02624dd11d5848594d056caef7a5e8b +0 -0
- package/skills/cm-content-factory/.git 2/objects/ff/278988fc1edf0db3abcf18de795f4cc0b4f3e1 +0 -0
- package/skills/cm-content-factory/.git 2/refs/heads/main +1 -0
- package/skills/cm-content-factory/.git 2/refs/remotes/origin/main +1 -0
- package/skills/cm-content-factory/.pytest_cache 2/v/cache/nodeids +76 -0
- package/skills/cm-content-factory/.pytest_cache 2/v/cache/stepwise +1 -0
- package/skills/cm-content-factory/AGENTS.md +61 -0
- package/skills/cm-content-factory/CLAUDE.md +63 -0
- package/skills/cm-content-factory/CURSOR.md +43 -0
- package/skills/cm-content-factory/Content Factory.zip +0 -0
- package/skills/cm-content-factory/SKILL.md +416 -0
- package/skills/cm-content-factory/cf +313 -0
- package/skills/cm-content-factory/config.schema.json +397 -0
- package/skills/cm-content-factory/dashboard/app.js +556 -0
- package/skills/cm-content-factory/dashboard/index.html +397 -0
- package/skills/cm-content-factory/dashboard/style.css +1211 -0
- package/skills/cm-content-factory/examples/01-real-estate.config.json +146 -0
- package/skills/cm-content-factory/examples/02-personal-finance.config.json +146 -0
- package/skills/cm-content-factory/examples/03-health-wellness.config.json +147 -0
- package/skills/cm-content-factory/examples/04-saas-software.config.json +147 -0
- package/skills/cm-content-factory/examples/05-legal-services.config.json +147 -0
- package/skills/cm-content-factory/examples/06-insurance.config.json +146 -0
- package/skills/cm-content-factory/examples/07-ecommerce-dropship.config.json +146 -0
- package/skills/cm-content-factory/examples/08-online-education.config.json +147 -0
- package/skills/cm-content-factory/examples/09-crypto-defi.config.json +147 -0
- package/skills/cm-content-factory/examples/10-beauty-skincare.config.json +147 -0
- package/skills/cm-content-factory/examples/11-home-services.config.json +146 -0
- package/skills/cm-content-factory/examples/12-dental-clinic.config.json +147 -0
- package/skills/cm-content-factory/examples/13-pet-care.config.json +147 -0
- package/skills/cm-content-factory/examples/14-travel-hospitality.config.json +147 -0
- package/skills/cm-content-factory/examples/15-ai-automation.config.json +147 -0
- package/skills/cm-content-factory/examples/16-wedding-events.config.json +147 -0
- package/skills/cm-content-factory/examples/17-fitness-coaching.config.json +148 -0
- package/skills/cm-content-factory/examples/18-cybersecurity.config.json +147 -0
- package/skills/cm-content-factory/examples/19-food-restaurant.config.json +148 -0
- package/skills/cm-content-factory/examples/20-solar-energy.config.json +147 -0
- package/skills/cm-content-factory/examples/fitness-blog.config.json +116 -0
- package/skills/cm-content-factory/examples/tech-blog.config.json +107 -0
- package/skills/cm-content-factory/extensions/EXTENSION_GUIDE.md +72 -0
- package/skills/cm-content-factory/extensions/hooks.py +126 -0
- package/skills/cm-content-factory/extensions/openclaw_adapter.py +132 -0
- package/skills/cm-content-factory/landing/docs/content/changelog.md +36 -0
- package/skills/cm-content-factory/landing/docs/content/deployment.md +46 -0
- package/skills/cm-content-factory/landing/docs/content/execution-flow.md +67 -0
- package/skills/cm-content-factory/landing/docs/content/openspace.md +27 -0
- package/skills/cm-content-factory/landing/docs/content/openviking.md +33 -0
- package/skills/cm-content-factory/landing/docs/content/use-cases.md +26 -0
- package/skills/cm-content-factory/landing/docs/content/v5-intro.md +28 -0
- package/skills/cm-content-factory/landing/docs/index.html +240 -0
- package/skills/cm-content-factory/landing/index.html +680 -0
- package/skills/cm-content-factory/landing/script.js +143 -0
- package/skills/cm-content-factory/landing/style.css +1216 -0
- package/skills/cm-content-factory/landing/translations.js +508 -0
- package/skills/cm-content-factory/logs/events.jsonl +11 -0
- package/skills/cm-content-factory/profiles/_template.profile.json +231 -0
- package/skills/cm-content-factory/profiles/finance.profile.json +278 -0
- package/skills/cm-content-factory/profiles/legal.profile.json +263 -0
- package/skills/cm-content-factory/profiles/medical-research.profile.json +321 -0
- package/skills/cm-content-factory/profiles/technology.profile.json +275 -0
- package/skills/cm-content-factory/scripts/agent_dispatcher.py +266 -0
- package/skills/cm-content-factory/scripts/audit.py +106 -0
- package/skills/cm-content-factory/scripts/dashboard_server.py +225 -0
- package/skills/cm-content-factory/scripts/deploy.py +146 -0
- package/skills/cm-content-factory/scripts/extract.py +132 -0
- package/skills/cm-content-factory/scripts/landing_generator.py +459 -0
- package/skills/cm-content-factory/scripts/memory.py +521 -0
- package/skills/cm-content-factory/scripts/monetize.py +239 -0
- package/skills/cm-content-factory/scripts/pipeline.py +357 -0
- package/skills/cm-content-factory/scripts/plan.py +163 -0
- package/skills/cm-content-factory/scripts/publish.py +145 -0
- package/skills/cm-content-factory/scripts/research.py +337 -0
- package/skills/cm-content-factory/scripts/scaffold.py +464 -0
- package/skills/cm-content-factory/scripts/scoreboard.py +336 -0
- package/skills/cm-content-factory/scripts/seo.py +90 -0
- package/skills/cm-content-factory/scripts/state_manager.py +320 -0
- package/skills/cm-content-factory/scripts/token_manager.py +268 -0
- package/skills/cm-content-factory/scripts/validate.py +221 -0
- package/skills/cm-content-factory/scripts/wizard.py +329 -0
- package/skills/cm-content-factory/scripts/write.py +93 -0
- package/skills/cm-content-factory/sites/docs-site/src/assets/houston.webp +0 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/architecture.md +90 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/data-flow.md +54 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/deployment.md +38 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/index.md +65 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/lc-content-lifecycle.md +48 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/seq-write-mode.md +39 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/uj-first-batch.md +42 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-content-pipeline.md +51 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/flows/wf-learning-cycle.md +52 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/configuration.md +86 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/installation.md +80 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/getting-started/intro.md +58 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/index.md +102 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/index.md +45 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/optimize-seo.md +29 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/scale-content-production.md +55 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/jtbd/standardize-quality.md +29 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-cmo-huong.md +41 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/buyer-content-lead-khoa.md +40 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/index.md +56 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-content-manager-lan.md +46 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-seo-minh.md +45 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/personas/user-writer-tu.md +45 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/content-pipeline.md +108 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/index.md +22 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/memory-system.md +52 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/seo-optimization.md +58 -0
- package/skills/cm-content-factory/sites/docs-site/src/content/docs/sop/troubleshooting-guide.md +92 -0
- package/skills/cm-content-factory/sites/docs-site/src/styles/custom.css +575 -0
- package/skills/cm-content-factory/tests/conftest.py +66 -0
- package/skills/cm-content-factory/tests/test_agent_dispatcher.py +125 -0
- package/skills/cm-content-factory/tests/test_memory.py +128 -0
- package/skills/cm-content-factory/tests/test_pipeline.py +107 -0
- package/skills/cm-content-factory/tests/test_research.py +56 -0
- package/skills/cm-content-factory/tests/test_state_manager.py +131 -0
- package/skills/cm-content-factory/tests/test_token_manager.py +110 -0
- package/skills/cm-content-factory/tests/test_wizard.py +121 -0
- package/skills/cm-continuity/SKILL.md +49 -480
- package/skills/cm-continuity/references/cm-uri-scheme.md +23 -0
- package/skills/cm-continuity/references/continuity-template.md +48 -0
- package/skills/cm-continuity/references/mcp-context-server.md +27 -0
- package/skills/cm-continuity/references/memory-architecture.md +26 -0
- package/skills/cm-continuity/references/memory-audit.md +18 -0
- package/skills/cm-continuity/references/session-protocol.md +31 -0
- package/skills/cm-continuity/references/storage-formats.md +20 -0
- package/skills/cm-cro-methodology/SKILL.md +290 -0
- package/skills/cm-cro-methodology/references/COPYWRITING.md +178 -0
- package/skills/cm-cro-methodology/references/OBJECTIONS.md +135 -0
- package/skills/cm-cro-methodology/references/PERSUASION.md +158 -0
- package/skills/cm-cro-methodology/references/RESEARCH.md +220 -0
- package/skills/cm-cro-methodology/references/funnel-analysis.md +365 -0
- package/skills/cm-cro-methodology/references/testing-methodology.md +330 -0
- package/skills/cm-design-system/SKILL.md +5 -6
- package/skills/cm-execution/SKILL.md +61 -379
- package/skills/cm-execution/references/mode-a-batch.md +28 -0
- package/skills/cm-execution/references/mode-b-subagent.md +46 -0
- package/skills/cm-execution/references/mode-c-parallel.md +39 -0
- package/skills/cm-execution/references/mode-d-rarv.md +62 -0
- package/skills/cm-execution/references/mode-e-triz-parallel.md +53 -0
- package/skills/cm-execution/references/mode-f-party.md +61 -0
- package/skills/cm-execution/references/persona-dispatch.md +22 -0
- package/skills/cm-execution/references/security-rules.md +47 -0
- package/skills/cm-google-form/SKILL.md +266 -0
- package/skills/cm-google-form/templates/apps-script.js +55 -0
- package/skills/cm-google-form/templates/form-markup.html +110 -0
- package/skills/cm-google-form/templates/form-submit.js +201 -0
- package/skills/cm-google-form/templates/toast.css +152 -0
- package/skills/cm-growth-hacking/SKILL.md +282 -0
- package/skills/cm-growth-hacking/bottom-sheet-engine.md +261 -0
- package/skills/cm-growth-hacking/calendar-integration.md +264 -0
- package/skills/cm-growth-hacking/references/engagement-patterns.md +346 -0
- package/skills/cm-growth-hacking/templates/bottom-sheet.css +528 -0
- package/skills/cm-growth-hacking/templates/bottom-sheet.js +269 -0
- package/skills/cm-growth-hacking/templates/calendar-cta.js +213 -0
- package/skills/cm-growth-hacking/templates/tracking-events.js +211 -0
- package/skills/cm-growth-hacking/templates/trigger-manager.js +254 -0
- package/skills/cm-growth-hacking/tracking-events.md +246 -0
- package/skills/cm-growth-hacking/trigger-system.md +342 -0
- package/skills/cm-how-it-work/SKILL.md +8 -9
- package/skills/cm-identity-guard/SKILL.md +4 -4
- package/skills/cm-jtbd/SKILL.md +98 -0
- package/skills/cm-notebooklm/SKILL.md +156 -0
- package/skills/cm-notebooklm/references/command_reference.md +94 -0
- package/skills/cm-notebooklm/references/workflows.md +60 -0
- package/skills/cm-notebooklm/resources/knowledge_sources.md +106 -0
- package/skills/cm-notebooklm/scripts/brain-sync.sh +453 -0
- package/skills/cm-notebooklm/scripts/graduate_wisdom.py +101 -0
- package/skills/cm-planning/SKILL.md +3 -3
- package/skills/cm-project-bootstrap/SKILL.md +2 -2
- package/skills/cm-quality-gate/SKILL.md +1 -1
- package/skills/cm-readit/SKILL.md +289 -0
- package/skills/cm-readit/audio-player.md +206 -0
- package/skills/cm-readit/examples/blog-reader.js +352 -0
- package/skills/cm-readit/examples/voice-cro.js +390 -0
- package/skills/cm-readit/tts-engine.md +262 -0
- package/skills/cm-readit/ui-patterns.md +362 -0
- package/skills/cm-readit/voice-cro.md +223 -0
- package/skills/cm-safe-deploy/SKILL.md +80 -510
- package/skills/cm-safe-deploy/references/gate-0-5-security-scan.md +31 -0
- package/skills/cm-safe-deploy/references/gate-0-secret-hygiene.md +68 -0
- package/skills/cm-safe-deploy/references/gate-1-syntax.md +23 -0
- package/skills/cm-safe-deploy/references/gate-2-test-suite.md +28 -0
- package/skills/cm-safe-deploy/references/gate-3-i18n.md +19 -0
- package/skills/cm-safe-deploy/references/gate-4-5-build-dist.md +16 -0
- package/skills/cm-safe-deploy/references/gate-6-deploy-smoke.md +18 -0
- package/skills/cm-safe-deploy/references/rollback.md +17 -0
- package/skills/cm-safe-deploy/references/setup-new-project.md +20 -0
- package/skills/cm-skill-index/SKILL.md +15 -15
- package/skills/cm-start/SKILL.md +1 -1
- package/skills/cm-tdd/SKILL.md +51 -356
- package/skills/cm-tdd/references/bugfix-example.md +15 -0
- package/skills/cm-tdd/references/rationalizations.md +20 -0
- package/skills/cm-tdd/references/red-green-refactor.md +33 -0
- package/skills/cm-tdd/references/stuck-debugging.md +18 -0
- package/skills/cm-tdd/references/test-quality.md +19 -0
- package/skills/cm-ux-master/SKILL.md +368 -115
- package/skills/profiles/core.txt +1 -4
- package/skills/profiles/design.txt +1 -2
- package/skills/profiles/full.txt +10 -16
- package/skills/profiles/growth.txt +9 -9
- package/skills/profiles/top35.json +13 -13
- package/skills/cm-conductor-worktrees/SKILL.archive.md +0 -28
- package/skills/cm-conductor-worktrees/SKILL.md +0 -26
- package/skills/cm-dashboard/SKILL.archive.md +0 -15
- package/skills/cm-dashboard/SKILL.md +0 -26
- package/skills/cm-dashboard/ui/app.js +0 -1278
- package/skills/cm-dashboard/ui/index.html +0 -206
- package/skills/cm-dashboard/ui/style.css +0 -440
- package/skills/cm-design-studio/SKILL.archive.md +0 -34
- package/skills/cm-design-studio/SKILL.md +0 -26
- package/skills/cm-engineering-meta/SKILL.archive.md +0 -73
- package/skills/cm-engineering-meta/SKILL.md +0 -26
- package/skills/cm-git-worktrees/SKILL.archive.md +0 -157
- package/skills/cm-git-worktrees/SKILL.md +0 -26
- package/skills/cm-post-deploy-canary/SKILL.archive.md +0 -22
- package/skills/cm-post-deploy-canary/SKILL.md +0 -26
- package/skills/cm-qa-visual-cli/SKILL.archive.md +0 -22
- package/skills/cm-qa-visual-cli/SKILL.md +0 -26
- package/skills/cm-second-opinion-cli/SKILL.archive.md +0 -23
- package/skills/cm-second-opinion-cli/SKILL.md +0 -26
- package/skills/cm-secret-shield/SKILL.archive.md +0 -580
- package/skills/cm-secret-shield/SKILL.md +0 -26
- package/skills/cm-security-gate/SKILL.archive.md +0 -239
- package/skills/cm-security-gate/SKILL.md +0 -26
- package/skills/cm-skill-health/SKILL.archive.md +0 -83
- package/skills/cm-skill-health/SKILL.md +0 -26
- package/skills/cm-skill-mastery/SKILL.archive.md +0 -156
- package/skills/cm-skill-mastery/SKILL.md +0 -26
- package/skills/cm-skill-search/SKILL.archive.md +0 -49
- package/skills/cm-skill-search/SKILL.md +0 -26
- package/skills/cm-skill-share/SKILL.archive.md +0 -58
- package/skills/cm-skill-share/SKILL.md +0 -26
- package/skills/cm-test-gate/SKILL.archive.md +0 -245
- package/skills/cm-test-gate/SKILL.md +0 -26
- package/skills/cm-ui-preview/SKILL.archive.md +0 -153
- package/skills/cm-ui-preview/SKILL.md +0 -26
package/skills/cm-tdd/SKILL.md
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cm-tdd
|
|
3
|
-
description: Use when implementing any feature or bugfix,
|
|
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
|
|
13
|
-
- **Cycle**:
|
|
14
|
-
- **
|
|
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**: Red → Green → Refactor
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
330
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|