wizz-method 2.0.0 → 2.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.
Files changed (310) hide show
  1. package/LICENSE +60 -30
  2. package/README.md +80 -31
  3. package/SECURITY.md +24 -0
  4. package/THIRD-PARTY-NOTICES.md +136 -0
  5. package/package.json +31 -17
  6. package/skills-registry.yaml +128 -7
  7. package/src/bmm-skills/1-analysis/research/wizz-domain-research/SKILL.md +3 -4
  8. package/src/bmm-skills/1-analysis/research/wizz-domain-research/domain-steps/step-06-research-synthesis.md +1 -1
  9. package/src/bmm-skills/1-analysis/research/wizz-market-research/SKILL.md +3 -4
  10. package/src/bmm-skills/1-analysis/research/wizz-market-research/steps/step-06-research-completion.md +1 -1
  11. package/src/bmm-skills/1-analysis/research/wizz-technical-research/SKILL.md +3 -4
  12. package/src/bmm-skills/1-analysis/research/wizz-technical-research/technical-steps/step-06-research-synthesis.md +1 -1
  13. package/src/bmm-skills/1-analysis/wizz-agent-analyst/SKILL.md +3 -4
  14. package/src/bmm-skills/1-analysis/wizz-agent-tech-writer/SKILL.md +3 -4
  15. package/src/bmm-skills/1-analysis/wizz-document-project/SKILL.md +3 -4
  16. package/src/bmm-skills/1-analysis/wizz-document-project/workflows/deep-dive-instructions.md +1 -1
  17. package/src/bmm-skills/1-analysis/wizz-document-project/workflows/full-scan-instructions.md +1 -1
  18. package/src/bmm-skills/1-analysis/wizz-prfaq/SKILL.md +3 -4
  19. package/src/bmm-skills/1-analysis/wizz-prfaq/references/verdict.md +1 -1
  20. package/src/bmm-skills/1-analysis/wizz-product-brief/SKILL.md +1 -1
  21. package/src/bmm-skills/2-plan-workflows/wizz-agent-pm/SKILL.md +3 -4
  22. package/src/bmm-skills/2-plan-workflows/wizz-agent-ux-designer/SKILL.md +3 -4
  23. package/src/bmm-skills/2-plan-workflows/wizz-create-prd/SKILL.md +1 -1
  24. package/src/bmm-skills/2-plan-workflows/wizz-edit-prd/SKILL.md +1 -1
  25. package/src/bmm-skills/2-plan-workflows/wizz-prd/SKILL.md +1 -1
  26. package/src/bmm-skills/2-plan-workflows/wizz-ux/SKILL.md +1 -1
  27. package/src/bmm-skills/2-plan-workflows/wizz-validate-prd/SKILL.md +1 -1
  28. package/src/bmm-skills/3-solutioning/wizz-agent-architect/SKILL.md +3 -4
  29. package/src/bmm-skills/3-solutioning/wizz-architecture/SKILL.md +9 -9
  30. package/src/bmm-skills/3-solutioning/wizz-architecture/references/headless.md +1 -1
  31. package/src/bmm-skills/3-solutioning/wizz-check-implementation-readiness/SKILL.md +3 -4
  32. package/src/bmm-skills/3-solutioning/wizz-check-implementation-readiness/steps/step-06-final-assessment.md +1 -1
  33. package/src/bmm-skills/3-solutioning/wizz-create-architecture/SKILL.md +1 -1
  34. package/src/bmm-skills/3-solutioning/wizz-create-epics-and-stories/SKILL.md +3 -4
  35. package/src/bmm-skills/3-solutioning/wizz-create-epics-and-stories/steps/step-04-final-validation.md +1 -1
  36. package/src/bmm-skills/3-solutioning/wizz-generate-project-context/SKILL.md +3 -4
  37. package/src/bmm-skills/3-solutioning/wizz-generate-project-context/steps/step-03-complete.md +1 -1
  38. package/src/bmm-skills/4-implementation/wizz-agent-dev/SKILL.md +3 -4
  39. package/src/bmm-skills/4-implementation/wizz-checkpoint-preview/SKILL.md +3 -4
  40. package/src/bmm-skills/4-implementation/wizz-checkpoint-preview/step-05-wrapup.md +1 -1
  41. package/src/bmm-skills/4-implementation/wizz-code-review/SKILL.md +3 -4
  42. package/src/bmm-skills/4-implementation/wizz-code-review/customize.toml +3 -8
  43. package/src/bmm-skills/4-implementation/wizz-code-review/review-prompts/blind-hunter.md +20 -0
  44. package/src/bmm-skills/4-implementation/wizz-code-review/steps/step-04-present.md +1 -1
  45. package/src/bmm-skills/4-implementation/wizz-correct-course/SKILL.md +4 -5
  46. package/src/bmm-skills/4-implementation/wizz-create-story/SKILL.md +4 -5
  47. package/src/bmm-skills/4-implementation/wizz-dev-story/SKILL.md +4 -5
  48. package/src/bmm-skills/4-implementation/wizz-investigate/SKILL.md +1 -1
  49. package/src/bmm-skills/4-implementation/wizz-qa-generate-e2e-tests/SKILL.md +4 -5
  50. package/src/bmm-skills/4-implementation/wizz-quick-dev/SKILL.md +4 -5
  51. package/src/bmm-skills/4-implementation/wizz-quick-dev/customize.toml +10 -22
  52. package/src/bmm-skills/4-implementation/wizz-quick-dev/review-prompts/blind-hunter.md +20 -0
  53. package/src/bmm-skills/4-implementation/wizz-quick-dev/step-05-present.md +1 -1
  54. package/src/bmm-skills/4-implementation/wizz-quick-dev/step-oneshot.md +1 -1
  55. package/src/bmm-skills/4-implementation/wizz-retrospective/SKILL.md +1 -2
  56. package/src/bmm-skills/4-implementation/wizz-sprint-planning/SKILL.md +1 -1
  57. package/src/bmm-skills/4-implementation/wizz-sprint-status/SKILL.md +5 -6
  58. package/src/core-skills/_shared/handoff-protocol.md +9 -0
  59. package/src/core-skills/wizz-advanced-elicitation/SKILL.md +2 -2
  60. package/src/core-skills/wizz-brainstorming/SKILL.md +6 -6
  61. package/src/core-skills/wizz-brainstorming/references/converge.md +1 -1
  62. package/src/core-skills/wizz-brainstorming/references/finalize.md +1 -1
  63. package/src/core-skills/wizz-brainstorming/references/headless.md +3 -3
  64. package/src/core-skills/wizz-brainstorming/references/mode-autonomous.md +1 -1
  65. package/src/core-skills/wizz-customize/SKILL.md +13 -10
  66. package/src/core-skills/wizz-forge-idea/SKILL.md +6 -6
  67. package/src/core-skills/wizz-forge-idea/scripts/__pycache__/resolve_personas.cpython-314.pyc +0 -0
  68. package/src/core-skills/wizz-forge-idea/scripts/resolve_personas.py +17 -1
  69. package/src/core-skills/wizz-party-mode/SKILL.md +3 -3
  70. package/src/core-skills/wizz-party-mode/references/create-party.md +1 -1
  71. package/src/core-skills/wizz-party-mode/references/party-memory.md +2 -2
  72. package/src/core-skills/wizz-party-mode/scripts/__pycache__/resolve_party.cpython-314.pyc +0 -0
  73. package/src/core-skills/wizz-party-mode/scripts/resolve_party.py +17 -1
  74. package/src/core-skills/wizz-review-adversarial-general/SKILL.md +1 -1
  75. package/src/core-skills/wizz-spec/SKILL.md +5 -5
  76. package/src/modules/lowticket/README.md +6 -6
  77. package/src/modules/lowticket/module.yaml +4 -1
  78. package/src/modules/lowticket/skills/{lowticket-funil → wizz-lowticket-funil}/SKILL.md +4 -4
  79. package/src/modules/lowticket/skills/{lowticket-funil → wizz-lowticket-funil}/references/copy-das-paginas.md +1 -1
  80. package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/SKILL.md +1 -1
  81. package/src/modules/lowticket/skills/{lowticket-minerador → wizz-lowticket-minerador}/SKILL.md +3 -3
  82. package/src/modules/lowticket/skills/{lowticket-minerador → wizz-lowticket-minerador}/references/rubrica.md +1 -1
  83. package/src/modules/lowticket/skills/{lowticket-pagina → wizz-lowticket-pagina}/SKILL.md +4 -4
  84. package/src/modules/lowticket/skills/{lowticket-trafego → wizz-lowticket-trafego}/SKILL.md +3 -3
  85. package/src/modules/lowticket/skills/{lowticket-trafego → wizz-lowticket-trafego}/references/reguas.md +1 -1
  86. package/src/modules/wizz/_shared/communication-rules.md +1 -1
  87. package/src/modules/wizz/_shared/despacho-barato.md +9 -0
  88. package/src/modules/wizz/_shared/token-economy.md +7 -0
  89. package/src/modules/wizz/agents/wizz-ads/SKILL.md +1 -1
  90. package/src/modules/wizz/agents/wizz-ads/customize.toml +1 -2
  91. package/src/modules/wizz/agents/wizz-copy/SKILL.md +1 -1
  92. package/src/modules/wizz/agents/wizz-copy/customize.toml +1 -2
  93. package/src/modules/wizz/agents/wizz-designer/SKILL.md +1 -1
  94. package/src/modules/wizz/agents/wizz-designer/customize.toml +1 -2
  95. package/src/modules/wizz/agents/wizz-growth/SKILL.md +1 -1
  96. package/src/modules/wizz/agents/wizz-growth/customize.toml +1 -2
  97. package/src/modules/wizz/agents/wizz-maestro/SKILL.md +5 -5
  98. package/src/modules/wizz/agents/wizz-maestro/customize.toml +4 -8
  99. package/src/modules/wizz/agents/wizz-memoria/SKILL.md +1 -1
  100. package/src/modules/wizz/agents/wizz-memoria/customize.toml +1 -2
  101. package/src/modules/wizz/agents/wizz-qa/SKILL.md +1 -1
  102. package/src/modules/wizz/agents/wizz-qa/customize.toml +1 -2
  103. package/src/modules/wizz/agents/wizz-seo/SKILL.md +1 -1
  104. package/src/modules/wizz/agents/wizz-seo/customize.toml +1 -2
  105. package/src/modules/wizz/agents/wizz-social/SKILL.md +1 -1
  106. package/src/modules/wizz/agents/wizz-social/customize.toml +1 -2
  107. package/src/modules/wizz/module.yaml +3 -0
  108. package/src/modules/wizz/overrides/wizz-agent-analyst.toml +1 -2
  109. package/src/modules/wizz/overrides/wizz-agent-architect.toml +1 -2
  110. package/src/modules/wizz/overrides/wizz-agent-dev.toml +1 -2
  111. package/src/modules/wizz/overrides/wizz-agent-pm.toml +1 -2
  112. package/src/modules/wizz/overrides/wizz-agent-tech-writer.toml +1 -2
  113. package/src/modules/wizz/overrides/wizz-agent-ux-designer.toml +1 -2
  114. package/src/modules/wizz/subagents/codex/wizz-exec-haiku.toml +2 -0
  115. package/src/modules/wizz/subagents/codex/wizz-exec-opus.toml +2 -0
  116. package/src/modules/wizz/subagents/codex/wizz-exec-review.toml +2 -0
  117. package/src/modules/wizz/subagents/codex/wizz-exec-sonnet.toml +2 -0
  118. package/src/modules/wizz/subagents/gemini/wizz-exec-haiku.md +4 -1
  119. package/src/modules/wizz/subagents/gemini/wizz-exec-opus.md +4 -1
  120. package/src/modules/wizz/subagents/gemini/wizz-exec-review.md +4 -1
  121. package/src/modules/wizz/subagents/gemini/wizz-exec-sonnet.md +4 -1
  122. package/src/modules/wizz/subagents/opencode/wizz-exec-haiku.md +4 -1
  123. package/src/modules/wizz/subagents/opencode/wizz-exec-opus.md +4 -1
  124. package/src/modules/wizz/subagents/opencode/wizz-exec-review.md +4 -1
  125. package/src/modules/wizz/subagents/opencode/wizz-exec-sonnet.md +4 -1
  126. package/src/modules/wizz/subagents/spec.yaml +148 -0
  127. package/src/modules/wizz/subagents/wizz-exec-haiku.md +4 -1
  128. package/src/modules/wizz/subagents/wizz-exec-opus.md +4 -1
  129. package/src/modules/wizz/subagents/wizz-exec-review.md +4 -1
  130. package/src/modules/wizz/subagents/wizz-exec-sonnet.md +4 -1
  131. package/src/scripts/__pycache__/resolve_customization.cpython-314.pyc +0 -0
  132. package/src/scripts/memlog.js +368 -0
  133. package/src/scripts/resolve_customization.py +124 -15
  134. package/src/skills-lib/_shared/complexity-signal.md +14 -0
  135. package/src/skills-lib/wizz-canvas-design/canvas-fonts/InstrumentSerif-OFL.txt +93 -0
  136. package/src/skills-lib/wizz-huashu-design/references/sfx-library.md +1 -1
  137. package/src/skills-lib/wizz-huashu-design/scripts/add-music.sh +1 -1
  138. package/src/skills-lib/wizz-huashu-design/scripts/mix-voiceover.sh +1 -1
  139. package/src/skills-lib/wizz-impeccable/LICENSE.txt +202 -0
  140. package/src/skills-lib/wizz-offer-forge/SKILL.md +1 -1
  141. package/src/skills-lib/wizz-react-components/LICENSE.txt +202 -0
  142. package/src/skills-lib/wizz-router/SKILL.md +2 -2
  143. package/src/skills-lib/wizz-supabase-postgres-best-practices/LICENSE +21 -0
  144. package/src/skills-lib/wizz-taste-skill/SKILL.md +1 -1
  145. package/src/skills-lib/wizz-tracking-audit/SKILL.md +1 -1
  146. package/tools/fetch-assets.mjs +62 -37
  147. package/tools/hooks/README.md +22 -0
  148. package/tools/hooks/rtk-rewrite.sh +280 -0
  149. package/tools/hooks/security-defensive-context.js +70 -0
  150. package/tools/hooks/session-rules.js +368 -0
  151. package/tools/hooks/wizz-decision-trace.js +389 -0
  152. package/tools/hooks/wizz-router-enforce.js +258 -0
  153. package/tools/installer/banner.js +1 -1
  154. package/tools/installer/commands/doctor.js +124 -0
  155. package/tools/installer/commands/install.js +1 -1
  156. package/tools/installer/commands/resolve.js +95 -0
  157. package/tools/installer/core/doctor.js +648 -0
  158. package/tools/installer/core/hash-cache.js +156 -0
  159. package/tools/installer/core/help-catalog.js +4 -1
  160. package/tools/installer/core/hooks-settings.js +178 -0
  161. package/tools/installer/core/installer.js +297 -15
  162. package/tools/installer/core/legacy-warnings.js +0 -4
  163. package/tools/installer/core/manifest-generator.js +121 -43
  164. package/tools/installer/core/manifest.js +36 -32
  165. package/tools/installer/core/module-config-writer.js +4 -1
  166. package/tools/installer/core/python-check.js +60 -63
  167. package/tools/installer/core/quick-update.js +76 -43
  168. package/tools/installer/core/resolved-config.js +168 -0
  169. package/tools/installer/core/resolved-customizations.js +736 -0
  170. package/tools/installer/core/resolved-includes.js +262 -0
  171. package/tools/installer/core/resolved-schema.js +148 -0
  172. package/tools/installer/core/user-file-preservation.js +40 -8
  173. package/tools/installer/core/wizz-dir.js +117 -0
  174. package/tools/installer/core/yaml-cache.js +105 -0
  175. package/tools/installer/fs-native.js +97 -6
  176. package/tools/installer/ide/_config-driven.js +12 -75
  177. package/tools/installer/ide/platform-codes.js +111 -16
  178. package/tools/installer/ide/platform-codes.yaml +45 -100
  179. package/tools/installer/ide/shared/path-utils.js +6 -208
  180. package/tools/installer/install-messages.yaml +4 -14
  181. package/tools/installer/modules/channel-plan.js +15 -2
  182. package/tools/installer/modules/config-collector.js +762 -0
  183. package/tools/installer/modules/config-values.js +352 -0
  184. package/tools/installer/modules/custom-module-manager.js +161 -28
  185. package/tools/installer/modules/env-vars.js +119 -0
  186. package/tools/installer/modules/external-manager.js +133 -60
  187. package/tools/installer/modules/git-cache-utils.js +125 -0
  188. package/tools/installer/modules/module-catalog.js +565 -0
  189. package/tools/installer/modules/module-installer.js +618 -0
  190. package/tools/installer/modules/module-interface.js +86 -0
  191. package/tools/installer/modules/official-modules.js +98 -2172
  192. package/tools/installer/modules/pin-spec.js +125 -0
  193. package/tools/installer/modules/plugin-resolver.js +4 -0
  194. package/tools/installer/modules/skills-lib.js +3 -6
  195. package/tools/installer/prompts.js +0 -3
  196. package/tools/installer/ui.js +89 -54
  197. package/tools/installer/wizz-cli.js +1 -1
  198. package/tools/lib/frontmatter.js +139 -0
  199. package/tools/lib/sync-targets.mjs +49 -0
  200. package/tools/lib/walk.js +93 -0
  201. package/wizz-modules.yaml +9 -0
  202. package/src/scripts/__pycache__/memlog.cpython-313.pyc +0 -0
  203. package/src/scripts/memlog.py +0 -233
  204. package/src/scripts/tests/__pycache__/test_memlog.cpython-313-pytest-9.1.1.pyc +0 -0
  205. package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-313-pytest-9.1.1.pyc +0 -0
  206. package/src/scripts/tests/test_memlog.py +0 -306
  207. package/src/skills-lib/wizz-huashu-design/assets/showcases/INDEX.md +0 -115
  208. package/src/skills-lib/wizz-huashu-design/assets/showcases/cover/cover-build.html +0 -235
  209. package/src/skills-lib/wizz-huashu-design/assets/showcases/cover/cover-build.png +0 -0
  210. package/src/skills-lib/wizz-huashu-design/assets/showcases/cover/cover-pentagram.html +0 -229
  211. package/src/skills-lib/wizz-huashu-design/assets/showcases/cover/cover-pentagram.png +0 -0
  212. package/src/skills-lib/wizz-huashu-design/assets/showcases/cover/cover-takram.html +0 -288
  213. package/src/skills-lib/wizz-huashu-design/assets/showcases/cover/cover-takram.png +0 -0
  214. package/src/skills-lib/wizz-huashu-design/assets/showcases/infographic/infographic-build.html +0 -503
  215. package/src/skills-lib/wizz-huashu-design/assets/showcases/infographic/infographic-build.png +0 -0
  216. package/src/skills-lib/wizz-huashu-design/assets/showcases/infographic/infographic-pentagram.html +0 -600
  217. package/src/skills-lib/wizz-huashu-design/assets/showcases/infographic/infographic-pentagram.png +0 -0
  218. package/src/skills-lib/wizz-huashu-design/assets/showcases/infographic/infographic-takram.html +0 -670
  219. package/src/skills-lib/wizz-huashu-design/assets/showcases/infographic/infographic-takram.png +0 -0
  220. package/src/skills-lib/wizz-huashu-design/assets/showcases/ppt/ppt-build.html +0 -382
  221. package/src/skills-lib/wizz-huashu-design/assets/showcases/ppt/ppt-build.png +0 -0
  222. package/src/skills-lib/wizz-huashu-design/assets/showcases/ppt/ppt-pentagram.html +0 -536
  223. package/src/skills-lib/wizz-huashu-design/assets/showcases/ppt/ppt-pentagram.png +0 -0
  224. package/src/skills-lib/wizz-huashu-design/assets/showcases/ppt/ppt-takram.html +0 -497
  225. package/src/skills-lib/wizz-huashu-design/assets/showcases/ppt/ppt-takram.png +0 -0
  226. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-nav/ainav-build.html +0 -385
  227. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-nav/ainav-build.png +0 -0
  228. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-nav/ainav-pentagram.html +0 -422
  229. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-nav/ainav-pentagram.png +0 -0
  230. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-nav/ainav-takram.html +0 -499
  231. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-nav/ainav-takram.png +0 -0
  232. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-writing/aiwriting-build.html +0 -562
  233. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-writing/aiwriting-build.png +0 -0
  234. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-writing/aiwriting-pentagram.html +0 -548
  235. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-writing/aiwriting-pentagram.png +0 -0
  236. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-writing/aiwriting-takram.html +0 -696
  237. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-writing/aiwriting-takram.png +0 -0
  238. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-devdocs/devdocs-build.html +0 -372
  239. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-devdocs/devdocs-build.png +0 -0
  240. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-devdocs/devdocs-pentagram.html +0 -460
  241. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-devdocs/devdocs-pentagram.png +0 -0
  242. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-devdocs/devdocs-takram.html +0 -494
  243. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-devdocs/devdocs-takram.png +0 -0
  244. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-homepage/homepage-build.html +0 -367
  245. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-homepage/homepage-build.png +0 -0
  246. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-homepage/homepage-pentagram.html +0 -368
  247. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-homepage/homepage-pentagram.png +0 -0
  248. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-homepage/homepage-takram.html +0 -459
  249. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-homepage/homepage-takram.png +0 -0
  250. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-saas/saas-build.html +0 -493
  251. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-saas/saas-build.png +0 -0
  252. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-saas/saas-pentagram.html +0 -556
  253. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-saas/saas-pentagram.png +0 -0
  254. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-saas/saas-takram.html +0 -604
  255. package/src/skills-lib/wizz-huashu-design/assets/showcases/website-saas/saas-takram.png +0 -0
  256. package/tools/installer/file-ops.js +0 -204
  257. package/tools/installer/ide/shared/skill-manifest.js +0 -57
  258. package/tools/installer/yaml-format.js +0 -245
  259. package/web-bundles/README.md +0 -46
  260. package/web-bundles/brainstorming-coach/INSTRUCTIONS.md +0 -86
  261. package/web-bundles/brainstorming-coach/SKILL.md +0 -83
  262. package/web-bundles/brainstorming-coach/brain-methods.csv +0 -62
  263. package/web-bundles/bundles.json +0 -139
  264. package/web-bundles/market-and-industry-research/INSTRUCTIONS.md +0 -88
  265. package/web-bundles/market-and-industry-research/SKILL.md +0 -59
  266. package/web-bundles/prd-coach/INSTRUCTIONS.md +0 -86
  267. package/web-bundles/prd-coach/SKILL.md +0 -101
  268. package/web-bundles/prd-coach/prd-template.md +0 -165
  269. package/web-bundles/prd-coach/prd-validation-checklist.md +0 -135
  270. package/web-bundles/prfaq-coach/INSTRUCTIONS.md +0 -86
  271. package/web-bundles/prfaq-coach/SKILL.md +0 -139
  272. package/web-bundles/product-brief-coach/INSTRUCTIONS.md +0 -86
  273. package/web-bundles/product-brief-coach/SKILL.md +0 -113
  274. package/web-bundles/ux-coach/INSTRUCTIONS.md +0 -92
  275. package/web-bundles/ux-coach/SKILL.md +0 -187
  276. package/web-bundles/ux-coach/ux-validation.md +0 -100
  277. /package/src/modules/lowticket/skills/{lowticket-funil → wizz-lowticket-funil}/references/mapa-do-funil.md +0 -0
  278. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/CATALOGO.md +0 -0
  279. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/01-principios.md +0 -0
  280. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/02-diagnostico-funil.md +0 -0
  281. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/03-campanha-bidcap.md +0 -0
  282. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/04-criativos.md +0 -0
  283. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/04a-criativos-ia.md +0 -0
  284. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/04b-criativos-formatos.md +0 -0
  285. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/05-oferta.md +0 -0
  286. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/06-pagina-vendas.md +0 -0
  287. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/06a-instagram.md +0 -0
  288. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/06b-player-vsl.md +0 -0
  289. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/07-funil-upsell.md +0 -0
  290. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/07a-copy-humanizacao.md +0 -0
  291. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/08-pesquisa-publico.md +0 -0
  292. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/09-especialista-coproducao.md +0 -0
  293. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/10-levantar-caixa.md +0 -0
  294. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/11-checklist-roi.md +0 -0
  295. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/12-mineracao-ofertas.md +0 -0
  296. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/12a-mineracao-veredito.md +0 -0
  297. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/12b-fabrica-de-ofertas.md +0 -0
  298. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/12c-anatomia-low-ticket.md +0 -0
  299. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/13-benchmarks-vsl.md +0 -0
  300. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/14-vocabulario.md +0 -0
  301. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/15-como-estender.md +0 -0
  302. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/17-rastreamento.md +0 -0
  303. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/18-copy-desejo-oferta.md +0 -0
  304. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/INDEX.md +0 -0
  305. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/guardrails.md +0 -0
  306. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/pontos-em-aberto.md +0 -0
  307. /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/references/swipe-file.md +0 -0
  308. /package/src/modules/lowticket/skills/{lowticket-pagina → wizz-lowticket-pagina}/references/metas-e-medicao.md +0 -0
  309. /package/src/modules/lowticket/skills/{lowticket-pagina → wizz-lowticket-pagina}/references/padroes-de-codigo.md +0 -0
  310. /package/src/modules/lowticket/skills/{lowticket-trafego → wizz-lowticket-trafego}/references/formato-do-diagnostico.md +0 -0
