wizz-method 1.4.0 → 1.5.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/README.md +7 -5
- package/package.json +48 -4
- package/skills-registry.yaml +166 -34
- 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/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-ads/customize.toml +5 -3
- package/src/modules/wizz/agents/wizz-copy/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-copy/customize.toml +5 -3
- package/src/modules/wizz/agents/wizz-designer/SKILL.md +7 -9
- package/src/modules/wizz/agents/wizz-designer/customize.toml +6 -4
- package/src/modules/wizz/agents/wizz-growth/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-growth/customize.toml +11 -3
- package/src/modules/wizz/agents/wizz-maestro/SKILL.md +15 -10
- package/src/modules/wizz/agents/wizz-maestro/customize.toml +5 -7
- package/src/modules/wizz/agents/wizz-memoria/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-memoria/customize.toml +2 -4
- package/src/modules/wizz/agents/wizz-qa/SKILL.md +6 -6
- package/src/modules/wizz/agents/wizz-qa/customize.toml +9 -7
- package/src/modules/wizz/agents/wizz-seo/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-seo/customize.toml +5 -3
- package/src/modules/wizz/agents/wizz-social/SKILL.md +1 -1
- 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/auth-and-secrets/SKILL.md +29 -11
- 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/desktop-security/SKILL.md +35 -4
- 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/premium-landing-ui-researcher/SKILL.md +52 -2083
- package/src/skills-lib/premium-landing-ui-researcher/references/audit-protocol.md +124 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/component-sources.md +336 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/core-goal.md +62 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/dashboard-and-portfolio-modes.md +92 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/handoffs.md +55 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/landing-page-strategy.md +227 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/mandatory-process.md +36 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/output-format-and-quality.md +129 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/prompt-templates.md +206 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/site-levels.md +515 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/source-first-protocol.md +144 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/source-links.md +39 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/stack-and-visual-direction.md +118 -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/taste-skill/SKILL.md +33 -1177
- package/src/skills-lib/taste-skill/references/anti-slop-tells.md +110 -0
- package/src/skills-lib/taste-skill/references/architecture-conventions.md +39 -0
- package/src/skills-lib/taste-skill/references/block-library.md +61 -0
- package/src/skills-lib/taste-skill/references/brief-and-dials.md +89 -0
- package/src/skills-lib/taste-skill/references/dark-mode.md +23 -0
- package/src/skills-lib/taste-skill/references/design-directives.md +191 -0
- package/src/skills-lib/taste-skill/references/design-systems.md +267 -0
- package/src/skills-lib/taste-skill/references/motion-patterns.md +167 -0
- package/src/skills-lib/taste-skill/references/pattern-vocabulary.md +78 -0
- package/src/skills-lib/taste-skill/references/performance-a11y.md +33 -0
- package/src/skills-lib/taste-skill/references/preflight-checklist.md +73 -0
- package/src/skills-lib/taste-skill/references/redesign-protocol.md +52 -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 -162
- 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 +30 -244
- package/src/skills-lib/wizz-router/references/auditoria-360.md +21 -0
- package/src/skills-lib/wizz-router/references/routing-table-flat.md +95 -0
- 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 +81 -16
- package/tools/installer/ui.js +71 -5
- package/wizz-modules.yaml +15 -5
- package/.claude/settings.local.json +0 -8
- 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/src/core-skills/wizz-party-mode/scripts/__pycache__/resolve_party.cpython-314.pyc +0 -0
- 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/skills-lib/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
- package/src/skills-lib/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
- package/src/skills-lib/ui-ux-pro-max/scripts/__pycache__/search.cpython-314.pyc +0 -0
- package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/0964cef300f753b5cee0cc49777ca97035c85d45c212099405d9ee4da36e523f.json +0 -1
- package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/21a40f6810c3a6f17acc3580f106171daf78c7b41bbd066bc80448a821ea0adf.json +0 -1
- package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/69ea15a020ac81b8459e37ef63654398a50c1035fc01c43d8069df217389f7f3.json +0 -1
- 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 -587
- 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/javascript-conventions.md +0 -5
- package/tools/migrate-custom-module-paths.js +0 -124
- package/tools/skill-validator.md +0 -368
- 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
|
@@ -15,8 +15,6 @@ Next.js (App Router), shadcn/ui e Supabase. Atencioso, preciso e focado em solu
|
|
|
15
15
|
Consulte este guia no início de qualquer projeto ou feature nova. Preencha as seções marcadas com `[PREENCHER]`
|
|
16
16
|
com os dados do projeto específico antes de começar a codar.
|
|
17
17
|
|
|
18
|
-
---
|
|
19
|
-
|
|
20
18
|
## Princípios de Produto (sempre aplicar)
|
|
21
19
|
|
|
22
20
|
| Código | Princípio | Regra prática |
|
|
@@ -29,8 +27,6 @@ com os dados do projeto específico antes de começar a codar.
|
|
|
29
27
|
| P-006 | **Estado na URL** | Filtros, seleção, aba ativa e etapa de wizard em query params. F5 mantém estado |
|
|
30
28
|
| P-007 | **Soft delete e auditoria** | Nada é apagado. `deleted_at timestamp` em toda tabela de domínio. Eventos críticos em `audit_logs` |
|
|
31
29
|
|
|
32
|
-
---
|
|
33
|
-
|
|
34
30
|
## Contexto do Projeto
|
|
35
31
|
|
|
36
32
|
```
|
|
@@ -45,8 +41,6 @@ MVP: [PREENCHER — módulos, escopo single/multi-tenant]
|
|
|
45
41
|
|
|
46
42
|
> **Pendências críticas:** ao encontrar uma decisão que bloqueia implementação, registre aqui e pergunte ao usuário antes de assumir um default.
|
|
47
43
|
|
|
48
|
-
---
|
|
49
|
-
|
|
50
44
|
## Stack do Projeto
|
|
51
45
|
|
|
52
46
|
| Categoria | Tecnologia |
|
|
@@ -64,8 +58,6 @@ MVP: [PREENCHER — módulos, escopo single/multi-tenant]
|
|
|
64
58
|
| Ícones | @tabler/icons-react ou lucide-react |
|
|
65
59
|
| Mascaras | react-number-format |
|
|
66
60
|
|
|
67
|
-
---
|
|
68
|
-
|
|
69
61
|
## Glossário do Domínio
|
|
70
62
|
|
|
71
63
|
> Crítico: toda label, mensagem, botão e erro usa estes termos — nunca termos técnicos de software.
|
|
@@ -81,223 +73,11 @@ Termos PROIBIDOS na UI (genéricos):
|
|
|
81
73
|
"instância", "tenant", "request", "payload", "null", "undefined", "erro 500"
|
|
82
74
|
```
|
|
83
75
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
## Padrões Arquiteturais
|
|
87
|
-
|
|
88
|
-
Mapeie cada módulo a um padrão antes de codar.
|
|
89
|
-
|
|
90
|
-
### P0 — Ciclo de Vida com Rascunho
|
|
91
|
-
Para fluxos onde o usuário monta dados em etapas e decide no fim.
|
|
92
|
-
|
|
93
|
-
**Estados:** `rascunho` → `confirmado` → `estornado` | `descartado`
|
|
94
|
-
|
|
95
|
-
**Auto-save (P-003):** rascunho persiste a cada alteração (debounce 300ms). Sem botão "Salvar". Decisão única: **Concluir** ou **Descartar**.
|
|
96
|
-
|
|
97
|
-
**Filtragem proativa (P0.5):** tela de seleção só mostra itens elegíveis. Não confiar em validação depois.
|
|
98
|
-
|
|
99
|
-
Enum Supabase:
|
|
100
|
-
```sql
|
|
101
|
-
CREATE TYPE status_workflow AS ENUM ('rascunho', 'confirmado', 'descartado', 'estornado');
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### P1 — Operações com Cascatas
|
|
105
|
-
Confirmação dispara cascatas em outros módulos. Toda cascata na MESMA transação (RPC Supabase). Falha em qualquer cascata = rollback completo.
|
|
106
|
-
|
|
107
|
-
### P2 — Lançamentos com Estado Calculado
|
|
108
|
-
NÃO armazenar estado — calcular em runtime a partir de datas/saldos. Movimentações são append-only (nunca update, apenas insert).
|
|
109
|
-
|
|
110
|
-
### P3 — Telas Analíticas (Dashboards)
|
|
111
|
-
Read-only. Cache de 5-15 min para KPIs pesados, ≤1 min para KPIs operacionais. Mobile-first prioriza KPIs operacionais acima do fold.
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## Estrutura de Pastas
|
|
116
|
-
|
|
117
|
-
```
|
|
118
|
-
src/
|
|
119
|
-
├── app/
|
|
120
|
-
│ ├── (auth)/ # rotas públicas (login, signup)
|
|
121
|
-
│ ├── (app)/
|
|
122
|
-
│ │ ├── dashboard/ # P3 — analítico
|
|
123
|
-
│ │ ├── [modulo]/
|
|
124
|
-
│ │ │ ├── page.tsx
|
|
125
|
-
│ │ │ └── [id]/page.tsx
|
|
126
|
-
│ │ └── configuracoes/
|
|
127
|
-
│ └── api/
|
|
128
|
-
│ ├── [modulo]/
|
|
129
|
-
│ │ └── route.ts # validação Zod + lógica de negócio
|
|
130
|
-
│ └── webhooks/ # sempre verificar assinatura antes de processar
|
|
131
|
-
├── components/
|
|
132
|
-
│ ├── ui/ # shadcn/ui base (não editar)
|
|
133
|
-
│ └── [modulo]/ # componentes de domínio reutilizáveis
|
|
134
|
-
├── features/
|
|
135
|
-
│ └── [modulo]/
|
|
136
|
-
│ ├── components/ # componentes específicos do módulo
|
|
137
|
-
│ ├── services/ # lógica de negócio (chamadas Supabase)
|
|
138
|
-
│ └── hooks/ # React Query hooks do módulo
|
|
139
|
-
├── hooks/
|
|
140
|
-
│ ├── queries/ # use-[entidade].ts
|
|
141
|
-
│ ├── mutations/ # use-[acao].ts
|
|
142
|
-
│ └── use-url-state.ts # estado em URL (P-006)
|
|
143
|
-
├── lib/
|
|
144
|
-
│ ├── supabase/
|
|
145
|
-
│ │ ├── client.ts # client browser
|
|
146
|
-
│ │ └── server.ts # client server (service role — apenas server-side)
|
|
147
|
-
│ ├── api/
|
|
148
|
-
│ │ ├── response.ts # ok() / fail() helpers
|
|
149
|
-
│ │ └── handle-route-error.ts # mensagens seguras (não vazar detalhes internos)
|
|
150
|
-
│ ├── security/
|
|
151
|
-
│ │ └── rate-limit.ts # enforceRateLimit helper
|
|
152
|
-
│ └── format/ # formatCurrency, formatDate, etc.
|
|
153
|
-
└── types/ # interfaces e tipos compartilhados
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## Padrões de API Routes (Supabase + Zod)
|
|
159
|
-
|
|
160
|
-
Toda rota de API que recebe input de usuário:
|
|
161
|
-
```ts
|
|
162
|
-
// src/app/api/[modulo]/route.ts
|
|
163
|
-
import { auth } from "@clerk/nextjs/server"
|
|
164
|
-
import { z } from "zod"
|
|
165
|
-
import { handleRouteError } from "@/lib/api/handle-route-error"
|
|
166
|
-
import { ok, fail } from "@/lib/api/response"
|
|
167
|
-
import { enforceRateLimit } from "@/lib/security/rate-limit"
|
|
168
|
-
|
|
169
|
-
const schema = z.object({
|
|
170
|
-
workspaceId: z.string().uuid(),
|
|
171
|
-
campo: z.string().min(1).max(500),
|
|
172
|
-
})
|
|
173
|
-
|
|
174
|
-
export async function POST(request: Request) {
|
|
175
|
-
const { userId } = await auth()
|
|
176
|
-
if (!userId) return fail("Não autenticado", 401)
|
|
177
|
-
|
|
178
|
-
await enforceRateLimit({ key: `modulo:${userId}`, limit: 10, windowSeconds: 60 })
|
|
179
|
-
|
|
180
|
-
const body = await request.json()
|
|
181
|
-
const parsed = schema.safeParse(body)
|
|
182
|
-
if (!parsed.success) return fail("Dados inválidos", 400)
|
|
183
|
-
|
|
184
|
-
// lógica de negócio aqui — revalidar regras de negócio no servidor (P-005)
|
|
185
|
-
}
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
**Regras de API routes:**
|
|
189
|
-
- SEMPRE valide com Zod (`.safeParse()` ou `.parse()`)
|
|
190
|
-
- SEMPRE filtre por `workspace_id` nas queries Supabase
|
|
191
|
-
- NUNCA confie em cálculos do cliente — recalcule no server
|
|
192
|
-
- NUNCA vaze detalhes internos em mensagens de erro
|
|
193
|
-
- Webhooks SEMPRE verificam assinatura antes de processar o body
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
## Schemas Supabase (padrões)
|
|
198
|
-
|
|
199
|
-
Toda tabela de domínio:
|
|
200
|
-
```sql
|
|
201
|
-
CREATE TABLE [modulo] (
|
|
202
|
-
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
203
|
-
workspace_id uuid NOT NULL REFERENCES workspaces(id),
|
|
204
|
-
-- campos do domínio
|
|
205
|
-
deleted_at timestamp, -- soft delete (P-007)
|
|
206
|
-
created_at timestamp NOT NULL DEFAULT now(),
|
|
207
|
-
updated_at timestamp NOT NULL DEFAULT now()
|
|
208
|
-
);
|
|
209
|
-
|
|
210
|
-
-- RLS obrigatório
|
|
211
|
-
ALTER TABLE [modulo] ENABLE ROW LEVEL SECURITY;
|
|
212
|
-
CREATE POLICY "workspace_isolation" ON [modulo]
|
|
213
|
-
USING (workspace_id = (SELECT workspace_id FROM workspace_members WHERE user_id = auth.uid()));
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
**Regras de dados:**
|
|
217
|
-
- Valores monetários SEMPRE em centavos (integer). Display com `formatCurrency()`
|
|
218
|
-
- Unidades físicas SEMPRE na menor unidade (integer) no banco
|
|
219
|
-
- Datas como `timestamp` (UTC). Display com dayjs no locale do usuário
|
|
76
|
+
## References (carregar sob demanda)
|
|
220
77
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
```tsx
|
|
226
|
-
"use client"
|
|
227
|
-
import { useForm } from "react-hook-form"
|
|
228
|
-
import { zodResolver } from "@hookform/resolvers/zod"
|
|
229
|
-
import { z } from "zod"
|
|
230
|
-
|
|
231
|
-
const schema = z.object({
|
|
232
|
-
campo: z.string().min(1, "Preencha o campo"),
|
|
233
|
-
})
|
|
234
|
-
|
|
235
|
-
type FormData = z.infer<typeof schema>
|
|
236
|
-
|
|
237
|
-
export function MeuForm() {
|
|
238
|
-
const form = useForm<FormData>({ resolver: zodResolver(schema) })
|
|
239
|
-
|
|
240
|
-
async function onSubmit(data: FormData) {
|
|
241
|
-
const res = await fetch("/api/meu-modulo", {
|
|
242
|
-
method: "POST",
|
|
243
|
-
body: JSON.stringify(data),
|
|
244
|
-
})
|
|
245
|
-
// tratar resposta
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
return (
|
|
249
|
-
<form onSubmit={form.handleSubmit(onSubmit)}>
|
|
250
|
-
{/* shadcn/ui Form components */}
|
|
251
|
-
</form>
|
|
252
|
-
)
|
|
253
|
-
}
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
---
|
|
257
|
-
|
|
258
|
-
## Estado na URL (P-006)
|
|
259
|
-
|
|
260
|
-
```ts
|
|
261
|
-
// Filtros, abas, paginação sempre em query params
|
|
262
|
-
// F5 mantém estado, link é compartilhável
|
|
263
|
-
|
|
264
|
-
// Exemplos de hooks canônicos:
|
|
265
|
-
useUrlState<"ativo" | "inativo">("status", "ativo")
|
|
266
|
-
useUrlListState("categoria") // ?categoria=A,B
|
|
267
|
-
useUrlDateRange("criado") // ?criadoDe=...&criadoAte=...
|
|
268
|
-
|
|
269
|
-
// Wizard multi-etapa: ?etapa=1
|
|
270
|
-
// Só persistir etapas navegáveis, não estados transientes (loading, sucesso)
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
## Segurança (embutida por padrão)
|
|
276
|
-
|
|
277
|
-
Ver skill `web-security` para checklist completa. Resumo:
|
|
278
|
-
- Validação Zod em TODOS os endpoints que recebem input
|
|
279
|
-
- `enforceRateLimit` em endpoints de escrita, cobrança, operações caras
|
|
280
|
-
- Comparação de tokens/secrets com `crypto.timingSafeEqual` (nunca `===`)
|
|
281
|
-
- Soft delete via `deleted_at` em toda tabela de domínio
|
|
282
|
-
- Logs de auditoria append-only para eventos críticos
|
|
283
|
-
- `.env*` nunca commitado; secrets via variáveis de ambiente da plataforma
|
|
284
|
-
- `SUPABASE_SERVICE_ROLE_KEY` apenas server-side
|
|
285
|
-
|
|
286
|
-
---
|
|
287
|
-
|
|
288
|
-
## Regras de Código
|
|
289
|
-
|
|
290
|
-
- SEMPRE TypeScript. Sem `any` explícito.
|
|
291
|
-
- Nomes descritivos: `isLoading`, `hasError`, `handleConfirmarAcao`
|
|
292
|
-
- **kebab-case** para arquivos e pastas: `confirmar-acao.ts`
|
|
293
|
-
- SOLID e Clean Code; funções < 50 linhas; arquivos < 800 linhas
|
|
294
|
-
- DRY: componentes reutilizáveis para padrões repetidos
|
|
295
|
-
- NUNCA escreva comentários no código
|
|
296
|
-
- NUNCA rode `npm run dev` para testar TypeScript — use `npx tsc --noEmit`
|
|
297
|
-
- Imutabilidade: SEMPRE crie novos objetos, NUNCA mutate (spread, map, filter)
|
|
298
|
-
- Sem `console.log` em produção
|
|
299
|
-
|
|
300
|
-
---
|
|
78
|
+
- `references/padroes-arquiteturais-e-pastas.md` — os 4 padrões arquiteturais P0-P3 (ciclo de vida com rascunho, cascatas, estado calculado, dashboards) e a estrutura de pastas completa do projeto. Carregar ao mapear um módulo novo ou criar a estrutura inicial.
|
|
79
|
+
- `references/implementacao-api-forms.md` — padrões de código para API routes (Supabase + Zod + rate limit), schemas Supabase (RLS, soft delete), formulários (React Hook Form + Zod) e estado na URL (P-006). Carregar ao escrever uma rota, tabela ou formulário.
|
|
80
|
+
- `references/seguranca-e-regras-codigo.md` — checklist de segurança embutida (resumo; ver skill `web-security` para a versão completa) e as regras de código do projeto (TypeScript, naming, tamanho de arquivo/função, imutabilidade). Carregar antes de finalizar qualquer PR.
|
|
301
81
|
|
|
302
82
|
## Checklist de Início de Projeto
|
|
303
83
|
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Padrões de Implementação: API Routes, Schemas Supabase, Formulários, Estado na URL
|
|
2
|
+
|
|
3
|
+
Carregue este arquivo ao escrever uma rota de API, uma tabela Supabase, um formulário, ou ao implementar estado em query params.
|
|
4
|
+
|
|
5
|
+
## Padrões de API Routes (Supabase + Zod)
|
|
6
|
+
|
|
7
|
+
Toda rota de API que recebe input de usuário:
|
|
8
|
+
```ts
|
|
9
|
+
// src/app/api/[modulo]/route.ts
|
|
10
|
+
import { auth } from "@clerk/nextjs/server"
|
|
11
|
+
import { z } from "zod"
|
|
12
|
+
import { handleRouteError } from "@/lib/api/handle-route-error"
|
|
13
|
+
import { ok, fail } from "@/lib/api/response"
|
|
14
|
+
import { enforceRateLimit } from "@/lib/security/rate-limit"
|
|
15
|
+
|
|
16
|
+
const schema = z.object({
|
|
17
|
+
workspaceId: z.string().uuid(),
|
|
18
|
+
campo: z.string().min(1).max(500),
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
export async function POST(request: Request) {
|
|
22
|
+
const { userId } = await auth()
|
|
23
|
+
if (!userId) return fail("Não autenticado", 401)
|
|
24
|
+
|
|
25
|
+
await enforceRateLimit({ key: `modulo:${userId}`, limit: 10, windowSeconds: 60 })
|
|
26
|
+
|
|
27
|
+
const body = await request.json()
|
|
28
|
+
const parsed = schema.safeParse(body)
|
|
29
|
+
if (!parsed.success) return fail("Dados inválidos", 400)
|
|
30
|
+
|
|
31
|
+
// lógica de negócio aqui — revalidar regras de negócio no servidor (P-005)
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Regras de API routes:**
|
|
36
|
+
- SEMPRE valide com Zod (`.safeParse()` ou `.parse()`)
|
|
37
|
+
- SEMPRE filtre por `workspace_id` nas queries Supabase
|
|
38
|
+
- NUNCA confie em cálculos do cliente — recalcule no server
|
|
39
|
+
- NUNCA vaze detalhes internos em mensagens de erro
|
|
40
|
+
- Webhooks SEMPRE verificam assinatura antes de processar o body
|
|
41
|
+
|
|
42
|
+
## Schemas Supabase (padrões)
|
|
43
|
+
|
|
44
|
+
Toda tabela de domínio:
|
|
45
|
+
```sql
|
|
46
|
+
CREATE TABLE [modulo] (
|
|
47
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
48
|
+
workspace_id uuid NOT NULL REFERENCES workspaces(id),
|
|
49
|
+
-- campos do domínio
|
|
50
|
+
deleted_at timestamp, -- soft delete (P-007)
|
|
51
|
+
created_at timestamp NOT NULL DEFAULT now(),
|
|
52
|
+
updated_at timestamp NOT NULL DEFAULT now()
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
-- RLS obrigatório
|
|
56
|
+
ALTER TABLE [modulo] ENABLE ROW LEVEL SECURITY;
|
|
57
|
+
CREATE POLICY "workspace_isolation" ON [modulo]
|
|
58
|
+
USING (workspace_id = (SELECT workspace_id FROM workspace_members WHERE user_id = auth.uid()));
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Regras de dados:**
|
|
62
|
+
- Valores monetários SEMPRE em centavos (integer). Display com `formatCurrency()`
|
|
63
|
+
- Unidades físicas SEMPRE na menor unidade (integer) no banco
|
|
64
|
+
- Datas como `timestamp` (UTC). Display com dayjs no locale do usuário
|
|
65
|
+
|
|
66
|
+
## Formulários (React Hook Form + Zod)
|
|
67
|
+
|
|
68
|
+
```tsx
|
|
69
|
+
"use client"
|
|
70
|
+
import { useForm } from "react-hook-form"
|
|
71
|
+
import { zodResolver } from "@hookform/resolvers/zod"
|
|
72
|
+
import { z } from "zod"
|
|
73
|
+
|
|
74
|
+
const schema = z.object({
|
|
75
|
+
campo: z.string().min(1, "Preencha o campo"),
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
type FormData = z.infer<typeof schema>
|
|
79
|
+
|
|
80
|
+
export function MeuForm() {
|
|
81
|
+
const form = useForm<FormData>({ resolver: zodResolver(schema) })
|
|
82
|
+
|
|
83
|
+
async function onSubmit(data: FormData) {
|
|
84
|
+
const res = await fetch("/api/meu-modulo", {
|
|
85
|
+
method: "POST",
|
|
86
|
+
body: JSON.stringify(data),
|
|
87
|
+
})
|
|
88
|
+
// tratar resposta
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return (
|
|
92
|
+
<form onSubmit={form.handleSubmit(onSubmit)}>
|
|
93
|
+
{/* shadcn/ui Form components */}
|
|
94
|
+
</form>
|
|
95
|
+
)
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Estado na URL (P-006)
|
|
100
|
+
|
|
101
|
+
```ts
|
|
102
|
+
// Filtros, abas, paginação sempre em query params
|
|
103
|
+
// F5 mantém estado, link é compartilhável
|
|
104
|
+
|
|
105
|
+
// Exemplos de hooks canônicos:
|
|
106
|
+
useUrlState<"ativo" | "inativo">("status", "ativo")
|
|
107
|
+
useUrlListState("categoria") // ?categoria=A,B
|
|
108
|
+
useUrlDateRange("criado") // ?criadoDe=...&criadoAte=...
|
|
109
|
+
|
|
110
|
+
// Wizard multi-etapa: ?etapa=1
|
|
111
|
+
// Só persistir etapas navegáveis, não estados transientes (loading, sucesso)
|
|
112
|
+
```
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Padrões Arquiteturais (P0-P3) e Estrutura de Pastas
|
|
2
|
+
|
|
3
|
+
Carregue este arquivo ao mapear um módulo novo a um padrão arquitetural, ou ao criar a estrutura de pastas do projeto.
|
|
4
|
+
|
|
5
|
+
## Padrões Arquiteturais
|
|
6
|
+
|
|
7
|
+
Mapeie cada módulo a um padrão antes de codar.
|
|
8
|
+
|
|
9
|
+
### P0 — Ciclo de Vida com Rascunho
|
|
10
|
+
Para fluxos onde o usuário monta dados em etapas e decide no fim.
|
|
11
|
+
|
|
12
|
+
**Estados:** `rascunho` → `confirmado` → `estornado` | `descartado`
|
|
13
|
+
|
|
14
|
+
**Auto-save (P-003):** rascunho persiste a cada alteração (debounce 300ms). Sem botão "Salvar". Decisão única: **Concluir** ou **Descartar**.
|
|
15
|
+
|
|
16
|
+
**Filtragem proativa (P0.5):** tela de seleção só mostra itens elegíveis. Não confiar em validação depois.
|
|
17
|
+
|
|
18
|
+
Enum Supabase:
|
|
19
|
+
```sql
|
|
20
|
+
CREATE TYPE status_workflow AS ENUM ('rascunho', 'confirmado', 'descartado', 'estornado');
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### P1 — Operações com Cascatas
|
|
24
|
+
Confirmação dispara cascatas em outros módulos. Toda cascata na MESMA transação (RPC Supabase). Falha em qualquer cascata = rollback completo.
|
|
25
|
+
|
|
26
|
+
### P2 — Lançamentos com Estado Calculado
|
|
27
|
+
NÃO armazenar estado — calcular em runtime a partir de datas/saldos. Movimentações são append-only (nunca update, apenas insert).
|
|
28
|
+
|
|
29
|
+
### P3 — Telas Analíticas (Dashboards)
|
|
30
|
+
Read-only. Cache de 5-15 min para KPIs pesados, ≤1 min para KPIs operacionais. Mobile-first prioriza KPIs operacionais acima do fold.
|
|
31
|
+
|
|
32
|
+
## Estrutura de Pastas
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
src/
|
|
36
|
+
├── app/
|
|
37
|
+
│ ├── (auth)/ # rotas públicas (login, signup)
|
|
38
|
+
│ ├── (app)/
|
|
39
|
+
│ │ ├── dashboard/ # P3 — analítico
|
|
40
|
+
│ │ ├── [modulo]/
|
|
41
|
+
│ │ │ ├── page.tsx
|
|
42
|
+
│ │ │ └── [id]/page.tsx
|
|
43
|
+
│ │ └── configuracoes/
|
|
44
|
+
│ └── api/
|
|
45
|
+
│ ├── [modulo]/
|
|
46
|
+
│ │ └── route.ts # validação Zod + lógica de negócio
|
|
47
|
+
│ └── webhooks/ # sempre verificar assinatura antes de processar
|
|
48
|
+
├── components/
|
|
49
|
+
│ ├── ui/ # shadcn/ui base (não editar)
|
|
50
|
+
│ └── [modulo]/ # componentes de domínio reutilizáveis
|
|
51
|
+
├── features/
|
|
52
|
+
│ └── [modulo]/
|
|
53
|
+
│ ├── components/ # componentes específicos do módulo
|
|
54
|
+
│ ├── services/ # lógica de negócio (chamadas Supabase)
|
|
55
|
+
│ └── hooks/ # React Query hooks do módulo
|
|
56
|
+
├── hooks/
|
|
57
|
+
│ ├── queries/ # use-[entidade].ts
|
|
58
|
+
│ ├── mutations/ # use-[acao].ts
|
|
59
|
+
│ └── use-url-state.ts # estado em URL (P-006)
|
|
60
|
+
├── lib/
|
|
61
|
+
│ ├── supabase/
|
|
62
|
+
│ │ ├── client.ts # client browser
|
|
63
|
+
│ │ └── server.ts # client server (service role — apenas server-side)
|
|
64
|
+
│ ├── api/
|
|
65
|
+
│ │ ├── response.ts # ok() / fail() helpers
|
|
66
|
+
│ │ └── handle-route-error.ts # mensagens seguras (não vazar detalhes internos)
|
|
67
|
+
│ ├── security/
|
|
68
|
+
│ │ └── rate-limit.ts # enforceRateLimit helper
|
|
69
|
+
│ └── format/ # formatCurrency, formatDate, etc.
|
|
70
|
+
└── types/ # interfaces e tipos compartilhados
|
|
71
|
+
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Segurança e Regras de Código
|
|
2
|
+
|
|
3
|
+
Carregue este arquivo antes de finalizar qualquer PR — checklist de segurança embutida e convenções de código do projeto.
|
|
4
|
+
|
|
5
|
+
## Segurança (embutida por padrão)
|
|
6
|
+
|
|
7
|
+
Ver skill `web-security` para checklist completa. Resumo:
|
|
8
|
+
- Validação Zod em TODOS os endpoints que recebem input
|
|
9
|
+
- `enforceRateLimit` em endpoints de escrita, cobrança, operações caras
|
|
10
|
+
- Comparação de tokens/secrets com `crypto.timingSafeEqual` (nunca `===`)
|
|
11
|
+
- Soft delete via `deleted_at` em toda tabela de domínio
|
|
12
|
+
- Logs de auditoria append-only para eventos críticos
|
|
13
|
+
- `.env*` nunca commitado; secrets via variáveis de ambiente da plataforma
|
|
14
|
+
- `SUPABASE_SERVICE_ROLE_KEY` apenas server-side
|
|
15
|
+
|
|
16
|
+
## Regras de Código
|
|
17
|
+
|
|
18
|
+
- SEMPRE TypeScript. Sem `any` explícito.
|
|
19
|
+
- Nomes descritivos: `isLoading`, `hasError`, `handleConfirmarAcao`
|
|
20
|
+
- **kebab-case** para arquivos e pastas: `confirmar-acao.ts`
|
|
21
|
+
- SOLID e Clean Code; funções < 50 linhas; arquivos < 800 linhas
|
|
22
|
+
- DRY: componentes reutilizáveis para padrões repetidos
|
|
23
|
+
- NUNCA escreva comentários no código
|
|
24
|
+
- NUNCA rode `npm run dev` para testar TypeScript — use `npx tsc --noEmit`
|
|
25
|
+
- Imutabilidade: SEMPRE crie novos objetos, NUNCA mutate (spread, map, filter)
|
|
26
|
+
- Sem `console.log` em produção
|