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
@@ -0,0 +1,22 @@
1
+ # Hooks (fonte de verdade)
2
+
3
+ Os hooks do Claude Code usados pelo Wizz Method vivem AQUI e são instalados em
4
+ `~/.claude/hooks/` via `npm run sync:global`. Nunca edite a cópia global direto:
5
+ ela é substituída no próximo sync.
6
+
7
+ | Hook | Evento | O que faz |
8
+ | ------------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
9
+ | `wizz-router-enforce.js` | UserPromptSubmit | Gate `isTrivial()` + injeção curta: em projeto Wizz (`_wizz/`) manda delegar direto ao maestro/agente da área (sem router); fora, manda pro `wizz-router`. |
10
+ | `session-rules.js` | SessionStart | Duas coisas num processo só: injeta as regras de comunicação 1x por sessão (antes era por prompt) e resolve a FEATURE ATIVA sozinho (branch git > `_wizz/bmm/config.yaml` > nada), para ninguém precisar invocar `wizz-set-feature`. Branch de tronco e de release não viram feature; sem feature a linha não é emitida (custo zero). A feature também é o `tema` da memória. |
11
+ | `security-defensive-context.js` | PreToolUse (Skill) | Metodologia defensiva/escopada ao invocar skills de segurança. Genérico por projeto (v2). |
12
+ | `rtk-rewrite.sh` | PreToolUse (Bash) | Reescreve comandos de shell via `rtk rewrite` (token economy). Fork local do hook gerado pelo instalador upstream do rtk, com 3 patches (auditoria 2026-07-07, C4/RT1; e 2026-09-11, RT-H3): reescrita linha a linha em comando multi-linha (o binário só reescrevia a 1ª linha), timeout interno por linha (`RTK_HOOK_TIMEOUT`, default 3s) que não depende do `timeout`/`gtimeout` do GNU coreutils, e cache do version-guard (`RTK_CACHE_TTL_SECONDS`, default 1h, em `${XDG_CACHE_HOME:-$HOME/.cache}/wizz/rtk-version`) pra não rodar `rtk --version` a cada `Bash` tool call da sessão. Requer `rtk` + `jq` no PATH; fail-open em ambos (e no cache: ilegível/corrompido/expirado recomputa em silêncio). |
13
+
14
+ Removidos em 2026-07 (arquivados em `~/.claude/hooks-archive/`):
15
+ `no-narration-enforce.js` (absorvido pelo session-rules) e `vault-reminder.js`.
16
+
17
+ Testes: `npm run test:hooks` (isTrivial + contexto por modo), `npm run test:feature-context` (resolução da feature ativa: tronco não vira feature, branch ganha do config, silêncio quando não há feature) e `node test/test-rtk-hook.js` (rewrite básico + multi-linha do `rtk-rewrite.sh`, smoke test que exercita o binário `rtk` real quando disponível, e o cache do version-guard: criado na 1ª chamada e reusado na 2ª, TTL expirado força recompute, path do binário mudou invalida, cache corrompido não quebra e se auto-cura).
18
+ Evals de roteamento: `node evals/routing/run-routing-eval.mjs [--llm]`.
19
+
20
+ Drift repo ↔ global: `npm run sync:check` compara hash de cada hook (e skill) entre o repo e `~/.claude`, sem escrever nada — é lembrete (fail-open), não gate; roda no fim do `npm test`. Achou drift? `npm run sync:global` atualiza `~/.claude`.
21
+
22
+ Registro por projeto (RT-C1, item 3): o installer copia estes hooks para `_wizz/hooks/` de cada projeto instalado e registra a chamada em `.claude/settings.json` do projeto, via merge puro em `tools/installer/core/hooks-settings.js`. Antes de registrar, ele lê o `settings.json` GLOBAL do usuário (`~/.claude/settings.json`, ou o path apontado por `WIZZ_GLOBAL_SETTINGS_FILE` quando definido) e pula qualquer hook nosso que já esteja registrado lá no mesmo evento, para não rodar o mesmo hook 2x numa máquina onde o mantenedor já fez o registro global (decisão do dono, 2026-09-11). Settings global ausente ou com JSON inválido não filtra nada.
@@ -0,0 +1,280 @@
1
+ #!/usr/bin/env bash
2
+ # rtk-hook-version: 3-wizz3
3
+ # RTK Claude Code hook — rewrites commands to use rtk for token savings.
4
+ # Requires: rtk >= 0.23.0, jq
5
+ #
6
+ # Fonte de verdade: tools/hooks/rtk-rewrite.sh neste repo. Instalado em
7
+ # ~/.claude/hooks/ via `npm run sync:global` (nunca editar a cópia global
8
+ # direto: ela é substituída no próximo sync). Isto é um FORK local do hook
9
+ # gerado pelo instalador upstream do rtk (que documenta "single source of
10
+ # truth = src/discover/registry.rs, não edite este arquivo"): mantemos a
11
+ # delegação da lógica de rewrite pro binário `rtk rewrite`, mas aplicamos 3
12
+ # patches locais que o upstream não tem (auditoria 2026-07-07, C4/RT1; e
13
+ # auditoria 2026-09-11, RT-H3):
14
+ #
15
+ # 1. Bug de comando multi-linha: `rtk rewrite` (confirmado ainda presente
16
+ # no binário 0.43.0, reportado
17
+ # upstream) só reescreve a 1ª linha de um comando multi-linha; as
18
+ # demais passam cruas, sem aviso, gerando saída mista. Correção: este
19
+ # hook detecta comando multi-linha e chama `rtk rewrite` LINHA A LINHA,
20
+ # preservando a reescrita completa em vez de só a primeira linha.
21
+ # 2. Timeout interno por linha (RTK_HOOK_TIMEOUT, default 3s): evita que
22
+ # uma chamada travada a `rtk rewrite` prenda o prompt inteiro. Não
23
+ # depende do `timeout`/`gtimeout` do GNU coreutils (ausente por padrão
24
+ # no macOS) — usa um watcher em background portátil (bash puro).
25
+ # Isso é além do timeout de 5s já configurado no bloco PreToolUse do
26
+ # settings.json (defesa em profundidade, não substituição).
27
+ # 3. Cache do version-guard (RTK_CACHE_TTL_SECONDS, default 1h): sem isso
28
+ # o guard rodava `rtk --version` + parsing a CADA Bash tool call da
29
+ # sessão (5 spawns/chamada). Ver comentário em `rtk_version_ok` abaixo
30
+ # para o formato do cache e o motivo do diretório escolhido.
31
+ #
32
+ # Version guard (floor de compatibilidade do subcomando `rewrite`, 0.23.0):
33
+ # é diferente do pin de supply chain do registry (`cli_utility.rtk`, hoje
34
+ # v0.43.0) — aquele controla o que o installer OFERECE instalar; este
35
+ # controla o que ESTE hook aceita rodar sem quebrar.
36
+
37
+ RTK_HOOK_TIMEOUT="${RTK_HOOK_TIMEOUT:-3}"
38
+
39
+ # Cache do version-guard (RT-H3, auditoria 2026-09-11): sem cache, o guard
40
+ # de versão rodava `rtk --version` + `grep` + `head` + 2x `cut` (5 spawns)
41
+ # a CADA Bash tool call da sessão inteira, só pra confirmar um dado que não
42
+ # muda no meio da sessão. Agora fica em cache com TTL de 1h, invalidado
43
+ # também se o binário `rtk` do PATH mudar de lugar (upgrade/reinstall no
44
+ # meio da sessão).
45
+ #
46
+ # Local do cache: ${XDG_CACHE_HOME:-$HOME/.cache}/wizz/rtk-version.
47
+ # XDG_CACHE_HOME é o padrão em Linux e cada vez mais respeitado em macOS
48
+ # também (Homebrew, uv, Docker Desktop já escrevem em ~/.cache); cai pra
49
+ # $HOME/.cache quando ausente, que existe nas duas plataformas — mais
50
+ # portátil que hardcodar um dos dois. Preferido a ${TMPDIR:-/tmp}: TMPDIR
51
+ # é o certo pra artefato descartável de UM processo, mas o objetivo aqui é
52
+ # sobreviver a Bash calls dentro da mesma sessão (e entre sessões, já que a
53
+ # versão instalada muda raramente) — cache "de configuração", não "de
54
+ # processo". Conteúdo não é sensível (só path do binário, status ok/old e
55
+ # timestamp), então não precisa do isolamento por-UID que TMPDIR daria.
56
+ RTK_CACHE_TTL_SECONDS="${RTK_CACHE_TTL_SECONDS:-3600}"
57
+ RTK_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/wizz"
58
+ RTK_CACHE_FILE="$RTK_CACHE_DIR/rtk-version"
59
+
60
+ if ! command -v jq &>/dev/null; then
61
+ echo "[rtk] WARNING: jq is not installed. Hook cannot rewrite commands. Install jq: https://jqlang.github.io/jq/download/" >&2
62
+ exit 0
63
+ fi
64
+
65
+ if ! command -v rtk &>/dev/null; then
66
+ echo "[rtk] WARNING: rtk is not installed or not in PATH. Hook cannot rewrite commands. Install: https://github.com/rtk-ai/rtk#installation" >&2
67
+ exit 0
68
+ fi
69
+
70
+ # rtk_version_ok — true (exit 0) quando o `rtk` do PATH é >= 0.23.0 (piso de
71
+ # compatibilidade do subcomando `rewrite`). Resultado cacheado em
72
+ # $RTK_CACHE_FILE por $RTK_CACHE_TTL_SECONDS; cache ilegível, corrompido,
73
+ # expirado, ou com path de binário diferente do atual é ignorado em
74
+ # silêncio e recomputado — fail-open, mesma filosofia do resto do hook: um
75
+ # cache ruim nunca deve travar o rewrite, só custar 1 recomputo.
76
+ #
77
+ # Caminho quente (cache válido): zero spawns — `command -v` é builtin do
78
+ # bash, `read` lê o arquivo sem subshell, e `$EPOCHSECONDS` (bash >= 5,
79
+ # padrão no macOS/Linux modernos) evita o spawn de `date`; em bash < 5 cai
80
+ # pra `date +%s` (1 spawn). Caminho frio (cache ausente/expirado, ~1x/h):
81
+ # `rtk --version` + `mktemp` + `mv` (3 spawns, contra 5 de antes, e só uma
82
+ # vez por hora em vez de a cada comando).
83
+ rtk_version_ok() {
84
+ local rtk_path cached_path cached_status cached_ts now elapsed
85
+ rtk_path=$(command -v rtk)
86
+ now="${EPOCHSECONDS:-$(date +%s)}"
87
+
88
+ if [ -r "$RTK_CACHE_FILE" ]; then
89
+ IFS=$'\t' read -r cached_path cached_status cached_ts _ <"$RTK_CACHE_FILE" 2>/dev/null
90
+ case "$cached_ts" in
91
+ '' | *[!0-9]*) cached_ts="" ;;
92
+ esac
93
+ if [ -n "$cached_ts" ] && [ "$cached_path" = "$rtk_path" ] &&
94
+ { [ "$cached_status" = "ok" ] || [ "$cached_status" = "old" ]; }; then
95
+ elapsed=$((now - cached_ts))
96
+ if [ "$elapsed" -ge 0 ] && [ "$elapsed" -lt "$RTK_CACHE_TTL_SECONDS" ]; then
97
+ [ "$cached_status" = "ok" ]
98
+ return $?
99
+ fi
100
+ fi
101
+ fi
102
+
103
+ # Cache ausente/corrompido/expirado/binário mudou: recomputa (1 spawn:
104
+ # `rtk --version`). Extração de X.Y.Z via builtins (case + parameter
105
+ # expansion), sem grep/cut, equivalente ao antigo
106
+ # `grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1` + `cut -d. -f1/f2`.
107
+ local version_line word vnum major minor status
108
+ version_line=$(rtk --version 2>/dev/null)
109
+ status="ok"
110
+ vnum=""
111
+ for word in $version_line; do
112
+ case "$word" in
113
+ v[0-9]*.[0-9]*.[0-9]*) word="${word#v}" ;;
114
+ esac
115
+ case "$word" in
116
+ [0-9]*.[0-9]*.[0-9]*)
117
+ vnum="$word"
118
+ break
119
+ ;;
120
+ esac
121
+ done
122
+ if [ -n "$vnum" ]; then
123
+ major="${vnum%%.*}"
124
+ minor="${vnum#*.}"
125
+ minor="${minor%%.*}"
126
+ case "$major" in '' | *[!0-9]*) major=0 ;; esac
127
+ case "$minor" in '' | *[!0-9]*) minor=0 ;; esac
128
+ # Require >= 0.23.0
129
+ if [ "$major" -eq 0 ] && [ "$minor" -lt 23 ]; then
130
+ status="old"
131
+ echo "[rtk] WARNING: rtk $vnum is too old (need >= 0.23.0). Upgrade: cargo install rtk" >&2
132
+ fi
133
+ fi
134
+
135
+ # Escrita atômica (tmp + mv no mesmo dir): qualquer falha (dir não
136
+ # gravável, disco cheio, /tmp somente-leitura) é ignorada — o cache é só
137
+ # uma otimização, nunca uma dependência.
138
+ if mkdir -p "$RTK_CACHE_DIR" 2>/dev/null; then
139
+ local tmp
140
+ tmp=$(mktemp "$RTK_CACHE_DIR/.rtk-version.XXXXXX" 2>/dev/null) && {
141
+ printf '%s\t%s\t%s\n' "$rtk_path" "$status" "$now" >"$tmp" 2>/dev/null &&
142
+ mv -f "$tmp" "$RTK_CACHE_FILE" 2>/dev/null
143
+ rm -f "$tmp" 2>/dev/null
144
+ }
145
+ fi
146
+
147
+ [ "$status" = "ok" ]
148
+ }
149
+
150
+ if ! rtk_version_ok; then
151
+ exit 0
152
+ fi
153
+
154
+ # multiline_unsafe <cmd> — retorna 0 (unsafe) quando reescrever linha a
155
+ # linha pode corromper o comando: heredoc (linhas de corpo que parecem
156
+ # comando seriam reescritas, ex. `git status` dentro de `cat <<EOF`),
157
+ # continuação com `\` no fim da linha (a linha seguinte é argumento, não
158
+ # comando) ou aspas desbalanceadas numa linha (string atravessa a quebra).
159
+ # Nesses casos o comando passa INTACTO (fail-open), sem reescrita parcial.
160
+ multiline_unsafe() {
161
+ local cmd="$1"
162
+ case "$cmd" in
163
+ *"<<"*) return 0 ;;
164
+ esac
165
+ local line dq sq
166
+ while IFS= read -r line || [ -n "$line" ]; do
167
+ case "$line" in
168
+ *\\) return 0 ;;
169
+ esac
170
+ dq=$(printf '%s' "$line" | tr -cd '"' | wc -c)
171
+ sq=$(printf '%s' "$line" | tr -cd "'" | wc -c)
172
+ if [ $((dq % 2)) -ne 0 ] || [ $((sq % 2)) -ne 0 ]; then
173
+ return 0
174
+ fi
175
+ done <<RTK_HOOK_GUARD_EOF
176
+ $cmd
177
+ RTK_HOOK_GUARD_EOF
178
+ return 1
179
+ }
180
+
181
+ # rewrite_one <line> — imprime a linha reescrita, limitada por
182
+ # RTK_HOOK_TIMEOUT segundos. Em timeout ou qualquer falha do rtk, imprime a
183
+ # linha original sem alteração (fail-open, mesma filosofia do resto do hook).
184
+ rewrite_one() {
185
+ local line="$1"
186
+ if [ -z "$line" ]; then
187
+ printf '%s' ''
188
+ return 0
189
+ fi
190
+ local tmp
191
+ tmp=$(mktemp 2>/dev/null) || {
192
+ printf '%s' "$line"
193
+ return 0
194
+ }
195
+ ( rtk rewrite "$line" >"$tmp" 2>/dev/null ) &
196
+ local pid=$!
197
+ # O watcher roda com stdout/stderr em /dev/null: esta função é chamada
198
+ # dentro de $(...), e um filho que herdasse o pipe da substituição de
199
+ # comando seguraria o chamador até o `sleep` terminar (3 s por chamada,
200
+ # mesmo com o rtk respondendo em ms). O trap mata o `sleep` quando o
201
+ # watcher recebe TERM, para não sobrar um kill tardio num pid reciclado.
202
+ (
203
+ trap 'kill "$sleeper" 2>/dev/null; exit 0' TERM
204
+ sleep "$RTK_HOOK_TIMEOUT" &
205
+ sleeper=$!
206
+ wait "$sleeper"
207
+ kill -TERM "$pid" 2>/dev/null
208
+ ) >/dev/null 2>&1 &
209
+ local watcher=$!
210
+ wait "$pid" 2>/dev/null
211
+ local status=$?
212
+ kill -TERM "$watcher" 2>/dev/null
213
+ wait "$watcher" 2>/dev/null
214
+
215
+ # Exit codes do `rtk rewrite`: 0 = reescrito (≤0.30.x), 3 = reescrito
216
+ # (0.43.0+, apesar do --help ainda dizer 0), 1 = sem equivalente (sem
217
+ # output). Qualquer outro status (timeout/SIGTERM=143, erro) = fail-open.
218
+ if { [ "$status" -eq 0 ] || [ "$status" -eq 3 ]; } && [ -s "$tmp" ]; then
219
+ cat "$tmp"
220
+ else
221
+ printf '%s' "$line"
222
+ fi
223
+ rm -f "$tmp" 2>/dev/null
224
+ }
225
+
226
+ INPUT=$(cat)
227
+ CMD=$(echo "$INPUT" | jq -r '.tool_input.command // empty')
228
+
229
+ if [ -z "$CMD" ]; then
230
+ exit 0
231
+ fi
232
+
233
+ case "$CMD" in
234
+ *$'\n'*)
235
+ # Comando multi-linha: reescreve linha a linha (bug RT1/C4), exceto
236
+ # quando o guard detecta risco de corrupção (heredoc, continuação,
237
+ # string multi-linha) — aí passa intacto. O heredoc do loop (não um
238
+ # pipe) garante que ele roda no shell atual, não numa subshell, para
239
+ # REWRITTEN sobreviver ao loop.
240
+ if multiline_unsafe "$CMD"; then
241
+ exit 0
242
+ fi
243
+ REWRITTEN=""
244
+ first=1
245
+ while IFS= read -r line || [ -n "$line" ]; do
246
+ rewritten_line=$(rewrite_one "$line")
247
+ if [ "$first" -eq 1 ]; then
248
+ REWRITTEN="$rewritten_line"
249
+ first=0
250
+ else
251
+ REWRITTEN="$REWRITTEN
252
+ $rewritten_line"
253
+ fi
254
+ done <<RTK_HOOK_EOF
255
+ $CMD
256
+ RTK_HOOK_EOF
257
+ ;;
258
+ *)
259
+ REWRITTEN=$(rewrite_one "$CMD")
260
+ ;;
261
+ esac
262
+
263
+ # No change — nothing to do.
264
+ if [ "$CMD" = "$REWRITTEN" ]; then
265
+ exit 0
266
+ fi
267
+
268
+ ORIGINAL_INPUT=$(echo "$INPUT" | jq -c '.tool_input')
269
+ UPDATED_INPUT=$(echo "$ORIGINAL_INPUT" | jq --arg cmd "$REWRITTEN" '.command = $cmd')
270
+
271
+ jq -n \
272
+ --argjson updated "$UPDATED_INPUT" \
273
+ '{
274
+ "hookSpecificOutput": {
275
+ "hookEventName": "PreToolUse",
276
+ "permissionDecision": "allow",
277
+ "permissionDecisionReason": "RTK auto-rewrite",
278
+ "updatedInput": $updated
279
+ }
280
+ }'
@@ -0,0 +1,70 @@
1
+ /**
2
+ * security-defensive-context.js
3
+ *
4
+ * Fonte de verdade: wizz-method/tools/hooks/. Instalar via `npm run sync:global`.
5
+ *
6
+ * Hook PreToolUse: quando o usuário invoca uma skill de segurança, injeta
7
+ * instruções de metodologia que orientam o modelo a trabalhar de forma
8
+ * defensiva, escopada e por dimensão — evitando o padrão de varredura ampla
9
+ * que aciona os safeguards de cibersegurança da Anthropic.
10
+ *
11
+ * v2 (2026-07): contexto genérico por projeto (a v1 hardcodava o stack do MeJu
12
+ * e injetava esse contexto em QUALQUER projeto).
13
+ *
14
+ * IMPORTANTE: guia o COMPORTAMENTO DO MODELO (abordagem + metodologia). Não
15
+ * desativa nem bypassa o safeguard da Anthropic — isso é impossível por hook.
16
+ */
17
+
18
+ const SECURITY_SKILLS = new Set([
19
+ // Skills globais instaladas em ~/.claude/skills/
20
+ 'wizz-web-security',
21
+ 'wizz-desktop-security',
22
+ // Skills providas por plugins (nomes canônicos verificados)
23
+ 'security-review',
24
+ 'security-reviewer',
25
+ 'security-scan',
26
+ // code-review em variantes de plugin e direto
27
+ 'code-review',
28
+ 'code-review:code-review',
29
+ ]);
30
+
31
+ const DEFENSIVE_CONTEXT =
32
+ 'Metodologia de revisao de seguranca (defensiva, escopada):\n\n' +
33
+ '1. ESCOPO: trabalhe por arquivo ou dimensao concreta de cada vez (ex: validacao ' +
34
+ 'de entrada num handler, politicas de acesso do banco, headers HTTP). Nunca ' +
35
+ 'varredura ampla de todo o codebase num turno unico.\n\n' +
36
+ '2. FOCO DEFENSIVO: o objetivo e hardening do codigo do proprio projeto. Cada ' +
37
+ 'achado deve mapear para uma linha/arquivo real e propor a correcao aplicada localmente.\n\n' +
38
+ '3. DIMENSOES PRIORITARIAS (adapte ao stack do projeto atual): (a) auth/sessao; ' +
39
+ '(b) validacao/allowlist de entrada em handlers de escrita; (c) autorizacao no ' +
40
+ 'banco (RLS/policies) e funcoes privilegiadas; (d) privacidade LGPD/GDPR — PII, ' +
41
+ 'consentimento, retencao; (e) secrets — nada hardcoded em settings/migrations/logs; ' +
42
+ '(f) superficie publica — rate-limit, headers de seguranca, CORS.\n\n' +
43
+ '4. OUTPUT: achados por severidade (CRITICO / ALTO / MEDIO / BAIXO), com arquivo + ' +
44
+ 'linha + codigo corrigido sugerido. Nao gerar relatorio ofensivo nem exploits.';
45
+
46
+ let raw = '';
47
+ process.stdin.setEncoding('utf8');
48
+ process.stdin.on('data', (chunk) => (raw += chunk));
49
+ process.stdin.on('end', () => {
50
+ try {
51
+ const payload = JSON.parse(raw);
52
+ const toolName = payload.tool_name || '';
53
+ const skillName = (payload.tool_input && payload.tool_input.skill) || '';
54
+
55
+ if (toolName === 'Skill' && SECURITY_SKILLS.has(skillName)) {
56
+ process.stdout.write(
57
+ JSON.stringify({
58
+ hookSpecificOutput: {
59
+ hookEventName: 'PreToolUse',
60
+ additionalContext: DEFENSIVE_CONTEXT,
61
+ },
62
+ }),
63
+ );
64
+ }
65
+ // Para qualquer outra skill/tool: sai silenciosamente sem output
66
+ } catch {
67
+ // Parse error: sai silenciosamente, nao bloqueia nada
68
+ }
69
+ process.exit(0);
70
+ });