@@ -1,204 +0,0 @@
1
- const fs = require('./fs-native');
2
- const path = require('node:path');
3
- const crypto = require('node:crypto');
4
-
5
- /**
6
- * File operations utility class
7
- */
8
- class FileOps {
9
- /**
10
- * Copy a directory recursively
11
- * @param {string} source - Source directory
12
- * @param {string} dest - Destination directory
13
- * @param {Object} options - Copy options
14
- */
15
- async copyDirectory(source, dest, options = {}) {
16
- const defaultOptions = {
17
- overwrite: true,
18
- errorOnExist: false,
19
- filter: (src) => !this.shouldIgnore(src),
20
- };
21
-
22
- const copyOptions = { ...defaultOptions, ...options };
23
- await fs.copy(source, dest, copyOptions);
24
- }
25
-
26
- /**
27
- * Sync directory (selective copy preserving modifications)
28
- * @param {string} source - Source directory
29
- * @param {string} dest - Destination directory
30
- */
31
- async syncDirectory(source, dest) {
32
- const sourceFiles = await this.getFileList(source);
33
-
34
- for (const file of sourceFiles) {
35
- const sourceFile = path.join(source, file);
36
- const destFile = path.join(dest, file);
37
-
38
- // Check if destination file exists
39
- if (await fs.pathExists(destFile)) {
40
- // Compare checksums to see if file has been modified
41
- const sourceHash = await this.getFileHash(sourceFile);
42
- const destHash = await this.getFileHash(destFile);
43
-
44
- if (sourceHash === destHash) {
45
- // Files are identical, safe to update
46
- await fs.copy(sourceFile, destFile, { overwrite: true });
47
- } else {
48
- // File has been modified, check timestamps
49
- const sourceStats = await fs.stat(sourceFile);
50
- const destStats = await fs.stat(destFile);
51
-
52
- if (sourceStats.mtime > destStats.mtime) {
53
- // Source is newer, update
54
- await fs.copy(sourceFile, destFile, { overwrite: true });
55
- }
56
- // Otherwise, preserve user modifications
57
- }
58
- } else {
59
- // New file, copy it
60
- await fs.ensureDir(path.dirname(destFile));
61
- await fs.copy(sourceFile, destFile);
62
- }
63
- }
64
-
65
- // Remove files that no longer exist in source
66
- const destFiles = await this.getFileList(dest);
67
- for (const file of destFiles) {
68
- const sourceFile = path.join(source, file);
69
- const destFile = path.join(dest, file);
70
-
71
- if (!(await fs.pathExists(sourceFile))) {
72
- await fs.remove(destFile);
73
- }
74
- }
75
- }
76
-
77
- /**
78
- * Get list of all files in a directory
79
- * @param {string} dir - Directory path
80
- * @returns {Array} List of relative file paths
81
- */
82
- async getFileList(dir) {
83
- const files = [];
84
-
85
- if (!(await fs.pathExists(dir))) {
86
- return files;
87
- }
88
-
89
- const walk = async (currentDir, baseDir) => {
90
- const entries = await fs.readdir(currentDir, { withFileTypes: true });
91
-
92
- for (const entry of entries) {
93
- const fullPath = path.join(currentDir, entry.name);
94
-
95
- if (entry.isDirectory() && !this.shouldIgnore(fullPath)) {
96
- await walk(fullPath, baseDir);
97
- } else if (entry.isFile() && !this.shouldIgnore(fullPath)) {
98
- files.push(path.relative(baseDir, fullPath));
99
- }
100
- }
101
- };
102
-
103
- await walk(dir, dir);
104
- return files;
105
- }
106
-
107
- /**
108
- * Get file hash for comparison
109
- * @param {string} filePath - File path
110
- * @returns {string} File hash
111
- */
112
- async getFileHash(filePath) {
113
- const hash = crypto.createHash('sha256');
114
- const stream = fs.createReadStream(filePath);
115
-
116
- return new Promise((resolve, reject) => {
117
- stream.on('data', (data) => hash.update(data));
118
- stream.on('end', () => resolve(hash.digest('hex')));
119
- stream.on('error', reject);
120
- });
121
- }
122
-
123
- /**
124
- * Check if a path should be ignored
125
- * @param {string} filePath - Path to check
126
- * @returns {boolean} True if should be ignored
127
- */
128
- shouldIgnore(filePath) {
129
- const ignoredPatterns = ['.git', '.DS_Store', 'node_modules', '*.swp', '*.tmp', '.idea', '.vscode', '__pycache__', '*.pyc'];
130
-
131
- const basename = path.basename(filePath);
132
-
133
- for (const pattern of ignoredPatterns) {
134
- if (pattern.includes('*')) {
135
- // Simple glob pattern matching
136
- const regex = new RegExp(pattern.replace('*', '.*'));
137
- if (regex.test(basename)) {
138
- return true;
139
- }
140
- } else if (basename === pattern) {
141
- return true;
142
- }
143
- }
144
-
145
- return false;
146
- }
147
-
148
- /**
149
- * Ensure directory exists
150
- * @param {string} dir - Directory path
151
- */
152
- async ensureDir(dir) {
153
- await fs.ensureDir(dir);
154
- }
155
-
156
- /**
157
- * Remove directory or file
158
- * @param {string} targetPath - Path to remove
159
- */
160
- async remove(targetPath) {
161
- if (await fs.pathExists(targetPath)) {
162
- await fs.remove(targetPath);
163
- }
164
- }
165
-
166
- /**
167
- * Read file content
168
- * @param {string} filePath - File path
169
- * @returns {string} File content
170
- */
171
- async readFile(filePath) {
172
- return await fs.readFile(filePath, 'utf8');
173
- }
174
-
175
- /**
176
- * Write file content
177
- * @param {string} filePath - File path
178
- * @param {string} content - File content
179
- */
180
- async writeFile(filePath, content) {
181
- await fs.ensureDir(path.dirname(filePath));
182
- await fs.writeFile(filePath, content, 'utf8');
183
- }
184
-
185
- /**
186
- * Check if path exists
187
- * @param {string} targetPath - Path to check
188
- * @returns {boolean} True if exists
189
- */
190
- async exists(targetPath) {
191
- return await fs.pathExists(targetPath);
192
- }
193
-
194
- /**
195
- * Get file or directory stats
196
- * @param {string} targetPath - Path to check
197
- * @returns {Object} File stats
198
- */
199
- async stat(targetPath) {
200
- return await fs.stat(targetPath);
201
- }
202
- }
203
-
204
- module.exports = { FileOps };
@@ -1,57 +0,0 @@
1
- const path = require('node:path');
2
- const fs = require('../../fs-native');
3
- const yaml = require('yaml');
4
-
5
- /**
6
- * Load wizz-skill-manifest.yaml from a directory.
7
- * Single-entry manifests (canonicalId at top level) apply to all files in the directory.
8
- * Multi-entry manifests are keyed by source filename.
9
- * @param {string} dirPath - Directory to check for wizz-skill-manifest.yaml
10
- * @returns {Object|null} Parsed manifest or null
11
- */
12
- async function loadSkillManifest(dirPath) {
13
- const manifestPath = path.join(dirPath, 'wizz-skill-manifest.yaml');
14
- try {
15
- if (!(await fs.pathExists(manifestPath))) return null;
16
- const content = await fs.readFile(manifestPath, 'utf8');
17
- const parsed = yaml.parse(content);
18
- if (!parsed || typeof parsed !== 'object') return null;
19
- if (parsed.canonicalId || parsed.type) return { __single: parsed };
20
- return parsed;
21
- } catch (error) {
22
- console.warn(`Warning: Failed to parse wizz-skill-manifest.yaml in ${dirPath}: ${error.message}`);
23
- return null;
24
- }
25
- }
26
-
27
- /**
28
- * Get the canonicalId for a specific file from a loaded skill manifest.
29
- * @param {Object|null} manifest - Loaded manifest (from loadSkillManifest)
30
- * @param {string} filename - Source filename to look up (e.g., 'pm.md', 'help.md')
31
- * @returns {string} canonicalId or empty string
32
- */
33
- function getCanonicalId(manifest, filename) {
34
- if (!manifest) return '';
35
- // Single-entry manifest applies to all files in the directory
36
- if (manifest.__single) return manifest.__single.canonicalId || '';
37
- // Multi-entry: look up by filename directly
38
- if (manifest[filename]) return manifest[filename].canonicalId || '';
39
- return '';
40
- }
41
-
42
- /**
43
- * Get the artifact type for a specific file from a loaded skill manifest.
44
- * @param {Object|null} manifest - Loaded manifest (from loadSkillManifest)
45
- * @param {string} filename - Source filename to look up
46
- * @returns {string|null} type or null
47
- */
48
- function getArtifactType(manifest, filename) {
49
- if (!manifest) return null;
50
- // Single-entry manifest applies to all files in the directory
51
- if (manifest.__single) return manifest.__single.type || null;
52
- // Multi-entry: look up by filename directly
53
- if (manifest[filename]) return manifest[filename].type || null;
54
- return null;
55
- }
56
-
57
- module.exports = { loadSkillManifest, getCanonicalId, getArtifactType };
@@ -1,245 +0,0 @@
1
- const fs = require('node:fs');
2
- const path = require('node:path');
3
- const yaml = require('yaml');
4
- const { execSync } = require('node:child_process');
5
-
6
- // Dynamic import for ES module
7
- let chalk;
8
-
9
- // Initialize ES modules
10
- async function initializeModules() {
11
- if (!chalk) {
12
- chalk = (await import('chalk')).default;
13
- }
14
- }
15
-
16
- /**
17
- * YAML Formatter and Linter for Wizz-Method
18
- * Formats and validates YAML files and YAML embedded in Markdown
19
- */
20
-
21
- async function formatYamlContent(content, filename) {
22
- await initializeModules();
23
- try {
24
- // First try to fix common YAML issues
25
- let fixedContent = content
26
- // Fix "commands :" -> "commands:"
27
- .replaceAll(/^(\s*)(\w+)\s+:/gm, '$1$2:')
28
- // Fix inconsistent list indentation
29
- .replaceAll(/^(\s*)-\s{3,}/gm, '$1- ');
30
-
31
- // Skip auto-fixing for .roomodes files - they have special nested structure
32
- if (!filename.includes('.roomodes')) {
33
- fixedContent = fixedContent
34
- // Fix unquoted list items that contain special characters or multiple parts
35
- .replaceAll(/^(\s*)-\s+(.*)$/gm, (match, indent, content) => {
36
- // Skip if already quoted
37
- if (content.startsWith('"') && content.endsWith('"')) {
38
- return match;
39
- }
40
- // If the content contains special YAML characters or looks complex, quote it
41
- // BUT skip if it looks like a proper YAML key-value pair (like "key: value")
42
- if (
43
- (content.includes(':') || content.includes('-') || content.includes('{') || content.includes('}')) &&
44
- !/^\w+:\s/.test(content)
45
- ) {
46
- // Remove any existing quotes first, escape internal quotes, then add proper quotes
47
- const cleanContent = content.replaceAll(/^["']|["']$/g, '').replaceAll('"', String.raw`\"`);
48
- return `${indent}- "${cleanContent}"`;
49
- }
50
- return match;
51
- });
52
- }
53
-
54
- // Debug: show what we're trying to parse
55
- if (fixedContent !== content) {
56
- console.log(chalk.blue(`🔧 Applied YAML fixes to ${filename}`));
57
- }
58
-
59
- // Parse and re-dump YAML to format it
60
- const parsed = yaml.parse(fixedContent);
61
- const formatted = yaml.stringify(parsed, {
62
- indent: 2,
63
- lineWidth: 0, // Disable line wrapping
64
- sortKeys: false, // Preserve key order
65
- });
66
- // Ensure POSIX-compliant final newline
67
- return formatted.endsWith('\n') ? formatted : formatted + '\n';
68
- } catch (error) {
69
- console.error(chalk.red(`❌ YAML syntax error in ${filename}:`), error.message);
70
- console.error(chalk.yellow(`💡 Try manually fixing the YAML structure first`));
71
- return null;
72
- }
73
- }
74
-
75
- async function processMarkdownFile(filePath) {
76
- await initializeModules();
77
- const content = fs.readFileSync(filePath, 'utf8');
78
- let modified = false;
79
- let newContent = content;
80
-
81
- // Fix untyped code blocks by adding 'text' type
82
- // Match ``` at start of line followed by newline, but only if it's an opening fence
83
- newContent = newContent.replaceAll(/^```\n([\s\S]*?)\n```$/gm, '```text\n$1\n```');
84
- if (newContent !== content) {
85
- modified = true;
86
- console.log(chalk.blue(`🔧 Added 'text' type to untyped code blocks in ${filePath}`));
87
- }
88
-
89
- // Find YAML code blocks
90
- const yamlBlockRegex = /```ya?ml\n([\s\S]*?)\n```/g;
91
- let match;
92
- const replacements = [];
93
-
94
- while ((match = yamlBlockRegex.exec(newContent)) !== null) {
95
- const [fullMatch, yamlContent] = match;
96
- const formatted = await formatYamlContent(yamlContent, filePath);
97
- if (formatted !== null) {
98
- const trimmedFormatted = formatted.replace(/\n$/, '');
99
-
100
- if (trimmedFormatted !== yamlContent) {
101
- modified = true;
102
- console.log(chalk.green(`✓ Formatted YAML in ${filePath}`));
103
- }
104
-
105
- replacements.push({
106
- start: match.index,
107
- end: match.index + fullMatch.length,
108
- replacement: `\`\`\`yaml\n${trimmedFormatted}\n\`\`\``,
109
- });
110
- }
111
- }
112
-
113
- // Apply replacements in reverse order to maintain indices
114
- for (let index = replacements.length - 1; index >= 0; index--) {
115
- const { start, end, replacement } = replacements[index];
116
- newContent = newContent.slice(0, start) + replacement + newContent.slice(end);
117
- }
118
-
119
- if (modified) {
120
- fs.writeFileSync(filePath, newContent);
121
- return true;
122
- }
123
- return false;
124
- }
125
-
126
- async function processYamlFile(filePath) {
127
- await initializeModules();
128
- const content = fs.readFileSync(filePath, 'utf8');
129
- const formatted = await formatYamlContent(content, filePath);
130
-
131
- if (formatted === null) {
132
- return false; // Syntax error
133
- }
134
-
135
- if (formatted !== content) {
136
- fs.writeFileSync(filePath, formatted);
137
- return true;
138
- }
139
- return false;
140
- }
141
-
142
- async function lintYamlFile(filePath) {
143
- await initializeModules();
144
- try {
145
- // Use yaml-lint for additional validation
146
- execSync(`npx yaml-lint "${filePath}"`, { stdio: 'pipe' });
147
- return true;
148
- } catch (error) {
149
- console.error(chalk.red(`❌ YAML lint error in ${filePath}:`));
150
- console.error(error.stdout?.toString() || error.message);
151
- return false;
152
- }
153
- }
154
-
155
- async function main() {
156
- await initializeModules();
157
- const arguments_ = process.argv.slice(2);
158
- const glob = require('glob');
159
-
160
- if (arguments_.length === 0) {
161
- console.error('Usage: node yaml-format.js <file1> [file2] ...');
162
- process.exit(1);
163
- }
164
-
165
- let hasErrors = false;
166
- let hasChanges = false;
167
- let filesProcessed = [];
168
-
169
- // Expand glob patterns and collect all files
170
- const allFiles = [];
171
- for (const argument of arguments_) {
172
- if (argument.includes('*')) {
173
- // It's a glob pattern
174
- const matches = glob.sync(argument);
175
- allFiles.push(...matches);
176
- } else {
177
- // It's a direct file path
178
- allFiles.push(argument);
179
- }
180
- }
181
-
182
- for (const filePath of allFiles) {
183
- if (!fs.existsSync(filePath)) {
184
- // Skip silently for glob patterns that don't match anything
185
- if (!arguments_.some((argument) => argument.includes('*') && filePath === argument)) {
186
- console.error(chalk.red(`❌ File not found: ${filePath}`));
187
- hasErrors = true;
188
- }
189
- continue;
190
- }
191
-
192
- const extension = path.extname(filePath).toLowerCase();
193
- const basename = path.basename(filePath).toLowerCase();
194
-
195
- try {
196
- let changed = false;
197
- if (extension === '.md') {
198
- changed = await processMarkdownFile(filePath);
199
- } else if (
200
- extension === '.yaml' ||
201
- extension === '.yml' ||
202
- basename.includes('roomodes') ||
203
- basename.includes('.yaml') ||
204
- basename.includes('.yml')
205
- ) {
206
- // Handle YAML files and special cases like .roomodes
207
- changed = await processYamlFile(filePath);
208
-
209
- // Also run linting
210
- const lintPassed = await lintYamlFile(filePath);
211
- if (!lintPassed) hasErrors = true;
212
- } else {
213
- // Skip silently for unsupported files
214
- continue;
215
- }
216
-
217
- if (changed) {
218
- hasChanges = true;
219
- filesProcessed.push(filePath);
220
- }
221
- } catch (error) {
222
- console.error(chalk.red(`❌ Error processing ${filePath}:`), error.message);
223
- hasErrors = true;
224
- }
225
- }
226
-
227
- if (hasChanges) {
228
- console.log(chalk.green(`\n✨ YAML formatting completed! Modified ${filesProcessed.length} files:`));
229
- for (const file of filesProcessed) console.log(chalk.blue(` 📝 ${file}`));
230
- }
231
-
232
- if (hasErrors) {
233
- console.error(chalk.red('\n💥 Some files had errors. Please fix them before committing.'));
234
- process.exit(1);
235
- }
236
- }
237
-
238
- if (require.main === module) {
239
- main().catch((error) => {
240
- console.error('Error:', error);
241
- process.exit(1);
242
- });
243
- }
244
-
245
- module.exports = { formatYamlContent, processMarkdownFile, processYamlFile };
@@ -1,46 +0,0 @@
1
- # Wizz Web Bundles
2
-
3
- V4 shipped web bundles. V6 brings them back, new and improved. Each bundle packages a Wizz skill as a self-contained install for **Google Gemini Gems** and **ChatGPT Custom GPTs**, so you can run the planning work in your web LLM subscription before opening your IDE.
4
-
5
- ## Install
6
-
7
- **Go to [bmadcode.com/web-bundles](https://bmadcode.com/web-bundles/).**
8
-
9
- The site lists every bundle in a card grid, walks you through the Gemini and ChatGPT setup inline, and hands you the ZIP download in one click. That is the only supported install path.
10
-
11
- Why a single front door:
12
-
13
- - One place to keep install steps current as Gemini and ChatGPT evolve.
14
- - Versioned releases. Every shelf update ships as a tagged GitHub Release; the site always points at the newest tag.
15
- - One signup gets you on the list for new bundles as they ship.
16
-
17
- ## Why use them
18
-
19
- - **Cost.** Web LLM subscriptions are flat-rate. Run brainstorming, briefs, PRDs, and research there instead of burning IDE tokens.
20
- - **Right tool for the job.** Planning conversations want Canvas, image generation, and Deep Research. Implementation wants the codebase and a terminal. Use each where it's strongest.
21
- - **Persona swapping.** Every bundle ships a default persona and a contrasting swap example. Change voices without touching the protocol.
22
-
23
- ## The shelf
24
-
25
- | Bundle | Purpose |
26
- | --- | --- |
27
- | Brainstorming Coach | Facilitated ideation across 60 techniques. Defaults to **Carson** (Osborn lineage); swap to **Mary** for analyst rigor. |
28
- | Product Brief Coach | Build a product brief through guided discovery. Create, Update, or Validate modes. |
29
- | PRFAQ Coach | Working Backwards PRFAQ challenge (Bezos lineage) to forge and stress-test product concepts. |
30
- | PRD Coach | Product Requirements Document with built-in validation (Cagan lineage). |
31
- | UX Coach | UX patterns, flows, and design specifications. Pairs with Google Stitch. |
32
- | Market & Industry Research | Market research, customer JTBD, competitive landscape, regulatory and technical lenses. Deep Research mode integrated. |
33
-
34
- Requires Gemini Advanced (for Gems) or ChatGPT Plus / Pro / Business / Enterprise (for Custom GPTs). Deep Research has its own plan limits.
35
-
36
- ## Build your own
37
-
38
- Web bundles are generated from Wizz skills using the [`bmad-os-skill-to-bundle`](https://github.com/bmad-code-org/wizz-utility-skills) utility skill. Point it at any Wizz skill folder and it produces a `SKILL.md`, an `INSTRUCTIONS.md`, and any required data files, with persona inheritance from the owning agent.
39
-
40
- ## What's in this folder
41
-
42
- This folder is the **source** for the shelf, packaged into ZIPs and attached to GitHub Releases. End users do not install from here. If you are a contributor working on a bundle, the bundle directories and `bundles.json` are the files you edit; the [release packager](../tools/bundle-web-bundles.js) zips them and updates the release.
43
-
44
- ## Concept docs
45
-
46
- [What web bundles are and when to use them](https://docs.wizz-method.org/explanation/web-bundles/).
@@ -1,86 +0,0 @@
1
- # Brainstorming Coach Setup
2
-
3
- ## Install (Gemini Gem)
4
-
5
- 1. Create a Gem named **Brainstorming Coach**.
6
- 2. Upload `SKILL.md` and `brain-methods.csv` as knowledge files.
7
- 3. Paste everything below the **PASTE BOUNDARY** line into the instructions box.
8
- 4. Save.
9
-
10
- ## Install (ChatGPT Custom GPT)
11
-
12
- 1. Create a GPT named **Brainstorming Coach**.
13
- 2. Under **Configure**, upload `SKILL.md` and `brain-methods.csv` as **Knowledge**.
14
- 3. Paste everything below the **PASTE BOUNDARY** line into **Instructions**.
15
- 4. Turn **Web Browsing** ON (the protocol uses it to verify current references).
16
- 5. Save.
17
-
18
- ## Customize
19
-
20
- Edit the `[persona]` block below to swap voices. Default: **Carson, Elite Brainstorming Specialist**. `[preferences]` sets a default user name.
21
-
22
- ## Persona Swap Example (reference, do not paste)
23
-
24
- **Mary, Strategic Business Analyst**: more rigorous, less improv; tuned for software planning.
25
-
26
- ```
27
- name: Mary
28
- title: Strategic Business Analyst
29
- icon: 📊
30
- role: |
31
- Help the user ideate, research, and analyze before committing to a project in the Wizz Method analysis phase. Facilitate brainstorming as structured discovery without generating ideas for the user.
32
- identity: |
33
- Senior analyst with a research-first instinct. Treats brainstorming as structured discovery, prizes evidence and pattern recognition, hunts for the assumption hiding under every idea.
34
- communication_style: |
35
- Precise, curious, slightly skeptical. Asks "what would have to be true?" more than "what if?" Celebrates rigor over volume.
36
- principles:
37
- - Every idea contains an assumption worth surfacing.
38
- - The map is not the territory; the brainstorm is not the strategy.
39
- - Pattern recognition beats brute-force ideation.
40
- suggested_focus: |
41
- Software product planning and the fuzzy front end of building things: feature scoping, requirements discovery, user-problem framing, competitive positioning, project briefs, architecture trade-offs, pre-PRD shaping. Strongest where the right framing changes what gets built. Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere.
42
- ```
43
-
44
- Swap the `[persona]` block below with the alternative or invent your own. Protocol stays the same; voice transforms.
45
-
46
-
47
- ═══════════════════════════════════════════════════════════════════════
48
- ▼▼▼ PASTE BOUNDARY: PASTE EVERYTHING BELOW INTO INSTRUCTIONS ▼▼▼
49
- ═══════════════════════════════════════════════════════════════════════
50
-
51
-
52
- You are a brainstorming facilitator. Your identity is in the `[persona]` block below; your protocol is in your knowledge file `SKILL.md`; your technique library is in `brain-methods.csv`.
53
-
54
- On the first user message, read `SKILL.md` in full from your knowledge files, then greet the user as the persona and begin the session opener described in the protocol. Stay in character until the user dismisses the persona.
55
-
56
- ## [persona]
57
-
58
- ```
59
- name: Carson
60
- title: Elite Brainstorming Specialist
61
- icon: 🧠
62
-
63
- role: |
64
- Facilitate brainstorming sessions that pull novel ideas out of the user using the 60 techniques in the brain-methods library. Never generate ideas for the user; your craft is the framing, the questions, and the polish.
65
-
66
- identity: |
67
- Twenty years leading breakthrough sessions. Channels Alex Osborn's brainstorming foundations and Keith Johnstone's improv-born yes-and instinct. Fluent in group dynamics and the art of making it safe to say the ridiculous thing out loud.
68
-
69
- communication_style: |
70
- Enthusiastic improv coach. High-energy, YES AND everything, celebrates the wildest thinking in the room. Warm, playful, never sarcastic.
71
-
72
- principles:
73
- - Psychological safety unlocks breakthroughs. No idea gets judged until it has had room to breathe.
74
- - Wild ideas today become obvious innovations tomorrow.
75
- - Humor and play are serious innovation tools.
76
-
77
- suggested_focus: |
78
- Creative innovation and breakthrough thinking across any domain: opportunity exploration, novel product or service concepts, naming and branding, campaign and story ideation, reframing stuck problems, what-if futures, inventing new categories, and the kind of wild divergence that makes the obvious answer look small. Strongest when the goal is more, weirder, and bolder. Mention this focus in the opener as an invitation, not a constraint; the user may steer anywhere.
79
- ```
80
-
81
- ## [preferences]
82
-
83
- ```
84
- user_name: ""
85
- # Optional. Blank means the coach asks once at session start.
86
- ```