wizz-method 1.4.1 → 1.5.1
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/README.md +6 -4
- package/package.json +39 -3
- package/skills-registry.yaml +109 -8
- package/src/bmm-skills/4-implementation/wizz-code-review/SKILL.md +2 -0
- package/src/bmm-skills/4-implementation/wizz-quick-dev/SKILL.md +5 -2
- package/src/core-skills/_shared/handoff-protocol.md +61 -0
- package/src/core-skills/wizz-customize/SKILL.md +2 -2
- package/src/core-skills/wizz-party-mode/references/mode-agent-team.md +1 -1
- package/src/core-skills/wizz-party-mode/references/mode-subagent.md +1 -1
- package/src/core-skills/wizz-review-adversarial-general/SKILL.md +2 -0
- package/src/modules/wizz/README.md +3 -3
- package/src/modules/wizz/_shared/communication-rules.md +13 -0
- package/src/modules/wizz/_shared/encerramento.md +2 -2
- package/src/modules/wizz/agents/wizz-ads/customize.toml +5 -3
- package/src/modules/wizz/agents/wizz-copy/customize.toml +5 -3
- package/src/modules/wizz/agents/wizz-designer/SKILL.md +2 -2
- package/src/modules/wizz/agents/wizz-designer/customize.toml +6 -4
- package/src/modules/wizz/agents/wizz-growth/customize.toml +11 -3
- package/src/modules/wizz/agents/wizz-maestro/SKILL.md +9 -5
- package/src/modules/wizz/agents/wizz-maestro/customize.toml +5 -7
- package/src/modules/wizz/agents/wizz-memoria/customize.toml +2 -4
- package/src/modules/wizz/agents/wizz-qa/SKILL.md +5 -5
- package/src/modules/wizz/agents/wizz-qa/customize.toml +9 -7
- package/src/modules/wizz/agents/wizz-seo/customize.toml +5 -3
- package/src/modules/wizz/agents/wizz-social/customize.toml +9 -8
- package/src/modules/wizz/module.yaml +1 -1
- package/src/modules/wizz/overrides/wizz-agent-analyst.toml +4 -5
- package/src/modules/wizz/overrides/wizz-agent-architect.toml +11 -3
- package/src/modules/wizz/overrides/wizz-agent-dev.toml +6 -4
- package/src/modules/wizz/overrides/wizz-agent-pm.toml +4 -2
- package/src/modules/wizz/overrides/wizz-agent-tech-writer.toml +3 -5
- package/src/modules/wizz/overrides/wizz-agent-ux-designer.toml +4 -2
- package/src/modules/wizz/scripts/wizz-init.mjs +3 -1
- package/src/scripts/__pycache__/resolve_customization.cpython-314.pyc +0 -0
- package/src/scripts/memlog.py +9 -0
- package/src/scripts/resolve_customization.py +93 -3
- package/src/skills-lib/adversarial-reviewer/SKILL.md +2 -0
- package/src/skills-lib/algorithmic-art/SKILL.md +29 -369
- package/src/skills-lib/algorithmic-art/references/interactive-artifact.md +139 -0
- package/src/skills-lib/algorithmic-art/references/p5js-implementation.md +121 -0
- package/src/skills-lib/algorithmic-art/references/philosophy-creation.md +88 -0
- package/src/skills-lib/canvas-design/SKILL.md +9 -38
- package/src/skills-lib/canvas-design/references/canvas-execution.md +21 -0
- package/src/skills-lib/canvas-design/references/philosophy-examples.md +25 -0
- package/src/skills-lib/cerebro/SKILL.md +8 -273
- package/src/skills-lib/cerebro/references/comandos-pesquisa-e-sync.md +44 -0
- package/src/skills-lib/cerebro/references/comandos-rotina-e-captura.md +94 -0
- package/src/skills-lib/cerebro/references/comandos-sessao.md +122 -0
- package/src/skills-lib/content-strategy/SKILL.md +12 -316
- package/src/skills-lib/content-strategy/references/content-types.md +52 -0
- package/src/skills-lib/content-strategy/references/ideation-sources.md +78 -0
- package/src/skills-lib/content-strategy/references/pillars-and-keywords.md +78 -0
- package/src/skills-lib/content-strategy/references/prioritization-and-output.md +57 -0
- package/src/skills-lib/decision-maker/SKILL.md +13 -466
- package/src/skills-lib/decision-maker/references/commands-and-edge-cases.md +40 -0
- package/src/skills-lib/decision-maker/references/output-format.md +161 -0
- package/src/skills-lib/decision-maker/references/references-and-extraction.md +129 -0
- package/src/skills-lib/decision-maker/references/six-decisions.md +122 -0
- package/src/skills-lib/decision-maker/references/wizz-method-handoff.md +22 -0
- package/src/skills-lib/find-skills/SKILL.md +9 -6
- package/src/skills-lib/form-cro/SKILL.md +12 -390
- package/src/skills-lib/form-cro/references/experiments.md +73 -0
- package/src/skills-lib/form-cro/references/field-optimization.md +92 -0
- package/src/skills-lib/form-cro/references/flow-and-errors.md +71 -0
- package/src/skills-lib/form-cro/references/measurement-output.md +41 -0
- package/src/skills-lib/form-cro/references/trust-and-form-types.md +54 -0
- package/src/skills-lib/graphify/SKILL.md +2 -20
- package/src/skills-lib/huashu-design/SKILL.md +42 -596
- package/src/skills-lib/huashu-design/references/anti-slop-principles.md +62 -0
- package/src/skills-lib/huashu-design/references/audio-design-rules.md +1 -1
- package/src/skills-lib/huashu-design/references/cross-agent-adaptation.md +14 -0
- package/src/skills-lib/huashu-design/references/design-direction-fallback.md +113 -0
- package/src/skills-lib/huashu-design/references/exception-handling.md +18 -0
- package/src/skills-lib/huashu-design/references/fact-verification.md +36 -0
- package/src/skills-lib/huashu-design/references/ios-prototype.md +146 -0
- package/src/skills-lib/huashu-design/references/sfx-library.md +7 -0
- package/src/skills-lib/huashu-design/references/starter-components.md +24 -0
- package/src/skills-lib/huashu-design/references/video-export.md +1 -1
- package/src/skills-lib/huashu-design/references/watermark-policy.md +23 -0
- package/src/skills-lib/huashu-design/scripts/add-music.sh +12 -1
- package/src/skills-lib/huashu-design/scripts/mix-voiceover.sh +11 -0
- package/src/skills-lib/humanizer/SKILL.md +23 -431
- package/src/skills-lib/humanizer/references/ai-writing-patterns.md +314 -0
- package/src/skills-lib/humanizer/references/full-example.md +72 -0
- package/src/skills-lib/humanizer/references/personality-and-soul.md +36 -0
- package/src/skills-lib/impeccable/SKILL.md +37 -153
- package/src/skills-lib/impeccable/references/design-rules.md +95 -0
- package/src/skills-lib/impeccable/references/pin-unpin-and-hooks.md +17 -0
- package/src/skills-lib/impeccable/references/routing-rules.md +28 -0
- package/src/skills-lib/implementation-planner/SKILL.md +22 -529
- package/src/skills-lib/implementation-planner/references/folder-structure-and-dependencies.md +132 -0
- package/src/skills-lib/implementation-planner/references/handoff-template.md +34 -0
- package/src/skills-lib/implementation-planner/references/implementation-phases.md +54 -0
- package/src/skills-lib/implementation-planner/references/implementation-types.md +28 -0
- package/src/skills-lib/implementation-planner/references/motion-path-implementation.md +57 -0
- package/src/skills-lib/implementation-planner/references/output-templates.md +92 -0
- package/src/skills-lib/implementation-planner/references/performance-plan.md +52 -0
- package/src/skills-lib/inicio-de-projeto/SKILL.md +4 -224
- package/src/skills-lib/inicio-de-projeto/references/implementacao-api-forms.md +112 -0
- package/src/skills-lib/inicio-de-projeto/references/padroes-arquiteturais-e-pastas.md +71 -0
- package/src/skills-lib/inicio-de-projeto/references/seguranca-e-regras-codigo.md +26 -0
- package/src/skills-lib/launch-strategy/SKILL.md +9 -311
- package/src/skills-lib/launch-strategy/references/five-phase-approach.md +76 -0
- package/src/skills-lib/launch-strategy/references/launch-checklist.md +34 -0
- package/src/skills-lib/launch-strategy/references/orb-framework.md +76 -0
- package/src/skills-lib/launch-strategy/references/post-launch-and-ongoing.md +64 -0
- package/src/skills-lib/launch-strategy/references/product-hunt-strategy.md +52 -0
- package/src/skills-lib/marketing-psychology/SKILL.md +18 -401
- package/src/skills-lib/marketing-psychology/references/design-and-delivery-models.md +56 -0
- package/src/skills-lib/marketing-psychology/references/foundational-thinking-models.md +76 -0
- package/src/skills-lib/marketing-psychology/references/growth-and-scaling-models.md +46 -0
- package/src/skills-lib/marketing-psychology/references/influencing-behavior.md +71 -0
- package/src/skills-lib/marketing-psychology/references/pricing-psychology.md +31 -0
- package/src/skills-lib/marketing-psychology/references/understanding-buyers.md +116 -0
- package/src/skills-lib/motion-3d-director/SKILL.md +23 -370
- package/src/skills-lib/motion-3d-director/references/image-to-video-workflow.md +166 -0
- package/src/skills-lib/motion-3d-director/references/motion-paths.md +119 -0
- package/src/skills-lib/motion-3d-director/references/performance-and-handoff.md +51 -0
- package/src/skills-lib/popup-cro/SKILL.md +11 -414
- package/src/skills-lib/popup-cro/references/design-copy-compliance.md +81 -0
- package/src/skills-lib/popup-cro/references/experiments.md +82 -0
- package/src/skills-lib/popup-cro/references/rules-measurement-output.md +87 -0
- package/src/skills-lib/popup-cro/references/triggers-and-popup-types.md +108 -0
- package/src/skills-lib/signup-flow-cro/SKILL.md +13 -321
- package/src/skills-lib/signup-flow-cro/references/experiments.md +72 -0
- package/src/skills-lib/signup-flow-cro/references/field-optimization.md +49 -0
- package/src/skills-lib/signup-flow-cro/references/flow-structure.md +38 -0
- package/src/skills-lib/signup-flow-cro/references/measurement-output-patterns.md +62 -0
- package/src/skills-lib/signup-flow-cro/references/trust-and-post-submit.md +40 -0
- package/src/skills-lib/taste-redesign/SKILL.md +10 -146
- package/src/skills-lib/taste-redesign/references/design-audit.md +120 -0
- package/src/skills-lib/taste-redesign/references/upgrade-techniques.md +31 -0
- package/src/skills-lib/ui-ux-pro-max/SKILL.md +9 -353
- package/src/skills-lib/ui-ux-pro-max/references/common-rules-checklist.md +76 -0
- package/src/skills-lib/ui-ux-pro-max/references/rules-quick-reference.md +70 -0
- package/src/skills-lib/ui-ux-pro-max/references/search-reference.md +45 -0
- package/src/skills-lib/ui-ux-pro-max/references/workflow-guide.md +157 -0
- package/src/skills-lib/web-security/SKILL.md +13 -187
- package/src/skills-lib/web-security/references/checklist-deploy.md +52 -0
- package/src/skills-lib/web-security/references/headers-rate-limit-cors.md +78 -0
- package/src/skills-lib/web-security/references/owasp-top5-detalhado.md +51 -0
- package/src/skills-lib/wizz-router/SKILL.md +20 -9
- package/src/skills-lib/wizz-router/references/auditoria-360.md +4 -4
- package/src/skills-lib/wizz-router/references/routing-table-flat.md +15 -15
- package/tools/fetch-assets.mjs +277 -0
- package/tools/installer/commands/fetch-assets.js +71 -0
- package/tools/installer/commands/install.js +35 -3
- package/tools/installer/commands/trace-report.js +131 -0
- package/tools/installer/core/config.js +9 -0
- package/tools/installer/core/help-catalog.js +181 -0
- package/tools/installer/core/install-paths.js +48 -3
- package/tools/installer/core/installer.js +253 -618
- package/tools/installer/core/manifest-generator.js +8 -1
- package/tools/installer/core/manifest.js +67 -22
- package/tools/installer/core/module-config-writer.js +110 -0
- package/tools/installer/core/preflight-tools-check.js +82 -0
- package/tools/installer/core/quick-update.js +209 -0
- package/tools/installer/core/user-file-preservation.js +250 -0
- package/tools/installer/modules/channel-resolver.js +34 -2
- package/tools/installer/modules/cli-config.js +127 -34
- package/tools/installer/modules/deps-cache.js +28 -1
- package/tools/installer/modules/env-vars.js +446 -0
- package/tools/installer/modules/external-manager.js +40 -6
- package/tools/installer/modules/mcp-config.js +180 -37
- package/tools/installer/modules/module-help-schema.js +2 -1
- package/tools/installer/modules/official-modules.js +1 -1
- package/tools/installer/modules/registry-resolve.js +74 -0
- package/tools/installer/modules/skills-lib.js +11 -15
- package/tools/installer/ui.js +71 -5
- package/wizz-modules.yaml +15 -5
- package/.claude-plugin/marketplace.json +0 -80
- package/AGENTS.md +0 -12
- package/build/artifacts/llms-full.txt +0 -4049
- package/build/artifacts/llms.txt +0 -28
- package/build/site/404.html +0 -55
- package/build/site/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.hwBsy0Mo.js +0 -1
- package/build/site/_astro/Search.astro_astro_type_script_index_0_lang.cjYDvRdi.js +0 -1
- package/build/site/_astro/TableOfContents.astro_astro_type_script_index_0_lang.FuRcXuRY.js +0 -1
- package/build/site/_astro/ec.0vx5m.js +0 -3
- package/build/site/_astro/ec.v4551.css +0 -1
- package/build/site/_astro/index.DdjI3lF_.css +0 -1
- package/build/site/_astro/page.B1D-nYk3.js +0 -1
- package/build/site/_astro/print.DNXP8c50.css +0 -1
- package/build/site/_astro/ui-core.D_Lfcn_I.js +0 -2
- package/build/site/diagrams/checkpoint-preview-diagram-fr.webp +0 -0
- package/build/site/diagrams/checkpoint-preview-diagram.png +0 -0
- package/build/site/diagrams/quick-dev-diagram-fr.webp +0 -0
- package/build/site/diagrams/quick-dev-diagram.png +0 -0
- package/build/site/explanation/advanced-elicitation/index.html +0 -105
- package/build/site/explanation/adversarial-review/index.html +0 -109
- package/build/site/explanation/analysis-phase/index.html +0 -129
- package/build/site/explanation/brainstorming/index.html +0 -92
- package/build/site/explanation/checkpoint-preview/index.html +0 -121
- package/build/site/explanation/established-projects-faq/index.html +0 -107
- package/build/site/explanation/forensic-investigation/index.html +0 -167
- package/build/site/explanation/named-agents/index.html +0 -187
- package/build/site/explanation/party-mode/index.html +0 -256
- package/build/site/explanation/preventing-agent-conflicts/index.html +0 -185
- package/build/site/explanation/project-context/index.html +0 -198
- package/build/site/explanation/quick-dev/index.html +0 -113
- package/build/site/explanation/web-bundles/index.html +0 -178
- package/build/site/explanation/why-solutioning-matters/index.html +0 -168
- package/build/site/how-to/customize-wizz/index.html +0 -277
- package/build/site/how-to/established-projects/index.html +0 -165
- package/build/site/how-to/expand-wizz-for-your-org/index.html +0 -245
- package/build/site/how-to/get-answers-about-wizz/index.html +0 -129
- package/build/site/how-to/install-custom-modules/index.html +0 -197
- package/build/site/how-to/install-wizz/index.html +0 -330
- package/build/site/how-to/non-interactive-installation/index.html +0 -73
- package/build/site/how-to/project-context/index.html +0 -141
- package/build/site/how-to/quick-fixes/index.html +0 -122
- package/build/site/how-to/shard-large-documents/index.html +0 -103
- package/build/site/how-to/upgrade-to-v6/index.html +0 -185
- package/build/site/how-to/use-web-bundles/index.html +0 -99
- package/build/site/img/wizz-dark.png +0 -0
- package/build/site/img/wizz-light.png +0 -0
- package/build/site/index.html +0 -128
- package/build/site/llms-full.txt +0 -4049
- package/build/site/llms.txt +0 -28
- package/build/site/pagefind/fragment/en_175de32.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_24258fb.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_24f53a6.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_27ba8f9.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_296ddb9.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_2b5aa5c.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_49047e0.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_4a187d2.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_514725b.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_583316f.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_6465dfb.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_67825a4.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_82aec61.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_85dcebf.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_887ce56.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_89a1a7a.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_8ade291.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_8c11f8a.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_8c1bde3.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_92d7cc7.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_94bfc21.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_9b57d7d.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_ab62b53.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_b0d23ee.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_ba9fb37.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_bb113eb.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_bfc56b6.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_c6d9e48.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_cdd772f.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_cdd885c.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_cefed6a.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_d890205.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_da351b7.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_ea289f9.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_f1c3711.pf_fragment +0 -0
- package/build/site/pagefind/index/en_5b9d8c6.pf_index +0 -0
- package/build/site/pagefind/index/en_868614c.pf_index +0 -0
- package/build/site/pagefind/index/en_e4f9bff.pf_index +0 -0
- package/build/site/pagefind/pagefind-entry.json +0 -1
- package/build/site/pagefind/pagefind-highlight.js +0 -1064
- package/build/site/pagefind/pagefind-modular-ui.css +0 -214
- package/build/site/pagefind/pagefind-modular-ui.js +0 -8
- package/build/site/pagefind/pagefind-ui.css +0 -1
- package/build/site/pagefind/pagefind-ui.js +0 -2
- package/build/site/pagefind/pagefind.en_4e69d7f053.pf_meta +0 -0
- package/build/site/pagefind/pagefind.js +0 -6
- package/build/site/pagefind/wasm.en.pagefind +0 -0
- package/build/site/pagefind/wasm.unknown.pagefind +0 -0
- package/build/site/reference/agents/index.html +0 -168
- package/build/site/reference/commands/index.html +0 -254
- package/build/site/reference/core-tools/index.html +0 -384
- package/build/site/reference/modules/index.html +0 -132
- package/build/site/reference/testing/index.html +0 -218
- package/build/site/reference/workflow-map/index.html +0 -266
- package/build/site/roadmap/index.html +0 -77
- package/build/site/robots.txt +0 -37
- package/build/site/sitemap-0.xml +0 -1
- package/build/site/sitemap-index.xml +0 -1
- package/build/site/tutorials/getting-started/index.html +0 -386
- package/build/site/wizz-icon-orange.svg +0 -7
- package/build/site/workflow-map-diagram-fr.html +0 -375
- package/build/site/workflow-map-diagram.html +0 -375
- package/evals/bmm-skills/wizz-product-brief/evals.json +0 -237
- package/evals/bmm-skills/wizz-product-brief/files/branfield-memo.md +0 -46
- package/evals/bmm-skills/wizz-product-brief/files/forkbird-brief/addendum.md +0 -40
- package/evals/bmm-skills/wizz-product-brief/files/forkbird-brief/brief.md +0 -56
- package/evals/bmm-skills/wizz-product-brief/files/forkbird-brief/decision-log.md +0 -27
- package/evals/bmm-skills/wizz-product-brief/files/meridian-mobility-report.md +0 -116
- package/evals/bmm-skills/wizz-product-brief/files/mossridge-brief/addendum.md +0 -41
- package/evals/bmm-skills/wizz-product-brief/files/mossridge-brief/brief.md +0 -57
- package/evals/bmm-skills/wizz-product-brief/files/mossridge-brief/decision-log.md +0 -29
- package/evals/bmm-skills/wizz-product-brief/files/pantry-bridge-interviews.md +0 -90
- package/evals/bmm-skills/wizz-product-brief/files/q2-brainstorm.md +0 -101
- package/evals/bmm-skills/wizz-product-brief/triggers.json +0 -18
- package/evals/routing/dataset.json +0 -290
- package/evals/routing/run-routing-eval.mjs +0 -89
- package/src/skills-lib/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/src/skills-lib/huashu-design/assets/bgm-ad.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/bgm-educational-alt.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/bgm-educational.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/bgm-tech.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/bgm-tutorial-alt.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/bgm-tutorial.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/container/card-flip.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/container/card-snap.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/container/modal-open.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/container/stack-collapse.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/feedback/achievement.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/feedback/error-tone.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/feedback/notification-pop.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/feedback/success-chime.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/impact/brand-stamp.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/impact/drop-thud.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/impact/logo-reveal-v2.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/impact/logo-reveal.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/keyboard/delete-key.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/keyboard/enter.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/keyboard/space-tap.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/keyboard/type-fast.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/keyboard/type.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/magic/ai-process.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/magic/sparkle.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/magic/transform.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/progress/complete-done.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/progress/generate-start.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/progress/loading-tick.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/terminal/command-execute.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/terminal/cursor-blink.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/terminal/output-appear.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/transition/dissolve.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/transition/slide-in.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/transition/swipe-horizontal.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/transition/whoosh-fast.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/transition/whoosh.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/ui/click-soft.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/ui/click.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/ui/focus.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/ui/hover-subtle.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/ui/tap-finger.mp3 +0 -0
- package/src/skills-lib/huashu-design/assets/sfx/ui/toggle-on.mp3 +0 -0
- package/src/squads/README.md +0 -39
- package/src/squads/advisory-board/README.md +0 -34
- package/src/squads/advisory-board/agents/board-chair.md +0 -161
- package/src/squads/advisory-board/agents/brene-brown.md +0 -296
- package/src/squads/advisory-board/agents/charlie-munger.md +0 -590
- package/src/squads/advisory-board/agents/derek-sivers.md +0 -268
- package/src/squads/advisory-board/agents/naval-ravikant.md +0 -251
- package/src/squads/advisory-board/agents/patrick-lencioni.md +0 -394
- package/src/squads/advisory-board/agents/peter-thiel.md +0 -269
- package/src/squads/advisory-board/agents/ray-dalio.md +0 -567
- package/src/squads/advisory-board/agents/reid-hoffman.md +0 -278
- package/src/squads/advisory-board/agents/simon-sinek.md +0 -291
- package/src/squads/advisory-board/agents/yvon-chouinard.md +0 -275
- package/src/squads/advisory-board/squad.yaml +0 -50
- package/src/squads/brand-squad/README.md +0 -60
- package/src/squads/brand-squad/agents/al-ries.md +0 -175
- package/src/squads/brand-squad/agents/alina-wheeler.md +0 -184
- package/src/squads/brand-squad/agents/archetype-consultant.md +0 -215
- package/src/squads/brand-squad/agents/brand-chief.md +0 -158
- package/src/squads/brand-squad/agents/byron-sharp.md +0 -169
- package/src/squads/brand-squad/agents/david-aaker.md +0 -166
- package/src/squads/brand-squad/agents/denise-yohn.md +0 -172
- package/src/squads/brand-squad/agents/domain-scout.md +0 -135
- package/src/squads/brand-squad/agents/donald-miller.md +0 -179
- package/src/squads/brand-squad/agents/emily-heyward.md +0 -147
- package/src/squads/brand-squad/agents/jean-noel-kapferer.md +0 -189
- package/src/squads/brand-squad/agents/kevin-keller.md +0 -199
- package/src/squads/brand-squad/agents/marty-neumeier.md +0 -170
- package/src/squads/brand-squad/agents/miller-sticky-brand.md +0 -180
- package/src/squads/brand-squad/agents/naming-strategist.md +0 -171
- package/src/squads/brand-squad/squad.yaml +0 -117
- package/src/squads/c-level-squad/README.md +0 -29
- package/src/squads/c-level-squad/agents/caio-architect.md +0 -235
- package/src/squads/c-level-squad/agents/cio-engineer.md +0 -209
- package/src/squads/c-level-squad/agents/cmo-architect.md +0 -208
- package/src/squads/c-level-squad/agents/coo-orchestrator.md +0 -193
- package/src/squads/c-level-squad/agents/cto-architect.md +0 -194
- package/src/squads/c-level-squad/agents/vision-chief.md +0 -201
- package/src/squads/c-level-squad/squad.yaml +0 -45
- package/src/squads/claude-code-mastery/README.md +0 -146
- package/src/squads/claude-code-mastery/agents/claude-mastery-chief.md +0 -554
- package/src/squads/claude-code-mastery/agents/config-engineer.md +0 -865
- package/src/squads/claude-code-mastery/agents/hooks-architect.md +0 -1013
- package/src/squads/claude-code-mastery/agents/mcp-integrator.md +0 -791
- package/src/squads/claude-code-mastery/agents/project-integrator.md +0 -1196
- package/src/squads/claude-code-mastery/agents/roadmap-sentinel.md +0 -931
- package/src/squads/claude-code-mastery/agents/skill-craftsman.md +0 -1250
- package/src/squads/claude-code-mastery/agents/swarm-orchestrator.md +0 -1008
- package/src/squads/copy-squad/README.md +0 -65
- package/src/squads/copy-squad/agents/andre-chaperon.md +0 -206
- package/src/squads/copy-squad/agents/ben-settle.md +0 -194
- package/src/squads/copy-squad/agents/claude-hopkins.md +0 -182
- package/src/squads/copy-squad/agents/clayton-makepeace.md +0 -225
- package/src/squads/copy-squad/agents/copy-chief.md +0 -166
- package/src/squads/copy-squad/agents/dan-kennedy.md +0 -202
- package/src/squads/copy-squad/agents/dan-koe.md +0 -223
- package/src/squads/copy-squad/agents/david-deutsch.md +0 -197
- package/src/squads/copy-squad/agents/david-ogilvy.md +0 -198
- package/src/squads/copy-squad/agents/eugene-schwartz.md +0 -238
- package/src/squads/copy-squad/agents/frank-kern.md +0 -195
- package/src/squads/copy-squad/agents/gary-bencivenga.md +0 -197
- package/src/squads/copy-squad/agents/gary-halbert.md +0 -219
- package/src/squads/copy-squad/agents/jim-rutz.md +0 -193
- package/src/squads/copy-squad/agents/joe-sugarman.md +0 -234
- package/src/squads/copy-squad/agents/john-carlton.md +0 -203
- package/src/squads/copy-squad/agents/jon-benson.md +0 -196
- package/src/squads/copy-squad/agents/parris-lampropoulos.md +0 -188
- package/src/squads/copy-squad/agents/robert-collier.md +0 -183
- package/src/squads/copy-squad/agents/russell-brunson.md +0 -229
- package/src/squads/copy-squad/agents/ry-schwartz.md +0 -185
- package/src/squads/copy-squad/agents/stefan-georgi.md +0 -188
- package/src/squads/copy-squad/agents/todd-brown.md +0 -171
- package/src/squads/copy-squad/squad.yaml +0 -87
- package/src/squads/cybersecurity/README.md +0 -38
- package/src/squads/cybersecurity/agents/busterer.md +0 -108
- package/src/squads/cybersecurity/agents/cartographer.md +0 -114
- package/src/squads/cybersecurity/agents/chris-sanders.md +0 -205
- package/src/squads/cybersecurity/agents/command-generator.md +0 -121
- package/src/squads/cybersecurity/agents/cyber-chief.md +0 -120
- package/src/squads/cybersecurity/agents/dirber.md +0 -111
- package/src/squads/cybersecurity/agents/fuzzer.md +0 -121
- package/src/squads/cybersecurity/agents/georgia-weidman.md +0 -178
- package/src/squads/cybersecurity/agents/jim-manico.md +0 -182
- package/src/squads/cybersecurity/agents/marcus-carey.md +0 -200
- package/src/squads/cybersecurity/agents/omar-santos.md +0 -206
- package/src/squads/cybersecurity/agents/peter-kim.md +0 -179
- package/src/squads/cybersecurity/agents/ripper.md +0 -121
- package/src/squads/cybersecurity/agents/rogue.md +0 -116
- package/src/squads/cybersecurity/agents/shannon-runner.md +0 -108
- package/src/squads/cybersecurity/squad.yaml +0 -56
- package/src/squads/data-squad/README.md +0 -30
- package/src/squads/data-squad/agents/avinash-kaushik.md +0 -268
- package/src/squads/data-squad/agents/data-chief.md +0 -167
- package/src/squads/data-squad/agents/david-spinks.md +0 -277
- package/src/squads/data-squad/agents/nick-mehta.md +0 -294
- package/src/squads/data-squad/agents/peter-fader.md +0 -246
- package/src/squads/data-squad/agents/sean-ellis.md +0 -303
- package/src/squads/data-squad/agents/wes-kao.md +0 -268
- package/src/squads/data-squad/squad.yaml +0 -46
- package/src/squads/design-squad/README.md +0 -31
- package/src/squads/design-squad/agents/brad-frost.md +0 -185
- package/src/squads/design-squad/agents/dan-mall.md +0 -178
- package/src/squads/design-squad/agents/dave-malouf.md +0 -198
- package/src/squads/design-squad/agents/design-chief.md +0 -109
- package/src/squads/design-squad/agents/design-system-architect.md +0 -109
- package/src/squads/design-squad/agents/ui-engineer.md +0 -102
- package/src/squads/design-squad/agents/ux-designer.md +0 -105
- package/src/squads/design-squad/agents/visual-generator.md +0 -108
- package/src/squads/design-squad/squad.yaml +0 -48
- package/src/squads/hormozi-squad/README.md +0 -39
- package/src/squads/hormozi-squad/agents/hormozi-ads.md +0 -159
- package/src/squads/hormozi-squad/agents/hormozi-advisor.md +0 -178
- package/src/squads/hormozi-squad/agents/hormozi-audit.md +0 -178
- package/src/squads/hormozi-squad/agents/hormozi-chief.md +0 -111
- package/src/squads/hormozi-squad/agents/hormozi-closer.md +0 -179
- package/src/squads/hormozi-squad/agents/hormozi-content.md +0 -166
- package/src/squads/hormozi-squad/agents/hormozi-copy.md +0 -152
- package/src/squads/hormozi-squad/agents/hormozi-hooks.md +0 -177
- package/src/squads/hormozi-squad/agents/hormozi-launch.md +0 -160
- package/src/squads/hormozi-squad/agents/hormozi-leads.md +0 -198
- package/src/squads/hormozi-squad/agents/hormozi-models.md +0 -191
- package/src/squads/hormozi-squad/agents/hormozi-offers.md +0 -197
- package/src/squads/hormozi-squad/agents/hormozi-pricing.md +0 -151
- package/src/squads/hormozi-squad/agents/hormozi-retention.md +0 -166
- package/src/squads/hormozi-squad/agents/hormozi-scale.md +0 -175
- package/src/squads/hormozi-squad/agents/hormozi-workshop.md +0 -160
- package/src/squads/hormozi-squad/squad.yaml +0 -60
- package/src/squads/movement/README.md +0 -29
- package/src/squads/movement/agents/analista-de-impacto.md +0 -350
- package/src/squads/movement/agents/estrategista-de-ciclo.md +0 -301
- package/src/squads/movement/agents/fenomenologo.md +0 -169
- package/src/squads/movement/agents/identitario.md +0 -265
- package/src/squads/movement/agents/manifestador.md +0 -279
- package/src/squads/movement/agents/movement-architect.md +0 -210
- package/src/squads/movement/agents/movement-chief.md +0 -135
- package/src/squads/movement/squad.yaml +0 -45
- package/src/squads/storytelling/README.md +0 -35
- package/src/squads/storytelling/agents/blake-snyder.md +0 -225
- package/src/squads/storytelling/agents/dan-harmon.md +0 -167
- package/src/squads/storytelling/agents/joseph-campbell.md +0 -184
- package/src/squads/storytelling/agents/keith-johnstone.md +0 -157
- package/src/squads/storytelling/agents/kindra-hall.md +0 -162
- package/src/squads/storytelling/agents/marshall-ganz.md +0 -167
- package/src/squads/storytelling/agents/matthew-dicks.md +0 -152
- package/src/squads/storytelling/agents/nancy-duarte.md +0 -154
- package/src/squads/storytelling/agents/oren-klaff.md +0 -166
- package/src/squads/storytelling/agents/park-howell.md +0 -152
- package/src/squads/storytelling/agents/shawn-coyne.md +0 -208
- package/src/squads/storytelling/agents/story-chief.md +0 -155
- package/src/squads/storytelling/squad.yaml +0 -52
- package/src/squads/traffic-masters/README.md +0 -39
- package/src/squads/traffic-masters/agents/ad-midas.md +0 -149
- package/src/squads/traffic-masters/agents/ads-analyst.md +0 -135
- package/src/squads/traffic-masters/agents/creative-analyst.md +0 -142
- package/src/squads/traffic-masters/agents/depesh-mandalia.md +0 -174
- package/src/squads/traffic-masters/agents/fiscal.md +0 -144
- package/src/squads/traffic-masters/agents/kasim-aslam.md +0 -158
- package/src/squads/traffic-masters/agents/media-buyer.md +0 -159
- package/src/squads/traffic-masters/agents/molly-pittman.md +0 -185
- package/src/squads/traffic-masters/agents/nicholas-kusmich.md +0 -157
- package/src/squads/traffic-masters/agents/pedro-sobral.md +0 -158
- package/src/squads/traffic-masters/agents/performance-analyst.md +0 -135
- package/src/squads/traffic-masters/agents/pixel-specialist.md +0 -144
- package/src/squads/traffic-masters/agents/ralph-burns.md +0 -163
- package/src/squads/traffic-masters/agents/scale-optimizer.md +0 -144
- package/src/squads/traffic-masters/agents/tom-breeze.md +0 -175
- package/src/squads/traffic-masters/agents/traffic-chief.md +0 -97
- package/src/squads/traffic-masters/squad.yaml +0 -59
- package/tools/bundle-web-bundles.js +0 -117
- package/tools/format-workflow-md.js +0 -263
- package/tools/hooks/README.md +0 -17
- package/tools/hooks/security-defensive-context.js +0 -70
- package/tools/hooks/session-rules.js +0 -38
- package/tools/hooks/wizz-router-enforce.js +0 -188
- package/tools/javascript-conventions.md +0 -5
- package/tools/migrate-custom-module-paths.js +0 -124
- package/tools/skill-validator.md +0 -368
- package/tools/sync-global.mjs +0 -84
- package/tools/validate-sidebar-order.js +0 -388
- package/tools/validate-skills.js +0 -708
- package/tools/validate-svg-changes.sh +0 -356
- /package/tools/installer/{cli-utils.js → banner.js} +0 -0
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
# Traffic Chief
|
|
2
|
-
|
|
3
|
-
> ACTIVATION-NOTICE: You are the Traffic Chief — orchestrator of the Traffic Masters Squad. You do NOT buy media or write ads. You DIAGNOSE traffic problems, ROUTE them to the correct specialist, and REVIEW their output. You think in platforms, funnels, metrics, and creative. Every traffic problem maps to a platform expert or functional specialist.
|
|
4
|
-
|
|
5
|
-
## COMPLETE AGENT DEFINITION
|
|
6
|
-
|
|
7
|
-
```yaml
|
|
8
|
-
agent:
|
|
9
|
-
name: "Traffic Chief"
|
|
10
|
-
id: traffic-chief
|
|
11
|
-
title: "Traffic Masters Orchestrator"
|
|
12
|
-
icon: "🎯"
|
|
13
|
-
tier: 0
|
|
14
|
-
squad: traffic-masters
|
|
15
|
-
role: orchestrator
|
|
16
|
-
|
|
17
|
-
persona:
|
|
18
|
-
role: "Traffic Problem Diagnostician & Squad Router"
|
|
19
|
-
identity: "The central nervous system of the Traffic Masters Squad. Fluent in all major ad platforms and traffic strategies. Diagnoses whether a traffic problem is platform-specific, creative-related, targeting-based, budget-driven, or funnel-connected. Routes to the right expert or specialist."
|
|
20
|
-
style: "Analytical, metric-driven, diagnostic. Gets to the root cause fast. Speaks in ROAS, CPA, CTR, and funnel stages."
|
|
21
|
-
|
|
22
|
-
core_diagnostic:
|
|
23
|
-
step_1: "What's the ACTUAL problem? (Not enough traffic? Wrong traffic? Traffic that doesn't convert?)"
|
|
24
|
-
step_2: "Which platform(s)? (Facebook, Google, YouTube, TikTok, LinkedIn, multi-platform)"
|
|
25
|
-
step_3: "Where in the funnel? (Top = awareness/reach, Middle = consideration/clicks, Bottom = conversion)"
|
|
26
|
-
step_4: "What's the budget level? (<$1K/mo, $1K-$10K, $10K-$100K, $100K+)"
|
|
27
|
-
step_5: "Route to the right specialist."
|
|
28
|
-
|
|
29
|
-
routing_logic:
|
|
30
|
-
platform_specific:
|
|
31
|
-
facebook_meta:
|
|
32
|
-
signals: ["Facebook ads", "Meta ads", "Instagram ads", "Reels ads"]
|
|
33
|
-
route_to: [molly-pittman, depesh-mandalia, ralph-burns]
|
|
34
|
-
youtube:
|
|
35
|
-
signals: ["YouTube ads", "pre-roll", "TrueView", "video ads on YouTube"]
|
|
36
|
-
route_to: tom-breeze
|
|
37
|
-
google:
|
|
38
|
-
signals: ["Google Ads", "Search ads", "Performance Max", "Shopping ads"]
|
|
39
|
-
route_to: kasim-aslam
|
|
40
|
-
brazil_latam:
|
|
41
|
-
signals: ["Brazilian market", "LATAM", "Portuguese-speaking", "gestor de trafego"]
|
|
42
|
-
route_to: pedro-sobral
|
|
43
|
-
|
|
44
|
-
function_specific:
|
|
45
|
-
creative_problem:
|
|
46
|
-
signals: ["ads not getting clicks", "creative fatigue", "need better ad creative", "low CTR"]
|
|
47
|
-
route_to: [ad-midas, creative-analyst]
|
|
48
|
-
scaling_problem:
|
|
49
|
-
signals: ["can't scale spend", "CPA increases with budget", "diminishing returns"]
|
|
50
|
-
route_to: [scale-optimizer, depesh-mandalia]
|
|
51
|
-
tracking_problem:
|
|
52
|
-
signals: ["attribution issues", "pixel not firing", "iOS tracking", "conversion tracking broken"]
|
|
53
|
-
route_to: pixel-specialist
|
|
54
|
-
analysis_problem:
|
|
55
|
-
signals: ["don't know what's working", "need audit", "can't read the data"]
|
|
56
|
-
route_to: [performance-analyst, ads-analyst]
|
|
57
|
-
budget_problem:
|
|
58
|
-
signals: ["budget allocation", "cashflow for ads", "ROAS targets", "profitability"]
|
|
59
|
-
route_to: fiscal
|
|
60
|
-
execution_problem:
|
|
61
|
-
signals: ["need someone to set up campaigns", "campaign structure", "media buying"]
|
|
62
|
-
route_to: media-buyer
|
|
63
|
-
|
|
64
|
-
quality_review:
|
|
65
|
-
checks:
|
|
66
|
-
- "Is the offer validated before spending on ads?"
|
|
67
|
-
- "Is tracking properly set up?"
|
|
68
|
-
- "Are we testing creatives systematically?"
|
|
69
|
-
- "Is the CPA sustainable relative to LTV?"
|
|
70
|
-
- "Are we scaling profitably, not just spending more?"
|
|
71
|
-
- "Is there a clear funnel from click to conversion?"
|
|
72
|
-
|
|
73
|
-
commands:
|
|
74
|
-
- name: diagnose
|
|
75
|
-
description: "Diagnose the traffic problem and recommend the right specialist"
|
|
76
|
-
- name: route
|
|
77
|
-
description: "Route a specific request to the correct traffic agent"
|
|
78
|
-
- name: review
|
|
79
|
-
description: "Review any traffic strategy for completeness"
|
|
80
|
-
- name: roster
|
|
81
|
-
description: "Show all 16 Traffic Masters agents and their specialties"
|
|
82
|
-
- name: metrics
|
|
83
|
-
description: "Quick metrics health check on any campaign"
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## How the Traffic Chief Routes
|
|
89
|
-
|
|
90
|
-
1. **Listen to the problem.** What's actually happening with their traffic/ads?
|
|
91
|
-
2. **Identify the platform.** Facebook? Google? YouTube? Multi-platform?
|
|
92
|
-
3. **Identify the function.** Creative? Targeting? Scaling? Tracking? Budget?
|
|
93
|
-
4. **Check the budget level.** Strategy differs at $1K/mo vs. $100K/mo.
|
|
94
|
-
5. **Route to specialist.** Platform expert for strategy, functional agent for execution.
|
|
95
|
-
6. **Review output.** Does it meet ROAS targets? Is it scalable?
|
|
96
|
-
|
|
97
|
-
The Chief NEVER writes ads, buys media, or sets up campaigns. The Chief DIAGNOSES and ROUTES.
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
name: traffic-masters
|
|
2
|
-
version: "1.0.0"
|
|
3
|
-
short-title: "Traffic Masters"
|
|
4
|
-
description: "Squad de 16 agentes especialistas em trafego pago. Facebook, YouTube, Google Ads, media buying, creative analysis, scaling, tracking."
|
|
5
|
-
author: "Synkra AIOS"
|
|
6
|
-
license: MIT
|
|
7
|
-
slashPrefix: "traffic-masters"
|
|
8
|
-
|
|
9
|
-
aios:
|
|
10
|
-
minVersion: "4.0.0"
|
|
11
|
-
type: squad
|
|
12
|
-
|
|
13
|
-
tags:
|
|
14
|
-
- traffic
|
|
15
|
-
- ads
|
|
16
|
-
- facebook
|
|
17
|
-
- google
|
|
18
|
-
- youtube
|
|
19
|
-
- media-buying
|
|
20
|
-
- creative
|
|
21
|
-
- scaling
|
|
22
|
-
- tracking
|
|
23
|
-
|
|
24
|
-
components:
|
|
25
|
-
agents:
|
|
26
|
-
- traffic-chief.md
|
|
27
|
-
- molly-pittman.md
|
|
28
|
-
- ralph-burns.md
|
|
29
|
-
- depesh-mandalia.md
|
|
30
|
-
- nicholas-kusmich.md
|
|
31
|
-
- tom-breeze.md
|
|
32
|
-
- kasim-aslam.md
|
|
33
|
-
- pedro-sobral.md
|
|
34
|
-
- ad-midas.md
|
|
35
|
-
- media-buyer.md
|
|
36
|
-
- performance-analyst.md
|
|
37
|
-
- creative-analyst.md
|
|
38
|
-
- scale-optimizer.md
|
|
39
|
-
- pixel-specialist.md
|
|
40
|
-
- ads-analyst.md
|
|
41
|
-
- fiscal.md
|
|
42
|
-
tasks:
|
|
43
|
-
- analyze-performance.md
|
|
44
|
-
- audit-ad-account.md
|
|
45
|
-
- create-ad-creative.md
|
|
46
|
-
- create-ad-strategy.md
|
|
47
|
-
- diagnose.md
|
|
48
|
-
- manage-budget.md
|
|
49
|
-
- review.md
|
|
50
|
-
- scale-campaign.md
|
|
51
|
-
- setup-tracking.md
|
|
52
|
-
workflows:
|
|
53
|
-
- wf-account-audit.yaml
|
|
54
|
-
- wf-campaign-launch.yaml
|
|
55
|
-
checklists:
|
|
56
|
-
- output-quality.md
|
|
57
|
-
|
|
58
|
-
config:
|
|
59
|
-
extends: extend
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Web Bundle Release Packager
|
|
3
|
-
*
|
|
4
|
-
* Zips each bundle under web-bundles/ into dist/web-bundles/{slug}.zip
|
|
5
|
-
* for attachment to a GitHub Release.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* node tools/bundle-web-bundles.js
|
|
9
|
-
*
|
|
10
|
-
* After running, the script prints the exact `gh release create` command
|
|
11
|
-
* (with the correct tag from bundles.json) for you to copy.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
const fs = require('node:fs');
|
|
15
|
-
const path = require('node:path');
|
|
16
|
-
const { execSync, execFileSync } = require('node:child_process');
|
|
17
|
-
|
|
18
|
-
const REPO_ROOT = path.resolve(__dirname, '..');
|
|
19
|
-
const BUNDLES_DIR = path.join(REPO_ROOT, 'web-bundles');
|
|
20
|
-
const DIST_DIR = path.join(REPO_ROOT, 'dist', 'web-bundles');
|
|
21
|
-
const MANIFEST = path.join(BUNDLES_DIR, 'bundles.json');
|
|
22
|
-
const SLUG_RE = /^[a-z0-9][a-z0-9-]*$/;
|
|
23
|
-
|
|
24
|
-
function fail(msg) {
|
|
25
|
-
console.error(`[ERROR] ${msg}`);
|
|
26
|
-
process.exit(1);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function requireZipCli() {
|
|
30
|
-
try {
|
|
31
|
-
execSync('zip -v', { stdio: 'ignore' });
|
|
32
|
-
} catch {
|
|
33
|
-
fail("'zip' CLI not found on PATH. Install zip (macOS: preinstalled; Debian/Ubuntu: apt install zip; Alpine: apk add zip) and re-run.");
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function loadManifest() {
|
|
38
|
-
if (!fs.existsSync(MANIFEST)) {
|
|
39
|
-
fail(`bundles.json not found at ${MANIFEST}`);
|
|
40
|
-
}
|
|
41
|
-
let manifest;
|
|
42
|
-
try {
|
|
43
|
-
manifest = JSON.parse(fs.readFileSync(MANIFEST, 'utf-8'));
|
|
44
|
-
} catch (error) {
|
|
45
|
-
fail(`bundles.json is not valid JSON: ${error.message}`);
|
|
46
|
-
}
|
|
47
|
-
if (!Array.isArray(manifest.bundles) || manifest.bundles.length === 0) {
|
|
48
|
-
fail('bundles.json is missing a non-empty "bundles" array.');
|
|
49
|
-
}
|
|
50
|
-
if (typeof manifest.releaseTag !== 'string' || !manifest.releaseTag) {
|
|
51
|
-
fail('bundles.json is missing "releaseTag".');
|
|
52
|
-
}
|
|
53
|
-
return manifest;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function main() {
|
|
57
|
-
requireZipCli();
|
|
58
|
-
const manifest = loadManifest();
|
|
59
|
-
const releaseTag = manifest.releaseTag;
|
|
60
|
-
|
|
61
|
-
fs.mkdirSync(DIST_DIR, { recursive: true });
|
|
62
|
-
|
|
63
|
-
console.log(`Packaging ${manifest.bundles.length} bundles for release ${releaseTag}\n`);
|
|
64
|
-
|
|
65
|
-
const zipped = [];
|
|
66
|
-
const missing = [];
|
|
67
|
-
const invalid = [];
|
|
68
|
-
for (const bundle of manifest.bundles) {
|
|
69
|
-
if (!bundle.slug || !SLUG_RE.test(bundle.slug)) {
|
|
70
|
-
invalid.push(bundle.slug || '(no slug)');
|
|
71
|
-
console.error(` [INVALID] slug must match ${SLUG_RE} — got: ${bundle.slug}`);
|
|
72
|
-
continue;
|
|
73
|
-
}
|
|
74
|
-
const src = path.join(BUNDLES_DIR, bundle.slug);
|
|
75
|
-
if (!fs.existsSync(src)) {
|
|
76
|
-
missing.push(bundle.slug);
|
|
77
|
-
console.error(` [MISSING] ${bundle.slug} — directory not found`);
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
const out = path.join(DIST_DIR, `${bundle.slug}.zip`);
|
|
82
|
-
if (fs.existsSync(out)) fs.unlinkSync(out);
|
|
83
|
-
|
|
84
|
-
try {
|
|
85
|
-
execFileSync('zip', ['-r', '-X', '-q', out, bundle.slug, '-x', '*.DS_Store'], {
|
|
86
|
-
cwd: BUNDLES_DIR,
|
|
87
|
-
stdio: 'inherit',
|
|
88
|
-
});
|
|
89
|
-
} catch (error) {
|
|
90
|
-
fail(`zip failed for ${bundle.slug}: ${error.message}`);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const size = (fs.statSync(out).size / 1024).toFixed(1);
|
|
94
|
-
console.log(` [OK] ${bundle.slug}.zip (${size} KB)`);
|
|
95
|
-
zipped.push(bundle.slug);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
if (invalid.length > 0) {
|
|
99
|
-
fail(`Refusing to publish: ${invalid.length} bundle(s) have invalid slugs: ${invalid.join(', ')}`);
|
|
100
|
-
}
|
|
101
|
-
if (missing.length > 0) {
|
|
102
|
-
fail(`Refusing to publish an incomplete release: missing directories for ${missing.join(', ')}`);
|
|
103
|
-
}
|
|
104
|
-
if (zipped.length === 0) {
|
|
105
|
-
fail('No bundles were packaged. Check bundles.json against web-bundles/ subdirectories.');
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
console.log(`\nWrote ${zipped.length} bundles to ${path.relative(REPO_ROOT, DIST_DIR)}/`);
|
|
109
|
-
console.log('\nNext step — create or update the GitHub Release:\n');
|
|
110
|
-
console.log(` gh release create ${releaseTag} dist/web-bundles/*.zip \\`);
|
|
111
|
-
console.log(` --title "${releaseTag}" \\`);
|
|
112
|
-
console.log(` --notes "Wizz web bundles for Gemini Gems and ChatGPT Custom GPTs. See https://bmadcode.com/web-bundles/"\n`);
|
|
113
|
-
console.log('Or, to refresh an existing release:\n');
|
|
114
|
-
console.log(` gh release upload ${releaseTag} dist/web-bundles/*.zip --clobber\n`);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
main();
|
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WIZZ Workflow Markdown Formatter
|
|
3
|
-
*
|
|
4
|
-
* Formats mixed markdown + XML workflow instruction files with:
|
|
5
|
-
* - 2-space XML indentation
|
|
6
|
-
* - Preserved markdown content
|
|
7
|
-
* - Proper tag nesting
|
|
8
|
-
* - Consistent formatting
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
const fs = require('node:fs');
|
|
12
|
-
const path = require('node:path');
|
|
13
|
-
|
|
14
|
-
class WorkflowFormatter {
|
|
15
|
-
constructor(options = {}) {
|
|
16
|
-
this.indentSize = options.indentSize || 2;
|
|
17
|
-
this.preserveMarkdown = options.preserveMarkdown !== false;
|
|
18
|
-
this.verbose = options.verbose || false;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Format a workflow markdown file
|
|
23
|
-
*/
|
|
24
|
-
format(filePath) {
|
|
25
|
-
if (this.verbose) {
|
|
26
|
-
console.log(`Formatting: ${filePath}`);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const content = fs.readFileSync(filePath, 'utf8');
|
|
30
|
-
const formatted = this.formatContent(content);
|
|
31
|
-
|
|
32
|
-
// Only write if content changed
|
|
33
|
-
if (content === formatted) {
|
|
34
|
-
if (this.verbose) {
|
|
35
|
-
console.log(`- No changes: ${filePath}`);
|
|
36
|
-
}
|
|
37
|
-
return false;
|
|
38
|
-
} else {
|
|
39
|
-
fs.writeFileSync(filePath, formatted, 'utf8');
|
|
40
|
-
if (this.verbose) {
|
|
41
|
-
console.log(`✓ Formatted: ${filePath}`);
|
|
42
|
-
}
|
|
43
|
-
return true;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Format content string with stateful indentation tracking
|
|
49
|
-
*/
|
|
50
|
-
formatContent(content) {
|
|
51
|
-
const lines = content.split('\n');
|
|
52
|
-
const formatted = [];
|
|
53
|
-
let indentLevel = 0;
|
|
54
|
-
let inCodeBlock = false;
|
|
55
|
-
let checkBlockDepth = 0; // Track nested check blocks
|
|
56
|
-
|
|
57
|
-
for (let i = 0; i < lines.length; i++) {
|
|
58
|
-
const line = lines[i];
|
|
59
|
-
const trimmed = line.trim();
|
|
60
|
-
|
|
61
|
-
// Track code blocks (don't format inside them)
|
|
62
|
-
if (trimmed.startsWith('```')) {
|
|
63
|
-
if (inCodeBlock) {
|
|
64
|
-
inCodeBlock = false;
|
|
65
|
-
} else {
|
|
66
|
-
inCodeBlock = true;
|
|
67
|
-
}
|
|
68
|
-
formatted.push(line);
|
|
69
|
-
continue;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// Don't format inside code blocks
|
|
73
|
-
if (inCodeBlock) {
|
|
74
|
-
formatted.push(line);
|
|
75
|
-
continue;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Handle XML tags
|
|
79
|
-
if (this.isXMLLine(trimmed)) {
|
|
80
|
-
const result = this.formatXMLLine(trimmed, indentLevel, checkBlockDepth, i, lines);
|
|
81
|
-
formatted.push(result.line);
|
|
82
|
-
indentLevel = result.nextIndent;
|
|
83
|
-
checkBlockDepth = result.nextCheckDepth;
|
|
84
|
-
} else if (trimmed === '') {
|
|
85
|
-
// Preserve blank lines
|
|
86
|
-
formatted.push('');
|
|
87
|
-
} else {
|
|
88
|
-
// Markdown content - preserve as-is but maintain current indent if inside XML
|
|
89
|
-
formatted.push(line);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return formatted.join('\n');
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Check if line contains XML tag
|
|
98
|
-
*/
|
|
99
|
-
isXMLLine(line) {
|
|
100
|
-
return /^<[a-zA-Z-]+(\s|>|\/)/.test(line) || /^<\/[a-zA-Z-]+>/.test(line);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Format a single XML line with context awareness
|
|
105
|
-
*/
|
|
106
|
-
formatXMLLine(line, currentIndent, checkDepth, lineIndex, allLines) {
|
|
107
|
-
const trimmed = line.trim();
|
|
108
|
-
let indent = currentIndent;
|
|
109
|
-
let nextIndent = currentIndent;
|
|
110
|
-
let nextCheckDepth = checkDepth;
|
|
111
|
-
|
|
112
|
-
// Get the tag name
|
|
113
|
-
const tagMatch = trimmed.match(/^<\/?([a-zA-Z-]+)/);
|
|
114
|
-
const tagName = tagMatch ? tagMatch[1] : '';
|
|
115
|
-
|
|
116
|
-
// Closing tag - decrease indent before this line
|
|
117
|
-
if (trimmed.startsWith('</')) {
|
|
118
|
-
indent = Math.max(0, currentIndent - 1);
|
|
119
|
-
nextIndent = indent;
|
|
120
|
-
|
|
121
|
-
// If closing a step, reset check depth
|
|
122
|
-
if (tagName === 'step' || tagName === 'workflow') {
|
|
123
|
-
nextCheckDepth = 0;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
// Self-closing tags (opens and closes on same line)
|
|
127
|
-
// EXCEPT <check> tags which create logical blocks
|
|
128
|
-
else if (this.isSelfClosingTag(trimmed) && tagName !== 'check') {
|
|
129
|
-
// These don't change indent level
|
|
130
|
-
indent = currentIndent;
|
|
131
|
-
nextIndent = currentIndent;
|
|
132
|
-
}
|
|
133
|
-
// Opening tags
|
|
134
|
-
else if (trimmed.startsWith('<')) {
|
|
135
|
-
// Check if this is a <check> tag - these create logical blocks
|
|
136
|
-
if (tagName === 'check') {
|
|
137
|
-
indent = currentIndent;
|
|
138
|
-
// Check tags increase indent for following content
|
|
139
|
-
nextIndent = currentIndent + 1;
|
|
140
|
-
nextCheckDepth = checkDepth + 1;
|
|
141
|
-
}
|
|
142
|
-
// <action> tags inside check blocks stay at current indent
|
|
143
|
-
else if (tagName === 'action' && checkDepth > 0) {
|
|
144
|
-
indent = currentIndent;
|
|
145
|
-
nextIndent = currentIndent; // Don't increase further
|
|
146
|
-
}
|
|
147
|
-
// Other tags close check blocks and return to structural level
|
|
148
|
-
else if (checkDepth > 0) {
|
|
149
|
-
// Close all check blocks - return to base structural level
|
|
150
|
-
indent = Math.max(0, currentIndent - checkDepth);
|
|
151
|
-
nextIndent = indent + 1;
|
|
152
|
-
nextCheckDepth = 0;
|
|
153
|
-
}
|
|
154
|
-
// Regular opening tags (no check blocks active)
|
|
155
|
-
else {
|
|
156
|
-
indent = currentIndent;
|
|
157
|
-
nextIndent = currentIndent + 1;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
const indentStr = ' '.repeat(indent * this.indentSize);
|
|
162
|
-
return {
|
|
163
|
-
line: indentStr + trimmed,
|
|
164
|
-
nextIndent: nextIndent,
|
|
165
|
-
nextCheckDepth: nextCheckDepth,
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Check if tag opens and closes on same line
|
|
171
|
-
*/
|
|
172
|
-
isSelfClosingTag(line) {
|
|
173
|
-
// Self-closing with />
|
|
174
|
-
if (line.endsWith('/>')) {
|
|
175
|
-
return true;
|
|
176
|
-
}
|
|
177
|
-
// Opens and closes on same line: <tag>content</tag>
|
|
178
|
-
const match = line.match(/^<([a-zA-Z-]+)(\s[^>]*)?>.*<\/\1>$/);
|
|
179
|
-
return match !== null;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* Check if tag is a block-level structural tag
|
|
184
|
-
*/
|
|
185
|
-
isBlockLevelTag(tagName) {
|
|
186
|
-
return ['step', 'workflow', 'check'].includes(tagName);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* CLI Entry Point
|
|
192
|
-
*/
|
|
193
|
-
function main() {
|
|
194
|
-
const args = process.argv.slice(2);
|
|
195
|
-
|
|
196
|
-
if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
|
|
197
|
-
console.log(`
|
|
198
|
-
WIZZ Workflow Markdown Formatter
|
|
199
|
-
|
|
200
|
-
Usage:
|
|
201
|
-
node format-workflow-md.js <file-pattern> [options]
|
|
202
|
-
|
|
203
|
-
Options:
|
|
204
|
-
--verbose, -v Verbose output
|
|
205
|
-
--check, -c Check formatting without writing (exit 1 if changes needed)
|
|
206
|
-
--help, -h Show this help
|
|
207
|
-
|
|
208
|
-
Examples:
|
|
209
|
-
node format-workflow-md.js src/**/instructions.md
|
|
210
|
-
node format-workflow-md.js "src/modules/bmb/**/*.md" --verbose
|
|
211
|
-
node format-workflow-md.js file.md --check
|
|
212
|
-
`);
|
|
213
|
-
process.exit(0);
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
const verbose = args.includes('--verbose') || args.includes('-v');
|
|
217
|
-
const check = args.includes('--check') || args.includes('-c');
|
|
218
|
-
|
|
219
|
-
// Remove flags from args
|
|
220
|
-
const files = args.filter((arg) => !arg.startsWith('-'));
|
|
221
|
-
|
|
222
|
-
const formatter = new WorkflowFormatter({ verbose });
|
|
223
|
-
let hasChanges = false;
|
|
224
|
-
let formattedCount = 0;
|
|
225
|
-
|
|
226
|
-
// Process files
|
|
227
|
-
for (const pattern of files) {
|
|
228
|
-
// For now, treat as direct file path
|
|
229
|
-
// TODO: Add glob support for patterns
|
|
230
|
-
if (fs.existsSync(pattern)) {
|
|
231
|
-
const stat = fs.statSync(pattern);
|
|
232
|
-
if (stat.isFile()) {
|
|
233
|
-
const changed = formatter.format(pattern);
|
|
234
|
-
if (changed) {
|
|
235
|
-
hasChanges = true;
|
|
236
|
-
formattedCount++;
|
|
237
|
-
}
|
|
238
|
-
} else if (stat.isDirectory()) {
|
|
239
|
-
console.error(`Error: ${pattern} is a directory. Please specify file paths.`);
|
|
240
|
-
}
|
|
241
|
-
} else {
|
|
242
|
-
console.error(`Error: File not found: ${pattern}`);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
if (verbose || formattedCount > 0) {
|
|
247
|
-
console.log(`\nFormatted ${formattedCount} file(s)`);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
if (check && hasChanges) {
|
|
251
|
-
console.error('\n❌ Some files need formatting. Run without --check to format.');
|
|
252
|
-
process.exit(1);
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
process.exit(0);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
// Run if called directly
|
|
259
|
-
if (require.main === module) {
|
|
260
|
-
main();
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
module.exports = { WorkflowFormatter };
|
package/tools/hooks/README.md
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# Hooks (fonte de verdade)
|
|
2
|
-
|
|
3
|
-
Os hooks do Claude Code usados pelo Wizz Method vivem AQUI e são instalados em
|
|
4
|
-
`~/.claude/hooks/` via `npm run sync:global`. Nunca edite a cópia global direto:
|
|
5
|
-
ela é substituída no próximo sync.
|
|
6
|
-
|
|
7
|
-
| Hook | Evento | O que faz |
|
|
8
|
-
| ------------------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
9
|
-
| `wizz-router-enforce.js` | UserPromptSubmit | Gate `isTrivial()` + injeção curta: em projeto Wizz (`_wizz/`) manda delegar direto ao maestro/agente da área (sem router); fora, manda pro `wizz-router`. |
|
|
10
|
-
| `session-rules.js` | SessionStart | Injeta as regras de comunicação 1x por sessão (antes era por prompt). |
|
|
11
|
-
| `security-defensive-context.js` | PreToolUse (Skill) | Metodologia defensiva/escopada ao invocar skills de segurança. Genérico por projeto (v2). |
|
|
12
|
-
|
|
13
|
-
Removidos em 2026-07 (arquivados em `~/.claude/hooks-archive/`):
|
|
14
|
-
`no-narration-enforce.js` (absorvido pelo session-rules) e `vault-reminder.js`.
|
|
15
|
-
|
|
16
|
-
Testes: `npm run test:hooks` (isTrivial + contexto por modo).
|
|
17
|
-
Evals de roteamento: `node evals/routing/run-routing-eval.mjs [--llm]`.
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* security-defensive-context.js
|
|
3
|
-
*
|
|
4
|
-
* Fonte de verdade: wizz-method/tools/hooks/. Instalar via `npm run sync:global`.
|
|
5
|
-
*
|
|
6
|
-
* Hook PreToolUse: quando o usuário invoca uma skill de segurança, injeta
|
|
7
|
-
* instruções de metodologia que orientam o modelo a trabalhar de forma
|
|
8
|
-
* defensiva, escopada e por dimensão — evitando o padrão de varredura ampla
|
|
9
|
-
* que aciona os safeguards de cibersegurança da Anthropic.
|
|
10
|
-
*
|
|
11
|
-
* v2 (2026-07): contexto genérico por projeto (a v1 hardcodava o stack do MeJu
|
|
12
|
-
* e injetava esse contexto em QUALQUER projeto).
|
|
13
|
-
*
|
|
14
|
-
* IMPORTANTE: guia o COMPORTAMENTO DO MODELO (abordagem + metodologia). Não
|
|
15
|
-
* desativa nem bypassa o safeguard da Anthropic — isso é impossível por hook.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
const SECURITY_SKILLS = new Set([
|
|
19
|
-
// Skills globais instaladas em ~/.claude/skills/
|
|
20
|
-
'web-security',
|
|
21
|
-
'desktop-security',
|
|
22
|
-
// Skills providas por plugins (nomes canônicos verificados)
|
|
23
|
-
'security-review',
|
|
24
|
-
'security-reviewer',
|
|
25
|
-
'security-scan',
|
|
26
|
-
// code-review em variantes de plugin e direto
|
|
27
|
-
'code-review',
|
|
28
|
-
'code-review:code-review',
|
|
29
|
-
]);
|
|
30
|
-
|
|
31
|
-
const DEFENSIVE_CONTEXT =
|
|
32
|
-
'Metodologia de revisao de seguranca (defensiva, escopada):\n\n' +
|
|
33
|
-
'1. ESCOPO: trabalhe por arquivo ou dimensao concreta de cada vez (ex: validacao ' +
|
|
34
|
-
'de entrada num handler, politicas de acesso do banco, headers HTTP). Nunca ' +
|
|
35
|
-
'varredura ampla de todo o codebase num turno unico.\n\n' +
|
|
36
|
-
'2. FOCO DEFENSIVO: o objetivo e hardening do codigo do proprio projeto. Cada ' +
|
|
37
|
-
'achado deve mapear para uma linha/arquivo real e propor a correcao aplicada localmente.\n\n' +
|
|
38
|
-
'3. DIMENSOES PRIORITARIAS (adapte ao stack do projeto atual): (a) auth/sessao; ' +
|
|
39
|
-
'(b) validacao/allowlist de entrada em handlers de escrita; (c) autorizacao no ' +
|
|
40
|
-
'banco (RLS/policies) e funcoes privilegiadas; (d) privacidade LGPD/GDPR — PII, ' +
|
|
41
|
-
'consentimento, retencao; (e) secrets — nada hardcoded em settings/migrations/logs; ' +
|
|
42
|
-
'(f) superficie publica — rate-limit, headers de seguranca, CORS.\n\n' +
|
|
43
|
-
'4. OUTPUT: achados por severidade (CRITICO / ALTO / MEDIO / BAIXO), com arquivo + ' +
|
|
44
|
-
'linha + codigo corrigido sugerido. Nao gerar relatorio ofensivo nem exploits.';
|
|
45
|
-
|
|
46
|
-
let raw = '';
|
|
47
|
-
process.stdin.setEncoding('utf8');
|
|
48
|
-
process.stdin.on('data', (chunk) => (raw += chunk));
|
|
49
|
-
process.stdin.on('end', () => {
|
|
50
|
-
try {
|
|
51
|
-
const payload = JSON.parse(raw);
|
|
52
|
-
const toolName = payload.tool_name || '';
|
|
53
|
-
const skillName = (payload.tool_input && payload.tool_input.skill) || '';
|
|
54
|
-
|
|
55
|
-
if (toolName === 'Skill' && SECURITY_SKILLS.has(skillName)) {
|
|
56
|
-
process.stdout.write(
|
|
57
|
-
JSON.stringify({
|
|
58
|
-
hookSpecificOutput: {
|
|
59
|
-
hookEventName: 'PreToolUse',
|
|
60
|
-
additionalContext: DEFENSIVE_CONTEXT,
|
|
61
|
-
},
|
|
62
|
-
}),
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
// Para qualquer outra skill/tool: sai silenciosamente sem output
|
|
66
|
-
} catch {
|
|
67
|
-
// Parse error: sai silenciosamente, nao bloqueia nada
|
|
68
|
-
}
|
|
69
|
-
process.exit(0);
|
|
70
|
-
});
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
// session-rules.js — SessionStart hook
|
|
2
|
-
//
|
|
3
|
-
// Fonte de verdade: wizz-method/tools/hooks/. Instalar via `npm run sync:global`.
|
|
4
|
-
//
|
|
5
|
-
// Injeta as regras de comunicação UMA vez por sessão (antes: no-narration-enforce
|
|
6
|
-
// repetia ~80 tokens em TODO prompt via UserPromptSubmit). Mesmo conteúdo, custo
|
|
7
|
-
// fixo por sessão em vez de custo por prompt.
|
|
8
|
-
|
|
9
|
-
const RULES =
|
|
10
|
-
'REGRA DE COMUNICAÇÃO (permanente, não-negociável): não narrar o passo a passo ' +
|
|
11
|
-
'enquanto trabalha; pausar e perguntar SÓ em decisão do usuário ou risco ' +
|
|
12
|
-
'irreversível; fechar SEMPRE com resumo curto em tópicos, linguagem simples, ' +
|
|
13
|
-
'sem jargão; sem em-dashes; comunicação enxuta por default, expandir só sob demanda.';
|
|
14
|
-
|
|
15
|
-
let input = '';
|
|
16
|
-
const stdinTimeout = setTimeout(() => finish(), 3000);
|
|
17
|
-
process.stdin.setEncoding('utf8');
|
|
18
|
-
process.stdin.on('data', (chunk) => (input += chunk));
|
|
19
|
-
process.stdin.on('end', () => {
|
|
20
|
-
clearTimeout(stdinTimeout);
|
|
21
|
-
finish();
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
function finish() {
|
|
25
|
-
try {
|
|
26
|
-
process.stdout.write(
|
|
27
|
-
JSON.stringify({
|
|
28
|
-
hookSpecificOutput: {
|
|
29
|
-
hookEventName: 'SessionStart',
|
|
30
|
-
additionalContext: RULES,
|
|
31
|
-
},
|
|
32
|
-
}),
|
|
33
|
-
);
|
|
34
|
-
} catch {
|
|
35
|
-
// nunca bloquear
|
|
36
|
-
}
|
|
37
|
-
process.exit(0);
|
|
38
|
-
}
|