wizz-method 1.0.2 → 1.1.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/.claude-plugin/marketplace.json +9 -9
- package/README.md +4 -4
- package/build/artifacts/llms-full.txt +218 -218
- package/build/artifacts/llms.txt +4 -4
- package/build/site/explanation/advanced-elicitation/index.html +2 -2
- package/build/site/explanation/adversarial-review/index.html +2 -2
- package/build/site/explanation/analysis-phase/index.html +2 -2
- package/build/site/explanation/brainstorming/index.html +2 -2
- package/build/site/explanation/checkpoint-preview/index.html +2 -2
- package/build/site/explanation/established-projects-faq/index.html +2 -2
- package/build/site/explanation/forensic-investigation/index.html +2 -2
- package/build/site/explanation/named-agents/index.html +6 -6
- package/build/site/explanation/party-mode/index.html +3 -3
- package/build/site/explanation/preventing-agent-conflicts/index.html +2 -2
- package/build/site/explanation/project-context/index.html +2 -2
- package/build/site/explanation/quick-dev/index.html +2 -2
- package/build/site/explanation/web-bundles/index.html +2 -2
- package/build/site/explanation/why-solutioning-matters/index.html +2 -2
- package/build/site/how-to/{customize-bmad → customize-wizz}/index.html +6 -6
- package/build/site/how-to/established-projects/index.html +2 -2
- package/build/site/how-to/{expand-bmad-for-your-org → expand-wizz-for-your-org}/index.html +7 -7
- package/build/site/how-to/{get-answers-about-bmad → get-answers-about-wizz}/index.html +3 -3
- package/build/site/how-to/install-custom-modules/index.html +3 -3
- package/build/site/how-to/{install-bmad → install-wizz}/index.html +6 -6
- package/build/site/how-to/non-interactive-installation/index.html +3 -3
- package/build/site/how-to/project-context/index.html +2 -2
- package/build/site/how-to/quick-fixes/index.html +2 -2
- package/build/site/how-to/shard-large-documents/index.html +2 -2
- package/build/site/how-to/upgrade-to-v6/index.html +8 -8
- package/build/site/how-to/use-web-bundles/index.html +2 -2
- package/build/site/index.html +3 -3
- package/build/site/llms-full.txt +218 -218
- package/build/site/llms.txt +4 -4
- package/build/site/pagefind/fragment/en_296ddb9.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_583316f.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_67825a4.pf_fragment +0 -0
- package/build/site/pagefind/fragment/{en_41cab15.pf_fragment → en_887ce56.pf_fragment} +0 -0
- package/build/site/pagefind/fragment/en_92d7cc7.pf_fragment +0 -0
- package/build/site/pagefind/fragment/{en_56b1635.pf_fragment → en_9b57d7d.pf_fragment} +0 -0
- package/build/site/pagefind/fragment/en_ba9fb37.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_cdd885c.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_d890205.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 +1 -1
- package/build/site/pagefind/pagefind.en_4e69d7f053.pf_meta +0 -0
- package/build/site/reference/agents/index.html +2 -2
- package/build/site/reference/commands/index.html +3 -3
- package/build/site/reference/core-tools/index.html +3 -3
- package/build/site/reference/modules/index.html +4 -4
- package/build/site/reference/testing/index.html +2 -2
- package/build/site/reference/workflow-map/index.html +2 -2
- package/build/site/roadmap/index.html +2 -2
- package/build/site/sitemap-0.xml +1 -1
- package/build/site/tutorials/getting-started/index.html +4 -4
- package/build/site/workflow-map-diagram-fr.html +2 -2
- package/package.json +11 -9
- package/removals.txt +46 -46
- package/skills-registry.yaml +318 -0
- package/src/bmm-skills/1-analysis/research/wizz-domain-research/customize.toml +1 -1
- package/src/bmm-skills/1-analysis/research/wizz-market-research/customize.toml +1 -1
- package/src/bmm-skills/1-analysis/research/wizz-technical-research/customize.toml +2 -1
- package/src/bmm-skills/1-analysis/wizz-agent-analyst/customize.toml +2 -2
- package/src/bmm-skills/1-analysis/wizz-agent-tech-writer/customize.toml +2 -2
- package/src/bmm-skills/1-analysis/wizz-document-project/customize.toml +1 -1
- package/src/bmm-skills/1-analysis/wizz-document-project/templates/index-template.md +1 -1
- package/src/bmm-skills/1-analysis/wizz-document-project/templates/project-overview-template.md +1 -1
- package/src/bmm-skills/1-analysis/wizz-document-project/templates/source-tree-template.md +1 -1
- package/src/bmm-skills/1-analysis/wizz-prfaq/customize.toml +1 -1
- package/src/bmm-skills/1-analysis/wizz-product-brief/SKILL.md +1 -1
- package/src/bmm-skills/1-analysis/wizz-product-brief/customize.toml +1 -1
- package/src/bmm-skills/2-plan-workflows/wizz-agent-pm/customize.toml +2 -2
- package/src/bmm-skills/2-plan-workflows/wizz-agent-ux-designer/customize.toml +2 -2
- package/src/bmm-skills/2-plan-workflows/wizz-create-prd/SKILL.md +1 -1
- package/src/bmm-skills/2-plan-workflows/wizz-create-prd/customize.toml +1 -1
- package/src/bmm-skills/2-plan-workflows/wizz-edit-prd/SKILL.md +1 -1
- package/src/bmm-skills/2-plan-workflows/wizz-edit-prd/customize.toml +1 -1
- package/src/bmm-skills/2-plan-workflows/wizz-prd/SKILL.md +3 -3
- package/src/bmm-skills/2-plan-workflows/wizz-prd/customize.toml +2 -2
- package/src/bmm-skills/2-plan-workflows/wizz-ux/SKILL.md +2 -2
- package/src/bmm-skills/2-plan-workflows/wizz-validate-prd/SKILL.md +1 -1
- package/src/bmm-skills/2-plan-workflows/wizz-validate-prd/customize.toml +1 -1
- package/src/bmm-skills/3-solutioning/wizz-agent-architect/customize.toml +2 -2
- package/src/bmm-skills/3-solutioning/wizz-architecture/SKILL.md +2 -2
- package/src/bmm-skills/3-solutioning/wizz-architecture/customize.toml +4 -2
- package/src/bmm-skills/3-solutioning/wizz-check-implementation-readiness/customize.toml +1 -1
- package/src/bmm-skills/3-solutioning/wizz-create-architecture/SKILL.md +1 -1
- package/src/bmm-skills/3-solutioning/wizz-create-architecture/customize.toml +1 -1
- package/src/bmm-skills/3-solutioning/wizz-create-epics-and-stories/customize.toml +1 -1
- package/src/bmm-skills/3-solutioning/wizz-generate-project-context/customize.toml +1 -1
- package/src/bmm-skills/4-implementation/wizz-agent-dev/customize.toml +3 -2
- package/src/bmm-skills/4-implementation/wizz-checkpoint-preview/customize.toml +1 -1
- package/src/bmm-skills/4-implementation/wizz-code-review/customize.toml +1 -1
- package/src/bmm-skills/4-implementation/wizz-correct-course/customize.toml +1 -1
- package/src/bmm-skills/4-implementation/wizz-create-story/SKILL.md +2 -2
- package/src/bmm-skills/4-implementation/wizz-create-story/customize.toml +1 -1
- package/src/bmm-skills/4-implementation/wizz-dev-story/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-dev-story/customize.toml +1 -1
- package/src/bmm-skills/4-implementation/wizz-investigate/customize.toml +1 -1
- package/src/bmm-skills/4-implementation/wizz-qa-generate-e2e-tests/customize.toml +1 -1
- package/src/bmm-skills/4-implementation/wizz-quick-dev/SKILL.md +7 -0
- package/src/bmm-skills/4-implementation/wizz-quick-dev/customize.toml +1 -1
- package/src/bmm-skills/4-implementation/wizz-quick-dev/step-01-clarify-and-route.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-retrospective/customize.toml +1 -1
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/customize.toml +1 -1
- package/src/bmm-skills/4-implementation/wizz-sprint-status/SKILL.md +5 -5
- package/src/bmm-skills/4-implementation/wizz-sprint-status/customize.toml +1 -1
- package/src/bmm-skills/module-help.csv +32 -32
- package/src/bmm-skills/module.yaml +1 -1
- package/src/core-skills/module-help.csv +3 -3
- package/src/core-skills/module.yaml +4 -4
- package/src/core-skills/wizz-brainstorming/SKILL.md +1 -1
- package/src/core-skills/wizz-brainstorming/analysis/catalog-analysis.md +4 -4
- package/src/core-skills/wizz-brainstorming/assets/brain-selector.html +5 -5
- package/src/core-skills/wizz-brainstorming/customize.toml +1 -1
- package/src/core-skills/wizz-brainstorming/references/finalize.md +1 -1
- package/src/core-skills/wizz-brainstorming/scripts/brain.py +5 -5
- package/src/core-skills/wizz-brainstorming/scripts/tests/test_brain.py +1 -1
- package/src/core-skills/wizz-brainstorming/scripts/tests/test_memlog.py +3 -3
- package/src/core-skills/wizz-customize/SKILL.md +6 -6
- package/src/core-skills/wizz-customize/scripts/list_customizable_skills.py +3 -3
- package/src/core-skills/wizz-customize/scripts/tests/test_list_customizable_skills.py +13 -13
- package/src/core-skills/wizz-editorial-review-prose/SKILL.md +20 -45
- package/src/core-skills/wizz-editorial-review-structure/SKILL.md +1 -1
- package/src/core-skills/wizz-help/SKILL.md +3 -3
- package/src/core-skills/wizz-party-mode/SKILL.md +5 -3
- package/src/core-skills/wizz-party-mode/customize.toml +896 -2
- package/src/core-skills/wizz-party-mode/scripts/__pycache__/resolve_party.cpython-314.pyc +0 -0
- package/src/core-skills/wizz-party-mode/scripts/resolve_party.py +2 -2
- package/src/core-skills/wizz-party-mode/scripts/tests/test-resolve_party.py +1 -1
- package/src/core-skills/wizz-review-adversarial-general/SKILL.md +23 -12
- package/src/core-skills/wizz-spec/SKILL.md +3 -3
- package/src/core-skills/wizz-spec/customize.toml +2 -2
- package/src/modules/wizz/README.md +5 -5
- package/src/modules/wizz/agents/wizz-ads/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-copy/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-designer/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-growth/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-maestro/SKILL.md +48 -24
- package/src/modules/wizz/agents/wizz-memoria/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-qa/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-seo/SKILL.md +1 -1
- package/src/modules/wizz/overrides/{bmad-agent-analyst.toml → wizz-agent-analyst.toml} +1 -1
- package/src/modules/wizz/overrides/{bmad-agent-architect.toml → wizz-agent-architect.toml} +1 -1
- package/src/modules/wizz/overrides/{bmad-agent-dev.toml → wizz-agent-dev.toml} +1 -1
- package/src/modules/wizz/overrides/{bmad-agent-pm.toml → wizz-agent-pm.toml} +1 -1
- package/src/modules/wizz/overrides/{bmad-agent-tech-writer.toml → wizz-agent-tech-writer.toml} +1 -1
- package/src/modules/wizz/overrides/{bmad-agent-ux-designer.toml → wizz-agent-ux-designer.toml} +1 -1
- package/src/modules/wizz/scripts/wizz-init.mjs +7 -7
- package/src/scripts/resolve_config.py +7 -7
- package/src/scripts/resolve_customization.py +2 -2
- package/src/scripts/tests/test_memlog.py +1 -1
- package/src/skills-lib/ab-test-setup/SKILL.md +266 -0
- package/src/skills-lib/ab-test-setup/evals/evals.json +105 -0
- package/src/skills-lib/ab-test-setup/references/sample-size-guide.md +263 -0
- package/src/skills-lib/ab-test-setup/references/test-templates.md +277 -0
- package/src/skills-lib/ad-creative/SKILL.md +362 -0
- package/src/skills-lib/ad-creative/evals/evals.json +90 -0
- package/src/skills-lib/ad-creative/references/generative-tools.md +637 -0
- package/src/skills-lib/ad-creative/references/platform-specs.md +213 -0
- package/src/skills-lib/adversarial-reviewer/SKILL.md +122 -0
- package/src/skills-lib/agent-browser/SKILL.md +139 -0
- package/src/skills-lib/ai-seo/SKILL.md +398 -0
- package/src/skills-lib/ai-seo/evals/evals.json +90 -0
- package/src/skills-lib/ai-seo/references/content-patterns.md +285 -0
- package/src/skills-lib/ai-seo/references/platform-ranking-factors.md +152 -0
- package/src/skills-lib/analytics-tracking/SKILL.md +309 -0
- package/src/skills-lib/analytics-tracking/evals/evals.json +90 -0
- package/src/skills-lib/analytics-tracking/references/event-library.md +260 -0
- package/src/skills-lib/analytics-tracking/references/ga4-implementation.md +300 -0
- package/src/skills-lib/analytics-tracking/references/gtm-implementation.md +390 -0
- package/src/skills-lib/auth-and-secrets/SKILL.md +82 -0
- package/src/skills-lib/caching-and-queues/SKILL.md +58 -0
- package/src/skills-lib/cerebro/SKILL.md +368 -0
- package/src/skills-lib/churn-prevention/SKILL.md +424 -0
- package/src/skills-lib/churn-prevention/evals/evals.json +93 -0
- package/src/skills-lib/churn-prevention/references/cancel-flow-patterns.md +316 -0
- package/src/skills-lib/churn-prevention/references/dunning-playbook.md +408 -0
- package/src/skills-lib/cloud-and-infra/SKILL.md +36 -0
- package/src/skills-lib/cold-email/SKILL.md +158 -0
- package/src/skills-lib/cold-email/evals/evals.json +94 -0
- package/src/skills-lib/cold-email/references/benchmarks.md +83 -0
- package/src/skills-lib/cold-email/references/follow-up-sequences.md +81 -0
- package/src/skills-lib/cold-email/references/frameworks.md +90 -0
- package/src/skills-lib/cold-email/references/personalization.md +79 -0
- package/src/skills-lib/cold-email/references/subject-lines.md +53 -0
- package/src/skills-lib/competitor-alternatives/SKILL.md +256 -0
- package/src/skills-lib/competitor-alternatives/evals/evals.json +93 -0
- package/src/skills-lib/competitor-alternatives/references/content-architecture.md +271 -0
- package/src/skills-lib/competitor-alternatives/references/templates.md +223 -0
- package/src/skills-lib/content-strategy/SKILL.md +359 -0
- package/src/skills-lib/content-strategy/evals/evals.json +90 -0
- package/src/skills-lib/copy-editing/SKILL.md +447 -0
- package/src/skills-lib/copy-editing/evals/evals.json +89 -0
- package/src/skills-lib/copy-editing/references/plain-english-alternatives.md +394 -0
- package/src/skills-lib/copywriting/SKILL.md +252 -0
- package/src/skills-lib/copywriting/evals/evals.json +111 -0
- package/src/skills-lib/copywriting/references/copy-frameworks.md +344 -0
- package/src/skills-lib/copywriting/references/natural-transitions.md +272 -0
- package/src/skills-lib/database-and-deps/SKILL.md +80 -0
- package/src/skills-lib/database-scaling/SKILL.md +44 -0
- package/src/skills-lib/decision-maker/SKILL.md +534 -0
- package/src/skills-lib/desktop-security/SKILL.md +43 -0
- package/src/skills-lib/email-sequence/SKILL.md +309 -0
- package/src/skills-lib/email-sequence/evals/evals.json +93 -0
- package/src/skills-lib/email-sequence/references/copy-guidelines.md +113 -0
- package/src/skills-lib/email-sequence/references/email-types.md +515 -0
- package/src/skills-lib/email-sequence/references/sequence-templates.md +168 -0
- package/src/skills-lib/enhance-prompt/README.md +34 -0
- package/src/skills-lib/enhance-prompt/SKILL.md +204 -0
- package/src/skills-lib/enhance-prompt/references/KEYWORDS.md +114 -0
- package/src/skills-lib/find-skills/SKILL.md +181 -0
- package/src/skills-lib/form-cro/SKILL.md +429 -0
- package/src/skills-lib/form-cro/evals/evals.json +90 -0
- package/src/skills-lib/free-tool-strategy/SKILL.md +178 -0
- package/src/skills-lib/free-tool-strategy/evals/evals.json +90 -0
- package/src/skills-lib/free-tool-strategy/references/tool-types.md +217 -0
- package/src/skills-lib/graphify/.graphify_version +1 -0
- package/src/skills-lib/graphify/SKILL.md +1217 -0
- package/src/skills-lib/huashu-design/LICENSE +21 -0
- package/src/skills-lib/huashu-design/README.en.md +309 -0
- package/src/skills-lib/huashu-design/README.md +348 -0
- package/src/skills-lib/huashu-design/SKILL.md +631 -0
- package/src/skills-lib/huashu-design/assets/android_frame.jsx +175 -0
- package/src/skills-lib/huashu-design/assets/animations.jsx +348 -0
- package/src/skills-lib/huashu-design/assets/banner.svg +198 -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/browser_window.jsx +166 -0
- package/src/skills-lib/huashu-design/assets/deck_index.html +348 -0
- package/src/skills-lib/huashu-design/assets/deck_stage.js +420 -0
- package/src/skills-lib/huashu-design/assets/design_canvas.jsx +205 -0
- package/src/skills-lib/huashu-design/assets/director-notes-samples/launch-film-30s-sample.md +1713 -0
- package/src/skills-lib/huashu-design/assets/ios_frame.jsx +192 -0
- package/src/skills-lib/huashu-design/assets/macos_window.jsx +96 -0
- package/src/skills-lib/huashu-design/assets/narration_stage.jsx +476 -0
- package/src/skills-lib/huashu-design/assets/personal-asset-index.example.json +71 -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/huashu-design/assets/showcases/INDEX.md +115 -0
- package/src/skills-lib/huashu-design/assets/showcases/cover/cover-build.html +235 -0
- package/src/skills-lib/huashu-design/assets/showcases/cover/cover-build.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/cover/cover-pentagram.html +229 -0
- package/src/skills-lib/huashu-design/assets/showcases/cover/cover-pentagram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/cover/cover-takram.html +288 -0
- package/src/skills-lib/huashu-design/assets/showcases/cover/cover-takram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-build.html +503 -0
- package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-build.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-pentagram.html +600 -0
- package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-pentagram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-takram.html +670 -0
- package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-takram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-build.html +382 -0
- package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-build.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-pentagram.html +536 -0
- package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-pentagram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-takram.html +497 -0
- package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-takram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-build.html +385 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-build.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-pentagram.html +422 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-pentagram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-takram.html +499 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-takram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-build.html +562 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-build.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-pentagram.html +548 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-pentagram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-takram.html +696 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-takram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-build.html +372 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-build.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-pentagram.html +460 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-pentagram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-takram.html +494 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-takram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-build.html +367 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-build.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-pentagram.html +368 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-pentagram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-takram.html +459 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-takram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-build.html +493 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-build.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-pentagram.html +556 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-pentagram.png +0 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-takram.html +604 -0
- package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-takram.png +0 -0
- package/src/skills-lib/huashu-design/demos/c1-ios-prototype-en.html +1145 -0
- package/src/skills-lib/huashu-design/demos/c1-ios-prototype.html +1142 -0
- package/src/skills-lib/huashu-design/demos/c2-slides-pptx-en.html +1055 -0
- package/src/skills-lib/huashu-design/demos/c2-slides-pptx.html +1055 -0
- package/src/skills-lib/huashu-design/demos/c3-motion-design-en.html +1134 -0
- package/src/skills-lib/huashu-design/demos/c3-motion-design.html +1134 -0
- package/src/skills-lib/huashu-design/demos/c4-tweaks-en.html +989 -0
- package/src/skills-lib/huashu-design/demos/c4-tweaks.html +989 -0
- package/src/skills-lib/huashu-design/demos/c5-infographic-en.html +816 -0
- package/src/skills-lib/huashu-design/demos/c5-infographic.html +813 -0
- package/src/skills-lib/huashu-design/demos/c6-expert-review-en.html +885 -0
- package/src/skills-lib/huashu-design/demos/c6-expert-review.html +894 -0
- package/src/skills-lib/huashu-design/demos/hero-animation-v10-en.html +1498 -0
- package/src/skills-lib/huashu-design/demos/md-html-narration/md-html-demo.html +615 -0
- package/src/skills-lib/huashu-design/demos/md-html-narration/script.md +69 -0
- package/src/skills-lib/huashu-design/demos/voiceover-demo/script.md +17 -0
- package/src/skills-lib/huashu-design/demos/voiceover-demo//344/273/200/344/271/210/346/230/257token.html +201 -0
- package/src/skills-lib/huashu-design/demos/w1-brand-protocol-en.html +684 -0
- package/src/skills-lib/huashu-design/demos/w1-brand-protocol.html +696 -0
- package/src/skills-lib/huashu-design/demos/w2-junior-designer-en.html +983 -0
- package/src/skills-lib/huashu-design/demos/w2-junior-designer.html +994 -0
- package/src/skills-lib/huashu-design/demos/w3-fallback-advisor-en.html +647 -0
- package/src/skills-lib/huashu-design/demos/w3-fallback-advisor.html +704 -0
- package/src/skills-lib/huashu-design/package-lock.json +846 -0
- package/src/skills-lib/huashu-design/package.json +8 -0
- package/src/skills-lib/huashu-design/references/animation-best-practices.md +506 -0
- package/src/skills-lib/huashu-design/references/animation-pitfalls.md +402 -0
- package/src/skills-lib/huashu-design/references/animations.md +249 -0
- package/src/skills-lib/huashu-design/references/apple-gallery-showcase.md +338 -0
- package/src/skills-lib/huashu-design/references/audio-design-rules.md +260 -0
- package/src/skills-lib/huashu-design/references/brand-asset-protocol.md +250 -0
- package/src/skills-lib/huashu-design/references/cinematic-patterns.md +264 -0
- package/src/skills-lib/huashu-design/references/content-guidelines.md +260 -0
- package/src/skills-lib/huashu-design/references/critique-guide.md +199 -0
- package/src/skills-lib/huashu-design/references/design-context.md +213 -0
- package/src/skills-lib/huashu-design/references/design-styles.md +370 -0
- package/src/skills-lib/huashu-design/references/editable-pptx.md +334 -0
- package/src/skills-lib/huashu-design/references/hero-animation-case-study.md +250 -0
- package/src/skills-lib/huashu-design/references/launch-film-director-notes.md +293 -0
- package/src/skills-lib/huashu-design/references/multi-perspective-parallel-case-study.md +267 -0
- package/src/skills-lib/huashu-design/references/react-setup.md +276 -0
- package/src/skills-lib/huashu-design/references/scene-templates.md +262 -0
- package/src/skills-lib/huashu-design/references/sfx-library.md +226 -0
- package/src/skills-lib/huashu-design/references/slide-decks.md +745 -0
- package/src/skills-lib/huashu-design/references/tweaks-system.md +313 -0
- package/src/skills-lib/huashu-design/references/verification.md +183 -0
- package/src/skills-lib/huashu-design/references/video-export.md +232 -0
- package/src/skills-lib/huashu-design/references/voiceover-pipeline.md +397 -0
- package/src/skills-lib/huashu-design/references/workflow.md +216 -0
- package/src/skills-lib/huashu-design/scripts/add-music.sh +108 -0
- package/src/skills-lib/huashu-design/scripts/convert-formats.sh +83 -0
- package/src/skills-lib/huashu-design/scripts/export_deck_pdf.mjs +98 -0
- package/src/skills-lib/huashu-design/scripts/export_deck_pptx.mjs +107 -0
- package/src/skills-lib/huashu-design/scripts/export_deck_stage_pdf.mjs +130 -0
- package/src/skills-lib/huashu-design/scripts/fetch_images.py +94 -0
- package/src/skills-lib/huashu-design/scripts/gen_deck_thumbs.mjs +55 -0
- package/src/skills-lib/huashu-design/scripts/html2pptx.js +1178 -0
- package/src/skills-lib/huashu-design/scripts/mix-voiceover.sh +127 -0
- package/src/skills-lib/huashu-design/scripts/narrate-pipeline.mjs +315 -0
- package/src/skills-lib/huashu-design/scripts/render-narration.sh +151 -0
- package/src/skills-lib/huashu-design/scripts/render-video-seek.js +238 -0
- package/src/skills-lib/huashu-design/scripts/render-video.js +289 -0
- package/src/skills-lib/huashu-design/scripts/tts-doubao.mjs +184 -0
- package/src/skills-lib/huashu-design/scripts/verify.py +154 -0
- package/src/skills-lib/huashu-design/test-prompts.json +38 -0
- package/src/skills-lib/humanizer/LICENSE +21 -0
- package/src/skills-lib/humanizer/README.md +145 -0
- package/src/skills-lib/humanizer/SKILL.md +474 -0
- package/src/skills-lib/humanizer/WARP.md +53 -0
- package/src/skills-lib/impeccable/SKILL.md +186 -0
- package/src/skills-lib/implementation-planner/SKILL.md +630 -0
- package/src/skills-lib/infrastructure/SKILL.md +34 -0
- package/src/skills-lib/inicio-de-projeto/SKILL.md +313 -0
- package/src/skills-lib/launch-strategy/SKILL.md +353 -0
- package/src/skills-lib/launch-strategy/evals/evals.json +91 -0
- package/src/skills-lib/marketing-ideas/SKILL.md +167 -0
- package/src/skills-lib/marketing-ideas/evals/evals.json +90 -0
- package/src/skills-lib/marketing-ideas/references/ideas-by-category.md +366 -0
- package/src/skills-lib/marketing-psychology/SKILL.md +455 -0
- package/src/skills-lib/marketing-psychology/evals/evals.json +88 -0
- package/src/skills-lib/motion-3d-director/SKILL.md +485 -0
- package/src/skills-lib/onboarding-cro/SKILL.md +220 -0
- package/src/skills-lib/onboarding-cro/evals/evals.json +92 -0
- package/src/skills-lib/onboarding-cro/references/experiments.md +258 -0
- package/src/skills-lib/page-cro/SKILL.md +182 -0
- package/src/skills-lib/page-cro/evals/evals.json +111 -0
- package/src/skills-lib/page-cro/references/experiments.md +248 -0
- package/src/skills-lib/paid-ads/SKILL.md +315 -0
- package/src/skills-lib/paid-ads/evals/evals.json +90 -0
- package/src/skills-lib/paid-ads/references/ad-copy-templates.md +207 -0
- package/src/skills-lib/paid-ads/references/audience-targeting.md +243 -0
- package/src/skills-lib/paid-ads/references/platform-setup-checklists.md +277 -0
- package/src/skills-lib/paywall-upgrade-cro/SKILL.md +227 -0
- package/src/skills-lib/paywall-upgrade-cro/evals/evals.json +93 -0
- package/src/skills-lib/paywall-upgrade-cro/references/experiments.md +164 -0
- package/src/skills-lib/popup-cro/SKILL.md +453 -0
- package/src/skills-lib/popup-cro/evals/evals.json +94 -0
- package/src/skills-lib/premium-landing-ui-researcher/SKILL.md +2090 -0
- package/src/skills-lib/pricing-strategy/SKILL.md +231 -0
- package/src/skills-lib/pricing-strategy/evals/evals.json +90 -0
- package/src/skills-lib/pricing-strategy/references/research-methods.md +152 -0
- package/src/skills-lib/pricing-strategy/references/tier-structure.md +232 -0
- package/src/skills-lib/product-marketing-context/SKILL.md +241 -0
- package/src/skills-lib/product-marketing-context/evals/evals.json +85 -0
- package/src/skills-lib/programmatic-seo/SKILL.md +238 -0
- package/src/skills-lib/programmatic-seo/evals/evals.json +94 -0
- package/src/skills-lib/programmatic-seo/references/playbooks.md +308 -0
- package/src/skills-lib/react-components/README.md +36 -0
- package/src/skills-lib/react-components/SKILL.md +51 -0
- package/src/skills-lib/react-components/examples/gold-standard-card.tsx +80 -0
- package/src/skills-lib/react-components/package-lock.json +231 -0
- package/src/skills-lib/react-components/package.json +16 -0
- package/src/skills-lib/react-components/resources/architecture-checklist.md +15 -0
- package/src/skills-lib/react-components/resources/component-template.tsx +37 -0
- package/src/skills-lib/react-components/resources/stitch-api-reference.md +14 -0
- package/src/skills-lib/react-components/resources/style-guide.json +27 -0
- package/src/skills-lib/react-components/scripts/fetch-stitch.sh +30 -0
- package/src/skills-lib/react-components/scripts/validate.js +70 -0
- package/src/skills-lib/references/premium-agency-rules.md +79 -0
- package/src/skills-lib/referral-program/SKILL.md +255 -0
- package/src/skills-lib/referral-program/evals/evals.json +89 -0
- package/src/skills-lib/referral-program/references/affiliate-programs.md +164 -0
- package/src/skills-lib/referral-program/references/program-examples.md +143 -0
- package/src/skills-lib/remotion-best-practices/SKILL.md +61 -0
- package/src/skills-lib/remotion-best-practices/rules/3d.md +86 -0
- package/src/skills-lib/remotion-best-practices/rules/animations.md +27 -0
- package/src/skills-lib/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/src/skills-lib/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/src/skills-lib/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
- package/src/skills-lib/remotion-best-practices/rules/assets.md +78 -0
- package/src/skills-lib/remotion-best-practices/rules/audio-visualization.md +198 -0
- package/src/skills-lib/remotion-best-practices/rules/audio.md +169 -0
- package/src/skills-lib/remotion-best-practices/rules/calculate-metadata.md +134 -0
- package/src/skills-lib/remotion-best-practices/rules/can-decode.md +75 -0
- package/src/skills-lib/remotion-best-practices/rules/charts.md +120 -0
- package/src/skills-lib/remotion-best-practices/rules/compositions.md +154 -0
- package/src/skills-lib/remotion-best-practices/rules/display-captions.md +184 -0
- package/src/skills-lib/remotion-best-practices/rules/extract-frames.md +229 -0
- package/src/skills-lib/remotion-best-practices/rules/ffmpeg.md +38 -0
- package/src/skills-lib/remotion-best-practices/rules/fonts.md +152 -0
- package/src/skills-lib/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/src/skills-lib/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/src/skills-lib/remotion-best-practices/rules/get-video-duration.md +60 -0
- package/src/skills-lib/remotion-best-practices/rules/gifs.md +141 -0
- package/src/skills-lib/remotion-best-practices/rules/images.md +134 -0
- package/src/skills-lib/remotion-best-practices/rules/import-srt-captions.md +69 -0
- package/src/skills-lib/remotion-best-practices/rules/light-leaks.md +73 -0
- package/src/skills-lib/remotion-best-practices/rules/lottie.md +70 -0
- package/src/skills-lib/remotion-best-practices/rules/maps.md +412 -0
- package/src/skills-lib/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
- package/src/skills-lib/remotion-best-practices/rules/measuring-text.md +140 -0
- package/src/skills-lib/remotion-best-practices/rules/parameters.md +109 -0
- package/src/skills-lib/remotion-best-practices/rules/sequencing.md +118 -0
- package/src/skills-lib/remotion-best-practices/rules/sfx.md +26 -0
- package/src/skills-lib/remotion-best-practices/rules/subtitles.md +36 -0
- package/src/skills-lib/remotion-best-practices/rules/tailwind.md +11 -0
- package/src/skills-lib/remotion-best-practices/rules/text-animations.md +20 -0
- package/src/skills-lib/remotion-best-practices/rules/timing.md +179 -0
- package/src/skills-lib/remotion-best-practices/rules/transcribe-captions.md +70 -0
- package/src/skills-lib/remotion-best-practices/rules/transitions.md +197 -0
- package/src/skills-lib/remotion-best-practices/rules/transparent-videos.md +106 -0
- package/src/skills-lib/remotion-best-practices/rules/trimming.md +51 -0
- package/src/skills-lib/remotion-best-practices/rules/videos.md +171 -0
- package/src/skills-lib/remotion-best-practices/rules/voiceover.md +99 -0
- package/src/skills-lib/revops/SKILL.md +343 -0
- package/src/skills-lib/revops/evals/evals.json +91 -0
- package/src/skills-lib/revops/references/automation-playbooks.md +290 -0
- package/src/skills-lib/revops/references/lifecycle-definitions.md +278 -0
- package/src/skills-lib/revops/references/routing-rules.md +203 -0
- package/src/skills-lib/revops/references/scoring-models.md +247 -0
- package/src/skills-lib/sales-enablement/SKILL.md +349 -0
- package/src/skills-lib/sales-enablement/evals/evals.json +91 -0
- package/src/skills-lib/sales-enablement/references/deck-frameworks.md +263 -0
- package/src/skills-lib/sales-enablement/references/demo-scripts.md +355 -0
- package/src/skills-lib/sales-enablement/references/objection-library.md +270 -0
- package/src/skills-lib/sales-enablement/references/one-pager-templates.md +208 -0
- package/src/skills-lib/schema-markup/SKILL.md +179 -0
- package/src/skills-lib/schema-markup/evals/evals.json +87 -0
- package/src/skills-lib/schema-markup/references/schema-examples.md +398 -0
- package/src/skills-lib/seo-audit/SKILL.md +412 -0
- package/src/skills-lib/seo-audit/evals/evals.json +136 -0
- package/src/skills-lib/seo-audit/references/ai-writing-detection.md +200 -0
- package/src/skills-lib/signup-flow-cro/SKILL.md +359 -0
- package/src/skills-lib/signup-flow-cro/evals/evals.json +88 -0
- package/src/skills-lib/site-architecture/SKILL.md +357 -0
- package/src/skills-lib/site-architecture/evals/evals.json +88 -0
- package/src/skills-lib/site-architecture/references/mermaid-templates.md +216 -0
- package/src/skills-lib/site-architecture/references/navigation-patterns.md +305 -0
- package/src/skills-lib/site-architecture/references/site-type-templates.md +293 -0
- package/src/skills-lib/social-content/SKILL.md +278 -0
- package/src/skills-lib/social-content/evals/evals.json +92 -0
- package/src/skills-lib/social-content/references/platforms.md +170 -0
- package/src/skills-lib/social-content/references/post-templates.md +177 -0
- package/src/skills-lib/social-content/references/reverse-engineering.md +195 -0
- package/src/skills-lib/supabase-postgres-best-practices/AGENTS.md +68 -0
- package/src/skills-lib/supabase-postgres-best-practices/CLAUDE.md +68 -0
- package/src/skills-lib/supabase-postgres-best-practices/README.md +116 -0
- package/src/skills-lib/supabase-postgres-best-practices/SKILL.md +64 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/_contributing.md +171 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/_sections.md +39 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/_template.md +34 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/conn-limits.md +44 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/data-pagination.md +50 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/data-upsert.md +50 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/query-index-types.md +48 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/security-privileges.md +54 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
- package/src/skills-lib/supabase-postgres-best-practices/references/security-rls-performance.md +57 -0
- package/src/skills-lib/taste-redesign/SKILL.md +178 -0
- package/src/skills-lib/taste-skill/SKILL.md +1206 -0
- package/src/skills-lib/ui-component-curator/SKILL.md +102 -0
- package/src/skills-lib/ui-ux-pro-max/SKILL.md +377 -0
- package/src/skills-lib/ui-ux-pro-max/data/charts.csv +26 -0
- package/src/skills-lib/ui-ux-pro-max/data/colors.csv +97 -0
- package/src/skills-lib/ui-ux-pro-max/data/icons.csv +101 -0
- package/src/skills-lib/ui-ux-pro-max/data/landing.csv +31 -0
- package/src/skills-lib/ui-ux-pro-max/data/products.csv +97 -0
- package/src/skills-lib/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/src/skills-lib/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/src/skills-lib/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/src/skills-lib/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/src/skills-lib/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/src/skills-lib/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/src/skills-lib/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/src/skills-lib/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/src/skills-lib/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/src/skills-lib/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/src/skills-lib/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/src/skills-lib/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/src/skills-lib/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/src/skills-lib/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/src/skills-lib/ui-ux-pro-max/data/styles.csv +68 -0
- package/src/skills-lib/ui-ux-pro-max/data/typography.csv +58 -0
- package/src/skills-lib/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/src/skills-lib/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/src/skills-lib/ui-ux-pro-max/data/web-interface.csv +31 -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/core.py +253 -0
- package/src/skills-lib/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/0964cef300f753b5cee0cc49777ca97035c85d45c212099405d9ee4da36e523f.json +1 -0
- package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/21a40f6810c3a6f17acc3580f106171daf78c7b41bbd066bc80448a821ea0adf.json +1 -0
- package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/69ea15a020ac81b8459e37ef63654398a50c1035fc01c43d8069df217389f7f3.json +1 -0
- package/src/skills-lib/ui-ux-pro-max/scripts/search.py +114 -0
- package/src/skills-lib/web-security/SKILL.md +147 -0
- package/src/skills-lib/wizz-router/SKILL.md +257 -0
- package/src/squads/README.md +39 -0
- package/src/squads/advisory-board/README.md +34 -0
- package/src/squads/advisory-board/agents/board-chair.md +161 -0
- package/src/squads/advisory-board/agents/brene-brown.md +296 -0
- package/src/squads/advisory-board/agents/charlie-munger.md +590 -0
- package/src/squads/advisory-board/agents/derek-sivers.md +268 -0
- package/src/squads/advisory-board/agents/naval-ravikant.md +251 -0
- package/src/squads/advisory-board/agents/patrick-lencioni.md +394 -0
- package/src/squads/advisory-board/agents/peter-thiel.md +269 -0
- package/src/squads/advisory-board/agents/ray-dalio.md +587 -0
- package/src/squads/advisory-board/agents/reid-hoffman.md +278 -0
- package/src/squads/advisory-board/agents/simon-sinek.md +291 -0
- package/src/squads/advisory-board/agents/yvon-chouinard.md +275 -0
- package/src/squads/advisory-board/squad.yaml +50 -0
- package/src/squads/brand-squad/README.md +60 -0
- package/src/squads/brand-squad/agents/al-ries.md +175 -0
- package/src/squads/brand-squad/agents/alina-wheeler.md +184 -0
- package/src/squads/brand-squad/agents/archetype-consultant.md +215 -0
- package/src/squads/brand-squad/agents/brand-chief.md +158 -0
- package/src/squads/brand-squad/agents/byron-sharp.md +169 -0
- package/src/squads/brand-squad/agents/david-aaker.md +166 -0
- package/src/squads/brand-squad/agents/denise-yohn.md +172 -0
- package/src/squads/brand-squad/agents/domain-scout.md +135 -0
- package/src/squads/brand-squad/agents/donald-miller.md +179 -0
- package/src/squads/brand-squad/agents/emily-heyward.md +147 -0
- package/src/squads/brand-squad/agents/jean-noel-kapferer.md +189 -0
- package/src/squads/brand-squad/agents/kevin-keller.md +199 -0
- package/src/squads/brand-squad/agents/marty-neumeier.md +170 -0
- package/src/squads/brand-squad/agents/miller-sticky-brand.md +180 -0
- package/src/squads/brand-squad/agents/naming-strategist.md +171 -0
- package/src/squads/brand-squad/squad.yaml +117 -0
- package/src/squads/c-level-squad/README.md +29 -0
- package/src/squads/c-level-squad/agents/caio-architect.md +235 -0
- package/src/squads/c-level-squad/agents/cio-engineer.md +209 -0
- package/src/squads/c-level-squad/agents/cmo-architect.md +208 -0
- package/src/squads/c-level-squad/agents/coo-orchestrator.md +193 -0
- package/src/squads/c-level-squad/agents/cto-architect.md +194 -0
- package/src/squads/c-level-squad/agents/vision-chief.md +201 -0
- package/src/squads/c-level-squad/squad.yaml +45 -0
- package/src/squads/claude-code-mastery/README.md +146 -0
- package/src/squads/claude-code-mastery/agents/claude-mastery-chief.md +554 -0
- package/src/squads/claude-code-mastery/agents/config-engineer.md +865 -0
- package/src/squads/claude-code-mastery/agents/hooks-architect.md +1013 -0
- package/src/squads/claude-code-mastery/agents/mcp-integrator.md +791 -0
- package/src/squads/claude-code-mastery/agents/project-integrator.md +1196 -0
- package/src/squads/claude-code-mastery/agents/roadmap-sentinel.md +931 -0
- package/src/squads/claude-code-mastery/agents/skill-craftsman.md +1250 -0
- package/src/squads/claude-code-mastery/agents/swarm-orchestrator.md +1008 -0
- package/src/squads/copy-squad/README.md +65 -0
- package/src/squads/copy-squad/agents/andre-chaperon.md +206 -0
- package/src/squads/copy-squad/agents/ben-settle.md +194 -0
- package/src/squads/copy-squad/agents/claude-hopkins.md +182 -0
- package/src/squads/copy-squad/agents/clayton-makepeace.md +225 -0
- package/src/squads/copy-squad/agents/copy-chief.md +166 -0
- package/src/squads/copy-squad/agents/dan-kennedy.md +202 -0
- package/src/squads/copy-squad/agents/dan-koe.md +223 -0
- package/src/squads/copy-squad/agents/david-deutsch.md +197 -0
- package/src/squads/copy-squad/agents/david-ogilvy.md +198 -0
- package/src/squads/copy-squad/agents/eugene-schwartz.md +238 -0
- package/src/squads/copy-squad/agents/frank-kern.md +195 -0
- package/src/squads/copy-squad/agents/gary-bencivenga.md +197 -0
- package/src/squads/copy-squad/agents/gary-halbert.md +219 -0
- package/src/squads/copy-squad/agents/jim-rutz.md +193 -0
- package/src/squads/copy-squad/agents/joe-sugarman.md +234 -0
- package/src/squads/copy-squad/agents/john-carlton.md +203 -0
- package/src/squads/copy-squad/agents/jon-benson.md +196 -0
- package/src/squads/copy-squad/agents/parris-lampropoulos.md +188 -0
- package/src/squads/copy-squad/agents/robert-collier.md +183 -0
- package/src/squads/copy-squad/agents/russell-brunson.md +229 -0
- package/src/squads/copy-squad/agents/ry-schwartz.md +185 -0
- package/src/squads/copy-squad/agents/stefan-georgi.md +188 -0
- package/src/squads/copy-squad/agents/todd-brown.md +171 -0
- package/src/squads/copy-squad/squad.yaml +87 -0
- package/src/squads/cybersecurity/README.md +38 -0
- package/src/squads/cybersecurity/agents/busterer.md +108 -0
- package/src/squads/cybersecurity/agents/cartographer.md +114 -0
- package/src/squads/cybersecurity/agents/chris-sanders.md +205 -0
- package/src/squads/cybersecurity/agents/command-generator.md +121 -0
- package/src/squads/cybersecurity/agents/cyber-chief.md +120 -0
- package/src/squads/cybersecurity/agents/dirber.md +111 -0
- package/src/squads/cybersecurity/agents/fuzzer.md +121 -0
- package/src/squads/cybersecurity/agents/georgia-weidman.md +178 -0
- package/src/squads/cybersecurity/agents/jim-manico.md +182 -0
- package/src/squads/cybersecurity/agents/marcus-carey.md +200 -0
- package/src/squads/cybersecurity/agents/omar-santos.md +206 -0
- package/src/squads/cybersecurity/agents/peter-kim.md +179 -0
- package/src/squads/cybersecurity/agents/ripper.md +121 -0
- package/src/squads/cybersecurity/agents/rogue.md +116 -0
- package/src/squads/cybersecurity/agents/shannon-runner.md +108 -0
- package/src/squads/cybersecurity/squad.yaml +56 -0
- package/src/squads/data-squad/README.md +30 -0
- package/src/squads/data-squad/agents/avinash-kaushik.md +268 -0
- package/src/squads/data-squad/agents/data-chief.md +167 -0
- package/src/squads/data-squad/agents/david-spinks.md +277 -0
- package/src/squads/data-squad/agents/nick-mehta.md +294 -0
- package/src/squads/data-squad/agents/peter-fader.md +246 -0
- package/src/squads/data-squad/agents/sean-ellis.md +303 -0
- package/src/squads/data-squad/agents/wes-kao.md +268 -0
- package/src/squads/data-squad/squad.yaml +46 -0
- package/src/squads/design-squad/README.md +31 -0
- package/src/squads/design-squad/agents/brad-frost.md +185 -0
- package/src/squads/design-squad/agents/dan-mall.md +178 -0
- package/src/squads/design-squad/agents/dave-malouf.md +198 -0
- package/src/squads/design-squad/agents/design-chief.md +109 -0
- package/src/squads/design-squad/agents/design-system-architect.md +109 -0
- package/src/squads/design-squad/agents/ui-engineer.md +102 -0
- package/src/squads/design-squad/agents/ux-designer.md +105 -0
- package/src/squads/design-squad/agents/visual-generator.md +108 -0
- package/src/squads/design-squad/squad.yaml +48 -0
- package/src/squads/hormozi-squad/README.md +39 -0
- package/src/squads/hormozi-squad/agents/hormozi-ads.md +159 -0
- package/src/squads/hormozi-squad/agents/hormozi-advisor.md +178 -0
- package/src/squads/hormozi-squad/agents/hormozi-audit.md +178 -0
- package/src/squads/hormozi-squad/agents/hormozi-chief.md +111 -0
- package/src/squads/hormozi-squad/agents/hormozi-closer.md +179 -0
- package/src/squads/hormozi-squad/agents/hormozi-content.md +166 -0
- package/src/squads/hormozi-squad/agents/hormozi-copy.md +152 -0
- package/src/squads/hormozi-squad/agents/hormozi-hooks.md +177 -0
- package/src/squads/hormozi-squad/agents/hormozi-launch.md +160 -0
- package/src/squads/hormozi-squad/agents/hormozi-leads.md +198 -0
- package/src/squads/hormozi-squad/agents/hormozi-models.md +191 -0
- package/src/squads/hormozi-squad/agents/hormozi-offers.md +197 -0
- package/src/squads/hormozi-squad/agents/hormozi-pricing.md +151 -0
- package/src/squads/hormozi-squad/agents/hormozi-retention.md +166 -0
- package/src/squads/hormozi-squad/agents/hormozi-scale.md +175 -0
- package/src/squads/hormozi-squad/agents/hormozi-workshop.md +160 -0
- package/src/squads/hormozi-squad/squad.yaml +60 -0
- package/src/squads/movement/README.md +29 -0
- package/src/squads/movement/agents/analista-de-impacto.md +350 -0
- package/src/squads/movement/agents/estrategista-de-ciclo.md +301 -0
- package/src/squads/movement/agents/fenomenologo.md +169 -0
- package/src/squads/movement/agents/identitario.md +265 -0
- package/src/squads/movement/agents/manifestador.md +279 -0
- package/src/squads/movement/agents/movement-architect.md +210 -0
- package/src/squads/movement/agents/movement-chief.md +135 -0
- package/src/squads/movement/squad.yaml +45 -0
- package/src/squads/storytelling/README.md +35 -0
- package/src/squads/storytelling/agents/blake-snyder.md +225 -0
- package/src/squads/storytelling/agents/dan-harmon.md +167 -0
- package/src/squads/storytelling/agents/joseph-campbell.md +184 -0
- package/src/squads/storytelling/agents/keith-johnstone.md +157 -0
- package/src/squads/storytelling/agents/kindra-hall.md +162 -0
- package/src/squads/storytelling/agents/marshall-ganz.md +167 -0
- package/src/squads/storytelling/agents/matthew-dicks.md +152 -0
- package/src/squads/storytelling/agents/nancy-duarte.md +154 -0
- package/src/squads/storytelling/agents/oren-klaff.md +166 -0
- package/src/squads/storytelling/agents/park-howell.md +152 -0
- package/src/squads/storytelling/agents/shawn-coyne.md +208 -0
- package/src/squads/storytelling/agents/story-chief.md +155 -0
- package/src/squads/storytelling/squad.yaml +52 -0
- package/src/squads/traffic-masters/README.md +39 -0
- package/src/squads/traffic-masters/agents/ad-midas.md +149 -0
- package/src/squads/traffic-masters/agents/ads-analyst.md +135 -0
- package/src/squads/traffic-masters/agents/creative-analyst.md +142 -0
- package/src/squads/traffic-masters/agents/depesh-mandalia.md +174 -0
- package/src/squads/traffic-masters/agents/fiscal.md +144 -0
- package/src/squads/traffic-masters/agents/kasim-aslam.md +158 -0
- package/src/squads/traffic-masters/agents/media-buyer.md +159 -0
- package/src/squads/traffic-masters/agents/molly-pittman.md +185 -0
- package/src/squads/traffic-masters/agents/nicholas-kusmich.md +157 -0
- package/src/squads/traffic-masters/agents/pedro-sobral.md +158 -0
- package/src/squads/traffic-masters/agents/performance-analyst.md +135 -0
- package/src/squads/traffic-masters/agents/pixel-specialist.md +144 -0
- package/src/squads/traffic-masters/agents/ralph-burns.md +163 -0
- package/src/squads/traffic-masters/agents/scale-optimizer.md +144 -0
- package/src/squads/traffic-masters/agents/tom-breeze.md +175 -0
- package/src/squads/traffic-masters/agents/traffic-chief.md +97 -0
- package/src/squads/traffic-masters/squad.yaml +59 -0
- package/tools/bundle-web-bundles.js +1 -1
- package/tools/format-workflow-md.js +2 -2
- package/tools/installer/commands/install.js +13 -1
- package/tools/installer/commands/status.js +9 -9
- package/tools/installer/commands/uninstall.js +5 -5
- package/tools/installer/core/config.js +20 -0
- package/tools/installer/core/existing-install.js +8 -8
- package/tools/installer/core/install-paths.js +13 -13
- package/tools/installer/core/installer.js +202 -102
- package/tools/installer/core/legacy-warnings.js +16 -16
- package/tools/installer/core/manifest-generator.js +44 -33
- package/tools/installer/core/manifest.js +30 -30
- package/tools/installer/core/python-check.js +7 -7
- package/tools/installer/ide/_config-driven.js +97 -97
- package/tools/installer/ide/manager.js +17 -17
- package/tools/installer/ide/platform-codes.yaml +5 -5
- package/tools/installer/ide/shared/installed-skills.js +13 -13
- package/tools/installer/ide/shared/path-utils.js +46 -46
- package/tools/installer/ide/shared/skill-manifest.js +4 -4
- package/tools/installer/install-messages.yaml +1 -1
- package/tools/installer/list-options.js +3 -3
- package/tools/installer/modules/channel-plan.js +1 -1
- package/tools/installer/modules/channel-resolver.js +1 -1
- package/tools/installer/modules/cli-config.js +145 -0
- package/tools/installer/modules/custom-module-manager.js +16 -16
- package/tools/installer/modules/external-manager.js +6 -6
- package/tools/installer/modules/mcp-config.js +137 -0
- package/tools/installer/modules/official-modules.js +42 -42
- package/tools/installer/modules/plugin-resolver.js +3 -3
- package/tools/installer/modules/skills-lib.js +135 -0
- package/tools/installer/project-root.js +13 -13
- package/tools/installer/prompts.js +1 -1
- package/tools/installer/set-overrides.js +6 -6
- package/tools/installer/ui.js +239 -29
- package/tools/installer/yaml-format.js +1 -1
- package/tools/migrate-custom-module-paths.js +11 -11
- package/tools/skill-validator.md +6 -6
- package/tools/validate-skills.js +10 -5
- package/web-bundles/README.md +4 -4
- package/web-bundles/brainstorming-coach/INSTRUCTIONS.md +1 -1
- package/web-bundles/bundles.json +6 -6
- package/web-bundles/market-and-industry-research/INSTRUCTIONS.md +1 -1
- package/web-bundles/prd-coach/INSTRUCTIONS.md +3 -3
- package/web-bundles/prfaq-coach/INSTRUCTIONS.md +3 -3
- package/web-bundles/product-brief-coach/INSTRUCTIONS.md +3 -3
- package/web-bundles/ux-coach/INSTRUCTIONS.md +1 -1
- package/{bmad-modules.yaml → wizz-modules.yaml} +15 -15
- package/build/site/pagefind/fragment/en_5ad92a9.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_7aea5bc.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_81bcd7f.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_938e9c4.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_b51d75b.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_c9fea21.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_e07e982.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_f4389af.pf_fragment +0 -0
- package/build/site/pagefind/fragment/en_f52c9f9.pf_fragment +0 -0
- package/build/site/pagefind/index/en_82c64dc.pf_index +0 -0
- package/build/site/pagefind/index/en_d0dd3c7.pf_index +0 -0
- package/build/site/pagefind/index/en_e890f88.pf_index +0 -0
- package/build/site/pagefind/pagefind.en_ee1b8a17c8.pf_meta +0 -0
- /package/build/site/img/{bmad-dark.png → wizz-dark.png} +0 -0
- /package/build/site/img/{bmad-light.png → wizz-light.png} +0 -0
- /package/src/bmm-skills/1-analysis/wizz-prfaq/{bmad-manifest.json → wizz-manifest.json} +0 -0
- /package/tools/installer/{bmad-cli.js → wizz-cli.js} +0 -0
|
@@ -3,8 +3,8 @@ const fs = require('../fs-native');
|
|
|
3
3
|
const yaml = require('yaml');
|
|
4
4
|
const prompts = require('../prompts');
|
|
5
5
|
const csv = require('csv-parse/sync');
|
|
6
|
-
const {
|
|
7
|
-
const { getInstalledCanonicalIds,
|
|
6
|
+
const { WIZZ_FOLDER_NAME } = require('./shared/path-utils');
|
|
7
|
+
const { getInstalledCanonicalIds, isWizzOwnedEntry } = require('./shared/installed-skills');
|
|
8
8
|
|
|
9
9
|
// Reserved OpenCode slash commands. A skill whose canonicalId collides with
|
|
10
10
|
// one of these is skipped during command-pointer generation so it doesn't
|
|
@@ -61,24 +61,24 @@ const DEFAULT_COMMANDS_BODY_TEMPLATE = '@skills/{canonicalId}';
|
|
|
61
61
|
// Used by platforms that surface only persona agents (e.g. Copilot's Custom
|
|
62
62
|
// Agents picker). Signal: the skill's source `customize.toml` has an
|
|
63
63
|
// `[agent]` section. This is the actual configuration source of truth —
|
|
64
|
-
// every
|
|
64
|
+
// every WIZZ persona is configured via [agent] in its customize.toml,
|
|
65
65
|
// every workflow uses [workflow], every standalone skill has no
|
|
66
66
|
// customize.toml at all. Verified against the full installed manifest:
|
|
67
67
|
// catches exactly the 20 description-confirmed personas across BMM, CIS,
|
|
68
68
|
// GDS, WDS, TEA, and correctly excludes meta-skills like
|
|
69
|
-
// `
|
|
69
|
+
// `wizz-agent-builder` (a skill-builder workflow whose canonical id
|
|
70
70
|
// contains `-agent-` but which has no [agent] section because it isn't a
|
|
71
71
|
// persona itself).
|
|
72
72
|
//
|
|
73
73
|
// Reading the source toml — at install time the source skill directory
|
|
74
74
|
// (resolved from manifest record.path) still exists; cleanup runs later
|
|
75
75
|
// in the install flow.
|
|
76
|
-
async function isAgentSkill(record,
|
|
77
|
-
if (!record?.path || !
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
const relativePath = record.path.startsWith(
|
|
81
|
-
const tomlPath = path.join(
|
|
76
|
+
async function isAgentSkill(record, wizzDir) {
|
|
77
|
+
if (!record?.path || !wizzDir) return false;
|
|
78
|
+
const wizzFolderName = path.basename(wizzDir);
|
|
79
|
+
const wizzPrefix = wizzFolderName + '/';
|
|
80
|
+
const relativePath = record.path.startsWith(wizzPrefix) ? record.path.slice(wizzPrefix.length) : record.path;
|
|
81
|
+
const tomlPath = path.join(wizzDir, path.dirname(relativePath), 'customize.toml');
|
|
82
82
|
if (!(await fs.pathExists(tomlPath))) return false;
|
|
83
83
|
try {
|
|
84
84
|
const content = await fs.readFile(tomlPath, 'utf8');
|
|
@@ -128,7 +128,7 @@ function looksLikeGeneratorOutput(content, canonicalId, { template, targetDir })
|
|
|
128
128
|
/**
|
|
129
129
|
* Config-driven IDE setup handler
|
|
130
130
|
*
|
|
131
|
-
* This class provides a standardized way to install
|
|
131
|
+
* This class provides a standardized way to install WIZZ artifacts to IDEs
|
|
132
132
|
* based on configuration in platform-codes.yaml. It eliminates the need for
|
|
133
133
|
* individual installer files for each IDE.
|
|
134
134
|
*
|
|
@@ -144,19 +144,19 @@ class ConfigDrivenIdeSetup {
|
|
|
144
144
|
this.preferred = platformConfig.preferred || false;
|
|
145
145
|
this.platformConfig = platformConfig;
|
|
146
146
|
this.installerConfig = platformConfig.installer || null;
|
|
147
|
-
this.
|
|
147
|
+
this.wizzFolderName = WIZZ_FOLDER_NAME;
|
|
148
148
|
|
|
149
149
|
// Set configDir from target_dir so detect() works
|
|
150
150
|
this.configDir = this.installerConfig?.target_dir || null;
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
|
|
154
|
-
this.
|
|
153
|
+
setWizzFolderName(wizzFolderName) {
|
|
154
|
+
this.wizzFolderName = wizzFolderName;
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
/**
|
|
158
158
|
* Detect whether this IDE already has configuration in the project.
|
|
159
|
-
* Checks for
|
|
159
|
+
* Checks for wizz-prefixed entries in target_dir.
|
|
160
160
|
* @param {string} projectDir - Project directory
|
|
161
161
|
* @returns {Promise<boolean>}
|
|
162
162
|
*/
|
|
@@ -174,28 +174,28 @@ class ConfigDrivenIdeSetup {
|
|
|
174
174
|
return false;
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
const
|
|
178
|
-
const canonicalIds = await getInstalledCanonicalIds(
|
|
179
|
-
return entries.some((e) =>
|
|
177
|
+
const wizzDir = await this._findWizzDir(root);
|
|
178
|
+
const canonicalIds = await getInstalledCanonicalIds(wizzDir);
|
|
179
|
+
return entries.some((e) => isWizzOwnedEntry(e, canonicalIds));
|
|
180
180
|
}
|
|
181
181
|
|
|
182
182
|
/**
|
|
183
183
|
* Main setup method - called by IdeManager
|
|
184
184
|
* @param {string} projectDir - Project directory
|
|
185
|
-
* @param {string}
|
|
185
|
+
* @param {string} wizzDir - WIZZ installation directory
|
|
186
186
|
* @param {Object} options - Setup options
|
|
187
187
|
* @returns {Promise<Object>} Setup result
|
|
188
188
|
*/
|
|
189
|
-
async setup(projectDir,
|
|
190
|
-
// Check for
|
|
189
|
+
async setup(projectDir, wizzDir, options = {}) {
|
|
190
|
+
// Check for WIZZ files in ancestor directories that would cause duplicates
|
|
191
191
|
if (this.installerConfig?.ancestor_conflict_check) {
|
|
192
192
|
const conflict = await this.findAncestorConflict(projectDir);
|
|
193
193
|
if (conflict) {
|
|
194
194
|
await prompts.log.error(
|
|
195
|
-
`Found existing
|
|
195
|
+
`Found existing WIZZ skills in ancestor installation: ${conflict}\n` +
|
|
196
196
|
` ${this.name} inherits skills from parent directories, so this would cause duplicates.\n` +
|
|
197
|
-
` Please remove the
|
|
198
|
-
` rm -rf "${conflict}"/
|
|
197
|
+
` Please remove the WIZZ files from that directory first:\n` +
|
|
198
|
+
` rm -rf "${conflict}"/wizz*`,
|
|
199
199
|
);
|
|
200
200
|
return {
|
|
201
201
|
success: false,
|
|
@@ -208,8 +208,8 @@ class ConfigDrivenIdeSetup {
|
|
|
208
208
|
|
|
209
209
|
if (!options.silent) await prompts.log.info(`Setting up ${this.name}...`);
|
|
210
210
|
|
|
211
|
-
// Clean up any old
|
|
212
|
-
await this.cleanup(projectDir, options,
|
|
211
|
+
// Clean up any old WIZZ installation first
|
|
212
|
+
await this.cleanup(projectDir, options, wizzDir);
|
|
213
213
|
|
|
214
214
|
if (!this.installerConfig) {
|
|
215
215
|
return { success: false, reason: 'no-config' };
|
|
@@ -222,13 +222,13 @@ class ConfigDrivenIdeSetup {
|
|
|
222
222
|
if (options.skipTarget) {
|
|
223
223
|
const results = { skills: 0, sharedTargetHandledByPeer: true };
|
|
224
224
|
if (this.installerConfig.commands_target_dir) {
|
|
225
|
-
results.commands = await this.installCommandPointers(projectDir,
|
|
225
|
+
results.commands = await this.installCommandPointers(projectDir, wizzDir, this.installerConfig, options);
|
|
226
226
|
}
|
|
227
227
|
return { success: true, results };
|
|
228
228
|
}
|
|
229
229
|
|
|
230
230
|
if (this.installerConfig.target_dir) {
|
|
231
|
-
return this.installToTarget(projectDir,
|
|
231
|
+
return this.installToTarget(projectDir, wizzDir, this.installerConfig, options);
|
|
232
232
|
}
|
|
233
233
|
|
|
234
234
|
return { success: false, reason: 'invalid-config' };
|
|
@@ -237,12 +237,12 @@ class ConfigDrivenIdeSetup {
|
|
|
237
237
|
/**
|
|
238
238
|
* Install to a single target directory
|
|
239
239
|
* @param {string} projectDir - Project directory
|
|
240
|
-
* @param {string}
|
|
240
|
+
* @param {string} wizzDir - WIZZ installation directory
|
|
241
241
|
* @param {Object} config - Installation configuration
|
|
242
242
|
* @param {Object} options - Setup options
|
|
243
243
|
* @returns {Promise<Object>} Installation result
|
|
244
244
|
*/
|
|
245
|
-
async installToTarget(projectDir,
|
|
245
|
+
async installToTarget(projectDir, wizzDir, config, options) {
|
|
246
246
|
const { target_dir } = config;
|
|
247
247
|
const targetPath = path.join(projectDir, target_dir);
|
|
248
248
|
await fs.ensureDir(targetPath);
|
|
@@ -250,11 +250,11 @@ class ConfigDrivenIdeSetup {
|
|
|
250
250
|
this.skillWriteTracker = new Set();
|
|
251
251
|
const results = { skills: 0 };
|
|
252
252
|
|
|
253
|
-
results.skills = await this.installVerbatimSkills(projectDir,
|
|
253
|
+
results.skills = await this.installVerbatimSkills(projectDir, wizzDir, targetPath, config);
|
|
254
254
|
results.skillDirectories = this.skillWriteTracker.size;
|
|
255
255
|
|
|
256
256
|
if (config.commands_target_dir) {
|
|
257
|
-
results.commands = await this.installCommandPointers(projectDir,
|
|
257
|
+
results.commands = await this.installCommandPointers(projectDir, wizzDir, config, options);
|
|
258
258
|
}
|
|
259
259
|
|
|
260
260
|
await this.printSummary(results, target_dir, options);
|
|
@@ -283,13 +283,13 @@ class ConfigDrivenIdeSetup {
|
|
|
283
283
|
* skill copy that already succeeded.
|
|
284
284
|
*
|
|
285
285
|
* @param {string} projectDir
|
|
286
|
-
* @param {string}
|
|
286
|
+
* @param {string} wizzDir
|
|
287
287
|
* @param {Object} config - Installer config; reads commands_target_dir.
|
|
288
288
|
* @param {Object} options - Setup options. forceCommands overwrites existing
|
|
289
289
|
* files unconditionally (including hand-modified ones).
|
|
290
290
|
* @returns {Promise<Object>} { created, updated, skippedExisting, skippedCollision, skippedInvalidId, writeFailures, fallbackDescription }
|
|
291
291
|
*/
|
|
292
|
-
async installCommandPointers(projectDir,
|
|
292
|
+
async installCommandPointers(projectDir, wizzDir, config, options = {}) {
|
|
293
293
|
const result = {
|
|
294
294
|
created: 0,
|
|
295
295
|
updated: 0,
|
|
@@ -301,7 +301,7 @@ class ConfigDrivenIdeSetup {
|
|
|
301
301
|
fallbackDescription: 0,
|
|
302
302
|
};
|
|
303
303
|
|
|
304
|
-
const csvPath = path.join(
|
|
304
|
+
const csvPath = path.join(wizzDir, '_config', 'skill-manifest.csv');
|
|
305
305
|
if (!(await fs.pathExists(csvPath))) return result;
|
|
306
306
|
|
|
307
307
|
const commandsPath = path.join(projectDir, config.commands_target_dir);
|
|
@@ -332,7 +332,7 @@ class ConfigDrivenIdeSetup {
|
|
|
332
332
|
// persona agents (e.g. Copilot's Custom Agents picker) skip
|
|
333
333
|
// workflow/tool skills here so the picker isn't cluttered with
|
|
334
334
|
// 90+ unrelated entries.
|
|
335
|
-
if (filter === 'agents-only' && !(await isAgentSkill(record,
|
|
335
|
+
if (filter === 'agents-only' && !(await isAgentSkill(record, wizzDir))) {
|
|
336
336
|
result.skippedFiltered++;
|
|
337
337
|
continue;
|
|
338
338
|
}
|
|
@@ -409,15 +409,15 @@ class ConfigDrivenIdeSetup {
|
|
|
409
409
|
* Copies the entire source directory as-is into the IDE skill directory.
|
|
410
410
|
* The source SKILL.md is used directly — no frontmatter transformation or file generation.
|
|
411
411
|
* @param {string} projectDir - Project directory
|
|
412
|
-
* @param {string}
|
|
412
|
+
* @param {string} wizzDir - WIZZ installation directory
|
|
413
413
|
* @param {string} targetPath - Target skills directory
|
|
414
414
|
* @param {Object} config - Installation configuration
|
|
415
415
|
* @returns {Promise<number>} Count of skills installed
|
|
416
416
|
*/
|
|
417
|
-
async installVerbatimSkills(projectDir,
|
|
418
|
-
const
|
|
419
|
-
const
|
|
420
|
-
const csvPath = path.join(
|
|
417
|
+
async installVerbatimSkills(projectDir, wizzDir, targetPath, config) {
|
|
418
|
+
const wizzFolderName = path.basename(wizzDir);
|
|
419
|
+
const wizzPrefix = wizzFolderName + '/';
|
|
420
|
+
const csvPath = path.join(wizzDir, '_config', 'skill-manifest.csv');
|
|
421
421
|
|
|
422
422
|
if (!(await fs.pathExists(csvPath))) return 0;
|
|
423
423
|
|
|
@@ -434,10 +434,10 @@ class ConfigDrivenIdeSetup {
|
|
|
434
434
|
if (!canonicalId) continue;
|
|
435
435
|
|
|
436
436
|
// Derive source directory from path column
|
|
437
|
-
// path is like "_wizz/bmm/workflows/
|
|
438
|
-
// Strip
|
|
439
|
-
const relativePath = record.path.startsWith(
|
|
440
|
-
const sourceFile = path.join(
|
|
437
|
+
// path is like "_wizz/bmm/workflows/wizz-quick-flow/wizz-quick-dev-new-preview/SKILL.md"
|
|
438
|
+
// Strip wizzFolderName prefix and join with wizzDir, then get dirname
|
|
439
|
+
const relativePath = record.path.startsWith(wizzPrefix) ? record.path.slice(wizzPrefix.length) : record.path;
|
|
440
|
+
const sourceFile = path.join(wizzDir, relativePath);
|
|
441
441
|
const sourceDir = path.dirname(sourceFile);
|
|
442
442
|
|
|
443
443
|
if (!(await fs.pathExists(sourceDir))) continue;
|
|
@@ -496,36 +496,36 @@ class ConfigDrivenIdeSetup {
|
|
|
496
496
|
* Cleanup IDE configuration
|
|
497
497
|
* @param {string} projectDir - Project directory
|
|
498
498
|
*/
|
|
499
|
-
async cleanup(projectDir, options = {},
|
|
500
|
-
const
|
|
499
|
+
async cleanup(projectDir, options = {}, wizzDir = null) {
|
|
500
|
+
const resolvedWizzDir = wizzDir || (await this._findWizzDir(projectDir));
|
|
501
501
|
|
|
502
502
|
// Build removal set: previously installed skills + removals.txt entries
|
|
503
503
|
let removalSet;
|
|
504
504
|
if (options.previousSkillIds) {
|
|
505
505
|
// Install/update flow: use pre-captured skill IDs (before manifest was overwritten)
|
|
506
506
|
removalSet = new Set(options.previousSkillIds);
|
|
507
|
-
if (
|
|
508
|
-
const removals = await this.loadRemovalLists(
|
|
507
|
+
if (resolvedWizzDir) {
|
|
508
|
+
const removals = await this.loadRemovalLists(resolvedWizzDir);
|
|
509
509
|
for (const entry of removals) removalSet.add(entry);
|
|
510
510
|
}
|
|
511
|
-
} else if (
|
|
511
|
+
} else if (resolvedWizzDir) {
|
|
512
512
|
// Uninstall flow: read from current skill-manifest.csv + removals.txt
|
|
513
|
-
removalSet = await this._buildUninstallSet(
|
|
513
|
+
removalSet = await this._buildUninstallSet(resolvedWizzDir);
|
|
514
514
|
} else {
|
|
515
515
|
removalSet = new Set();
|
|
516
516
|
}
|
|
517
517
|
|
|
518
|
-
// Strip
|
|
518
|
+
// Strip WIZZ markers from copilot-instructions.md if present
|
|
519
519
|
if (this.name === 'github-copilot') {
|
|
520
520
|
await this.cleanupCopilotInstructions(projectDir, options);
|
|
521
521
|
}
|
|
522
522
|
|
|
523
|
-
// Strip
|
|
523
|
+
// Strip WIZZ modes from .kilocodemodes if present
|
|
524
524
|
if (this.name === 'kilo') {
|
|
525
525
|
await this.cleanupKiloModes(projectDir, options);
|
|
526
526
|
}
|
|
527
527
|
|
|
528
|
-
// Strip
|
|
528
|
+
// Strip WIZZ entries from .rovodev/prompts.yml if present
|
|
529
529
|
if (this.name === 'rovo-dev') {
|
|
530
530
|
await this.cleanupRovoDevPrompts(projectDir, options);
|
|
531
531
|
}
|
|
@@ -548,7 +548,7 @@ class ConfigDrivenIdeSetup {
|
|
|
548
548
|
// cleanupByList), don't spare anything; the IDE itself is going away,
|
|
549
549
|
// so its pointers should go with it.
|
|
550
550
|
const isInstallFlow = !!options.previousSkillIds;
|
|
551
|
-
const activeSkillIds = isInstallFlow ? await this._readActiveSkillIds(
|
|
551
|
+
const activeSkillIds = isInstallFlow ? await this._readActiveSkillIds(resolvedWizzDir) : new Set();
|
|
552
552
|
const extension = this.installerConfig.commands_extension || '.md';
|
|
553
553
|
await this.cleanupCommandPointers(
|
|
554
554
|
projectDir,
|
|
@@ -574,24 +574,24 @@ class ConfigDrivenIdeSetup {
|
|
|
574
574
|
/**
|
|
575
575
|
* Find the _wizz directory in a project
|
|
576
576
|
* @param {string} projectDir - Project directory
|
|
577
|
-
* @returns {string|null} Path to
|
|
577
|
+
* @returns {string|null} Path to wizz dir or null
|
|
578
578
|
*/
|
|
579
|
-
async
|
|
580
|
-
const
|
|
581
|
-
return (await fs.pathExists(
|
|
579
|
+
async _findWizzDir(projectDir) {
|
|
580
|
+
const wizzDir = path.join(projectDir, WIZZ_FOLDER_NAME);
|
|
581
|
+
return (await fs.pathExists(wizzDir)) ? wizzDir : null;
|
|
582
582
|
}
|
|
583
583
|
|
|
584
584
|
/**
|
|
585
585
|
* Build the full set of entries to remove for uninstall.
|
|
586
586
|
* Reads skill-manifest.csv to know exactly what was installed, plus removal lists.
|
|
587
|
-
* @param {string}
|
|
587
|
+
* @param {string} wizzDir - WIZZ installation directory
|
|
588
588
|
* @returns {Set<string>} Set of entries to remove
|
|
589
589
|
*/
|
|
590
|
-
async _buildUninstallSet(
|
|
591
|
-
const removals = await this.loadRemovalLists(
|
|
590
|
+
async _buildUninstallSet(wizzDir) {
|
|
591
|
+
const removals = await this.loadRemovalLists(wizzDir);
|
|
592
592
|
|
|
593
593
|
// Also add all currently installed skills from skill-manifest.csv
|
|
594
|
-
const csvPath = path.join(
|
|
594
|
+
const csvPath = path.join(wizzDir, '_config', 'skill-manifest.csv');
|
|
595
595
|
try {
|
|
596
596
|
if (await fs.pathExists(csvPath)) {
|
|
597
597
|
const content = await fs.readFile(csvPath, 'utf8');
|
|
@@ -610,12 +610,12 @@ class ConfigDrivenIdeSetup {
|
|
|
610
610
|
}
|
|
611
611
|
|
|
612
612
|
/**
|
|
613
|
-
* Load removal lists from all module sources in the
|
|
613
|
+
* Load removal lists from all module sources in the wizz directory.
|
|
614
614
|
* Each module can have an optional removals.txt listing entries to remove.
|
|
615
|
-
* @param {string}
|
|
615
|
+
* @param {string} wizzDir - WIZZ installation directory
|
|
616
616
|
* @returns {Set<string>} Set of entries to remove
|
|
617
617
|
*/
|
|
618
|
-
async loadRemovalLists(
|
|
618
|
+
async loadRemovalLists(wizzDir) {
|
|
619
619
|
const removals = new Set();
|
|
620
620
|
const { getProjectRoot } = require('../project-root');
|
|
621
621
|
|
|
@@ -625,14 +625,14 @@ class ConfigDrivenIdeSetup {
|
|
|
625
625
|
|
|
626
626
|
// Read per-module removals.txt from installed module directories
|
|
627
627
|
try {
|
|
628
|
-
const entries = await fs.readdir(
|
|
628
|
+
const entries = await fs.readdir(wizzDir);
|
|
629
629
|
for (const entry of entries) {
|
|
630
630
|
if (entry.startsWith('_')) continue;
|
|
631
|
-
const removalPath = path.join(
|
|
631
|
+
const removalPath = path.join(wizzDir, entry, 'removals.txt');
|
|
632
632
|
await this._readRemovalFile(removalPath, removals);
|
|
633
633
|
}
|
|
634
634
|
} catch {
|
|
635
|
-
//
|
|
635
|
+
// wizzDir may not exist yet on fresh install
|
|
636
636
|
}
|
|
637
637
|
|
|
638
638
|
return removals;
|
|
@@ -729,13 +729,13 @@ class ConfigDrivenIdeSetup {
|
|
|
729
729
|
* Read the canonicalIds currently present in the skill-manifest.csv.
|
|
730
730
|
* Used by cleanup to distinguish "re-install of an existing skill"
|
|
731
731
|
* (preserve pointer) from "skill truly being removed" (delete pointer).
|
|
732
|
-
* @param {string|null}
|
|
732
|
+
* @param {string|null} wizzDir
|
|
733
733
|
* @returns {Promise<Set<string>>}
|
|
734
734
|
*/
|
|
735
|
-
async _readActiveSkillIds(
|
|
735
|
+
async _readActiveSkillIds(wizzDir) {
|
|
736
736
|
const ids = new Set();
|
|
737
|
-
if (!
|
|
738
|
-
const csvPath = path.join(
|
|
737
|
+
if (!wizzDir) return ids;
|
|
738
|
+
const csvPath = path.join(wizzDir, '_config', 'skill-manifest.csv');
|
|
739
739
|
if (!(await fs.pathExists(csvPath))) return ids;
|
|
740
740
|
try {
|
|
741
741
|
const content = await fs.readFile(csvPath, 'utf8');
|
|
@@ -753,7 +753,7 @@ class ConfigDrivenIdeSetup {
|
|
|
753
753
|
/**
|
|
754
754
|
* Cleanup a specific target directory.
|
|
755
755
|
* When removalSet is provided, only removes entries in that set.
|
|
756
|
-
* When removalSet is null (legacy dirs), removes all
|
|
756
|
+
* When removalSet is null (legacy dirs), removes all wizz-prefixed entries.
|
|
757
757
|
* @param {string} projectDir - Project directory
|
|
758
758
|
* @param {string} targetDir - Target directory to clean
|
|
759
759
|
* @param {Object} options - Cleanup options
|
|
@@ -786,11 +786,11 @@ class ConfigDrivenIdeSetup {
|
|
|
786
786
|
for (const entry of entries) {
|
|
787
787
|
if (!entry || typeof entry !== 'string') continue;
|
|
788
788
|
|
|
789
|
-
// Always preserve
|
|
790
|
-
if (entry.startsWith('
|
|
789
|
+
// Always preserve wizz-os-* utility skills regardless of cleanup mode
|
|
790
|
+
if (entry.startsWith('wizz-os-')) continue;
|
|
791
791
|
|
|
792
792
|
// Surgical removal from set, or fallback to manifest+prefix detection when null
|
|
793
|
-
const shouldRemove = removalSet ? removalSet.has(entry) :
|
|
793
|
+
const shouldRemove = removalSet ? removalSet.has(entry) : isWizzOwnedEntry(entry, null);
|
|
794
794
|
|
|
795
795
|
if (shouldRemove) {
|
|
796
796
|
try {
|
|
@@ -819,8 +819,8 @@ class ConfigDrivenIdeSetup {
|
|
|
819
819
|
}
|
|
820
820
|
|
|
821
821
|
/**
|
|
822
|
-
* Strip
|
|
823
|
-
* The old custom installer injected content between <!--
|
|
822
|
+
* Strip WIZZ-owned content from .github/copilot-instructions.md.
|
|
823
|
+
* The old custom installer injected content between <!-- WIZZ:START --> and <!-- WIZZ:END --> markers.
|
|
824
824
|
* Deletes the file if nothing remains. Restores .bak backup if one exists.
|
|
825
825
|
*/
|
|
826
826
|
async cleanupCopilotInstructions(projectDir, options = {}) {
|
|
@@ -830,12 +830,12 @@ class ConfigDrivenIdeSetup {
|
|
|
830
830
|
|
|
831
831
|
try {
|
|
832
832
|
const content = await fs.readFile(filePath, 'utf8');
|
|
833
|
-
const startIdx = content.indexOf('<!--
|
|
834
|
-
const endIdx = content.indexOf('<!--
|
|
833
|
+
const startIdx = content.indexOf('<!-- WIZZ:START -->');
|
|
834
|
+
const endIdx = content.indexOf('<!-- WIZZ:END -->');
|
|
835
835
|
|
|
836
836
|
if (startIdx === -1 || endIdx === -1 || endIdx <= startIdx) return;
|
|
837
837
|
|
|
838
|
-
const cleaned = content.slice(0, startIdx) + content.slice(endIdx + '<!--
|
|
838
|
+
const cleaned = content.slice(0, startIdx) + content.slice(endIdx + '<!-- WIZZ:END -->'.length);
|
|
839
839
|
|
|
840
840
|
if (cleaned.trim().length === 0) {
|
|
841
841
|
await fs.remove(filePath);
|
|
@@ -850,16 +850,16 @@ class ConfigDrivenIdeSetup {
|
|
|
850
850
|
if (await fs.pathExists(backupPath)) await fs.remove(backupPath);
|
|
851
851
|
}
|
|
852
852
|
|
|
853
|
-
if (!options.silent) await prompts.log.message(' Cleaned
|
|
853
|
+
if (!options.silent) await prompts.log.message(' Cleaned WIZZ markers from copilot-instructions.md');
|
|
854
854
|
} catch {
|
|
855
|
-
if (!options.silent) await prompts.log.warn(' Warning: Could not clean
|
|
855
|
+
if (!options.silent) await prompts.log.warn(' Warning: Could not clean WIZZ markers from copilot-instructions.md');
|
|
856
856
|
}
|
|
857
857
|
}
|
|
858
858
|
|
|
859
859
|
/**
|
|
860
|
-
* Strip
|
|
861
|
-
* The old custom kilo.js installer added modes with slug starting with '
|
|
862
|
-
* Parses YAML, filters out
|
|
860
|
+
* Strip WIZZ-owned modes from .kilocodemodes.
|
|
861
|
+
* The old custom kilo.js installer added modes with slug starting with 'wizz-'.
|
|
862
|
+
* Parses YAML, filters out WIZZ modes, rewrites. Leaves file as-is on parse failure.
|
|
863
863
|
*/
|
|
864
864
|
async cleanupKiloModes(projectDir, options = {}) {
|
|
865
865
|
const kiloModesPath = path.join(projectDir, '.kilocodemodes');
|
|
@@ -879,13 +879,13 @@ class ConfigDrivenIdeSetup {
|
|
|
879
879
|
if (!Array.isArray(config.customModes)) return;
|
|
880
880
|
|
|
881
881
|
const originalCount = config.customModes.length;
|
|
882
|
-
config.customModes = config.customModes.filter((mode) => mode && (!mode.slug || !mode.slug.startsWith('
|
|
882
|
+
config.customModes = config.customModes.filter((mode) => mode && (!mode.slug || !mode.slug.startsWith('wizz-')));
|
|
883
883
|
const removedCount = originalCount - config.customModes.length;
|
|
884
884
|
|
|
885
885
|
if (removedCount > 0) {
|
|
886
886
|
try {
|
|
887
887
|
await fs.writeFile(kiloModesPath, yaml.stringify(config, { lineWidth: 0 }));
|
|
888
|
-
if (!options.silent) await prompts.log.message(` Removed ${removedCount}
|
|
888
|
+
if (!options.silent) await prompts.log.message(` Removed ${removedCount} WIZZ modes from .kilocodemodes`);
|
|
889
889
|
} catch {
|
|
890
890
|
if (!options.silent) await prompts.log.warn(' Warning: Could not write .kilocodemodes during cleanup');
|
|
891
891
|
}
|
|
@@ -893,9 +893,9 @@ class ConfigDrivenIdeSetup {
|
|
|
893
893
|
}
|
|
894
894
|
|
|
895
895
|
/**
|
|
896
|
-
* Strip
|
|
896
|
+
* Strip WIZZ-owned entries from .rovodev/prompts.yml.
|
|
897
897
|
* The old custom rovodev.js installer registered workflows in prompts.yml.
|
|
898
|
-
* Parses YAML, filters out entries with name starting with '
|
|
898
|
+
* Parses YAML, filters out entries with name starting with 'wizz-', rewrites.
|
|
899
899
|
* Removes the file if no entries remain.
|
|
900
900
|
*/
|
|
901
901
|
async cleanupRovoDevPrompts(projectDir, options = {}) {
|
|
@@ -916,7 +916,7 @@ class ConfigDrivenIdeSetup {
|
|
|
916
916
|
if (!Array.isArray(config.prompts)) return;
|
|
917
917
|
|
|
918
918
|
const originalCount = config.prompts.length;
|
|
919
|
-
config.prompts = config.prompts.filter((entry) => entry && (!entry.name || !entry.name.startsWith('
|
|
919
|
+
config.prompts = config.prompts.filter((entry) => entry && (!entry.name || !entry.name.startsWith('wizz-')));
|
|
920
920
|
const removedCount = originalCount - config.prompts.length;
|
|
921
921
|
|
|
922
922
|
if (removedCount > 0) {
|
|
@@ -926,7 +926,7 @@ class ConfigDrivenIdeSetup {
|
|
|
926
926
|
} else {
|
|
927
927
|
await fs.writeFile(promptsPath, yaml.stringify(config, { lineWidth: 0 }));
|
|
928
928
|
}
|
|
929
|
-
if (!options.silent) await prompts.log.message(` Removed ${removedCount}
|
|
929
|
+
if (!options.silent) await prompts.log.message(` Removed ${removedCount} WIZZ entries from prompts.yml`);
|
|
930
930
|
} catch {
|
|
931
931
|
if (!options.silent) await prompts.log.warn(' Warning: Could not write prompts.yml during cleanup');
|
|
932
932
|
}
|
|
@@ -934,7 +934,7 @@ class ConfigDrivenIdeSetup {
|
|
|
934
934
|
}
|
|
935
935
|
|
|
936
936
|
/**
|
|
937
|
-
* Check ancestor directories for existing
|
|
937
|
+
* Check ancestor directories for existing WIZZ files in the same target_dir.
|
|
938
938
|
* IDEs like Claude Code inherit commands from parent directories, so an existing
|
|
939
939
|
* installation in an ancestor would cause duplicate commands.
|
|
940
940
|
* @param {string} projectDir - Project directory being installed to
|
|
@@ -953,9 +953,9 @@ class ConfigDrivenIdeSetup {
|
|
|
953
953
|
try {
|
|
954
954
|
if (await fs.pathExists(candidatePath)) {
|
|
955
955
|
const entries = await fs.readdir(candidatePath);
|
|
956
|
-
const
|
|
957
|
-
const canonicalIds = await getInstalledCanonicalIds(
|
|
958
|
-
if (entries.some((e) =>
|
|
956
|
+
const ancestorWizzDir = await this._findWizzDir(current);
|
|
957
|
+
const canonicalIds = await getInstalledCanonicalIds(ancestorWizzDir);
|
|
958
|
+
if (entries.some((e) => isWizzOwnedEntry(e, canonicalIds))) {
|
|
959
959
|
return candidatePath;
|
|
960
960
|
}
|
|
961
961
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const {
|
|
1
|
+
const { WIZZ_FOLDER_NAME } = require('./shared/path-utils');
|
|
2
2
|
const prompts = require('../prompts');
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -12,19 +12,19 @@ class IdeManager {
|
|
|
12
12
|
constructor() {
|
|
13
13
|
this.handlers = new Map();
|
|
14
14
|
this._initialized = false;
|
|
15
|
-
this.
|
|
15
|
+
this.wizzFolderName = WIZZ_FOLDER_NAME; // Default, can be overridden
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
* Set the
|
|
20
|
-
* @param {string}
|
|
19
|
+
* Set the wizz folder name for all IDE handlers
|
|
20
|
+
* @param {string} wizzFolderName - The wizz folder name
|
|
21
21
|
*/
|
|
22
|
-
|
|
23
|
-
this.
|
|
22
|
+
setWizzFolderName(wizzFolderName) {
|
|
23
|
+
this.wizzFolderName = wizzFolderName;
|
|
24
24
|
// Update all loaded handlers
|
|
25
25
|
for (const handler of this.handlers.values()) {
|
|
26
|
-
if (typeof handler.
|
|
27
|
-
handler.
|
|
26
|
+
if (typeof handler.setWizzFolderName === 'function') {
|
|
27
|
+
handler.setWizzFolderName(wizzFolderName);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -61,8 +61,8 @@ class IdeManager {
|
|
|
61
61
|
if (!platformInfo.installer) continue;
|
|
62
62
|
|
|
63
63
|
const handler = new ConfigDrivenIdeSetup(platformCode, platformInfo);
|
|
64
|
-
if (typeof handler.
|
|
65
|
-
handler.
|
|
64
|
+
if (typeof handler.setWizzFolderName === 'function') {
|
|
65
|
+
handler.setWizzFolderName(this.wizzFolderName);
|
|
66
66
|
}
|
|
67
67
|
this.handlers.set(platformCode, handler);
|
|
68
68
|
}
|
|
@@ -126,10 +126,10 @@ class IdeManager {
|
|
|
126
126
|
* Setup IDE configuration
|
|
127
127
|
* @param {string} ideName - Name of the IDE
|
|
128
128
|
* @param {string} projectDir - Project directory
|
|
129
|
-
* @param {string}
|
|
129
|
+
* @param {string} wizzDir - WIZZ installation directory
|
|
130
130
|
* @param {Object} options - Setup options
|
|
131
131
|
*/
|
|
132
|
-
async setup(ideName, projectDir,
|
|
132
|
+
async setup(ideName, projectDir, wizzDir, options = {}) {
|
|
133
133
|
const handler = this.handlers.get(ideName.toLowerCase());
|
|
134
134
|
|
|
135
135
|
if (!handler) {
|
|
@@ -155,7 +155,7 @@ class IdeManager {
|
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
try {
|
|
158
|
-
const handlerResult = await handler.setup(projectDir,
|
|
158
|
+
const handlerResult = await handler.setup(projectDir, wizzDir, options);
|
|
159
159
|
// Build detail string from handler-returned data
|
|
160
160
|
let detail = '';
|
|
161
161
|
if (handlerResult && handlerResult.results) {
|
|
@@ -188,11 +188,11 @@ class IdeManager {
|
|
|
188
188
|
* the first platform owns the directory write, peers skip it.
|
|
189
189
|
* @param {Array<string>} ideList - IDE names to set up
|
|
190
190
|
* @param {string} projectDir
|
|
191
|
-
* @param {string}
|
|
191
|
+
* @param {string} wizzDir
|
|
192
192
|
* @param {Object} [options] - Forwarded to each handler.setup
|
|
193
193
|
* @returns {Promise<Array>} Per-IDE results
|
|
194
194
|
*/
|
|
195
|
-
async setupBatch(ideList, projectDir,
|
|
195
|
+
async setupBatch(ideList, projectDir, wizzDir, options = {}) {
|
|
196
196
|
await this.ensureInitialized();
|
|
197
197
|
const results = [];
|
|
198
198
|
// target_dir → { firstIde, skillCount } from the platform that actually wrote it
|
|
@@ -201,7 +201,7 @@ class IdeManager {
|
|
|
201
201
|
for (const ideName of ideList) {
|
|
202
202
|
const handler = this.handlers.get(ideName.toLowerCase());
|
|
203
203
|
if (!handler) {
|
|
204
|
-
results.push(await this.setup(ideName, projectDir,
|
|
204
|
+
results.push(await this.setup(ideName, projectDir, wizzDir, options));
|
|
205
205
|
continue;
|
|
206
206
|
}
|
|
207
207
|
|
|
@@ -209,7 +209,7 @@ class IdeManager {
|
|
|
209
209
|
const claim = target ? claimedTargets.get(target) : null;
|
|
210
210
|
const skipTarget = !!claim;
|
|
211
211
|
|
|
212
|
-
const result = await this.setup(ideName, projectDir,
|
|
212
|
+
const result = await this.setup(ideName, projectDir, wizzDir, {
|
|
213
213
|
...options,
|
|
214
214
|
skipTarget,
|
|
215
215
|
sharedWith: claim?.firstIde || null,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# WIZZ Platform Codes Configuration
|
|
2
2
|
#
|
|
3
3
|
# Each platform entry has:
|
|
4
4
|
# name: Display name shown to users
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# installer:
|
|
8
8
|
# target_dir: Directory where skill directories are installed (project/workspace)
|
|
9
9
|
# global_target_dir: (optional) User-home directory for global install
|
|
10
|
-
# ancestor_conflict_check: (optional) Refuse install when ancestor dir has
|
|
10
|
+
# ancestor_conflict_check: (optional) Refuse install when ancestor dir has WIZZ files
|
|
11
11
|
#
|
|
12
12
|
# Multiple platforms may share the same target_dir or global_target_dir — many tools
|
|
13
13
|
# read from the shared `.agents/skills/` and `~/.agents/skills/` cross-tool standard.
|
|
@@ -145,12 +145,12 @@ platforms:
|
|
|
145
145
|
# The Custom Agents picker should only show persona agents (not
|
|
146
146
|
# workflows/tools). Detected by reading each skill's source
|
|
147
147
|
# `customize.toml` and checking for an `[agent]` section — that's
|
|
148
|
-
# the actual configuration source of truth: every
|
|
148
|
+
# the actual configuration source of truth: every WIZZ persona is
|
|
149
149
|
# configured under `[agent]`, every workflow under `[workflow]`,
|
|
150
150
|
# every standalone skill has no customize.toml. This signal is
|
|
151
|
-
# naming-independent, so personas like `
|
|
151
|
+
# naming-independent, so personas like `wizz-tea` (which doesn't
|
|
152
152
|
# follow the `-agent-` convention) are still included, and
|
|
153
|
-
# meta-skills like `
|
|
153
|
+
# meta-skills like `wizz-agent-builder` (which contains `-agent-`
|
|
154
154
|
# but is a skill-builder workflow, not a persona) are correctly
|
|
155
155
|
# excluded.
|
|
156
156
|
commands_filter: agents-only
|