codymaster 4.1.4 → 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 +118 -4
- package/install.sh +2 -2
- package/package.json +3 -8
- 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 +16 -49
- 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,210 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Invoke the ERPNext customizer agent for extending ERPNext with custom fields, hooks, fixtures, and module-specific customizations
|
|
3
|
+
allowed-tools: Bash, Read, Write, Edit, Glob, Grep, Task, TodoWrite
|
|
4
|
+
argument-hint: <customization_description>
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# ERPNext Customization
|
|
8
|
+
|
|
9
|
+
You are invoking the specialized ERPNext customizer agent for extending and customizing ERPNext.
|
|
10
|
+
|
|
11
|
+
## Request
|
|
12
|
+
|
|
13
|
+
$ARGUMENTS
|
|
14
|
+
|
|
15
|
+
## Agent Invocation
|
|
16
|
+
|
|
17
|
+
Use the Task tool to spawn the `frappe-fullstack:erpnext-customizer` agent with the following configuration:
|
|
18
|
+
|
|
19
|
+
**IMPORTANT:** The agent name MUST be fully qualified: `frappe-fullstack:erpnext-customizer`
|
|
20
|
+
|
|
21
|
+
### Agent Prompt Template
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
You are customizing ERPNext for specific business requirements.
|
|
25
|
+
|
|
26
|
+
## Task
|
|
27
|
+
{user's customization description}
|
|
28
|
+
|
|
29
|
+
## Context
|
|
30
|
+
- This is ERPNext customization (not core modification)
|
|
31
|
+
- All changes should be in a custom app
|
|
32
|
+
- Use hooks, custom fields, and fixtures
|
|
33
|
+
|
|
34
|
+
## Your Responsibilities
|
|
35
|
+
|
|
36
|
+
1. **Analyze the Customization**
|
|
37
|
+
- Which ERPNext DocTypes are affected?
|
|
38
|
+
- What custom fields are needed?
|
|
39
|
+
- What hooks/events to intercept?
|
|
40
|
+
- What workflows to implement?
|
|
41
|
+
|
|
42
|
+
2. **Explore Existing Patterns**
|
|
43
|
+
- Check how ERPNext handles similar cases
|
|
44
|
+
- Find extension points in ERPNext code
|
|
45
|
+
- Identify reusable utilities
|
|
46
|
+
|
|
47
|
+
3. **Implement the Customization**
|
|
48
|
+
- Create custom fields via fixtures
|
|
49
|
+
- Add hooks in hooks.py
|
|
50
|
+
- Write override functions
|
|
51
|
+
- Set up workflows if needed
|
|
52
|
+
|
|
53
|
+
4. **Ensure Portability**
|
|
54
|
+
- Export as fixtures
|
|
55
|
+
- Document the customization
|
|
56
|
+
- Handle ERPNext upgrades gracefully
|
|
57
|
+
|
|
58
|
+
## Output Requirements
|
|
59
|
+
- Custom field definitions (fixtures)
|
|
60
|
+
- hooks.py configuration
|
|
61
|
+
- Override functions
|
|
62
|
+
- Workflow definitions (if applicable)
|
|
63
|
+
- Installation/export commands
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Capabilities
|
|
67
|
+
|
|
68
|
+
The erpnext-customizer agent excels at:
|
|
69
|
+
|
|
70
|
+
### Custom Fields
|
|
71
|
+
```python
|
|
72
|
+
# In install.py
|
|
73
|
+
from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
|
|
74
|
+
|
|
75
|
+
custom_fields = {
|
|
76
|
+
"Sales Invoice": [
|
|
77
|
+
{
|
|
78
|
+
"fieldname": "custom_channel",
|
|
79
|
+
"label": "Sales Channel",
|
|
80
|
+
"fieldtype": "Link",
|
|
81
|
+
"options": "Sales Channel",
|
|
82
|
+
"insert_after": "customer"
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
create_custom_fields(custom_fields)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Document Hooks
|
|
90
|
+
```python
|
|
91
|
+
# hooks.py
|
|
92
|
+
doc_events = {
|
|
93
|
+
"Sales Invoice": {
|
|
94
|
+
"validate": "my_app.overrides.sales_invoice.validate",
|
|
95
|
+
"on_submit": "my_app.overrides.sales_invoice.on_submit"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Override Class
|
|
101
|
+
```python
|
|
102
|
+
# hooks.py
|
|
103
|
+
override_doctype_class = {
|
|
104
|
+
"Sales Invoice": "my_app.overrides.CustomSalesInvoice"
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Fixtures
|
|
109
|
+
```python
|
|
110
|
+
# hooks.py
|
|
111
|
+
fixtures = [
|
|
112
|
+
{"dt": "Custom Field", "filters": [["module", "=", "My App"]]},
|
|
113
|
+
{"dt": "Property Setter", "filters": [["module", "=", "My App"]]},
|
|
114
|
+
{"dt": "Workflow", "filters": [["name", "=", "My Workflow"]]}
|
|
115
|
+
]
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Workflows
|
|
119
|
+
```python
|
|
120
|
+
workflow = {
|
|
121
|
+
"doctype": "Workflow",
|
|
122
|
+
"name": "Sales Order Approval",
|
|
123
|
+
"document_type": "Sales Order",
|
|
124
|
+
"is_active": 1,
|
|
125
|
+
"states": [...],
|
|
126
|
+
"transitions": [...]
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## ERPNext Modules Reference
|
|
131
|
+
|
|
132
|
+
| Module | Key DocTypes |
|
|
133
|
+
|--------|-------------|
|
|
134
|
+
| Accounts | Sales Invoice, Purchase Invoice, Payment Entry, GL Entry |
|
|
135
|
+
| Stock | Stock Entry, Delivery Note, Purchase Receipt, Item |
|
|
136
|
+
| Selling | Quotation, Sales Order, Customer |
|
|
137
|
+
| Buying | Purchase Order, Supplier, RFQ |
|
|
138
|
+
| Manufacturing | BOM, Work Order, Job Card |
|
|
139
|
+
| HR | Employee, Salary Slip, Leave Application |
|
|
140
|
+
| CRM | Lead, Opportunity |
|
|
141
|
+
| Projects | Project, Task, Timesheet |
|
|
142
|
+
| Assets | Asset, Depreciation |
|
|
143
|
+
|
|
144
|
+
## Common Customizations
|
|
145
|
+
|
|
146
|
+
1. **"Add custom field to Sales Invoice for tracking"**
|
|
147
|
+
→ Custom field definition + fixture
|
|
148
|
+
|
|
149
|
+
2. **"Validate credit limit before Sales Order submission"**
|
|
150
|
+
→ Hook on before_submit
|
|
151
|
+
|
|
152
|
+
3. **"Auto-create Task when Opportunity is won"**
|
|
153
|
+
→ Hook on on_update with status check
|
|
154
|
+
|
|
155
|
+
4. **"Custom approval workflow for Purchase Orders"**
|
|
156
|
+
→ Workflow definition + custom fields for approvers
|
|
157
|
+
|
|
158
|
+
5. **"Add custom report for sales by channel"**
|
|
159
|
+
→ Script report with custom query
|
|
160
|
+
|
|
161
|
+
6. **"Modify print format to include custom fields"**
|
|
162
|
+
→ Custom print format template
|
|
163
|
+
|
|
164
|
+
## Tools Available to Agent
|
|
165
|
+
|
|
166
|
+
- **Glob**: Find ERPNext and custom app files
|
|
167
|
+
- **Grep**: Search ERPNext patterns
|
|
168
|
+
- **Read**: Read ERPNext source for extension points
|
|
169
|
+
- **Write**: Create override files
|
|
170
|
+
- **Edit**: Modify hooks.py, fixtures
|
|
171
|
+
- **Bash**: Export fixtures, run commands
|
|
172
|
+
|
|
173
|
+
## File Locations
|
|
174
|
+
|
|
175
|
+
```
|
|
176
|
+
my_app/
|
|
177
|
+
├── hooks.py # Hook configuration
|
|
178
|
+
├── fixtures/ # Exported fixtures
|
|
179
|
+
│ ├── custom_field.json
|
|
180
|
+
│ └── property_setter.json
|
|
181
|
+
├── install.py # Post-install setup
|
|
182
|
+
└── my_module/
|
|
183
|
+
└── overrides/
|
|
184
|
+
├── sales_invoice.py # SI overrides
|
|
185
|
+
└── sales_order.py # SO overrides
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Post-Implementation
|
|
189
|
+
|
|
190
|
+
1. **Export Fixtures**
|
|
191
|
+
```bash
|
|
192
|
+
bench --site <site> export-fixtures --app my_app
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
2. **Install/Reinstall App**
|
|
196
|
+
```bash
|
|
197
|
+
bench --site <site> install-app my_app
|
|
198
|
+
# or
|
|
199
|
+
bench --site <site> migrate
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
3. **Clear Cache**
|
|
203
|
+
```bash
|
|
204
|
+
bench --site <site> clear-cache
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
4. **Test Customization**
|
|
208
|
+
- Verify custom fields appear
|
|
209
|
+
- Test hook functions
|
|
210
|
+
- Validate workflow transitions
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Fix Frappe/ERPNext bugs with a structured loop - reproduce, diagnose, fix, verify, document. Unlike debug (analysis-only), this actually applies fixes.
|
|
3
|
+
allowed-tools: Bash, Read, Write, Edit, Grep, Glob
|
|
4
|
+
argument-hint: <error_description_or_issue>
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Fix Frappe Bug
|
|
8
|
+
|
|
9
|
+
Apply a structured bug fix following the mandatory loop: reproduce → diagnose → fix → verify → document.
|
|
10
|
+
|
|
11
|
+
## Arguments
|
|
12
|
+
|
|
13
|
+
Parse the user's input: $ARGUMENTS
|
|
14
|
+
|
|
15
|
+
## Process
|
|
16
|
+
|
|
17
|
+
### Step 1: Invoke Fixer Agent
|
|
18
|
+
|
|
19
|
+
Delegate to `frappe-fixer` agent with the issue details.
|
|
20
|
+
|
|
21
|
+
**Agent Prompt:**
|
|
22
|
+
```
|
|
23
|
+
You are fixing a Frappe/ERPNext bug.
|
|
24
|
+
|
|
25
|
+
## Issue
|
|
26
|
+
{user's error or issue description}
|
|
27
|
+
|
|
28
|
+
## Context
|
|
29
|
+
- Working directory: {current directory}
|
|
30
|
+
- Follow the mandatory FIX LOOP: reproduce → diagnose → hypothesize → fix → verify → document
|
|
31
|
+
|
|
32
|
+
## Requirements
|
|
33
|
+
1. REPRODUCE the bug first — confirm it exists
|
|
34
|
+
2. DIAGNOSE the root cause — not just symptoms
|
|
35
|
+
3. HYPOTHESIZE the minimal fix
|
|
36
|
+
4. APPLY the fix
|
|
37
|
+
5. VERIFY it works and no regressions
|
|
38
|
+
6. DOCUMENT what was fixed and why
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Step 2: Verify Fix
|
|
42
|
+
|
|
43
|
+
After the fixer agent completes:
|
|
44
|
+
```bash
|
|
45
|
+
# Run tests
|
|
46
|
+
bench --site <site> run-tests --app <app> --failfast
|
|
47
|
+
|
|
48
|
+
# Clear cache
|
|
49
|
+
bench --site <site> clear-cache
|
|
50
|
+
|
|
51
|
+
# Check logs
|
|
52
|
+
tail -20 logs/frappe.log | grep -i error
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Integration
|
|
56
|
+
|
|
57
|
+
- If analysis is needed first → use `frappe-debug` command (delegates to debugger)
|
|
58
|
+
- If fix requires schema changes → the fixer will coordinate with `doctype-architect`
|
|
59
|
+
- If fix is on a remote site → the fixer will coordinate with `frappe-remote-ops`
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Invoke the Frappe frontend agent for client-side JavaScript development including form scripts, dialogs, list views, and UI customization
|
|
3
|
+
allowed-tools: Bash, Read, Write, Edit, Glob, Grep, Task, TodoWrite
|
|
4
|
+
argument-hint: <task_description>
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Frappe Frontend Development
|
|
8
|
+
|
|
9
|
+
You are invoking the specialized Frappe frontend agent for client-side JavaScript development.
|
|
10
|
+
|
|
11
|
+
## Request
|
|
12
|
+
|
|
13
|
+
$ARGUMENTS
|
|
14
|
+
|
|
15
|
+
## Agent Invocation
|
|
16
|
+
|
|
17
|
+
Use the Task tool to spawn the `frappe-fullstack:frappe-frontend` agent with the following configuration:
|
|
18
|
+
|
|
19
|
+
**IMPORTANT:** The agent name MUST be fully qualified: `frappe-fullstack:frappe-frontend`
|
|
20
|
+
|
|
21
|
+
### Agent Prompt Template
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
You are working on a Frappe/ERPNext frontend task.
|
|
25
|
+
|
|
26
|
+
## Task
|
|
27
|
+
{user's task description}
|
|
28
|
+
|
|
29
|
+
## Context
|
|
30
|
+
- Working directory: {current directory}
|
|
31
|
+
- This is client-side JavaScript for Frappe Desk
|
|
32
|
+
|
|
33
|
+
## Your Responsibilities
|
|
34
|
+
|
|
35
|
+
1. **Analyze the Request**
|
|
36
|
+
- Understand what UI/UX functionality is needed
|
|
37
|
+
- Identify which DocTypes and forms are involved
|
|
38
|
+
- Determine if this is form script, dialog, or list customization
|
|
39
|
+
|
|
40
|
+
2. **Explore the Codebase**
|
|
41
|
+
- Find existing client scripts for patterns
|
|
42
|
+
- Check for reusable dialog patterns
|
|
43
|
+
- Identify existing UI conventions
|
|
44
|
+
|
|
45
|
+
3. **Implement the Solution**
|
|
46
|
+
- Write clean, well-documented JavaScript
|
|
47
|
+
- Follow Frappe client-side conventions
|
|
48
|
+
- Handle async operations properly
|
|
49
|
+
- Include proper error handling and user feedback
|
|
50
|
+
|
|
51
|
+
4. **Provide Complete Code**
|
|
52
|
+
- Form event handlers (refresh, validate, field changes)
|
|
53
|
+
- Custom buttons and actions
|
|
54
|
+
- Dialogs and prompts
|
|
55
|
+
- frappe.call for server communication
|
|
56
|
+
|
|
57
|
+
## Output Requirements
|
|
58
|
+
- Provide complete, working JavaScript code
|
|
59
|
+
- Include file paths (doctype.js location)
|
|
60
|
+
- Explain any server-side APIs needed
|
|
61
|
+
- Note if bench build is required
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Capabilities
|
|
65
|
+
|
|
66
|
+
The frappe-frontend agent excels at:
|
|
67
|
+
|
|
68
|
+
### Form Scripts
|
|
69
|
+
```javascript
|
|
70
|
+
frappe.ui.form.on('My DocType', {
|
|
71
|
+
refresh: function(frm) {
|
|
72
|
+
// Add buttons, toggle fields
|
|
73
|
+
},
|
|
74
|
+
validate: function(frm) {
|
|
75
|
+
// Client-side validation
|
|
76
|
+
},
|
|
77
|
+
field_name: function(frm) {
|
|
78
|
+
// Field change handler
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Child Table Events
|
|
84
|
+
```javascript
|
|
85
|
+
frappe.ui.form.on('My DocType Item', {
|
|
86
|
+
qty: function(frm, cdt, cdn) {
|
|
87
|
+
let row = locals[cdt][cdn];
|
|
88
|
+
row.amount = row.qty * row.rate;
|
|
89
|
+
frm.refresh_field('items');
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Custom Buttons
|
|
95
|
+
```javascript
|
|
96
|
+
frm.add_custom_button(__('Action'), function() {
|
|
97
|
+
// Button logic
|
|
98
|
+
}, __('Actions'));
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Dialogs
|
|
102
|
+
```javascript
|
|
103
|
+
let dialog = new frappe.ui.Dialog({
|
|
104
|
+
title: __('My Dialog'),
|
|
105
|
+
fields: [
|
|
106
|
+
{fieldname: 'field1', fieldtype: 'Data', label: 'Field 1'}
|
|
107
|
+
],
|
|
108
|
+
primary_action: function(values) {
|
|
109
|
+
// Handle submission
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
dialog.show();
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Server Calls
|
|
116
|
+
```javascript
|
|
117
|
+
frappe.call({
|
|
118
|
+
method: 'myapp.api.my_function',
|
|
119
|
+
args: { param: value },
|
|
120
|
+
freeze: true,
|
|
121
|
+
callback: function(r) {
|
|
122
|
+
// Handle response
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Field Manipulation
|
|
128
|
+
```javascript
|
|
129
|
+
// Show/hide
|
|
130
|
+
frm.toggle_display('fieldname', condition);
|
|
131
|
+
|
|
132
|
+
// Required
|
|
133
|
+
frm.toggle_reqd('fieldname', condition);
|
|
134
|
+
|
|
135
|
+
// Read-only
|
|
136
|
+
frm.set_df_property('fieldname', 'read_only', 1);
|
|
137
|
+
|
|
138
|
+
// Set query for Link field
|
|
139
|
+
frm.set_query('customer', function() {
|
|
140
|
+
return { filters: { status: 'Active' } };
|
|
141
|
+
});
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Common Tasks
|
|
145
|
+
|
|
146
|
+
1. **"Add button to create follow-up task"**
|
|
147
|
+
→ Custom button with dialog for task details
|
|
148
|
+
|
|
149
|
+
2. **"Show/hide fields based on document type selection"**
|
|
150
|
+
→ Field change handler with toggle_display
|
|
151
|
+
|
|
152
|
+
3. **"Auto-calculate totals when qty or rate changes"**
|
|
153
|
+
→ Child table field events
|
|
154
|
+
|
|
155
|
+
4. **"Validate that end date is after start date"**
|
|
156
|
+
→ validate event with frappe.throw
|
|
157
|
+
|
|
158
|
+
5. **"Fetch customer details when customer is selected"**
|
|
159
|
+
→ Field change with frappe.call
|
|
160
|
+
|
|
161
|
+
6. **"Add custom filter to link field"**
|
|
162
|
+
→ set_query with dynamic filters
|
|
163
|
+
|
|
164
|
+
## Tools Available to Agent
|
|
165
|
+
|
|
166
|
+
- **Glob**: Find JavaScript files
|
|
167
|
+
- **Grep**: Search for existing patterns
|
|
168
|
+
- **Read**: Read existing client scripts
|
|
169
|
+
- **Write**: Create new files
|
|
170
|
+
- **Edit**: Modify existing code
|
|
171
|
+
- **Bash**: Check file structure, run bench build
|
|
172
|
+
|
|
173
|
+
## File Locations
|
|
174
|
+
|
|
175
|
+
```
|
|
176
|
+
my_app/
|
|
177
|
+
└── my_module/
|
|
178
|
+
└── doctype/
|
|
179
|
+
└── my_doctype/
|
|
180
|
+
└── my_doctype.js # Form script
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
For list view:
|
|
184
|
+
```
|
|
185
|
+
my_app/
|
|
186
|
+
└── my_module/
|
|
187
|
+
└── doctype/
|
|
188
|
+
└── my_doctype/
|
|
189
|
+
└── my_doctype_list.js # List script
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Post-Implementation
|
|
193
|
+
|
|
194
|
+
After the agent completes:
|
|
195
|
+
|
|
196
|
+
1. **Build Assets** (if new files created)
|
|
197
|
+
```bash
|
|
198
|
+
bench build --app my_app
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
2. **Clear Cache**
|
|
202
|
+
```bash
|
|
203
|
+
bench --site <site> clear-cache
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
3. **Hard Refresh Browser**
|
|
207
|
+
- Ctrl+Shift+R to reload without cache
|
|
208
|
+
|
|
209
|
+
4. **Check Browser Console**
|
|
210
|
+
- F12 → Console for JavaScript errors
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Invoke multiple Frappe agents in parallel for full-stack development - coordinates backend, frontend, and architecture agents for complete feature implementation
|
|
3
|
+
allowed-tools: Bash, Read, Write, Edit, Glob, Grep, Task, TodoWrite, AskUserQuestion
|
|
4
|
+
argument-hint: <feature_description>
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Frappe Full-Stack Development
|
|
8
|
+
|
|
9
|
+
Orchestrate multiple specialized agents to build complete features across the full Frappe stack.
|
|
10
|
+
|
|
11
|
+
## Request
|
|
12
|
+
|
|
13
|
+
$ARGUMENTS
|
|
14
|
+
|
|
15
|
+
## Orchestration Strategy
|
|
16
|
+
|
|
17
|
+
This command coordinates multiple agents working in parallel for comprehensive feature development.
|
|
18
|
+
|
|
19
|
+
### Phase 1: Understanding & Planning
|
|
20
|
+
|
|
21
|
+
First, understand the scope:
|
|
22
|
+
|
|
23
|
+
1. **Analyze the Feature Request**
|
|
24
|
+
- What data needs to be stored? (DocType design)
|
|
25
|
+
- What backend logic is needed? (Controllers, APIs)
|
|
26
|
+
- What UI/UX is required? (Form scripts, dialogs)
|
|
27
|
+
- Is ERPNext integration needed? (Customizations, hooks)
|
|
28
|
+
|
|
29
|
+
2. **Create Todo List**
|
|
30
|
+
Use TodoWrite to track:
|
|
31
|
+
- [ ] DocType/data model design
|
|
32
|
+
- [ ] Backend implementation
|
|
33
|
+
- [ ] Frontend implementation
|
|
34
|
+
- [ ] Integration/hooks (if needed)
|
|
35
|
+
- [ ] Testing
|
|
36
|
+
|
|
37
|
+
### Phase 2: Parallel Agent Invocation
|
|
38
|
+
|
|
39
|
+
Launch agents in parallel using multiple Task tool calls in a single message.
|
|
40
|
+
|
|
41
|
+
**IMPORTANT:** Agent names MUST be fully qualified with plugin prefix:
|
|
42
|
+
- `frappe-fullstack:doctype-architect`
|
|
43
|
+
- `frappe-fullstack:frappe-backend`
|
|
44
|
+
- `frappe-fullstack:frappe-frontend`
|
|
45
|
+
- `frappe-fullstack:erpnext-customizer`
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
49
|
+
│ PARALLEL EXECUTION │
|
|
50
|
+
├─────────────────┬─────────────────┬─────────────────────────┤
|
|
51
|
+
│ frappe-fullstack│ frappe-fullstack│ frappe-fullstack: │
|
|
52
|
+
│ :doctype- │ :frappe-backend │ frappe-frontend │
|
|
53
|
+
│ architect │ │ │
|
|
54
|
+
│ │ │ │
|
|
55
|
+
│ • Design schema │ • Controllers │ • Form scripts │
|
|
56
|
+
│ • Field types │ • APIs │ • Dialogs │
|
|
57
|
+
│ • Relationships │ • Validation │ • Field handlers │
|
|
58
|
+
│ • Permissions │ • Background │ • Custom buttons │
|
|
59
|
+
└─────────────────┴─────────────────┴─────────────────────────┘
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Agent Prompts
|
|
63
|
+
|
|
64
|
+
#### DocType Architect Agent
|
|
65
|
+
```
|
|
66
|
+
Design the data model for: {feature description}
|
|
67
|
+
|
|
68
|
+
Requirements:
|
|
69
|
+
- Identify all entities/DocTypes needed
|
|
70
|
+
- Define fields with appropriate types
|
|
71
|
+
- Establish relationships (Link, Table)
|
|
72
|
+
- Set up naming conventions
|
|
73
|
+
- Define permissions
|
|
74
|
+
|
|
75
|
+
Output:
|
|
76
|
+
- Complete DocType JSON(s)
|
|
77
|
+
- Relationship diagram (text)
|
|
78
|
+
- Field specifications
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### Backend Agent
|
|
82
|
+
```
|
|
83
|
+
Implement server-side logic for: {feature description}
|
|
84
|
+
|
|
85
|
+
The DocType structure is: {from architect agent or existing}
|
|
86
|
+
|
|
87
|
+
Requirements:
|
|
88
|
+
- Controller methods (validate, lifecycle hooks)
|
|
89
|
+
- Whitelisted APIs for frontend
|
|
90
|
+
- Database queries if complex
|
|
91
|
+
- Background jobs if long-running
|
|
92
|
+
- Email/notification logic
|
|
93
|
+
|
|
94
|
+
Output:
|
|
95
|
+
- Complete Python controller
|
|
96
|
+
- API functions
|
|
97
|
+
- hooks.py updates if needed
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
#### Frontend Agent
|
|
101
|
+
```
|
|
102
|
+
Implement client-side functionality for: {feature description}
|
|
103
|
+
|
|
104
|
+
The DocType and APIs are: {from other agents or existing}
|
|
105
|
+
|
|
106
|
+
Requirements:
|
|
107
|
+
- Form script with event handlers
|
|
108
|
+
- Custom buttons for actions
|
|
109
|
+
- Dialogs for user input
|
|
110
|
+
- Field visibility/requirement logic
|
|
111
|
+
- frappe.call to backend APIs
|
|
112
|
+
|
|
113
|
+
Output:
|
|
114
|
+
- Complete JavaScript form script
|
|
115
|
+
- Any list view customizations
|
|
116
|
+
- Dialog implementations
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Phase 3: Integration
|
|
120
|
+
|
|
121
|
+
After parallel agents complete:
|
|
122
|
+
|
|
123
|
+
1. **Merge Outputs**
|
|
124
|
+
- Combine all generated code
|
|
125
|
+
- Resolve any conflicts
|
|
126
|
+
- Ensure API names match between frontend/backend
|
|
127
|
+
|
|
128
|
+
2. **Add ERPNext Integration** (if needed)
|
|
129
|
+
Spawn `frappe-fullstack:erpnext-customizer` agent for:
|
|
130
|
+
- Custom fields on stock DocTypes
|
|
131
|
+
- Hooks configuration
|
|
132
|
+
- after_migrate setup (preferred over fixtures)
|
|
133
|
+
|
|
134
|
+
3. **Create Files**
|
|
135
|
+
Write all files to appropriate locations:
|
|
136
|
+
```
|
|
137
|
+
my_app/
|
|
138
|
+
└── my_module/
|
|
139
|
+
└── doctype/
|
|
140
|
+
└── my_doctype/
|
|
141
|
+
├── my_doctype.json # From architect
|
|
142
|
+
├── my_doctype.py # From backend
|
|
143
|
+
├── my_doctype.js # From frontend
|
|
144
|
+
└── test_my_doctype.py # Tests
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Phase 4: Finalization
|
|
148
|
+
|
|
149
|
+
1. **Update hooks.py** if needed
|
|
150
|
+
2. **Run Migration**
|
|
151
|
+
```bash
|
|
152
|
+
bench --site <site> migrate
|
|
153
|
+
```
|
|
154
|
+
3. **Build Assets**
|
|
155
|
+
```bash
|
|
156
|
+
bench build --app <app>
|
|
157
|
+
```
|
|
158
|
+
4. **Clear Cache**
|
|
159
|
+
```bash
|
|
160
|
+
bench --site <site> clear-cache
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Example Workflows
|
|
164
|
+
|
|
165
|
+
### Example 1: "Create a customer feedback system"
|
|
166
|
+
|
|
167
|
+
**Parallel Agents:**
|
|
168
|
+
|
|
169
|
+
1. **doctype-architect**: Designs "Customer Feedback" DocType
|
|
170
|
+
- Fields: customer, rating, category, description, status, assigned_to
|
|
171
|
+
- Child table for follow-up actions
|
|
172
|
+
|
|
173
|
+
2. **frappe-backend**: Implements
|
|
174
|
+
- Validation (rating 1-5)
|
|
175
|
+
- Auto-assign based on category
|
|
176
|
+
- Email notification on submission
|
|
177
|
+
- API to get feedback statistics
|
|
178
|
+
|
|
179
|
+
3. **frappe-frontend**: Creates
|
|
180
|
+
- Star rating widget
|
|
181
|
+
- Category-based field visibility
|
|
182
|
+
- "Resolve" button for assigned user
|
|
183
|
+
- Dashboard statistics display
|
|
184
|
+
|
|
185
|
+
### Example 2: "Add approval workflow to purchase requests"
|
|
186
|
+
|
|
187
|
+
**Parallel Agents:**
|
|
188
|
+
|
|
189
|
+
1. **doctype-architect**: Modifies/creates
|
|
190
|
+
- Approval fields (approved_by, approval_date, rejection_reason)
|
|
191
|
+
- Status field with workflow states
|
|
192
|
+
|
|
193
|
+
2. **frappe-backend**: Implements
|
|
194
|
+
- Permission checks for approval
|
|
195
|
+
- Email to approver on submission
|
|
196
|
+
- Budget validation before approval
|
|
197
|
+
- API for bulk approval
|
|
198
|
+
|
|
199
|
+
3. **frappe-frontend**: Creates
|
|
200
|
+
- Approve/Reject buttons (conditional)
|
|
201
|
+
- Rejection reason dialog
|
|
202
|
+
- Status indicator colors
|
|
203
|
+
- Pending approvals list filter
|
|
204
|
+
|
|
205
|
+
4. **erpnext-customizer** (if extending ERPNext):
|
|
206
|
+
- Custom fields on Material Request
|
|
207
|
+
- Workflow definition
|
|
208
|
+
- Role permissions
|
|
209
|
+
|
|
210
|
+
## Agent Coordination Tips
|
|
211
|
+
|
|
212
|
+
1. **Share Context**: Pass DocType definitions from architect to other agents
|
|
213
|
+
2. **Consistent Naming**: Ensure API method names match between frontend/backend
|
|
214
|
+
3. **Handle Dependencies**: Backend APIs must exist before frontend can call them
|
|
215
|
+
4. **Test Incrementally**: Verify each layer works before integrating
|
|
216
|
+
|
|
217
|
+
## Tools Available
|
|
218
|
+
|
|
219
|
+
| Tool | Purpose |
|
|
220
|
+
|------|---------|
|
|
221
|
+
| Task | Spawn specialized agents |
|
|
222
|
+
| TodoWrite | Track progress |
|
|
223
|
+
| Glob | Find files |
|
|
224
|
+
| Grep | Search code |
|
|
225
|
+
| Read | Read existing code |
|
|
226
|
+
| Write | Create files |
|
|
227
|
+
| Edit | Modify files |
|
|
228
|
+
| Bash | Run commands |
|
|
229
|
+
| AskUserQuestion | Clarify requirements |
|
|
230
|
+
|
|
231
|
+
## Output Checklist
|
|
232
|
+
|
|
233
|
+
After completion, verify:
|
|
234
|
+
|
|
235
|
+
- [ ] DocType JSON created/modified
|
|
236
|
+
- [ ] Python controller implemented
|
|
237
|
+
- [ ] JavaScript form script implemented
|
|
238
|
+
- [ ] APIs accessible from frontend
|
|
239
|
+
- [ ] hooks.py updated (if needed)
|
|
240
|
+
- [ ] Migration successful
|
|
241
|
+
- [ ] Assets built
|
|
242
|
+
- [ ] Cache cleared
|
|
243
|
+
- [ ] Feature tested in browser
|