codymaster 4.1.3 → 4.3.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.
- package/CHANGELOG.md +22 -2
- package/README.md +54 -84
- package/dist/index.js +589 -510
- package/dist/ui/box.js +49 -0
- package/install.sh +2 -2
- package/package.json +3 -9
- package/skills/AGENTS.md +61 -0
- package/skills/CLAUDE.md +158 -0
- package/skills/boxme-git-config/SKILL.md +56 -0
- package/skills/boxme-local-dev/SKILL.md +66 -0
- package/skills/build.sh +30 -0
- package/skills/cf +314 -0
- package/skills/cf 2 +313 -0
- package/skills/cm-ads-tracker/SKILL.md +364 -69
- 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 +15 -24
- package/skills/cm-clean-code/SKILL.md +300 -0
- package/skills/cm-code-review/SKILL.md +0 -27
- package/skills/cm-codeintell/SKILL.md +598 -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/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/index.html +680 -0
- package/skills/cm-content-factory/landing/script.js +101 -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 +7 -0
- package/skills/cm-cro-methodology/SKILL.md +290 -0
- package/skills/cm-dashboard/SKILL.md +7 -525
- package/skills/cm-debugging/SKILL.md +7 -116
- package/skills/cm-deep-search/SKILL.md +5 -1
- package/skills/cm-dockit/README.md +6 -15
- package/skills/cm-dockit/SKILL.md +20 -37
- package/skills/cm-execution/SKILL.md +6 -1
- package/skills/cm-frappe-agent/SKILL.md +134 -0
- package/skills/cm-frappe-agent/agents/doctype-architect.md +596 -0
- package/skills/cm-frappe-agent/agents/erpnext-customizer.md +643 -0
- package/skills/cm-frappe-agent/agents/frappe-backend.md +814 -0
- package/skills/cm-frappe-agent/agents/frappe-custom-frontend.md +557 -0
- package/skills/cm-frappe-agent/agents/frappe-debugger.md +625 -0
- package/skills/cm-frappe-agent/agents/frappe-fixer.md +275 -0
- package/skills/cm-frappe-agent/agents/frappe-frontend.md +660 -0
- package/skills/cm-frappe-agent/agents/frappe-installer.md +158 -0
- package/skills/cm-frappe-agent/agents/frappe-performance.md +307 -0
- package/skills/cm-frappe-agent/agents/frappe-planner.md +419 -0
- package/skills/cm-frappe-agent/agents/frappe-remote-ops.md +153 -0
- package/skills/cm-frappe-agent/agents/github-workflow.md +286 -0
- package/skills/cm-frappe-agent/commands/frappe-app.md +351 -0
- package/skills/cm-frappe-agent/commands/frappe-backend.md +162 -0
- package/skills/cm-frappe-agent/commands/frappe-bench.md +254 -0
- package/skills/cm-frappe-agent/commands/frappe-debug.md +263 -0
- package/skills/cm-frappe-agent/commands/frappe-doctype-create.md +272 -0
- package/skills/cm-frappe-agent/commands/frappe-doctype-field.md +310 -0
- package/skills/cm-frappe-agent/commands/frappe-erpnext.md +210 -0
- package/skills/cm-frappe-agent/commands/frappe-fix.md +59 -0
- package/skills/cm-frappe-agent/commands/frappe-frontend.md +210 -0
- package/skills/cm-frappe-agent/commands/frappe-fullstack.md +243 -0
- package/skills/cm-frappe-agent/commands/frappe-github.md +57 -0
- package/skills/cm-frappe-agent/commands/frappe-install.md +52 -0
- package/skills/cm-frappe-agent/commands/frappe-plan.md +442 -0
- package/skills/cm-frappe-agent/commands/frappe-remote.md +58 -0
- package/skills/cm-frappe-agent/commands/frappe-test.md +356 -0
- package/skills/cm-frappe-agent/docs/README.md +51 -0
- package/skills/cm-frappe-agent/docs/agents-catalog.md +113 -0
- package/skills/cm-frappe-agent/docs/architecture.md +149 -0
- package/skills/cm-frappe-agent/docs/commands-catalog.md +82 -0
- package/skills/cm-frappe-agent/docs/resources-catalog.md +66 -0
- package/skills/cm-frappe-agent/docs/sitemap-urls.txt +52 -0
- package/skills/cm-frappe-agent/docs/sitemap.md +81 -0
- package/skills/cm-frappe-agent/docs/sop/user-guide.md +178 -0
- package/skills/cm-frappe-agent/docs/sop/vibe-coding-guide.md +122 -0
- package/skills/cm-frappe-agent/resources/7-layer-architecture.md +985 -0
- package/skills/cm-frappe-agent/resources/bench_commands.md +73 -0
- package/skills/cm-frappe-agent/resources/code-patterns-guide.md +948 -0
- package/skills/cm-frappe-agent/resources/common_pitfalls.md +266 -0
- package/skills/cm-frappe-agent/resources/doctype-registry.md +158 -0
- package/skills/cm-frappe-agent/resources/installation-guide.md +289 -0
- package/skills/cm-frappe-agent/resources/rest-api-patterns.md +182 -0
- package/skills/cm-frappe-agent/resources/scaffold_checklist.md +82 -0
- package/skills/cm-frappe-agent/resources/upgrade_patterns.md +113 -0
- package/skills/cm-frappe-agent/resources/web-form-patterns.md +252 -0
- package/skills/cm-frappe-agent/skills/bench-commands/SKILL.md +621 -0
- package/skills/cm-frappe-agent/skills/client-scripts/SKILL.md +642 -0
- package/skills/cm-frappe-agent/skills/doctype-patterns/SKILL.md +576 -0
- package/skills/cm-frappe-agent/skills/frappe-api/SKILL.md +740 -0
- package/skills/cm-frappe-agent/skills/remote-operations/SKILL.md +47 -0
- package/skills/cm-frappe-agent/skills/server-scripts/SKILL.md +608 -0
- package/skills/cm-frappe-agent/skills/web-forms/SKILL.md +46 -0
- package/skills/cm-git-worktrees/SKILL.md +0 -7
- 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 +293 -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 +20 -4
- package/skills/cm-identity-guard/SKILL.md +0 -11
- package/skills/cm-jtbd/SKILL.md +1 -1
- package/skills/cm-notebooklm/SKILL.md +172 -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 +39 -52
- package/skills/cm-project-bootstrap/SKILL.md +1307 -99
- package/skills/cm-quality-gate/SKILL.md +13 -106
- package/skills/cm-reactor/SKILL.md +274 -0
- package/skills/cm-safe-deploy/SKILL.md +415 -52
- package/skills/cm-safe-i18n/SKILL.md +1 -22
- package/skills/cm-secret-shield/SKILL.md +2 -2
- package/skills/cm-security-gate/SKILL.md +114 -0
- package/skills/cm-skill-chain/SKILL.md +2 -2
- package/skills/cm-skill-index/SKILL.md +9 -6
- package/skills/cm-skill-mastery/SKILL.md +2 -15
- package/skills/cm-start/SKILL.md +9 -0
- package/skills/cm-tdd/SKILL.md +8 -41
- package/skills/cm-ui-preview/SKILL.md +35 -173
- package/skills/cm-ux-master/FEATURES-v4.md +305 -0
- package/skills/cm-ux-master/README-ru.md +135 -0
- package/skills/cm-ux-master/README-vi.md +135 -0
- package/skills/cm-ux-master/README-zh.md +135 -0
- package/skills/cm-ux-master/README.md +489 -0
- package/skills/cm-ux-master/SKILL.md +773 -62
- package/skills/cm-ux-master/cli/README.md +180 -0
- package/skills/cm-ux-master/cli/pyproject.toml +106 -0
- package/skills/cm-ux-master/cli/requirements.txt +21 -0
- package/skills/cm-ux-master/cli/templates/base/skill-core.md +262 -0
- package/skills/cm-ux-master/cli/templates/platforms/claude.yaml +21 -0
- package/skills/cm-ux-master/cli/templates/platforms/cursor.yaml +21 -0
- package/skills/cm-ux-master/cli/templates/platforms/figma.yaml +24 -0
- package/skills/cm-ux-master/cli/templates/platforms/vscode-mcp.yaml +28 -0
- package/skills/cm-ux-master/cli/templates/platforms/windsurf.yaml +21 -0
- package/skills/cm-ux-master/cli/uxmaster/__init__.py +10 -0
- package/skills/cm-ux-master/cli/uxmaster/__main__.py +19 -0
- package/skills/cm-ux-master/cli/uxmaster/cli.py +349 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/__init__.py +8 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/extract.py +18 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/init.py +58 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/mcp.py +194 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/search.py +23 -0
- package/skills/cm-ux-master/cli/uxmaster/commands/validate.py +270 -0
- package/skills/cm-ux-master/cli/uxmaster/search_engine.py +532 -0
- package/skills/cm-ux-master/cli/uxmaster/template_engine.py +458 -0
- package/skills/cm-ux-master/cli/uxmaster/utils/__init__.py +9 -0
- package/skills/cm-ux-master/cli/uxmaster/utils/console.py +42 -0
- package/skills/cm-ux-master/cli/uxmaster/utils/detect.py +83 -0
- package/skills/cm-ux-master/data/accessibility-advanced.csv +26 -0
- package/skills/cm-ux-master/data/animation.csv +31 -0
- package/skills/cm-ux-master/data/charts.csv +26 -0
- package/skills/cm-ux-master/data/colors.csv +97 -0
- package/skills/cm-ux-master/data/design-tests.csv +37 -0
- package/skills/cm-ux-master/data/devices.csv +21 -0
- package/skills/cm-ux-master/data/icons.csv +101 -0
- package/skills/cm-ux-master/data/landing.csv +31 -0
- package/skills/cm-ux-master/data/products.csv +97 -0
- package/skills/cm-ux-master/data/react-performance.csv +45 -0
- package/skills/cm-ux-master/data/responsive.csv +26 -0
- package/skills/cm-ux-master/data/semi-tokens.csv +52 -0
- package/skills/cm-ux-master/data/stacks/angular.csv +34 -0
- package/skills/cm-ux-master/data/stacks/astro.csv +54 -0
- package/skills/cm-ux-master/data/stacks/electron.csv +32 -0
- package/skills/cm-ux-master/data/stacks/flutter.csv +53 -0
- package/skills/cm-ux-master/data/stacks/html-tailwind.csv +56 -0
- package/skills/cm-ux-master/data/stacks/htmx.csv +28 -0
- package/skills/cm-ux-master/data/stacks/jetpack-compose.csv +53 -0
- package/skills/cm-ux-master/data/stacks/nextjs.csv +53 -0
- package/skills/cm-ux-master/data/stacks/nuxt-ui.csv +51 -0
- package/skills/cm-ux-master/data/stacks/nuxtjs.csv +59 -0
- package/skills/cm-ux-master/data/stacks/react-native.csv +52 -0
- package/skills/cm-ux-master/data/stacks/react.csv +54 -0
- package/skills/cm-ux-master/data/stacks/shadcn.csv +61 -0
- package/skills/cm-ux-master/data/stacks/svelte.csv +54 -0
- package/skills/cm-ux-master/data/stacks/swiftui.csv +51 -0
- package/skills/cm-ux-master/data/stacks/tauri.csv +29 -0
- package/skills/cm-ux-master/data/stacks/vue.csv +50 -0
- package/skills/cm-ux-master/data/styles.csv +68 -0
- package/skills/cm-ux-master/data/typography.csv +58 -0
- package/skills/cm-ux-master/data/ui-reasoning.csv +101 -0
- package/skills/cm-ux-master/data/ux-guidelines.csv +100 -0
- package/skills/cm-ux-master/data/ux-laws.csv +49 -0
- package/skills/cm-ux-master/data/web-interface.csv +31 -0
- package/skills/cm-ux-master/docs/LANDING-PAGE.html +377 -0
- package/skills/cm-ux-master/docs/README.md +108 -0
- package/skills/cm-ux-master/docs/css/styles.css +573 -0
- package/skills/cm-ux-master/docs/examples/demo-script.md +319 -0
- package/skills/cm-ux-master/docs/guides/for-designers.md +692 -0
- package/skills/cm-ux-master/docs/guides/for-developers.md +778 -0
- package/skills/cm-ux-master/docs/guides/for-product-managers.md +693 -0
- package/skills/cm-ux-master/docs/guides/react-guide-vi.md +50 -0
- package/skills/cm-ux-master/docs/index.html +1062 -0
- package/skills/cm-ux-master/docs/js/i18n.js +84 -0
- package/skills/cm-ux-master/docs/js/lang/de.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/en.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/fr.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/hi.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/id.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/ja.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/ko.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/ru.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/vi.js +145 -0
- package/skills/cm-ux-master/docs/js/lang/zh.js +145 -0
- package/skills/cm-ux-master/docs/js/main.js +117 -0
- package/skills/cm-ux-master/docs/plan/PHASE1-COMPLETION.md +217 -0
- package/skills/cm-ux-master/docs/plan/PHASE2-COMPLETION.md +199 -0
- package/skills/cm-ux-master/docs/plan/PHASE2-ENHANCED-COMPLETION.md +352 -0
- package/skills/cm-ux-master/docs/plan/PHASE3-VALIDATION-COMPLETION.md +499 -0
- package/skills/cm-ux-master/docs/plan/PHASE4-TESTING-POLISH-COMPLETION.md +483 -0
- package/skills/cm-ux-master/docs/plan/UXM-2.0-ROADMAP.md +681 -0
- package/skills/cm-ux-master/docs/plan/WOW-PITCH.md +410 -0
- package/skills/cm-ux-master/docs/technical/api-reference.md +824 -0
- package/skills/cm-ux-master/docs/technical/harvester-v4.md +328 -0
- package/skills/cm-ux-master/docs/technical/how-it-works.md +1128 -0
- package/skills/cm-ux-master/docs/tutorials/quickstart.md +339 -0
- package/skills/cm-ux-master/docs/tutorials/tutorials.md +939 -0
- package/skills/cm-ux-master/docs/tutorials/user-guide.md +716 -0
- package/skills/cm-ux-master/examples/README.md +63 -0
- package/skills/cm-ux-master/mcp/__init__.py +3 -0
- package/skills/cm-ux-master/mcp/integrations/__init__.py +11 -0
- package/skills/cm-ux-master/mcp/integrations/figma/__init__.py +6 -0
- package/skills/cm-ux-master/mcp/integrations/figma/client.py +293 -0
- package/skills/cm-ux-master/mcp/integrations/figma/plugin/code.js +561 -0
- package/skills/cm-ux-master/mcp/integrations/figma/plugin/ui.html +334 -0
- package/skills/cm-ux-master/mcp/integrations/stitch/__init__.py +5 -0
- package/skills/cm-ux-master/mcp/integrations/stitch/client.py +410 -0
- package/skills/cm-ux-master/mcp/integrations/vscode/package.json +167 -0
- package/skills/cm-ux-master/mcp/integrations/vscode/src/extension.ts +81 -0
- package/skills/cm-ux-master/mcp/mcp-config.json +274 -0
- package/skills/cm-ux-master/mcp/server.py +771 -0
- package/skills/cm-ux-master/mcp/tools/__init__.py +13 -0
- package/skills/cm-ux-master/mcp-server/server.py +595 -0
- package/skills/cm-ux-master/output/fila/FilaDashboard.tsx +47 -0
- package/skills/cm-ux-master/output/fila/components/badge/component.tsx +35 -0
- package/skills/cm-ux-master/output/fila/components/badge/index.ts +1 -0
- package/skills/cm-ux-master/output/fila/components/button/component.tsx +53 -0
- package/skills/cm-ux-master/output/fila/components/button/index.ts +1 -0
- package/skills/cm-ux-master/output/fila/components/card/component.tsx +35 -0
- package/skills/cm-ux-master/output/fila/components/card/index.ts +1 -0
- package/skills/cm-ux-master/output/fila/components/input/component.tsx +41 -0
- package/skills/cm-ux-master/output/fila/components/input/index.ts +1 -0
- package/skills/cm-ux-master/output/fila/design-system.css +151 -0
- package/skills/cm-ux-master/output/fila/design-system.html +1596 -0
- package/skills/cm-ux-master/output/fila/design-system.json +168 -0
- package/skills/cm-ux-master/output/fila/figma-tokens.json +523 -0
- package/skills/cm-ux-master/output/fila/harvest-v4-raw.json +406 -0
- package/skills/cm-ux-master/output/fila/semi-theme-override.css +95 -0
- package/skills/cm-ux-master/output/haravan/HaravanDashboard.tsx +103 -0
- package/skills/cm-ux-master/output/haravan/design-system-v3-live.html +2716 -0
- package/skills/cm-ux-master/output/haravan/design-system-v3.html +1770 -0
- package/skills/cm-ux-master/output/haravan/design-system.html +914 -0
- package/skills/cm-ux-master/output/haravan/figma-tokens.json +84 -0
- package/skills/cm-ux-master/output/haravan/haravan-harvest.json +33 -0
- package/skills/cm-ux-master/output/haravan/harvest-v3-raw.json +167 -0
- package/skills/cm-ux-master/output/haravan/semi-theme-override.css +39 -0
- package/skills/cm-ux-master/references/audit-template.md +257 -0
- package/skills/cm-ux-master/references/cultural-ux.md +346 -0
- package/skills/cm-ux-master/references/dark-patterns.md +362 -0
- package/skills/cm-ux-master/references/heuristic-conflicts.md +296 -0
- package/skills/cm-ux-master/references/krug-principles.md +289 -0
- package/skills/cm-ux-master/references/nielsen-heuristics.md +360 -0
- package/skills/cm-ux-master/references/wcag-checklist.md +306 -0
- package/skills/cm-ux-master/scripts/component_generator.py +631 -0
- package/skills/cm-ux-master/scripts/core.py +305 -0
- package/skills/cm-ux-master/scripts/demo_validation.py +452 -0
- package/skills/cm-ux-master/scripts/design_doc_generator.py +1325 -0
- package/skills/cm-ux-master/scripts/design_system.py +1141 -0
- package/skills/cm-ux-master/scripts/design_system_indexer.py +889 -0
- package/skills/cm-ux-master/scripts/extract_i18n.py +251 -0
- package/skills/cm-ux-master/scripts/extractor.py +1437 -0
- package/skills/cm-ux-master/scripts/figma_bridge.py +406 -0
- package/skills/cm-ux-master/scripts/generate.py +147 -0
- package/skills/cm-ux-master/scripts/harvest_session.py +207 -0
- package/skills/cm-ux-master/scripts/harvester.js +240 -0
- package/skills/cm-ux-master/scripts/harvester_browser.py +717 -0
- package/skills/cm-ux-master/scripts/harvester_cli.py +431 -0
- package/skills/cm-ux-master/scripts/harvester_v1.js +275 -0
- package/skills/cm-ux-master/scripts/harvester_v3.js +620 -0
- package/skills/cm-ux-master/scripts/harvester_v4.js +1003 -0
- package/skills/cm-ux-master/scripts/install.py +528 -0
- package/skills/cm-ux-master/scripts/license.py +81 -0
- package/skills/cm-ux-master/scripts/media/qrpayment.png +0 -0
- package/skills/cm-ux-master/scripts/pro_stubs.py +120 -0
- package/skills/cm-ux-master/scripts/project_registry.py +217 -0
- package/skills/cm-ux-master/scripts/search.py +114 -0
- package/skills/cm-ux-master/scripts/semi_mcp_bridge.py +425 -0
- package/skills/cm-ux-master/scripts/stitch_integration.py +583 -0
- package/skills/cm-ux-master/scripts/test_harvester_v4.py +335 -0
- package/skills/cm-ux-master/scripts/token_mapper.py +626 -0
- package/skills/cm-ux-master/scripts/validation_engine.py +1571 -0
- package/skills/cm-ux-master/scripts/wizard.py +653 -0
- package/skills/cm-ux-master/setup.py +93 -0
- package/skills/cm-ux-master/templates/base/flutter-widget.dart +69 -0
- package/skills/cm-ux-master/templates/base/html-page.html +152 -0
- package/skills/cm-ux-master/templates/base/react-component.tsx +47 -0
- package/skills/cm-ux-master/templates/base/swiftui-view.swift +62 -0
- package/skills/cm-ux-master/templates/quick-start.sh +176 -0
- package/skills/cm-ux-master/tests/automation/batch-validate.sh +250 -0
- package/skills/cm-ux-master/tests/automation/generate-test-projects.sh +561 -0
- package/skills/cm-ux-master/tests/automation/run-all-tests.sh +315 -0
- package/skills/cm-ux-master/tests/test_design_doc.py +145 -0
- package/skills/cm-ux-master/tests/test_devices.py +74 -0
- package/skills/cm-ux-master/tests/test_generator.py +116 -0
- package/skills/cm-ux-master/tests/test_harvest_session.py +131 -0
- package/skills/cm-ux-master/tests/test_harvester.py +127 -0
- package/skills/cm-ux-master/tests/test_harvester_v3.py +324 -0
- package/skills/cm-ux-master/tests/test_mcp_server.py +496 -0
- package/skills/cm-ux-master/tests/test_new_domains.py +108 -0
- package/skills/cm-ux-master/tests/test_new_stacks.py +103 -0
- package/skills/cm-ux-master/tests/test_project_registry.py +146 -0
- package/skills/cm-ux-master/tests/test_semi_mcp_bridge.py +207 -0
- package/skills/cm-ux-master/tests/test_token_mapper.py +247 -0
- package/skills/cm-ux-master/tests/test_validation_engine.py +617 -0
- package/skills/config.schema.json +397 -0
- package/skills/frappe-app-builder.zip +0 -0
- package/skills/jobs-to-be-done/SKILL.md +266 -0
- package/skills/jobs-to-be-done/references/case-studies.md +154 -0
- package/skills/jobs-to-be-done/references/competitive-strategy.md +280 -0
- package/skills/jobs-to-be-done/references/diagnostics.md +158 -0
- package/skills/jobs-to-be-done/references/innovation-process.md +392 -0
- package/skills/jobs-to-be-done/references/organizational-change.md +328 -0
- package/skills/marketplace-report-crawler/SKILL.md +176 -0
- package/skills/marketplace-report-crawler/config/accounts.json +41 -0
- package/skills/marketplace-report-crawler/config/report-types.json +422 -0
- package/skills/marketplace-report-crawler/config/sessions.json +3 -0
- package/skills/marketplace-report-crawler/scripts/ab-wrapper.sh +102 -0
- package/skills/marketplace-report-crawler/scripts/browser-actions/lazada/lazada-actions.js +114 -0
- package/skills/marketplace-report-crawler/scripts/browser-actions/shopee/shopee-actions.js +94 -0
- package/skills/marketplace-report-crawler/scripts/browser-actions/tiktok/tiktok-actions.js +272 -0
- package/skills/marketplace-report-crawler/scripts/crawl-runner.js +281 -0
- package/skills/marketplace-report-crawler/scripts/session-check.sh +72 -0
- package/skills/marketplace-report-crawler/scripts/session-manager.sh +349 -0
- package/skills/marketplace-report-crawler/scripts/setup-folders.sh +83 -0
- package/skills/medical-research/SKILL.md +194 -0
- package/skills/medical-research/scripts/evidence_checker.py +288 -0
- package/skills/mom-test/SKILL.md +267 -0
- package/skills/mom-test/references/avoiding-bad-data.md +221 -0
- package/skills/mom-test/references/case-studies.md +306 -0
- package/skills/mom-test/references/commitment-advancement.md +219 -0
- package/skills/mom-test/references/finding-conversations.md +251 -0
- package/skills/mom-test/references/processing-learning.md +256 -0
- package/skills/mom-test/references/question-patterns.md +198 -0
- package/skills/pandasai-analytics/SKILL.md +251 -0
- package/skills/release-it/SKILL.md +235 -0
- package/skills/release-it/references/anti-patterns.md +279 -0
- package/skills/release-it/references/capacity-planning.md +285 -0
- package/skills/release-it/references/chaos-engineering.md +325 -0
- package/skills/release-it/references/deployment-strategies.md +331 -0
- package/skills/release-it/references/observability.md +301 -0
- package/skills/release-it/references/stability-patterns.md +355 -0
- package/skills/scripts/sync-ide-skills.sh +61 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-audit.md +37 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-compare.md +34 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-export.md +51 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-generate.md +39 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-scaffold.md +52 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-simulate.md +25 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-stats.md +31 -0
- package/skills/skill-creator-ultra/.agents/workflows/skill-validate.md +25 -0
- package/skills/skill-creator-ultra/README.md +1242 -0
- package/skills/skill-creator-ultra/SKILL.md +388 -0
- package/skills/skill-creator-ultra/agents/analyzer.md +274 -0
- package/skills/skill-creator-ultra/agents/comparator.md +202 -0
- package/skills/skill-creator-ultra/agents/grader.md +223 -0
- package/skills/skill-creator-ultra/assets/eval_review.html +146 -0
- package/skills/skill-creator-ultra/eval-viewer/generate_review.py +471 -0
- package/skills/skill-creator-ultra/eval-viewer/viewer.html +1325 -0
- package/skills/skill-creator-ultra/examples/example_anthropic_frontend.md +109 -0
- package/skills/skill-creator-ultra/examples/example_anthropic_pdf.md +116 -0
- package/skills/skill-creator-ultra/examples/example_api_docs.md +189 -0
- package/skills/skill-creator-ultra/examples/example_db_migration.md +253 -0
- package/skills/skill-creator-ultra/examples/example_git_commit.md +111 -0
- package/skills/skill-creator-ultra/install.ps1 +289 -0
- package/skills/skill-creator-ultra/install.sh +313 -0
- package/skills/skill-creator-ultra/phases/phase1_interview.md +202 -0
- package/skills/skill-creator-ultra/phases/phase2_extract.md +55 -0
- package/skills/skill-creator-ultra/phases/phase3_detect.md +57 -0
- package/skills/skill-creator-ultra/phases/phase4_generate.md +543 -0
- package/skills/skill-creator-ultra/phases/phase5_test.md +319 -0
- package/skills/skill-creator-ultra/phases/phase6_eval.md +301 -0
- package/skills/skill-creator-ultra/phases/phase7_iterate.md +103 -0
- package/skills/skill-creator-ultra/phases/phase8_optimize.md +113 -0
- package/skills/skill-creator-ultra/resources/advanced_patterns.md +499 -0
- package/skills/skill-creator-ultra/resources/anti_patterns.md +376 -0
- package/skills/skill-creator-ultra/resources/blueprints.md +498 -0
- package/skills/skill-creator-ultra/resources/checklist.md +243 -0
- package/skills/skill-creator-ultra/resources/composition_cookbook.md +291 -0
- package/skills/skill-creator-ultra/resources/description_optimization.md +90 -0
- package/skills/skill-creator-ultra/resources/eval_guide.md +133 -0
- package/skills/skill-creator-ultra/resources/industry_questions.md +189 -0
- package/skills/skill-creator-ultra/resources/interview_questions.md +200 -0
- package/skills/skill-creator-ultra/resources/pattern_detection.md +200 -0
- package/skills/skill-creator-ultra/resources/prompt_engineering.md +531 -0
- package/skills/skill-creator-ultra/resources/schemas.md +430 -0
- package/skills/skill-creator-ultra/resources/script_integration.md +593 -0
- package/skills/skill-creator-ultra/resources/scripts_guide.md +339 -0
- package/skills/skill-creator-ultra/resources/skill_template.md +124 -0
- package/skills/skill-creator-ultra/resources/skill_writing_guide.md +634 -0
- package/skills/skill-creator-ultra/resources/versioning_guide.md +193 -0
- package/skills/skill-creator-ultra/scripts/ci_eval.py +200 -0
- package/skills/skill-creator-ultra/scripts/package_skill.py +165 -0
- package/skills/skill-creator-ultra/scripts/simulate_skill.py +398 -0
- package/skills/skill-creator-ultra/scripts/skill_audit.py +611 -0
- package/skills/skill-creator-ultra/scripts/skill_compare.py +265 -0
- package/skills/skill-creator-ultra/scripts/skill_export.py +334 -0
- package/skills/skill-creator-ultra/scripts/skill_scaffold.py +403 -0
- package/skills/skill-creator-ultra/scripts/skill_stats.py +339 -0
- package/skills/skill-creator-ultra/scripts/validate_skill.py +411 -0
- package/skills/tailwind-mastery/SKILL.md +229 -0
- package/skills/vercel-react-best-practices/AGENTS.md +3373 -0
- package/skills/vercel-react-best-practices/README.md +123 -0
- package/skills/vercel-react-best-practices/SKILL.md +143 -0
- package/skills/vercel-react-best-practices/rules/_sections.md +46 -0
- package/skills/vercel-react-best-practices/rules/_template.md +28 -0
- package/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +142 -0
- package/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/skills/cro-methodology/SKILL.md +0 -98
- /package/skills/{cro-methodology → cm-cro-methodology}/references/COPYWRITING.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/OBJECTIONS.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/PERSUASION.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/RESEARCH.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/funnel-analysis.md +0 -0
- /package/skills/{cro-methodology → cm-cro-methodology}/references/testing-methodology.md +0 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release-it
|
|
3
|
+
description: 'Build production-ready systems with stability patterns: circuit breakers, bulkheads, timeouts, and retry logic. Use when the user mentions "production outage", "circuit breaker", "timeout strategy", "deployment pipeline", or "chaos engineering". Covers capacity planning, health checks, and anti-fragility patterns. For data systems, see ddia-systems. For system architecture, see system-design.'
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
author: wondelai
|
|
7
|
+
version: "1.0.1"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Release It! Framework
|
|
11
|
+
|
|
12
|
+
Framework for designing, deploying, and operating production-ready software systems. Based on a fundamental truth: the software that passes QA is not the software that survives production. Production is a hostile environment -- and your system must be built to expect and handle failure at every level.
|
|
13
|
+
|
|
14
|
+
## Core Principle
|
|
15
|
+
|
|
16
|
+
**Every system will eventually be pushed beyond its design limits.** The question is not whether failures will happen, but whether your system degrades gracefully or collapses catastrophically. Production-ready software is not just correct -- it is resilient, observable, and designed to operate through partial failures without human intervention.
|
|
17
|
+
|
|
18
|
+
## Scoring
|
|
19
|
+
|
|
20
|
+
**Goal: 10/10.** When reviewing or creating production systems, rate them 0-10 based on adherence to the principles below. A 10/10 means full alignment with all guidelines; lower scores indicate gaps to address. Always provide the current score and specific improvements needed to reach 10/10.
|
|
21
|
+
|
|
22
|
+
## The Release It! Framework
|
|
23
|
+
|
|
24
|
+
Six areas that determine whether software survives contact with production:
|
|
25
|
+
|
|
26
|
+
### 1. Stability Anti-Patterns
|
|
27
|
+
|
|
28
|
+
**Core concept:** Failures propagate through integration points, cascading across system boundaries. The most dangerous patterns are not bugs in your code -- they are emergent behaviors that arise when systems interact under stress.
|
|
29
|
+
|
|
30
|
+
**Why it works:** Recognizing anti-patterns lets you identify and eliminate the cracks before production traffic finds them. Every production outage traces back to one or more of these patterns. They are predictable, recurring, and preventable.
|
|
31
|
+
|
|
32
|
+
**Key insights:**
|
|
33
|
+
- Integration points are the number-one killer of production systems -- every socket, HTTP call, or queue is a risk
|
|
34
|
+
- Cascading failures spread when one system's failure causes its callers to fail, which causes their callers to fail
|
|
35
|
+
- Slow responses are worse than no response -- they tie up threads, exhaust pools, and propagate delays across the entire call chain
|
|
36
|
+
- Unbounded result sets turn a harmless query into an out-of-memory crash when data grows beyond test assumptions
|
|
37
|
+
- Users generate load patterns that no test suite can predict -- bots, retry storms, and flash crowds
|
|
38
|
+
- Self-denial attacks occur when your own marketing, coupons, or viral features overwhelm your infrastructure
|
|
39
|
+
- Blocked threads are the silent killer -- deadlocks and resource contention show no errors until everything stops
|
|
40
|
+
|
|
41
|
+
**Code applications:**
|
|
42
|
+
|
|
43
|
+
| Context | Pattern | Example |
|
|
44
|
+
|---------|---------|---------|
|
|
45
|
+
| **HTTP calls** | Assume every remote call can fail, hang, or return garbage | Wrap all external calls with timeout + circuit breaker |
|
|
46
|
+
| **Database queries** | Enforce result set limits on every query | Add `LIMIT` clause; paginate all list endpoints |
|
|
47
|
+
| **Thread pools** | Isolate pools per dependency to prevent cross-contamination | Separate thread pool for payment gateway vs. search |
|
|
48
|
+
| **Load testing** | Simulate realistic traffic including spikes and abuse patterns | Use production traffic replays, not synthetic happy-path scripts |
|
|
49
|
+
| **Marketing events** | Coordinate launches with capacity planning | Pre-scale before Black Friday; add queue for coupon redemption |
|
|
50
|
+
|
|
51
|
+
See: [references/anti-patterns.md](references/anti-patterns.md) for detailed analysis of each anti-pattern with failure scenarios and detection strategies.
|
|
52
|
+
|
|
53
|
+
### 2. Stability Patterns
|
|
54
|
+
|
|
55
|
+
**Core concept:** Counter each anti-pattern with a stability pattern. Circuit breakers stop cascading failures. Bulkheads isolate blast radius. Timeouts reclaim stuck resources. Together they create a system that bends under load but does not break.
|
|
56
|
+
|
|
57
|
+
**Why it works:** These patterns work because they accept failure as inevitable and design the system's response to failure, rather than trying to prevent all failures. A circuit breaker that trips is the system working correctly -- it is protecting itself from a downstream failure.
|
|
58
|
+
|
|
59
|
+
**Key insights:**
|
|
60
|
+
- Circuit Breaker: three states (closed, open, half-open) -- trips after threshold failures, periodically tests recovery
|
|
61
|
+
- Bulkheads: partition resources so one failing component cannot drain the entire system
|
|
62
|
+
- Timeouts: every outbound call needs both a connect timeout and a read timeout -- and timeouts must propagate up the call chain
|
|
63
|
+
- Retry with backoff: exponential backoff + jitter prevents thundering herd on recovery
|
|
64
|
+
- Fail Fast: if you know a request will fail, reject it immediately -- do not waste resources attempting it
|
|
65
|
+
- Steady State: systems accumulate cruft (logs, sessions, temp files) -- design for automatic cleanup
|
|
66
|
+
- Let It Crash: sometimes the safest recovery is to restart the process cleanly rather than limping along in an unknown state
|
|
67
|
+
- Handshaking: let the server tell the client whether it can accept work before the client sends it
|
|
68
|
+
|
|
69
|
+
**Code applications:**
|
|
70
|
+
|
|
71
|
+
| Context | Pattern | Example |
|
|
72
|
+
|---------|---------|---------|
|
|
73
|
+
| **Service calls** | Circuit Breaker with threshold and recovery timeout | Open after 5 failures in 60s; half-open after 30s |
|
|
74
|
+
| **Resource isolation** | Bulkhead with dedicated pools per dependency | Separate connection pools for critical vs. non-critical services |
|
|
75
|
+
| **Network calls** | Timeout with propagation | Connect: 1s, read: 5s; propagate deadline to downstream calls |
|
|
76
|
+
| **Retries** | Exponential backoff + jitter + retry budget | Base 100ms, max 3 retries, 20% retry budget across fleet |
|
|
77
|
+
| **Data cleanup** | Steady State with automated purging | Delete sessions older than 24h; rotate logs at 500MB |
|
|
78
|
+
|
|
79
|
+
See: [references/stability-patterns.md](references/stability-patterns.md) for implementation details, state machines, threshold tuning, and pattern combinations.
|
|
80
|
+
|
|
81
|
+
### 3. Capacity and Availability
|
|
82
|
+
|
|
83
|
+
**Core concept:** Capacity is not a single number -- it is a multi-dimensional function of CPU, memory, network, disk I/O, connection pools, and thread counts. Capacity planning means understanding which resource becomes the bottleneck first and at what load level.
|
|
84
|
+
|
|
85
|
+
**Why it works:** Systems that are not capacity-tested fail in production at the worst possible moment -- during peak load. Understanding your system's actual limits (not theoretical limits) lets you set realistic SLAs and plan scaling before users hit the wall.
|
|
86
|
+
|
|
87
|
+
**Key insights:**
|
|
88
|
+
- Performance testing taxonomy: load test (expected traffic), stress test (beyond limits), soak test (sustained load over time), spike test (sudden bursts)
|
|
89
|
+
- The Universal Scalability Law: throughput does not scale linearly -- contention and coherence costs cause diminishing returns
|
|
90
|
+
- Connection pools are finite and precious -- a pool exhaustion looks identical to a database outage from the application's perspective
|
|
91
|
+
- Thread pools must be sized based on measured throughput, not guesses -- too few starve the system, too many cause context-switching overhead
|
|
92
|
+
- Myths: "The cloud is infinitely scalable" -- auto-scaling has lag time, cold-start costs, and hard limits
|
|
93
|
+
- Resource pools need health checks, eviction policies, and maximum lifetime limits
|
|
94
|
+
|
|
95
|
+
**Code applications:**
|
|
96
|
+
|
|
97
|
+
| Context | Pattern | Example |
|
|
98
|
+
|---------|---------|---------|
|
|
99
|
+
| **Load testing** | Ramp to expected peak, then 2x, observe degradation curve | Gradually increase RPS until latency exceeds SLO |
|
|
100
|
+
| **Connection pools** | Size based on measured concurrency, not defaults | Measure active connections under load; set pool to P99 + 20% headroom |
|
|
101
|
+
| **Auto-scaling** | Define scaling triggers with appropriate cooldown | Scale on CPU > 70% sustained 3 min; cooldown 5 min |
|
|
102
|
+
| **Soak testing** | Run at 80% capacity for 24-72 hours | Catch memory leaks, connection leaks, file handle exhaustion |
|
|
103
|
+
| **Capacity model** | Document resource bottleneck per service | "Service X is memory-bound at 2000 RPS; needs 4GB per instance" |
|
|
104
|
+
|
|
105
|
+
See: [references/capacity-planning.md](references/capacity-planning.md) for testing methodologies, resource pool management, and scalability modeling.
|
|
106
|
+
|
|
107
|
+
### 4. Deployment and Release
|
|
108
|
+
|
|
109
|
+
**Core concept:** Deployment (putting code on servers) and release (exposing code to users) are separate operations that should be decoupled. Separating them gives you the ability to deploy without risk and release with confidence.
|
|
110
|
+
|
|
111
|
+
**Why it works:** Most outages are caused by changes -- deployments, configuration updates, database migrations. Decoupling deployment from release means you can deploy code to production, verify it works, and only then route traffic to it. If something goes wrong, you roll back the release, not the deployment.
|
|
112
|
+
|
|
113
|
+
**Key insights:**
|
|
114
|
+
- Zero-downtime deployment is non-negotiable for any system with users -- rolling deploys, blue-green, or canary
|
|
115
|
+
- Feature flags decouple deployment from release -- dark-launch code and enable it independently
|
|
116
|
+
- Database migrations must be backward-compatible -- the old code and new code will run simultaneously during deployment
|
|
117
|
+
- Immutable infrastructure: never patch a running server -- build a new image, deploy it, destroy the old one
|
|
118
|
+
- Canary releases limit blast radius by routing a small percentage of traffic to the new version first
|
|
119
|
+
- Rollback must be faster than roll-forward -- if rollback takes 30 minutes, you will avoid deploying
|
|
120
|
+
|
|
121
|
+
**Code applications:**
|
|
122
|
+
|
|
123
|
+
| Context | Pattern | Example |
|
|
124
|
+
|---------|---------|---------|
|
|
125
|
+
| **Deploys** | Blue-green with health check gate | Deploy to green; run smoke tests; swap router |
|
|
126
|
+
| **Progressive rollout** | Canary with automated rollback | Route 5% traffic to canary; auto-rollback if error rate > 1% |
|
|
127
|
+
| **Feature launch** | Feature flags with emergency off switch | Ship code behind flag; enable for 10% of users; monitor; ramp |
|
|
128
|
+
| **Schema changes** | Expand-contract migration pattern | Add new column; deploy code that writes both; backfill; drop old column |
|
|
129
|
+
| **Rollback** | Instant rollback via traffic routing | Keep previous version running; rollback = switch load balancer target |
|
|
130
|
+
|
|
131
|
+
See: [references/deployment-strategies.md](references/deployment-strategies.md) for deployment patterns, migration strategies, and infrastructure-as-code practices.
|
|
132
|
+
|
|
133
|
+
### 5. Health Checks and Observability
|
|
134
|
+
|
|
135
|
+
**Core concept:** You cannot operate what you cannot observe. Observability is not an afterthought -- it is a first-class design concern. Health checks, metrics, logs, and traces are the sensory organs of your system in production.
|
|
136
|
+
|
|
137
|
+
**Why it works:** Production systems fail in ways that are invisible without proper instrumentation. A health check that only returns "OK" tells you nothing. Metrics without context are noise. Observability done right gives you the ability to answer questions about your system that you did not anticipate at design time.
|
|
138
|
+
|
|
139
|
+
**Key insights:**
|
|
140
|
+
- Health checks come in two flavors: shallow (process alive) and deep (dependencies reachable, resources available)
|
|
141
|
+
- The three pillars of observability: structured logs (what happened), metrics (how much), distributed traces (where and how long)
|
|
142
|
+
- RED method for services: Rate (requests/sec), Errors (error rate), Duration (latency distribution)
|
|
143
|
+
- USE method for resources: Utilization (%), Saturation (queue depth), Errors (error count)
|
|
144
|
+
- SLIs measure user experience; SLOs set targets; SLAs create contractual obligations -- define them in that order
|
|
145
|
+
- Alerting on symptoms (user-facing errors) beats alerting on causes (CPU usage) -- alert on what users feel
|
|
146
|
+
- Dashboards should answer "Is the system healthy right now?" within 5 seconds of looking
|
|
147
|
+
|
|
148
|
+
**Code applications:**
|
|
149
|
+
|
|
150
|
+
| Context | Pattern | Example |
|
|
151
|
+
|---------|---------|---------|
|
|
152
|
+
| **Health endpoints** | Deep health check with dependency status | `/health` returns status of DB, cache, queue, and disk space |
|
|
153
|
+
| **Service metrics** | RED method instrumentation | Track request rate, error rate, and p50/p95/p99 latency per endpoint |
|
|
154
|
+
| **Resource metrics** | USE method for infrastructure | Track CPU utilization, request queue depth, and error counts per host |
|
|
155
|
+
| **Distributed tracing** | Propagate trace context across service boundaries | Inject trace ID in headers; correlate logs across services |
|
|
156
|
+
| **Alerting** | Alert on SLO burn rate, not raw thresholds | "Error budget burning 10x normal rate" vs. "CPU > 80%" |
|
|
157
|
+
|
|
158
|
+
See: [references/observability.md](references/observability.md) for health check design, metrics instrumentation, SLO frameworks, and alerting strategies.
|
|
159
|
+
|
|
160
|
+
### 6. Adaptation and Chaos Engineering
|
|
161
|
+
|
|
162
|
+
> **Safety note:** Chaos engineering experiments are design-time planning activities. The patterns below describe *what to test* and *what to verify*, not actions for an AI agent to execute autonomously. All failure injection must be performed by authorized engineers using dedicated tooling (e.g., Gremlin, Litmus, AWS FIS) with proper approvals, rollback plans, and blast radius controls in place.
|
|
163
|
+
|
|
164
|
+
**Core concept:** Confidence in your system's resilience comes from testing it under realistic failure conditions. Chaos engineering is the discipline of experimenting on a system in a controlled environment to build confidence in its ability to withstand turbulent conditions.
|
|
165
|
+
|
|
166
|
+
**Why it works:** You cannot know how your system handles failure until it actually fails. Waiting for production incidents to discover weaknesses is reactive and expensive. Chaos engineering proactively injects failures in a controlled way, turning unknown-unknowns into known-knowns before they cause real outages.
|
|
167
|
+
|
|
168
|
+
**Key insights:**
|
|
169
|
+
- Define steady state first -- you need a measurable baseline to detect when behavior deviates
|
|
170
|
+
- Start small in non-production environments: terminate a single process, add latency to one call -- then escalate gradually with approvals
|
|
171
|
+
- Minimize blast radius: use canary populations, feature flags, and emergency stop mechanisms for experiments
|
|
172
|
+
- Production experiments require explicit authorization, monitoring, and immediate rollback capability
|
|
173
|
+
- Automate recurring experiments so resilience is continuously verified, not a one-time event
|
|
174
|
+
- GameDay exercises combine chaos engineering with incident response practice -- test both the system and the team
|
|
175
|
+
- Every experiment should have a hypothesis: "We believe that when X fails, the system will Y"
|
|
176
|
+
- Build a culture where finding weaknesses is celebrated, not punished
|
|
177
|
+
|
|
178
|
+
**Code applications:**
|
|
179
|
+
|
|
180
|
+
| Context | Pattern | Example |
|
|
181
|
+
|---------|---------|---------|
|
|
182
|
+
| **Process failure** | Controlled instance termination (via chaos tooling) | Terminate one pod using Gremlin/Litmus; verify service recovers within SLO |
|
|
183
|
+
| **Network failure** | Inject latency or partition between services (via chaos tooling) | Add 500ms latency to DB calls; verify circuit breaker trips |
|
|
184
|
+
| **Dependency failure** | Simulate downstream service outage (via chaos tooling) | Return 503 from payment API; verify graceful degradation |
|
|
185
|
+
| **Resource exhaustion** | Simulate resource pressure (via chaos tooling) | Stress-test memory limits; verify process restarts cleanly |
|
|
186
|
+
| **GameDay** | Scheduled team exercise with realistic failure scenario | "Primary database goes read-only at 2pm" -- practice response |
|
|
187
|
+
|
|
188
|
+
See: [references/chaos-engineering.md](references/chaos-engineering.md) for experiment design, blast radius management, and building a chaos engineering practice.
|
|
189
|
+
|
|
190
|
+
## Common Mistakes
|
|
191
|
+
|
|
192
|
+
| Mistake | Why It Fails | Fix |
|
|
193
|
+
|---------|-------------|------|
|
|
194
|
+
| **No timeouts on outbound calls** | One slow dependency freezes the entire system | Set connect and read timeouts on every external call |
|
|
195
|
+
| **Unbounded retries** | Retry storms amplify failures instead of recovering from them | Use exponential backoff, jitter, and fleet-wide retry budgets |
|
|
196
|
+
| **Shared thread/connection pools** | One failing dependency drains resources from all features | Bulkhead: isolate pools per dependency or feature |
|
|
197
|
+
| **Shallow health checks only** | Load balancer routes traffic to instances with broken dependencies | Implement deep health checks that verify downstream connectivity |
|
|
198
|
+
| **Testing only the happy path** | System works perfectly until the first real failure | Load test, soak test, and chaos test before every major release |
|
|
199
|
+
| **Coupling deploy and release** | Every deployment is a high-risk event with all-or-nothing rollout | Use feature flags, canary releases, and blue-green deployments |
|
|
200
|
+
| **Alerting on causes, not symptoms** | High CPU alerts fire but users are fine; errors spike but no alert fires | Alert on user-facing SLIs: error rate, latency, availability |
|
|
201
|
+
| **No capacity model** | System falls over at 2x load during an event nobody planned for | Model bottleneck resources; load test to 3x expected peak |
|
|
202
|
+
|
|
203
|
+
## Quick Diagnostic
|
|
204
|
+
|
|
205
|
+
Audit any production system:
|
|
206
|
+
|
|
207
|
+
| Question | If No | Action |
|
|
208
|
+
|----------|-------|--------|
|
|
209
|
+
| Does every outbound call have a timeout? | Calls can hang indefinitely, blocking threads | Add connect and read timeouts to all external calls |
|
|
210
|
+
| Are circuit breakers in place for critical dependencies? | One dependency failure takes down the whole system | Add circuit breakers with appropriate thresholds |
|
|
211
|
+
| Are thread/connection pools isolated per dependency? | Shared pools allow cross-contamination of failures | Implement bulkhead pattern with dedicated pools |
|
|
212
|
+
| Can you deploy without downtime? | Deployments cause user-visible outages | Implement rolling, blue-green, or canary deployment |
|
|
213
|
+
| Do health checks verify dependency connectivity? | Dead instances receive traffic; partial failures go undetected | Add deep health checks that test DB, cache, queue |
|
|
214
|
+
| Are logs, metrics, and traces correlated? | Debugging requires manual log searching across services | Implement distributed tracing with correlated IDs |
|
|
215
|
+
| Have you load-tested beyond expected peak? | Unknown failure mode under real load | Load test to 2-3x expected peak; document breaking point |
|
|
216
|
+
| Do you practice failure injection? | Resilience is theoretical, not verified | Start chaos engineering with low-risk experiments |
|
|
217
|
+
|
|
218
|
+
## Reference Files
|
|
219
|
+
|
|
220
|
+
- [anti-patterns.md](references/anti-patterns.md): Integration point failures, cascading failures, blocked threads, unbounded result sets, self-denial attacks, slow responses
|
|
221
|
+
- [stability-patterns.md](references/stability-patterns.md): Circuit Breaker, Bulkhead, Timeout, Retry, Fail Fast, Steady State, Let It Crash, Handshaking
|
|
222
|
+
- [capacity-planning.md](references/capacity-planning.md): Load/stress/soak testing, connection pool sizing, thread pool tuning, Universal Scalability Law
|
|
223
|
+
- [deployment-strategies.md](references/deployment-strategies.md): Blue-green, canary, rolling deploys, feature flags, database migrations, immutable infrastructure
|
|
224
|
+
- [observability.md](references/observability.md): Health checks, RED/USE methods, SLIs/SLOs/SLAs, distributed tracing, alerting strategy
|
|
225
|
+
- [chaos-engineering.md](references/chaos-engineering.md): Steady state hypothesis, failure injection, GameDay exercises, blast radius management
|
|
226
|
+
|
|
227
|
+
## Further Reading
|
|
228
|
+
|
|
229
|
+
This skill is based on Michael Nygard's essential guide to building production-ready software. For the complete methodology, war stories, and implementation details:
|
|
230
|
+
|
|
231
|
+
- [*"Release It! Design and Deploy Production-Ready Software"* (2nd Edition)](https://www.amazon.com/Release-Design-Deploy-Production-Ready-Software/dp/1680502395?tag=wondelai00-20) by Michael T. Nygard
|
|
232
|
+
|
|
233
|
+
## About the Author
|
|
234
|
+
|
|
235
|
+
**Michael T. Nygard** is a software architect and author with over 30 years of experience building and operating large-scale production systems. He has worked across industries including finance, retail, and government, and has been responsible for systems handling millions of transactions per day. Nygard is known for bridging the gap between development and operations, advocating that architects must be responsible for the systems they design long after the code is written. The first edition of *Release It!* (2007) became a foundational text in the DevOps and site reliability engineering movements. The second edition (2018) expands coverage to cloud-native architectures, containerization, and modern deployment practices. Nygard is a frequent conference speaker and has contributed to the broader conversation about resilience engineering, sociotechnical systems, and the human factors that influence production stability.
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
# Stability Anti-Patterns
|
|
2
|
+
|
|
3
|
+
Production systems do not fail because of bugs found in unit tests. They fail because of emergent behaviors that arise when systems interact under real-world conditions -- load spikes, network partitions, slow dependencies, and data growth that exceeds every assumption made during development.
|
|
4
|
+
|
|
5
|
+
Michael Nygard identifies a recurring set of anti-patterns that cause the vast majority of production outages. Recognizing these patterns is the first step toward building resilient systems.
|
|
6
|
+
|
|
7
|
+
## 1. Integration Points: The Number-One Killer
|
|
8
|
+
|
|
9
|
+
Every integration point -- every socket connection, HTTP call, database query, message queue interaction, or third-party API call -- is a potential failure point. Integration points are the number-one killer of production systems because they introduce failure modes that do not exist in isolated testing.
|
|
10
|
+
|
|
11
|
+
### How Integration Points Fail
|
|
12
|
+
|
|
13
|
+
| Failure Mode | Description | Consequence |
|
|
14
|
+
|-------------|-------------|-------------|
|
|
15
|
+
| **Connection refused** | Remote host rejects the connection | Fast failure; relatively benign |
|
|
16
|
+
| **Connection timeout** | Remote host does not respond to SYN | Thread blocked for 30-120 seconds (OS default) |
|
|
17
|
+
| **Read timeout** | Connection established but response never arrives | Thread blocked indefinitely without explicit timeout |
|
|
18
|
+
| **Partial response** | Connection drops mid-response | Corrupted data; parser exceptions |
|
|
19
|
+
| **Slow response** | Response eventually arrives but takes minutes | Threads accumulate; pool exhaustion; cascading failure |
|
|
20
|
+
| **Protocol violation** | Remote returns unexpected content type or format | Unhandled exceptions; crash |
|
|
21
|
+
|
|
22
|
+
### Defense Strategy
|
|
23
|
+
|
|
24
|
+
Every integration point needs a defense-in-depth strategy:
|
|
25
|
+
|
|
26
|
+
1. **Timeouts** on every connection and read operation -- never use defaults
|
|
27
|
+
2. **Circuit breakers** to stop calling a failing dependency
|
|
28
|
+
3. **Bulkheads** to isolate the failure from other parts of the system
|
|
29
|
+
4. **Fallbacks** to degrade gracefully when the dependency is unavailable
|
|
30
|
+
5. **Monitoring** to detect degradation before users notice
|
|
31
|
+
|
|
32
|
+
### Real-World Example
|
|
33
|
+
|
|
34
|
+
A retail application calls an inventory service to check stock levels. The inventory service's database enters a long garbage collection pause. The inventory service stops responding but does not close connections. The retail application's thread pool fills with threads waiting for inventory responses. The retail application can no longer serve any requests -- including requests that do not need inventory data. The entire site goes down because one dependency slowed down.
|
|
35
|
+
|
|
36
|
+
**Root cause:** No read timeout on the inventory service call. No bulkhead isolating inventory calls from other request handling.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 2. Cascading Failures
|
|
41
|
+
|
|
42
|
+
A cascading failure occurs when a failure in one system causes failures in the systems that depend on it, which in turn cause failures in the systems that depend on them, and so on. The defining characteristic of a cascading failure is that the damage spreads far beyond the original failure.
|
|
43
|
+
|
|
44
|
+
### Cascade Mechanics
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
Service A (database overloaded)
|
|
48
|
+
→ Service B (calls A, threads block waiting)
|
|
49
|
+
→ Service C (calls B, threads block waiting)
|
|
50
|
+
→ Service D (calls C, threads block waiting)
|
|
51
|
+
→ User-facing application (completely unresponsive)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Why Cascading Failures Are Devastating
|
|
55
|
+
|
|
56
|
+
- The original failure may be minor (one database query slow)
|
|
57
|
+
- The cascade amplifies the failure geometrically
|
|
58
|
+
- Each layer adds more blocked threads, more resource consumption
|
|
59
|
+
- By the time the cascade is visible, every system in the chain is degraded
|
|
60
|
+
- Recovery requires coordinated action across all affected systems
|
|
61
|
+
|
|
62
|
+
### Breaking the Cascade
|
|
63
|
+
|
|
64
|
+
| Pattern | How It Breaks the Cascade |
|
|
65
|
+
|---------|--------------------------|
|
|
66
|
+
| **Circuit Breaker** | Stops calling the failing service; returns error immediately |
|
|
67
|
+
| **Timeout** | Limits how long a caller waits; frees threads to handle other work |
|
|
68
|
+
| **Bulkhead** | Isolates the failing dependency's impact to a limited set of resources |
|
|
69
|
+
| **Fallback** | Provides degraded but functional response when dependency fails |
|
|
70
|
+
| **Fail Fast** | Rejects requests immediately when system knows it cannot fulfill them |
|
|
71
|
+
|
|
72
|
+
### Prevention Checklist
|
|
73
|
+
|
|
74
|
+
- [ ] Every service-to-service call has a timeout
|
|
75
|
+
- [ ] Circuit breakers protect against sustained failures
|
|
76
|
+
- [ ] Failure in one dependency does not affect unrelated features
|
|
77
|
+
- [ ] Fallback behavior is defined for every critical dependency
|
|
78
|
+
- [ ] Cascading failure scenarios are included in chaos experiments
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 3. Users as a Source of Load
|
|
83
|
+
|
|
84
|
+
Users are not gentle with your system. They do not arrive in an orderly queue at predictable intervals. Real user behavior generates load patterns that are fundamentally different from what synthetic tests produce.
|
|
85
|
+
|
|
86
|
+
### Unexpected User Behaviors
|
|
87
|
+
|
|
88
|
+
| Behavior | Load Impact | Example |
|
|
89
|
+
|----------|------------|---------|
|
|
90
|
+
| **Refresh storms** | Multiplies load when pages are slow | Users hit F5 repeatedly when checkout is slow |
|
|
91
|
+
| **Bot traffic** | Can exceed human traffic by 10-100x | Scrapers, search engines, monitoring tools |
|
|
92
|
+
| **Flash crowds** | Sudden, massive traffic spikes | Hacker News front page, TV mention, viral tweet |
|
|
93
|
+
| **Abandoned sessions** | Resource consumption without completion | Users open carts, leave; sessions consume server memory |
|
|
94
|
+
| **Power users** | Disproportionate resource consumption | One user with 50,000 items in a list; API consumers with no rate limit |
|
|
95
|
+
|
|
96
|
+
### Defense Strategy
|
|
97
|
+
|
|
98
|
+
- Rate limiting per user, per IP, and per API key
|
|
99
|
+
- Session limits and timeouts to reclaim abandoned resources
|
|
100
|
+
- Bot detection and separate handling (different rate limits, caching strategies)
|
|
101
|
+
- Graceful degradation under load (serve cached content, disable non-essential features)
|
|
102
|
+
- Load shedding: deliberately reject some requests to preserve service for others
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 4. Blocked Threads
|
|
107
|
+
|
|
108
|
+
Blocked threads are the silent killer. Unlike a crash (which is loud and obvious), blocked threads produce no errors, no exceptions, and no log entries. The system simply stops processing requests.
|
|
109
|
+
|
|
110
|
+
### Common Causes of Blocked Threads
|
|
111
|
+
|
|
112
|
+
| Cause | How It Blocks | Detection |
|
|
113
|
+
|-------|--------------|-----------|
|
|
114
|
+
| **Missing timeouts** | Thread waits indefinitely for a response | Thread dump shows threads in WAITING/TIMED_WAITING |
|
|
115
|
+
| **Deadlocks** | Two threads each hold a lock the other needs | Thread dump shows circular lock dependencies |
|
|
116
|
+
| **Synchronized access** | All threads queue for a single lock | Throughput drops to single-threaded speed |
|
|
117
|
+
| **DNS resolution** | DNS lookup blocks the calling thread | Threads stuck in `InetAddress.getByName()` |
|
|
118
|
+
| **Log file I/O** | Synchronous logging blocks application threads | Threads stuck in file write; especially during disk pressure |
|
|
119
|
+
|
|
120
|
+
### Detection and Prevention
|
|
121
|
+
|
|
122
|
+
**Detection:**
|
|
123
|
+
- Thread dump analysis (scheduled periodic dumps, not just during incidents)
|
|
124
|
+
- Thread pool utilization metrics (active/idle/max)
|
|
125
|
+
- Request latency distribution (sudden latency spike = possible thread starvation)
|
|
126
|
+
- Health checks that verify thread pool availability
|
|
127
|
+
|
|
128
|
+
**Prevention:**
|
|
129
|
+
- Explicit timeouts on all blocking operations
|
|
130
|
+
- Asynchronous I/O where possible
|
|
131
|
+
- Bounded queues with rejection policies (not unbounded queues that grow forever)
|
|
132
|
+
- Thread pool sizing based on measured workload, not defaults
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 5. Self-Denial Attacks
|
|
137
|
+
|
|
138
|
+
A self-denial attack is when your own system, marketing, or business operations generate load that overwhelms your infrastructure. The irony is that these are "success disasters" -- everything is working as intended, but the system cannot handle its own success.
|
|
139
|
+
|
|
140
|
+
### Common Self-Denial Scenarios
|
|
141
|
+
|
|
142
|
+
| Scenario | Mechanism | Prevention |
|
|
143
|
+
|----------|-----------|------------|
|
|
144
|
+
| **Marketing email blast** | 500,000 emails sent simultaneously, 10% click through in 5 minutes | Stagger sends over hours; pre-scale infrastructure |
|
|
145
|
+
| **Coupon code launch** | Viral sharing of limited coupon creates stampede | Queue-based redemption; rate limit per user |
|
|
146
|
+
| **Product launch countdown** | Users refresh at exactly midnight | Serve static page at launch time; queue for access |
|
|
147
|
+
| **Social media viral moment** | CEO's tweet goes viral, floods landing page | CDN caching; static page fallback |
|
|
148
|
+
| **Cron job stampede** | Every server runs cleanup job at midnight | Randomize cron schedules; use distributed job scheduling |
|
|
149
|
+
|
|
150
|
+
### Defense Strategy
|
|
151
|
+
|
|
152
|
+
- Coordinate marketing events with engineering capacity planning
|
|
153
|
+
- Use CDN and static page caching for high-traffic landing pages
|
|
154
|
+
- Implement queue-based access for limited-resource events
|
|
155
|
+
- Stagger scheduled jobs with random jitter
|
|
156
|
+
- Pre-scale infrastructure before planned events
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## 6. Scaling Effects
|
|
161
|
+
|
|
162
|
+
Patterns that work at small scale break at large scale. A design that performs well with 10 servers may collapse at 100 servers. Scaling effects are the emergent behaviors that appear only when the system grows.
|
|
163
|
+
|
|
164
|
+
### Examples of Scaling Effects
|
|
165
|
+
|
|
166
|
+
| Pattern | Works at Small Scale | Breaks at Large Scale |
|
|
167
|
+
|---------|---------------------|----------------------|
|
|
168
|
+
| **Point-to-point connections** | 5 services = 20 connections | 50 services = 2,450 connections |
|
|
169
|
+
| **Broadcast messages** | 10 subscribers = manageable | 1,000 subscribers = message storm |
|
|
170
|
+
| **Shared database** | 5 services share one DB | 50 services = connection pool exhaustion |
|
|
171
|
+
| **Health check polling** | Load balancer checks 5 servers | Load balancer checks 500 servers = significant traffic |
|
|
172
|
+
| **Distributed locks** | Low contention with few nodes | High contention with many nodes |
|
|
173
|
+
|
|
174
|
+
### Mitigation
|
|
175
|
+
|
|
176
|
+
- Replace point-to-point with message buses or service meshes
|
|
177
|
+
- Use fan-out patterns with controlled concurrency
|
|
178
|
+
- Give each service its own data store (or at minimum, its own connection pool limits)
|
|
179
|
+
- Use push-based health checks or sampling strategies at scale
|
|
180
|
+
- Avoid distributed locks; use optimistic concurrency or partitioning instead
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 7. Unbalanced Capacities
|
|
185
|
+
|
|
186
|
+
When upstream and downstream systems have different capacity limits, the faster system can overwhelm the slower one. This is particularly dangerous when a frontend tier can generate more requests than a backend tier can handle.
|
|
187
|
+
|
|
188
|
+
### Common Imbalances
|
|
189
|
+
|
|
190
|
+
- Web tier: 100 servers; backend API: 10 servers
|
|
191
|
+
- Batch job produces 10,000 records/sec; downstream consumer processes 500/sec
|
|
192
|
+
- Marketing campaign drives 10x normal traffic to a service scaled for 1x
|
|
193
|
+
|
|
194
|
+
### Defense Strategy
|
|
195
|
+
|
|
196
|
+
- Back-pressure: slow producers when consumers are overwhelmed
|
|
197
|
+
- Queue-based buffering between tiers with different throughput
|
|
198
|
+
- Rate limiting at the boundary between tiers
|
|
199
|
+
- Capacity modeling that considers the full request chain, not individual services in isolation
|
|
200
|
+
- Autoscaling policies that scale the entire chain, not just the entry point
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 8. Dogpile / Thundering Herd
|
|
205
|
+
|
|
206
|
+
A dogpile (also called thundering herd) occurs when many threads or processes simultaneously attempt the same expensive operation, typically after a cache expires or a service recovers.
|
|
207
|
+
|
|
208
|
+
### Common Dogpile Scenarios
|
|
209
|
+
|
|
210
|
+
| Scenario | Mechanism | Impact |
|
|
211
|
+
|----------|-----------|--------|
|
|
212
|
+
| **Cache expiration** | Popular cache key expires; 1,000 threads hit the database simultaneously | Database overwhelmed; slow response; more cache misses |
|
|
213
|
+
| **Service recovery** | Circuit breaker half-opens; all waiting requests flood the recovering service | Service fails again immediately |
|
|
214
|
+
| **Cron overlap** | Slow job still running when next execution triggers | Double resource consumption; data corruption |
|
|
215
|
+
| **Lock release** | Mutex released; all waiting threads resume simultaneously | Resource spike; possible re-contention |
|
|
216
|
+
|
|
217
|
+
### Prevention
|
|
218
|
+
|
|
219
|
+
- **Cache stampede prevention:** Use probabilistic early expiration, lock-based recomputation (only one thread refreshes), or serve stale + refresh in background
|
|
220
|
+
- **Circuit breaker recovery:** Half-open state allows only a small number of test requests through
|
|
221
|
+
- **Cron jobs:** Use distributed locks or leader election to ensure only one instance runs
|
|
222
|
+
- **Gradual ramp-up:** When recovering, slowly increase traffic rather than allowing full load immediately
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## 9. Slow Responses (Worse Than No Response)
|
|
227
|
+
|
|
228
|
+
A fast failure is annoying. A slow failure is catastrophic. When a system responds slowly instead of failing fast, it creates a chain reaction of blocked resources throughout the calling stack.
|
|
229
|
+
|
|
230
|
+
### Why Slow Is Worse Than Down
|
|
231
|
+
|
|
232
|
+
| Fast Failure | Slow Failure |
|
|
233
|
+
|-------------|-------------|
|
|
234
|
+
| Circuit breaker trips immediately | Circuit breaker does not trip (still getting responses) |
|
|
235
|
+
| Thread released after milliseconds | Thread blocked for seconds or minutes |
|
|
236
|
+
| Error is visible and actionable | Problem is invisible until pool exhaustion |
|
|
237
|
+
| Users see error, retry once, move on | Users see spinner, refresh, multiply load |
|
|
238
|
+
| Affects one request | Blocks a thread, affecting all subsequent requests |
|
|
239
|
+
|
|
240
|
+
### Detection
|
|
241
|
+
|
|
242
|
+
- Monitor latency at p99 and p999, not just p50
|
|
243
|
+
- Alert on latency shifts, not just absolute thresholds
|
|
244
|
+
- Track thread pool utilization -- rising active threads with flat throughput indicates blocking
|
|
245
|
+
- Trace slow requests across service boundaries to find the bottleneck
|
|
246
|
+
|
|
247
|
+
### Prevention
|
|
248
|
+
|
|
249
|
+
- Set aggressive read timeouts (seconds, not minutes)
|
|
250
|
+
- Implement deadline propagation: if the user's request has 5 seconds left, do not start a 10-second operation
|
|
251
|
+
- Use asynchronous processing for long operations
|
|
252
|
+
- Implement load shedding: reject requests when response time exceeds SLO
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## 10. Unbounded Result Sets
|
|
257
|
+
|
|
258
|
+
A query that returns 10 rows in development returns 10 million rows in production. Unbounded result sets are a time bomb that detonates when data grows beyond test assumptions.
|
|
259
|
+
|
|
260
|
+
### Common Manifestations
|
|
261
|
+
|
|
262
|
+
| Query Pattern | Development | Production |
|
|
263
|
+
|--------------|-------------|------------|
|
|
264
|
+
| `SELECT * FROM orders WHERE user_id = ?` | 3 orders | 50,000 orders (power user) |
|
|
265
|
+
| `SELECT * FROM events WHERE date > ?` | 100 events | 2 million events (6 months of data) |
|
|
266
|
+
| `SELECT * FROM logs` | 500 rows | Out of memory |
|
|
267
|
+
| API response with nested objects | Small JSON | 200MB JSON response |
|
|
268
|
+
|
|
269
|
+
### Prevention
|
|
270
|
+
|
|
271
|
+
- **Always paginate:** Every list query must have a `LIMIT` and `OFFSET` (or cursor-based pagination)
|
|
272
|
+
- **Cap result sizes:** Enforce maximum result count at the API layer, even if the caller does not request it
|
|
273
|
+
- **Stream large results:** Use cursors or streaming for batch operations rather than loading everything into memory
|
|
274
|
+
- **Monitor query performance:** Track query execution time and result set sizes in production
|
|
275
|
+
- **Test with production-scale data:** Use anonymized production data volumes in performance testing
|
|
276
|
+
|
|
277
|
+
### Rule of Thumb
|
|
278
|
+
|
|
279
|
+
If your code ever does `results = query.getAll()` without a limit, it is a production incident waiting to happen. Every query, every API response, every list operation must have an upper bound.
|