@daniellins/power-claude 0.16.3

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.

Potentially problematic release.


This version of @daniellins/power-claude might be problematic. Click here for more details.

Files changed (467) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +121 -0
  3. package/bin/cli.js +124 -0
  4. package/installer/__tests__/doctor-ready-oracles.test.cjs +140 -0
  5. package/installer/__tests__/merge-settings.test.cjs +330 -0
  6. package/installer/adopt.js +161 -0
  7. package/installer/copy.js +203 -0
  8. package/installer/doctor.js +266 -0
  9. package/installer/install.js +155 -0
  10. package/installer/manifest.js +102 -0
  11. package/installer/motor-scripts.js +50 -0
  12. package/installer/motor-scripts.json +39 -0
  13. package/installer/uninstall.js +99 -0
  14. package/installer/update.js +376 -0
  15. package/installer/util.js +113 -0
  16. package/installer/wizard.js +64 -0
  17. package/package.json +26 -0
  18. package/scripts/__fixtures__/anti-path-demo/agents/ap-writer.md +13 -0
  19. package/scripts/__fixtures__/anti-path-demo/templates/write-tmpl.md +7 -0
  20. package/scripts/__fixtures__/anti-path-demo/workflows/wf-ap.smoke.json +10 -0
  21. package/scripts/__fixtures__/anti-path-demo/workflows/wf-ap.yaml +25 -0
  22. package/scripts/__fixtures__/assess-tier/retrofit-leve/pod/agents/content-chief.md +1 -0
  23. package/scripts/__fixtures__/assess-tier/retrofit-leve/pod/workflows/wf-criacao-redteam.yaml +3 -0
  24. package/scripts/__fixtures__/assess-tier/retrofit-leve/pod-spec.json +13 -0
  25. package/scripts/__fixtures__/fidelity/fake-green-average-in-band.yaml +21 -0
  26. package/scripts/__fixtures__/fidelity/fake-green-average.yaml +18 -0
  27. package/scripts/__fixtures__/fidelity/fake-green-denominator.yaml +19 -0
  28. package/scripts/__fixtures__/fidelity/fake-green-missing-evidence.yaml +18 -0
  29. package/scripts/__fixtures__/fidelity/fake-green-threshold.yaml +18 -0
  30. package/scripts/__fixtures__/fidelity/fake-green-weight.yaml +18 -0
  31. package/scripts/__fixtures__/fidelity/golden.yaml +31 -0
  32. package/scripts/__fixtures__/fidelity/trindade-incoherent.yaml +15 -0
  33. package/scripts/__fixtures__/forge-canonical/pod-spec-example.json +37 -0
  34. package/scripts/__fixtures__/migrate-squad/authored/agents/offer-engineer.md +17 -0
  35. package/scripts/__fixtures__/migrate-squad/authored/knowledge/no-source.md +7 -0
  36. package/scripts/__fixtures__/migrate-squad/authored/knowledge/value-stack-method.md +8 -0
  37. package/scripts/__fixtures__/migrate-squad/authored/specs/wf-sample.smoke.json +24 -0
  38. package/scripts/__fixtures__/migrate-squad/authored/specs/wf-sample.spec.json +45 -0
  39. package/scripts/__fixtures__/migrate-squad/legacy-squad/HEADLINE.md +3 -0
  40. package/scripts/__fixtures__/migrate-squad/legacy-squad/README.md +4 -0
  41. package/scripts/__fixtures__/migrate-squad/legacy-squad/agents/hormozi-offer.md +14 -0
  42. package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/dead-redundant.md +4 -0
  43. package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/method-guide.md +6 -0
  44. package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/veto-screen.md +4 -0
  45. package/scripts/__fixtures__/migrate-squad/legacy-squad/config/config.yaml +2 -0
  46. package/scripts/__fixtures__/migrate-squad/legacy-squad/data/case-library.md +3 -0
  47. package/scripts/__fixtures__/migrate-squad/legacy-squad/scripts/validate-mvn.py +16 -0
  48. package/scripts/__fixtures__/migrate-squad/legacy-squad/sops/sop-sample.md +3 -0
  49. package/scripts/__fixtures__/migrate-squad/legacy-squad/squad-io.yaml +14 -0
  50. package/scripts/__fixtures__/migrate-squad/legacy-squad/tasks/gather-context.md +7 -0
  51. package/scripts/__fixtures__/migrate-squad/legacy-squad/templates/output-tmpl.md +5 -0
  52. package/scripts/__fixtures__/migrate-squad/legacy-squad/workflows/wf-sample.yaml +24 -0
  53. package/scripts/__fixtures__/pipeline/pipelines/pipeline-checkpoint.yaml +21 -0
  54. package/scripts/__fixtures__/pipeline/pipelines/pipeline-demo.yaml +22 -0
  55. package/scripts/__fixtures__/pipeline/pods/pipe-a/agents/maker.md +13 -0
  56. package/scripts/__fixtures__/pipeline/pods/pipe-a/memory/learnings.consolidated.md +8 -0
  57. package/scripts/__fixtures__/pipeline/pods/pipe-a/memory/learnings.jsonl +83 -0
  58. package/scripts/__fixtures__/pipeline/pods/pipe-a/templates/make-tmpl.md +8 -0
  59. package/scripts/__fixtures__/pipeline/pods/pipe-a/workflows/wf-a.yaml +16 -0
  60. package/scripts/__fixtures__/pipeline/pods/pipe-b/agents/user.md +13 -0
  61. package/scripts/__fixtures__/pipeline/pods/pipe-b/memory/learnings.consolidated.md +8 -0
  62. package/scripts/__fixtures__/pipeline/pods/pipe-b/memory/learnings.jsonl +14 -0
  63. package/scripts/__fixtures__/pipeline/pods/pipe-b/templates/use-tmpl.md +6 -0
  64. package/scripts/__fixtures__/pipeline/pods/pipe-b/workflows/wf-b.yaml +16 -0
  65. package/scripts/__fixtures__/pod-run/agents/forge-chief.md +13 -0
  66. package/scripts/__fixtures__/pod-run/agents/pod-critic.md +13 -0
  67. package/scripts/__fixtures__/pod-run/templates/build-tmpl.md +8 -0
  68. package/scripts/__fixtures__/pod-run/templates/gate-tmpl.md +6 -0
  69. package/scripts/__fixtures__/pod-run/workflows/wf-min.yaml +43 -0
  70. package/scripts/__fixtures__/pod-run/workflows/wf-skip-modes.yaml +50 -0
  71. package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-all-skippable.yaml +30 -0
  72. package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-criteria-escalar-de-bloco.yaml +40 -0
  73. package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-skip-mode-desconhecido.yaml +30 -0
  74. package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-unknown-key.yaml +29 -0
  75. package/scripts/__fixtures__/pod-workflow/invalid-cycle.yaml +26 -0
  76. package/scripts/__fixtures__/pod-workflow/invalid-fix-loop-backedge.yaml +29 -0
  77. package/scripts/__fixtures__/pod-workflow/invalid-fix-loop-forward.yaml +29 -0
  78. package/scripts/__fixtures__/pod-workflow/invalid-handoff-open.yaml +27 -0
  79. package/scripts/__fixtures__/pod-workflow/invalid-knowledge-shape.yaml +18 -0
  80. package/scripts/__fixtures__/pod-workflow/invalid-missing-agent.yaml +15 -0
  81. package/scripts/__fixtures__/pod-workflow/invalid-missing-outputs.yaml +15 -0
  82. package/scripts/__fixtures__/pod-workflow/invalid-missing-template.yaml +15 -0
  83. package/scripts/__fixtures__/pod-workflow/invalid-missing-veto.yaml +13 -0
  84. package/scripts/__fixtures__/pod-workflow/invalid-template-not-on-disk.yaml +16 -0
  85. package/scripts/__fixtures__/pod-workflow/invalid-veto-prose.yaml +17 -0
  86. package/scripts/__fixtures__/pod-workflow/knowledge/a.md +4 -0
  87. package/scripts/__fixtures__/pod-workflow/knowledge/b.md +4 -0
  88. package/scripts/__fixtures__/pod-workflow/knowledge/c.md +4 -0
  89. package/scripts/__fixtures__/pod-workflow/templates/step-tmpl.md +7 -0
  90. package/scripts/__fixtures__/pod-workflow/valid-checkpoint-skip-modes.yaml +29 -0
  91. package/scripts/__fixtures__/pod-workflow/valid-fix-loop.yaml +30 -0
  92. package/scripts/__fixtures__/pod-workflow/valid-knowledge.yaml +30 -0
  93. package/scripts/__fixtures__/pod-workflow/valid-veto-always-true.yaml +20 -0
  94. package/scripts/__fixtures__/pod-workflow/valid.yaml +27 -0
  95. package/scripts/__fixtures__/smoke-canary/agents/canary-reporter.md +13 -0
  96. package/scripts/__fixtures__/smoke-canary/agents/canary-researcher.md +13 -0
  97. package/scripts/__fixtures__/smoke-canary/agents/canary-synth.md +13 -0
  98. package/scripts/__fixtures__/smoke-canary/memory/learnings.consolidated.md +10 -0
  99. package/scripts/__fixtures__/smoke-canary/memory/learnings.jsonl +448 -0
  100. package/scripts/__fixtures__/smoke-canary/templates/report-tmpl.md +9 -0
  101. package/scripts/__fixtures__/smoke-canary/templates/research-tmpl.md +7 -0
  102. package/scripts/__fixtures__/smoke-canary/templates/synth-tmpl.md +9 -0
  103. package/scripts/__fixtures__/smoke-canary/workflows/wf-canary.smoke.json +11 -0
  104. package/scripts/__fixtures__/smoke-canary/workflows/wf-canary.yaml +53 -0
  105. package/scripts/__fixtures__/source-audit/fake-green-bronze-unsignaled.yaml +10 -0
  106. package/scripts/__fixtures__/source-audit/fake-green-counts.yaml +9 -0
  107. package/scripts/__fixtures__/source-audit/fake-green-missing-evidence.yaml +9 -0
  108. package/scripts/__fixtures__/source-audit/fake-green-unclassified.yaml +10 -0
  109. package/scripts/__fixtures__/source-audit/fake-green-verdict.yaml +10 -0
  110. package/scripts/__fixtures__/source-audit/golden-blocked.yaml +10 -0
  111. package/scripts/__fixtures__/source-audit/golden.yaml +11 -0
  112. package/scripts/__fixtures__/sweep-forms/agents/forms-count.md +13 -0
  113. package/scripts/__fixtures__/sweep-forms/agents/forms-field.md +13 -0
  114. package/scripts/__fixtures__/sweep-forms/agents/forms-fileref.md +13 -0
  115. package/scripts/__fixtures__/sweep-forms/agents/forms-json.md +13 -0
  116. package/scripts/__fixtures__/sweep-forms/agents/forms-section.md +13 -0
  117. package/scripts/__fixtures__/sweep-forms/specs/wf-forms.spec.json +5 -0
  118. package/scripts/__fixtures__/sweep-forms/templates/t_count.md +5 -0
  119. package/scripts/__fixtures__/sweep-forms/templates/t_field.md +3 -0
  120. package/scripts/__fixtures__/sweep-forms/templates/t_fileref.md +3 -0
  121. package/scripts/__fixtures__/sweep-forms/templates/t_json.md +0 -0
  122. package/scripts/__fixtures__/sweep-forms/templates/t_section.md +3 -0
  123. package/scripts/__fixtures__/sweep-forms/workflows/wf-forms.smoke.json +13 -0
  124. package/scripts/__fixtures__/sweep-forms/workflows/wf-forms.yaml +67 -0
  125. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-1-noop-state-json.fixture.md +18 -0
  126. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-2-crash-buildworkflowyaml.fixture.md +26 -0
  127. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-3-nasce-verde-skip-modes.fixture.md +29 -0
  128. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-4-guarda-sem-irmao.fixture.md +17 -0
  129. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-5a-diff-stat-sem-guarda.fixture.md +17 -0
  130. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-5b-test-f-sobre-diretorio.fixture.md +20 -0
  131. package/scripts/__fixtures__/veto-checks/copy-clean.md +4 -0
  132. package/scripts/__fixtures__/veto-checks/copy-dashes.md +4 -0
  133. package/scripts/__fixtures__/veto-checks/n8n-bad.md +18 -0
  134. package/scripts/__fixtures__/veto-checks/n8n-ok.md +22 -0
  135. package/scripts/__fixtures__/veto-checks/page-bad.html +7 -0
  136. package/scripts/__fixtures__/veto-checks/phash/copy.png +0 -0
  137. package/scripts/__fixtures__/veto-checks/phash/distinct.png +0 -0
  138. package/scripts/__fixtures__/veto-checks/phash/distinct2.png +0 -0
  139. package/scripts/__fixtures__/veto-checks/phash/make-fixtures.cjs +203 -0
  140. package/scripts/__fixtures__/veto-checks/phash/ref.png +0 -0
  141. package/scripts/__fixtures__/veto-checks/slide-ok.html +15 -0
  142. package/scripts/__fixtures__/veto-checks/slide-overflow.html +14 -0
  143. package/scripts/__fixtures__/veto-checks/sweep-pod/agents/vc-checker.md +13 -0
  144. package/scripts/__fixtures__/veto-checks/sweep-pod/templates/check-tmpl.md +6 -0
  145. package/scripts/__fixtures__/veto-checks/sweep-pod/workflows/wf-vc.smoke.json +10 -0
  146. package/scripts/__fixtures__/veto-checks/sweep-pod/workflows/wf-vc.yaml +19 -0
  147. package/scripts/__fixtures__/voz-do-dono/README.md +23 -0
  148. package/scripts/__fixtures__/voz-do-dono/dono-escalar.yaml +9 -0
  149. package/scripts/__fixtures__/voz-do-dono/dono-guia.yaml +10 -0
  150. package/scripts/__fixtures__/voz-do-dono/peca-3a-pessoa.md +6 -0
  151. package/scripts/__fixtures__/voz-do-dono/peca-com-lexico-proibido.md +6 -0
  152. package/scripts/__fixtures__/voz-do-dono/peca-limpa-1a-pessoa.md +6 -0
  153. package/scripts/__tests__/derive-ready-transitions.test.cjs +269 -0
  154. package/scripts/__tests__/enforce-cycle-authority.test.cjs +869 -0
  155. package/scripts/__tests__/enforce-git-push-authority.test.cjs +701 -0
  156. package/scripts/__tests__/enforce-ready-oracles.test.cjs +745 -0
  157. package/scripts/__tests__/motor-scripts.test.cjs +339 -0
  158. package/scripts/__tests__/pc-run-pod-counter.test.cjs +58 -0
  159. package/scripts/__tests__/pc-run-pod.test.cjs +578 -0
  160. package/scripts/__tests__/validate-pod-workflow.test.cjs +90 -0
  161. package/scripts/__tests__/validate-story-acs.test.cjs +607 -0
  162. package/scripts/anti-path.test.cjs +163 -0
  163. package/scripts/arena.cjs +514 -0
  164. package/scripts/arena.test.cjs +213 -0
  165. package/scripts/brief-leitura-obrigatoria.test.cjs +364 -0
  166. package/scripts/consolidate-knowledge-runner.test.cjs +249 -0
  167. package/scripts/default-funcional.test.cjs +153 -0
  168. package/scripts/derive-ready-transitions.cjs +325 -0
  169. package/scripts/forge-additive.test.cjs +158 -0
  170. package/scripts/forge-assess-tier.cjs +205 -0
  171. package/scripts/forge-assess-tier.test.cjs +114 -0
  172. package/scripts/forge-canonical.test.cjs +624 -0
  173. package/scripts/forge-generate.cjs +1303 -0
  174. package/scripts/forge-harden-learning.cjs +921 -0
  175. package/scripts/forge-harden-learning.test.cjs +242 -0
  176. package/scripts/forge-ingest-memory.cjs +136 -0
  177. package/scripts/forge-upgrade-pod.cjs +368 -0
  178. package/scripts/forge.test.cjs +609 -0
  179. package/scripts/harden-knowledge.test.cjs +612 -0
  180. package/scripts/harness-g5-lite.cjs +243 -0
  181. package/scripts/harness-g5-lite.test.cjs +134 -0
  182. package/scripts/hn-carousel-contrato-entrada.test.cjs +96 -0
  183. package/scripts/migrate-squad-orchestration.test.cjs +146 -0
  184. package/scripts/migration-manifest-sf3.2.test.cjs +382 -0
  185. package/scripts/migration-manifest-sf3.3.test.cjs +170 -0
  186. package/scripts/migration-manifest-sf5.5.test.cjs +189 -0
  187. package/scripts/migration-manifest.cjs +1146 -0
  188. package/scripts/migration-manifest.test.cjs +186 -0
  189. package/scripts/npm-scope-invocation.test.cjs +194 -0
  190. package/scripts/owner-layer.cjs +442 -0
  191. package/scripts/owner-layer.test.cjs +358 -0
  192. package/scripts/pc-run-pipeline.cjs +289 -0
  193. package/scripts/pc-run-pipeline.test.cjs +256 -0
  194. package/scripts/pc-run-pod-countgte.test.cjs +66 -0
  195. package/scripts/pc-run-pod.cjs +1355 -0
  196. package/scripts/phash-gate.test.cjs +433 -0
  197. package/scripts/pod-export-compile.cjs +487 -0
  198. package/scripts/pod-export-compile.test.cjs +312 -0
  199. package/scripts/pod-export-executor.cjs +678 -0
  200. package/scripts/pod-export-executor.test.cjs +1341 -0
  201. package/scripts/pod-export-hardening.test.cjs +531 -0
  202. package/scripts/pod-export-postprocess.cjs +427 -0
  203. package/scripts/pod-export-postprocess.test.cjs +558 -0
  204. package/scripts/pod-export-queue-race.test.cjs +865 -0
  205. package/scripts/pod-export-release.cjs +473 -0
  206. package/scripts/pod-export-release.test.cjs +267 -0
  207. package/scripts/pod-export-service.cjs +1297 -0
  208. package/scripts/pod-export-service.test.cjs +489 -0
  209. package/scripts/pod-export-tools.cjs +470 -0
  210. package/scripts/pod-export-ui.cjs +805 -0
  211. package/scripts/pod-export-ui.test.cjs +301 -0
  212. package/scripts/pod-memory-budget.test.cjs +309 -0
  213. package/scripts/pod-memory-note.cjs +357 -0
  214. package/scripts/pod-memory-note.test.cjs +452 -0
  215. package/scripts/pod-memory.cjs +1252 -0
  216. package/scripts/pod-memory.test.cjs +951 -0
  217. package/scripts/render-png.test.cjs +307 -0
  218. package/scripts/smoke-isolation.test.cjs +100 -0
  219. package/scripts/smoke-pod-workflow.cjs +755 -0
  220. package/scripts/smoke-sweep.test.cjs +170 -0
  221. package/scripts/validate-adopt.js +235 -0
  222. package/scripts/validate-branding.js +84 -0
  223. package/scripts/validate-budgets.js +140 -0
  224. package/scripts/validate-fidelity-output.cjs +267 -0
  225. package/scripts/validate-fidelity-output.test.cjs +101 -0
  226. package/scripts/validate-install.js +230 -0
  227. package/scripts/validate-no-clone.cjs +220 -0
  228. package/scripts/validate-no-clone.test.cjs +77 -0
  229. package/scripts/validate-pipeline.cjs +145 -0
  230. package/scripts/validate-pod-workflow.cjs +878 -0
  231. package/scripts/validate-source-audit.cjs +170 -0
  232. package/scripts/validate-source-audit.test.cjs +90 -0
  233. package/scripts/validate-story-acs.cjs +862 -0
  234. package/scripts/validate-update-scope-motor.js +421 -0
  235. package/scripts/veto-checks/html-valid.cjs +92 -0
  236. package/scripts/veto-checks/lexical-check.cjs +62 -0
  237. package/scripts/veto-checks/phash-gate.cjs +589 -0
  238. package/scripts/veto-checks/render-gate.cjs +165 -0
  239. package/scripts/veto-checks/render-png.cjs +358 -0
  240. package/scripts/veto-checks.test.cjs +219 -0
  241. package/scripts/watcher-audit.cjs +178 -0
  242. package/template/.claude/CLAUDE.md +103 -0
  243. package/template/.claude/agents/pc-analyst.md +100 -0
  244. package/template/.claude/agents/pc-architect.md +32 -0
  245. package/template/.claude/agents/pc-dev.md +27 -0
  246. package/template/.claude/agents/pc-devops.md +45 -0
  247. package/template/.claude/agents/pc-planner.md +32 -0
  248. package/template/.claude/agents/pc-po.md +25 -0
  249. package/template/.claude/agents/pc-qa.md +25 -0
  250. package/template/.claude/commands/power/academy.md +9 -0
  251. package/template/.claude/commands/power/automation.md +9 -0
  252. package/template/.claude/commands/power/content-carousel.md +267 -0
  253. package/template/.claude/commands/power/content.md +9 -0
  254. package/template/.claude/commands/power/dev.md +9 -0
  255. package/template/.claude/commands/power/forge.md +224 -0
  256. package/template/.claude/commands/power/hormozi.md +221 -0
  257. package/template/.claude/commands/power/modo.md +57 -0
  258. package/template/.claude/hooks/README.md +114 -0
  259. package/template/.claude/hooks/context-budget.cjs +64 -0
  260. package/template/.claude/hooks/enforce-cycle-authority.cjs +457 -0
  261. package/template/.claude/hooks/enforce-git-push-authority.cjs +925 -0
  262. package/template/.claude/hooks/enforce-ready-oracles.cjs +502 -0
  263. package/template/.claude/rules/authority.md +76 -0
  264. package/template/.claude/rules/curadoria-de-conhecimento.md +30 -0
  265. package/template/.claude/rules/model-matrix.md +34 -0
  266. package/template/.claude/rules/orchestration.md +133 -0
  267. package/template/.claude/settings.json +50 -0
  268. package/template/.claude/skills/pc-apply-qa-fixes/SKILL.md +108 -0
  269. package/template/.claude/skills/pc-apply-qa-fixes/references/fix-loop.md +40 -0
  270. package/template/.claude/skills/pc-apply-qa-fixes/references/fix-request-template.md +70 -0
  271. package/template/.claude/skills/pc-arena/SKILL.md +96 -0
  272. package/template/.claude/skills/pc-close-story/SKILL.md +105 -0
  273. package/template/.claude/skills/pc-commit/SKILL.md +108 -0
  274. package/template/.claude/skills/pc-develop-story/SKILL.md +116 -0
  275. package/template/.claude/skills/pc-full-cycle/SKILL.md +150 -0
  276. package/template/.claude/skills/pc-pipeline/SKILL.md +63 -0
  277. package/template/.claude/skills/pc-pipeline/references/gate-templates.md +46 -0
  278. package/template/.claude/skills/pc-review-story/SKILL.md +129 -0
  279. package/template/.claude/skills/pc-review-story/references/false-positive-detection.md +50 -0
  280. package/template/.claude/skills/pc-review-story/references/nfr-assess.md +47 -0
  281. package/template/.claude/skills/pc-review-story/references/risk-profile.md +75 -0
  282. package/template/.claude/skills/pc-review-story/references/security-checklist.md +69 -0
  283. package/template/.claude/skills/pc-review-story/references/test-design.md +37 -0
  284. package/template/.claude/skills/pc-review-story/references/trace-requirements.md +46 -0
  285. package/template/.claude/skills/pc-run-pod/SKILL.md +123 -0
  286. package/template/.claude/skills/pc-validate-story/SKILL.md +114 -0
  287. package/template/.claude/skills/pc-wave/SKILL.md +133 -0
  288. package/template/.env.example +10 -0
  289. package/template/knowledge/analyst/brainstorming.md +40 -0
  290. package/template/knowledge/analyst/brief-skeleton.md +32 -0
  291. package/template/knowledge/analyst/competitor-skeleton.md +39 -0
  292. package/template/knowledge/analyst/elicitation-menu.md +49 -0
  293. package/template/knowledge/analyst/market-research-skeleton.md +36 -0
  294. package/template/knowledge/analyst/research-prompt-structure.md +48 -0
  295. package/template/knowledge/analyst/roi-skeleton.md +51 -0
  296. package/template/knowledge/voice-dna/README.md +99 -0
  297. package/template/knowledge/voice-dna/voice-dna.example.yaml +157 -0
  298. package/template/pods/README.md +64 -0
  299. package/template/pods/academy/README.md +37 -0
  300. package/template/pods/academy/agents/academy-chief.md +27 -0
  301. package/template/pods/academy/examples/palestra.example.md +142 -0
  302. package/template/pods/academy/pod-spec.json +44 -0
  303. package/template/pods/academy/templates/materiais-tmpl.md +17 -0
  304. package/template/pods/academy/templates/revisao-didatica-tmpl.md +20 -0
  305. package/template/pods/academy/workflows/wf-materiais-revisao.yaml +30 -0
  306. package/template/pods/authority-content/README.md +43 -0
  307. package/template/pods/authority-content/agents/content-chief.md +28 -0
  308. package/template/pods/authority-content/pod-spec.json +45 -0
  309. package/template/pods/authority-content/templates/criacao-na-voz-tmpl.md +17 -0
  310. package/template/pods/authority-content/templates/red-team-factual-tmpl.md +23 -0
  311. package/template/pods/authority-content/workflows/wf-criacao-redteam.yaml +30 -0
  312. package/template/pods/automation/README.md +37 -0
  313. package/template/pods/automation/agents/langgraph-architect.md +30 -0
  314. package/template/pods/automation/agents/n8n-architect.md +30 -0
  315. package/template/pods/automation/examples/README.md +46 -0
  316. package/template/pods/automation/examples/n8n-content-radar.example.json +380 -0
  317. package/template/pods/automation/knowledge/langgraph-patterns.md +126 -0
  318. package/template/pods/automation/knowledge/n8n-patterns.md +131 -0
  319. package/template/pods/automation/memory/README.md +16 -0
  320. package/template/pods/automation/memory/learnings.consolidated.md +8 -0
  321. package/template/pods/automation/memory/learnings.jsonl +0 -0
  322. package/template/pods/automation/pod-spec.json +109 -0
  323. package/template/pods/automation/specs/wf-langgraph-build.spec.json +107 -0
  324. package/template/pods/automation/squad-io.yaml +28 -0
  325. package/template/pods/automation/templates/lg-build-tmpl.md +17 -0
  326. package/template/pods/automation/templates/lg-design-tmpl.md +23 -0
  327. package/template/pods/automation/templates/lg-discover-tmpl.md +20 -0
  328. package/template/pods/automation/templates/lg-handoff-tmpl.md +20 -0
  329. package/template/pods/automation/templates/lg-test-tmpl.md +20 -0
  330. package/template/pods/automation/templates/n8n-build-tmpl.md +14 -0
  331. package/template/pods/automation/templates/n8n-design-tmpl.md +23 -0
  332. package/template/pods/automation/templates/n8n-discover-tmpl.md +20 -0
  333. package/template/pods/automation/templates/n8n-handoff-tmpl.md +20 -0
  334. package/template/pods/automation/templates/n8n-test-tmpl.md +20 -0
  335. package/template/pods/automation/workflows/wf-langgraph-build.smoke.json +11 -0
  336. package/template/pods/automation/workflows/wf-langgraph-build.yaml +64 -0
  337. package/template/pods/automation/workflows/wf-n8n-build.smoke.json +11 -0
  338. package/template/pods/automation/workflows/wf-n8n-build.yaml +65 -0
  339. package/template/pods/content-carousel/README.md +91 -0
  340. package/template/pods/content-carousel/agents/carousel-builder.md +28 -0
  341. package/template/pods/content-carousel/agents/carousel-visual.md +24 -0
  342. package/template/pods/content-carousel/agents/hn-curator.md +74 -0
  343. package/template/pods/content-carousel/config/heuristic-watcher-rubric.yaml +59 -0
  344. package/template/pods/content-carousel/knowledge/aquisicao-ancora.md +443 -0
  345. package/template/pods/content-carousel/knowledge/cta-brief.md +25 -0
  346. package/template/pods/content-carousel/knowledge/dono.example.yaml +45 -0
  347. package/template/pods/content-carousel/knowledge/identidade-visual-mascote.md +62 -0
  348. package/template/pods/content-carousel/knowledge/image-generation.md +62 -0
  349. package/template/pods/content-carousel/knowledge/selecao-de-ancora.md +60 -0
  350. package/template/pods/content-carousel/knowledge/slides-html.md +56 -0
  351. package/template/pods/content-carousel/memory/README.md +18 -0
  352. package/template/pods/content-carousel/memory/learnings.consolidated.md +6 -0
  353. package/template/pods/content-carousel/memory/learnings.jsonl +0 -0
  354. package/template/pods/content-carousel/pod-spec.json +100 -0
  355. package/template/pods/content-carousel/squad-io.yaml +10 -0
  356. package/template/pods/content-carousel/templates/assembly-tmpl.md +23 -0
  357. package/template/pods/content-carousel/templates/digest-tmpl.md +29 -0
  358. package/template/pods/content-carousel/templates/visuals-tmpl.md +20 -0
  359. package/template/pods/content-carousel/workflows/wf-content-carousel.smoke.json +23 -0
  360. package/template/pods/content-carousel/workflows/wf-content-carousel.yaml +80 -0
  361. package/template/pods/dev-ia/README.md +45 -0
  362. package/template/pods/dev-ia/agents/db-architect.md +33 -0
  363. package/template/pods/dev-ia/agents/ux-architect.md +29 -0
  364. package/template/pods/dev-ia/knowledge/db/migration-protocol.md +95 -0
  365. package/template/pods/dev-ia/knowledge/db/rls-patterns.md +101 -0
  366. package/template/pods/dev-ia/knowledge/db/schema-review-checklist.md +76 -0
  367. package/template/pods/dev-ia/memory/README.md +16 -0
  368. package/template/pods/dev-ia/memory/learnings.consolidated.md +8 -0
  369. package/template/pods/dev-ia/memory/learnings.jsonl +0 -0
  370. package/template/pods/dev-ia/pod-spec.json +34 -0
  371. package/template/pods/dev-ia/templates/schema-review-tmpl.md +23 -0
  372. package/template/pods/dev-ia/templates/ux-flow-review-tmpl.md +23 -0
  373. package/template/pods/dev-ia/tools/db-ops/backup-manager.sh +321 -0
  374. package/template/pods/dev-ia/tools/db-ops/best-practices-auditor.sh +534 -0
  375. package/template/pods/dev-ia/tools/db-ops/bootstrap-runner.sh +255 -0
  376. package/template/pods/dev-ia/tools/db-ops/data-loader.sh +616 -0
  377. package/template/pods/dev-ia/tools/db-ops/detect-database.sh +113 -0
  378. package/template/pods/dev-ia/tools/db-ops/explain-analyzer.sh +285 -0
  379. package/template/pods/dev-ia/tools/db-ops/health-checker.sh +323 -0
  380. package/template/pods/dev-ia/tools/db-ops/migration-runner.sh +308 -0
  381. package/template/pods/dev-ia/tools/db-ops/postgresql-schema-loader.sh +334 -0
  382. package/template/pods/dev-ia/tools/db-ops/query-runner.sh +171 -0
  383. package/template/pods/dev-ia/tools/db-ops/rls-policy-installer.sh +480 -0
  384. package/template/pods/dev-ia/tools/db-ops/rls-test-suite.sh +172 -0
  385. package/template/pods/dev-ia/tools/db-ops/schema-context-loader.sh +176 -0
  386. package/template/pods/hormozi-method/README.md +52 -0
  387. package/template/pods/hormozi-method/agents/acquisition-strategist.md +33 -0
  388. package/template/pods/hormozi-method/agents/conversion-copywriter.md +34 -0
  389. package/template/pods/hormozi-method/agents/monetization-architect.md +35 -0
  390. package/template/pods/hormozi-method/agents/offer-engineer.md +37 -0
  391. package/template/pods/hormozi-method/knowledge/core-four-leads.md +51 -0
  392. package/template/pods/hormozi-method/knowledge/grand-slam-offer.md +66 -0
  393. package/template/pods/hormozi-method/knowledge/growth-decision.md +38 -0
  394. package/template/pods/hormozi-method/knowledge/hooks-and-ads.md +56 -0
  395. package/template/pods/hormozi-method/knowledge/launch-email.md +31 -0
  396. package/template/pods/hormozi-method/knowledge/money-model.md +46 -0
  397. package/template/pods/hormozi-method/knowledge/opportunity-screening.md +44 -0
  398. package/template/pods/hormozi-method/knowledge/pages.md +25 -0
  399. package/template/pods/hormozi-method/knowledge/pos-lancamento-leads.md +56 -0
  400. package/template/pods/hormozi-method/knowledge/pricing.md +36 -0
  401. package/template/pods/hormozi-method/knowledge/retention-ltv.md +37 -0
  402. package/template/pods/hormozi-method/knowledge/scale-roadmap.md +35 -0
  403. package/template/pods/hormozi-method/knowledge/swipefiles-curados.md +44 -0
  404. package/template/pods/hormozi-method/knowledge/value-equation-diagnostic.md +77 -0
  405. package/template/pods/hormozi-method/memory/README.md +16 -0
  406. package/template/pods/hormozi-method/memory/learnings.consolidated.md +6 -0
  407. package/template/pods/hormozi-method/memory/learnings.jsonl +0 -0
  408. package/template/pods/hormozi-method/pod-spec.json +50 -0
  409. package/template/pods/hormozi-method/specs/wf-full-launch-sequence.spec.json +149 -0
  410. package/template/pods/hormozi-method/specs/wf-lead-magnet-pipeline.spec.json +125 -0
  411. package/template/pods/hormozi-method/specs/wf-money-model-design.spec.json +117 -0
  412. package/template/pods/hormozi-method/specs/wf-paid-ads-campaign.spec.json +132 -0
  413. package/template/pods/hormozi-method/specs/wf-scaling-diagnostic.spec.json +121 -0
  414. package/template/pods/hormozi-method/squad-io.yaml +43 -0
  415. package/template/pods/hormozi-method/templates/conversion-copywriter-tmpl.md +20 -0
  416. package/template/pods/hormozi-method/templates/launch-execucao-tmpl.md +17 -0
  417. package/template/pods/hormozi-method/templates/launch-fechamento-tmpl.md +17 -0
  418. package/template/pods/hormozi-method/templates/launch-pos-tmpl.md +17 -0
  419. package/template/pods/hormozi-method/templates/launch-preparacao-tmpl.md +17 -0
  420. package/template/pods/hormozi-method/templates/lm-copy-tmpl.md +17 -0
  421. package/template/pods/hormozi-method/templates/lm-distribuicao-tmpl.md +18 -0
  422. package/template/pods/hormozi-method/templates/lm-estrategia-tmpl.md +17 -0
  423. package/template/pods/hormozi-method/templates/mm-arquitetura-tmpl.md +18 -0
  424. package/template/pods/hormozi-method/templates/mm-copy-tmpl.md +17 -0
  425. package/template/pods/hormozi-method/templates/mm-diagnostico-tmpl.md +14 -0
  426. package/template/pods/hormozi-method/templates/monetization-architect-tmpl.md +17 -0
  427. package/template/pods/hormozi-method/templates/offer-engineer-tmpl.md +20 -0
  428. package/template/pods/hormozi-method/templates/paid-criativos-tmpl.md +19 -0
  429. package/template/pods/hormozi-method/templates/paid-fundacao-tmpl.md +17 -0
  430. package/template/pods/hormozi-method/templates/paid-teste-escala-tmpl.md +17 -0
  431. package/template/pods/hormozi-method/templates/scaling-diagnostico-tmpl.md +17 -0
  432. package/template/pods/hormozi-method/templates/scaling-priorizacao-tmpl.md +17 -0
  433. package/template/pods/hormozi-method/templates/scaling-roadmap-tmpl.md +17 -0
  434. package/template/pods/hormozi-method/workflows/wf-full-launch-sequence.smoke.json +12 -0
  435. package/template/pods/hormozi-method/workflows/wf-full-launch-sequence.yaml +56 -0
  436. package/template/pods/hormozi-method/workflows/wf-grand-slam-offer.smoke.json +11 -0
  437. package/template/pods/hormozi-method/workflows/wf-grand-slam-offer.yaml +45 -0
  438. package/template/pods/hormozi-method/workflows/wf-lead-magnet-pipeline.smoke.json +9 -0
  439. package/template/pods/hormozi-method/workflows/wf-lead-magnet-pipeline.yaml +45 -0
  440. package/template/pods/hormozi-method/workflows/wf-money-model-design.smoke.json +11 -0
  441. package/template/pods/hormozi-method/workflows/wf-money-model-design.yaml +45 -0
  442. package/template/pods/hormozi-method/workflows/wf-paid-ads-campaign.smoke.json +9 -0
  443. package/template/pods/hormozi-method/workflows/wf-paid-ads-campaign.yaml +46 -0
  444. package/template/pods/hormozi-method/workflows/wf-scaling-diagnostic.smoke.json +11 -0
  445. package/template/pods/hormozi-method/workflows/wf-scaling-diagnostic.yaml +44 -0
  446. package/template/pods/squad-forge/README.md +53 -0
  447. package/template/pods/squad-forge/agents/forge-chief.md +31 -0
  448. package/template/pods/squad-forge/agents/mind-extractor.md +29 -0
  449. package/template/pods/squad-forge/agents/pod-critic.md +26 -0
  450. package/template/pods/squad-forge/config/heuristic-watcher-rubric.yaml +74 -0
  451. package/template/pods/squad-forge/knowledge/fidelity-rubric.yaml +176 -0
  452. package/template/pods/squad-forge/knowledge/g6-memory-check.md +17 -0
  453. package/template/pods/squad-forge/knowledge/memory-ingest.md +16 -0
  454. package/template/pods/squad-forge/knowledge/source-audit-rubric.yaml +60 -0
  455. package/template/pods/squad-forge/memory/README.md +16 -0
  456. package/template/pods/squad-forge/memory/learnings.consolidated.md +8 -0
  457. package/template/pods/squad-forge/memory/learnings.jsonl +0 -0
  458. package/template/pods/squad-forge/pod-spec.json +166 -0
  459. package/template/pods/squad-forge/squad-io.yaml +13 -0
  460. package/template/pods/squad-forge/tasks/pipeline.md +158 -0
  461. package/template/pods/squad-forge/templates/discovery-tmpl.md +40 -0
  462. package/template/pods/squad-forge/templates/generation-tmpl.md +18 -0
  463. package/template/pods/squad-forge/templates/red-team-tmpl.md +17 -0
  464. package/template/pods/squad-forge/templates/register-tmpl.md +17 -0
  465. package/template/pods/squad-forge/templates/workflow-tmpl.yaml +101 -0
  466. package/template/pods/squad-forge/workflows/wf-forge.smoke.json +12 -0
  467. package/template/pods/squad-forge/workflows/wf-forge.yaml +60 -0
@@ -0,0 +1,20 @@
1
+ # Template de saída — etapa `lg-test` (agente `langgraph-architect`, artefato `review-lg`)
2
+
3
+ > Gerado por forge-generate.cjs (SF1.4 + ADR-005). Preencher com o artefato real da etapa.
4
+ > FORMA (seções `##`) verificada por checkTemplateConformance; VETO ORTOGONAL via o
5
+ > campo de máquina `confianca` abaixo (fora dos headings — ADR-005 Decisão A).
6
+
7
+ ## Achados por Severidade
8
+ <!-- preencher: conteúdo de "Achados por Severidade" -->
9
+
10
+ ## Rotas Nao Tratadas
11
+ <!-- preencher: conteúdo de "Rotas Nao Tratadas" -->
12
+
13
+ ## Custo de Tokens por Caminho
14
+ <!-- preencher: conteúdo de "Custo de Tokens por Caminho" -->
15
+
16
+ ## Acoes Irreversiveis
17
+ <!-- preencher: conteúdo de "Acoes Irreversiveis" -->
18
+
19
+ <!-- Campo de máquina do veto default (ADR-005) — NÃO é heading. Troque o placeholder por alta|media|baixa. -->
20
+ confianca: <alta|media|baixa>
@@ -0,0 +1,14 @@
1
+ # Template de saída — etapa `n8n-build` (agente `n8n-architect`, artefato `workflow-json`)
2
+
3
+ > Gerado por forge-generate.cjs (SF1.4 + ADR-005). Preencher com o artefato real da etapa.
4
+ > FORMA (seções `##`) verificada por checkTemplateConformance; VETO ORTOGONAL via o
5
+ > campo de máquina `confianca` abaixo (fora dos headings — ADR-005 Decisão A).
6
+
7
+ ## Workflow JSON Importavel
8
+ <!-- preencher: conteúdo de "Workflow JSON Importavel" -->
9
+
10
+ ## Validacao de Parseabilidade
11
+ <!-- preencher: conteúdo de "Validacao de Parseabilidade" -->
12
+
13
+ <!-- Campo de máquina do veto default (ADR-005) — NÃO é heading. Troque o placeholder por alta|media|baixa. -->
14
+ confianca: <alta|media|baixa>
@@ -0,0 +1,23 @@
1
+ # Template de saída — etapa `n8n-design` (agente `n8n-architect`, artefato `design-n8n`)
2
+
3
+ > Gerado por forge-generate.cjs (SF1.4 + ADR-005). Preencher com o artefato real da etapa.
4
+ > FORMA (seções `##`) verificada por checkTemplateConformance; VETO ORTOGONAL via o
5
+ > campo de máquina `confianca` abaixo (fora dos headings — ADR-005 Decisão A).
6
+
7
+ ## Nodes
8
+ <!-- preencher: conteúdo de "Nodes" -->
9
+
10
+ ## Conexoes e Branch de Erro
11
+ <!-- preencher: conteúdo de "Conexoes e Branch de Erro" -->
12
+
13
+ ## Retry e Timeout
14
+ <!-- preencher: conteúdo de "Retry e Timeout" -->
15
+
16
+ ## Pontos de Dedupe
17
+ <!-- preencher: conteúdo de "Pontos de Dedupe" -->
18
+
19
+ ## Tabela de Riscos
20
+ <!-- preencher: conteúdo de "Tabela de Riscos" -->
21
+
22
+ <!-- Campo de máquina do veto default (ADR-005) — NÃO é heading. Troque o placeholder por alta|media|baixa. -->
23
+ confianca: <alta|media|baixa>
@@ -0,0 +1,20 @@
1
+ # Template de saída — etapa `n8n-discover` (agente `n8n-architect`, artefato `process-map-n8n`)
2
+
3
+ > Gerado por forge-generate.cjs (SF1.4 + ADR-005). Preencher com o artefato real da etapa.
4
+ > FORMA (seções `##`) verificada por checkTemplateConformance; VETO ORTOGONAL via o
5
+ > campo de máquina `confianca` abaixo (fora dos headings — ADR-005 Decisão A).
6
+
7
+ ## Trigger
8
+ <!-- preencher: conteúdo de "Trigger" -->
9
+
10
+ ## Passos e Sistemas
11
+ <!-- preencher: conteúdo de "Passos e Sistemas" -->
12
+
13
+ ## Volumes e Modos de Falha
14
+ <!-- preencher: conteúdo de "Volumes e Modos de Falha" -->
15
+
16
+ ## Quem Opera
17
+ <!-- preencher: conteúdo de "Quem Opera" -->
18
+
19
+ <!-- Campo de máquina do veto default (ADR-005) — NÃO é heading. Troque o placeholder por alta|media|baixa. -->
20
+ confianca: <alta|media|baixa>
@@ -0,0 +1,20 @@
1
+ # Template de saída — etapa `n8n-handoff` (agente `n8n-architect`, artefato `runbook-n8n`)
2
+
3
+ > Gerado por forge-generate.cjs (SF1.4 + ADR-005). Preencher com o artefato real da etapa.
4
+ > FORMA (seções `##`) verificada por checkTemplateConformance; VETO ORTOGONAL via o
5
+ > campo de máquina `confianca` abaixo (fora dos headings — ADR-005 Decisão A).
6
+
7
+ ## O Que Faz
8
+ <!-- preencher: conteúdo de "O Que Faz" -->
9
+
10
+ ## Como Saber Que Quebrou
11
+ <!-- preencher: conteúdo de "Como Saber Que Quebrou" -->
12
+
13
+ ## Como Reexecutar com Seguranca
14
+ <!-- preencher: conteúdo de "Como Reexecutar com Seguranca" -->
15
+
16
+ ## Credenciais e Dono
17
+ <!-- preencher: conteúdo de "Credenciais e Dono" -->
18
+
19
+ <!-- Campo de máquina do veto default (ADR-005) — NÃO é heading. Troque o placeholder por alta|media|baixa. -->
20
+ confianca: <alta|media|baixa>
@@ -0,0 +1,20 @@
1
+ # Template de saída — etapa `n8n-test` (agente `n8n-architect`, artefato `review-n8n`)
2
+
3
+ > Gerado por forge-generate.cjs (SF1.4 + ADR-005). Preencher com o artefato real da etapa.
4
+ > FORMA (seções `##`) verificada por checkTemplateConformance; VETO ORTOGONAL via o
5
+ > campo de máquina `confianca` abaixo (fora dos headings — ADR-005 Decisão A).
6
+
7
+ ## Achados por Severidade
8
+ <!-- preencher: conteúdo de "Achados por Severidade" -->
9
+
10
+ ## Error Handling
11
+ <!-- preencher: conteúdo de "Error Handling" -->
12
+
13
+ ## Idempotencia
14
+ <!-- preencher: conteúdo de "Idempotencia" -->
15
+
16
+ ## Custo por Execucao
17
+ <!-- preencher: conteúdo de "Custo por Execucao" -->
18
+
19
+ <!-- Campo de máquina do veto default (ADR-005) — NÃO é heading. Troque o placeholder por alta|media|baixa. -->
20
+ confianca: <alta|media|baixa>
@@ -0,0 +1,11 @@
1
+ {
2
+ "_comment": "Cenário de smoke do wf-langgraph-build (SF6.3, AUTORADO junto do wf). Mesma estrutura do wf-n8n-build.smoke.json: artefato CONFORME por etapa + campo 'confianca'. O sweep --sweep deriva 3a (seção removida) e 3b (field_matches confianca; file_referenced_exists 'entregavel'). lg-handoff.entregavel aponta para 'lg-build.md' (artefato de lg-build no run dir). target_step = lg-handoff.",
3
+ "target_step": "lg-handoff",
4
+ "artifacts": {
5
+ "lg-discover": "## Processo e Decisao\n- Agente triagem de tickets: le o ticket, decide categoria e se escala a humano\n\n## Estado Necessario\n- ticket, categoria, iteracoes, aprovado (campos tipados)\n\n## Pontos de Supervisao Humana\n- Antes de responder ao cliente (acao irreversivel) → interrupt\n\n## Quem Opera\n- Time de suporte; dono: lider de suporte\n\nconfianca: alta\n",
6
+ "lg-design": "## Schema de Estado\n- TypedDict: messages (add_messages), iteracoes int, categoria str|None, aprovado bool\n\n## Nodes e Responsabilidade\n- classificar (LLM), rotear (condicional), responder (interrupt antes)\n\n## Edges Condicionais\n- rotear cobre todas as rotas: encerrar (iteracoes>=5), revisar, classificar; rota default de erro incluida\n\n## Condicao de Parada e Limite\n- iteracoes >= 5 (freio no estado) + recursion_limit 25 (airbag)\n\n## Checkpoints\n- PostgresSaver, thread_id por ticket\n\nconfianca: alta\n",
7
+ "lg-build": "## Codigo do Grafo\n```python\nfrom typing import Annotated, TypedDict\nfrom langgraph.graph import StateGraph, START, END\n\nclass State(TypedDict):\n messages: Annotated[list, add_messages]\n iteracoes: int\n\ndef classificar(state: State) -> dict:\n return {\"iteracoes\": state[\"iteracoes\"] + 1}\n```\n\n## Estado Tipado\n- TypedDict com reducer add_messages; nunca dict solto\n\n## Recursion Limit\nrecursion_limit: 25\n\nconfianca: alta\n",
8
+ "lg-test": "## Achados por Severidade\n- ALTA: nenhum ciclo sem saida garantida\n- MEDIA: revisar custo no pior caminho\n\n## Rotas Nao Tratadas\n- Nenhuma: rotear cobre todos os valores + rota default de erro\n\n## Custo de Tokens por Caminho\n- Melhor caso 1 chamada LLM; pior caso 5 (limite de iteracoes)\n\n## Acoes Irreversiveis\n- Responder ao cliente protegido por interrupt (HITL)\n\nconfianca: alta\n",
9
+ "lg-handoff": "## O Que Faz\n- Agente de triagem de tickets com aprovacao humana antes de responder\n\n## Como Saber Que Quebrou\n- GraphRecursionError capturado + estado parcial salvo; alerta ao dono\n\n## Como Reexecutar com Seguranca\n- Retomar pela mesma thread_id do checkpointer; codigo antes do interrupt e idempotente\n\n## Checkpointer e Dono\n- PostgresSaver (producao), retencao por thread; dono: lider de suporte\n\nentregavel: lg-build.md\nconfianca: alta\n"
10
+ }
11
+ }
@@ -0,0 +1,64 @@
1
+ # wf-langgraph-build.yaml — gerado por forge-generate.cjs (SF1.4).
2
+ # Contrato: templates/workflow-tmpl.yaml. Validador: scripts/validate-pod-workflow.cjs.
3
+
4
+ state_machine:
5
+ states: [init, running, review, complete, failed]
6
+ initial: init
7
+ terminal: [complete, failed]
8
+
9
+ steps:
10
+ - id: lg-discover
11
+ agent: langgraph-architect
12
+ template: templates/lg-discover-tmpl.md
13
+ inputs: [brief]
14
+ outputs: [process-map-lg]
15
+ depends_on: []
16
+ checkpoint: null
17
+ veto:
18
+ assertions:
19
+ - { type: field_matches, field: confianca, pattern: "^(alta|media|baixa)$", _sources: "âncora de conformidade do pod (ADR-005 Decisão A) — campo de máquina ortogonal fora dos headings" }
20
+
21
+ - id: lg-design
22
+ agent: langgraph-architect
23
+ template: templates/lg-design-tmpl.md
24
+ inputs: [process-map-lg]
25
+ outputs: [design-lg]
26
+ depends_on: [lg-discover]
27
+ checkpoint: { blocking: true, criteria: "Desenho aprovado ANTES de gerar código (README:17): schema de estado (campos, tipos, reducers), nodes com responsabilidade única, edges condicionais com TODAS as rotas mapeadas (rota default de erro incluída), condição de parada explícita E limite de iterações, checkpoints — APROVAÇÃO HUMANA por escrito, JULGAMENTO (ADR-002), NUNCA veto." }
28
+ veto:
29
+ assertions:
30
+ - { type: field_matches, field: confianca, pattern: "^(alta|media|baixa)$", _sources: "âncora de conformidade do pod (ADR-005 Decisão A)" }
31
+
32
+ - id: lg-build
33
+ agent: langgraph-architect
34
+ template: templates/lg-build-tmpl.md
35
+ inputs: [design-lg]
36
+ outputs: [graph-code]
37
+ depends_on: [lg-design]
38
+ checkpoint: null
39
+ veto:
40
+ assertions:
41
+ - { type: field_matches, field: confianca, pattern: "^(alta|media|baixa)$", _sources: "âncora de conformidade do pod. Entregável = código Python tipado (README:18), NÃO JSON — json_schema_valid é inaplicável a este track (ver pod-spec._sources.json_schema_valid_avaliado_e_rejeitado); a validação (recursion_limit + estado tipado) fica no red-team lg-test." }
42
+
43
+ - id: lg-test
44
+ agent: langgraph-architect
45
+ template: templates/lg-test-tmpl.md
46
+ inputs: [graph-code]
47
+ outputs: [review-lg]
48
+ depends_on: [lg-build]
49
+ checkpoint: { blocking: true, criteria: "Regra do pod (inegociável), itens 1-2 sabor Langgraph (README:26-27): error handling EXPLÍCITO (estados de erro e retry — RetryPolicy/rota de erro no estado, checkpointer presente) E idempotência ONDE APLICÁVEL (ação irreversível protegida por interrupt ou chave de idempotência; código antes do interrupt idempotente) confirmados no red-team (*review), sem ciclo sem saída nem rota não tratada. JULGAMENTO humano, fronteira ADR-002, NUNCA veto." }
50
+ veto:
51
+ assertions:
52
+ - { type: field_matches, field: confianca, pattern: "^(alta|media|baixa)$", _sources: "âncora de conformidade do pod (ADR-005 Decisão A)" }
53
+
54
+ - id: lg-handoff
55
+ agent: langgraph-architect
56
+ template: templates/lg-handoff-tmpl.md
57
+ inputs: [review-lg]
58
+ outputs: [runbook-lg]
59
+ depends_on: [lg-test]
60
+ checkpoint: { blocking: true, criteria: "Regra do pod (inegociável), item 3 (README:28): runbook OPERÁVEL — o que faz, como saber que quebrou, como reexecutar com segurança, config de checkpointer/persistência (retomada após falha) e quem é o dono. COMPLETUDE QUALITATIVA (julgamento), fronteira ADR-002, NUNCA veto — a fatia objetiva ('entregável existe') é o veto file_referenced_exists acima." }
61
+ veto:
62
+ assertions:
63
+ - { type: file_referenced_exists, field: entregavel, _sources: "Regra do pod item 3 (README:28), FATIA machine-checkável: o runbook referencia o entregável (campo `entregavel` = artefato de lg-build) e file_referenced_exists prova que existe em disco. Ortogonal, derivável pelo sweep (path inexistente → bloqueia)." }
64
+ - { type: field_matches, field: confianca, pattern: "^(alta|media|baixa)$", _sources: "âncora de conformidade do pod" }
@@ -0,0 +1,11 @@
1
+ {
2
+ "_comment": "Cenário de smoke do wf-n8n-build (SF6.3, AUTORADO junto do wf; SF7.8 adiciona a derivação do veto de importabilidade). 'artifacts' = artefato CONFORME por etapa (caminho feliz): seções ## do template + campo de máquina 'confianca' (fora dos headings, ADR-005). O sweep --sweep DERIVA as violações por forma (3a: seção removida — a seção-âncora do extract é load-bearing e nunca é a removida; 3b: por assertion — field_matches confianca → valor fora do pattern; file_referenced_exists 'entregavel' → path inexistente; json_schema_valid+extract em n8n-build → bloco ```json da seção '## Workflow JSON Importavel' com required[0]='connections' REMOVIDO e reinserido no lugar, o defeito exato do CONCERNS-1 de SF6.3 — resto do artefato intacto, classe veto isolada). n8n-handoff.entregavel aponta para 'n8n-build.md' (o artefato de n8n-build no run dir), que existe no caminho feliz; o sweep o troca por path inexistente e o runner bloqueia. target_step = n8n-handoff (etapa com o veto de domínio file_referenced_exists).",
3
+ "target_step": "n8n-handoff",
4
+ "artifacts": {
5
+ "n8n-discover": "## Trigger\n- Cron diario 07:00 (n8n-nodes-base.scheduleTrigger), timezone UTC\n\n## Passos e Sistemas\n- Ler feeds RSS → filtrar por palavra-chave → dedupe → enviar e-mail + gravar em Google Sheets\n- Sistemas: RSS, SMTP, Google Sheets API v4\n\n## Volumes e Modos de Falha\n- ~50 itens/dia; feed fora do ar (5xx/timeout); item duplicado entre execucoes\n\n## Quem Opera\n- Time de marketing; dono do workflow: analista de conteudo\n\nconfianca: alta\n",
6
+ "n8n-design": "## Nodes\n- scheduleTrigger, httpRequest (RSS), IF (filtro), removeDuplicates, emailSend, googleSheets(appendOrUpdate)\n\n## Conexoes e Branch de Erro\n- Error workflow dedicado (errorTrigger) registrado em settings.errorWorkflow; onError continueRegularOutput no httpRequest com branch de alerta\n\n## Retry e Timeout\n- httpRequest: retryOnFail maxTries 3, waitBetweenTries 5000, options.timeout 30000\n\n## Pontos de Dedupe\n- removeDuplicates por chave externa (link do item), operacao removeItemsSeenInPreviousExecutions\n\n## Tabela de Riscos\n- Feed fora do ar → branch de erro alerta; rate limit → backoff\n\nconfianca: alta\n",
7
+ "n8n-build": "## Workflow JSON Importavel\n```json\n{\n \"name\": \"Radar de Conteudo IA\",\n \"nodes\": [\n { \"id\": \"a1\", \"name\": \"Cron\", \"type\": \"n8n-nodes-base.scheduleTrigger\", \"typeVersion\": 1, \"position\": [0,0], \"parameters\": {} }\n ],\n \"connections\": {},\n \"settings\": { \"executionOrder\": \"v1\", \"timezone\": \"UTC\", \"errorWorkflow\": \"err-1\" }\n}\n```\n\n## Validacao de Parseabilidade\n- JSON.parse OK; chaves nodes/connections/settings presentes (n8n-patterns.md:7)\n\nconfianca: alta\n",
8
+ "n8n-test": "## Achados por Severidade\n- ALTA: nenhum ponto unico de falha sem branch de erro\n- MEDIA: revisar volume de polling\n\n## Error Handling\n- Error workflow dedicado + onError com branch de alerta (nao ha falha silenciosa)\n\n## Idempotencia\n- removeDuplicates por link garante que reexecucao nao duplica e-mail nem linha na planilha\n\n## Custo por Execucao\n- ~50 chamadas HTTP/dia; dentro do orcamento\n\nconfianca: alta\n",
9
+ "n8n-handoff": "## O Que Faz\n- Envia briefing diario de noticias de IA por e-mail e registra no Google Sheets\n\n## Como Saber Que Quebrou\n- Alerta do error workflow no canal de operacao com nome do workflow, node que falhou e link da execucao\n\n## Como Reexecutar com Seguranca\n- Reexecutar o workflow manualmente e idempotente (dedupe por link); nenhum e-mail/linha duplicado\n\n## Credenciais e Dono\n- Credenciais: SMTP e Google Sheets via credential store; dono: analista de conteudo\n\nentregavel: n8n-build.md\nconfianca: alta\n"
10
+ }
11
+ }
@@ -0,0 +1,65 @@
1
+ # wf-n8n-build.yaml — gerado por forge-generate.cjs (SF1.4).
2
+ # Contrato: templates/workflow-tmpl.yaml. Validador: scripts/validate-pod-workflow.cjs.
3
+
4
+ state_machine:
5
+ states: [init, running, review, complete, failed]
6
+ initial: init
7
+ terminal: [complete, failed]
8
+
9
+ steps:
10
+ - id: n8n-discover
11
+ agent: n8n-architect
12
+ template: templates/n8n-discover-tmpl.md
13
+ inputs: [brief]
14
+ outputs: [process-map-n8n]
15
+ depends_on: []
16
+ checkpoint: null
17
+ veto:
18
+ assertions:
19
+ - { type: field_matches, field: confianca, pattern: "^(alta|media|baixa)$", _sources: "âncora de conformidade do pod (ADR-005 Decisão A) — campo de máquina ortogonal fora dos headings; derivável pelo sweep (valor presente fora do pattern)" }
20
+
21
+ - id: n8n-design
22
+ agent: n8n-architect
23
+ template: templates/n8n-design-tmpl.md
24
+ inputs: [process-map-n8n]
25
+ outputs: [design-n8n]
26
+ depends_on: [n8n-discover]
27
+ checkpoint: { blocking: true, criteria: "Desenho aprovado ANTES de gerar código (README:17): lista de nodes validados contra o catálogo, branch/workflow de erro, política de retry+timeout por node externo, pontos de dedupe, tabela de riscos — APROVAÇÃO HUMANA por escrito, JULGAMENTO (fronteira ADR-002), NUNCA veto de máquina." }
28
+ veto:
29
+ assertions:
30
+ - { type: field_matches, field: confianca, pattern: "^(alta|media|baixa)$", _sources: "âncora de conformidade do pod (ADR-005 Decisão A)" }
31
+
32
+ - id: n8n-build
33
+ agent: n8n-architect
34
+ template: templates/n8n-build-tmpl.md
35
+ inputs: [design-n8n]
36
+ outputs: [workflow-json]
37
+ depends_on: [n8n-design]
38
+ checkpoint: null
39
+ veto:
40
+ assertions:
41
+ - { type: field_matches, field: confianca, pattern: "^(alta|media|baixa)$", _sources: "âncora de conformidade do pod (ADR-005 Decisão A) — mantida junto do veto de domínio, mesmo padrão das demais etapas." }
42
+ - { type: json_schema_valid, schema: { required: [connections, nodes] }, extract: { section: "## Workflow JSON Importavel", fence: json }, _sources: "SF7.8/ADR-011 Decisão 1: prova de IMPORTABILIDADE por máquina — extrai o bloco ```json da seção real do template (n8n-build-tmpl.md:7) e exige o shape mínimo do N8N (nodes/connections, n8n-patterns.md:7; BACKLOG 'shape mínimo esperado pelo N8N'). Fecha o CONCERNS-1 de SF6.3 de ponta a ponta (capacidade SF7.2 + adoção). required ordena connections primeiro: o sweep deriva a violação removendo required[0] — exatamente o defeito original do CONCERNS-1 (JSON sem connections). Linha do tempo da decisão: pod-spec._sources.json_schema_valid_linha_do_tempo." }
43
+
44
+ - id: n8n-test
45
+ agent: n8n-architect
46
+ template: templates/n8n-test-tmpl.md
47
+ inputs: [workflow-json]
48
+ outputs: [review-n8n]
49
+ depends_on: [n8n-build]
50
+ checkpoint: { blocking: true, criteria: "Regra do pod (inegociável), itens 1-2 (README:26-27): error handling EXPLÍCITO (error workflow ou onError + branch de tratamento — falha silenciosa é bug de entrega) E idempotência ONDE APLICÁVEL (dedupe por chave externa, reexecução não duplica efeito) confirmados no red-team (*review), sem achado crítico aberto. JULGAMENTO humano ('está de fato explícito?', 'onde aplicável'), fronteira ADR-002, NUNCA veto de máquina." }
51
+ veto:
52
+ assertions:
53
+ - { type: field_matches, field: confianca, pattern: "^(alta|media|baixa)$", _sources: "âncora de conformidade do pod (ADR-005 Decisão A)" }
54
+
55
+ - id: n8n-handoff
56
+ agent: n8n-architect
57
+ template: templates/n8n-handoff-tmpl.md
58
+ inputs: [review-n8n]
59
+ outputs: [runbook-n8n]
60
+ depends_on: [n8n-test]
61
+ checkpoint: { blocking: true, criteria: "Regra do pod (inegociável), item 3 (README:28): runbook OPERÁVEL — o que a automação faz, como saber que quebrou (onde olhar), como reexecutar com segurança, credenciais necessárias, quem é o dono. COMPLETUDE/qualidade QUALITATIVA (julgamento humano), fronteira ADR-002, NUNCA veto — a fatia objetiva ('o entregável existe') é o veto file_referenced_exists acima." }
62
+ veto:
63
+ assertions:
64
+ - { type: file_referenced_exists, field: entregavel, _sources: "Regra do pod item 3 (README:28 'documentação de operação'), FATIA machine-checkável: o runbook referencia o entregável de automação (campo `entregavel`) e file_referenced_exists prova que ele EXISTE em disco (o artefato de n8n-build). Ortogonal (campo fora dos headings), derivável pelo sweep (path inexistente → bloqueia). Espelha squad-forge/pod-spec.json step register (file_referenced_exists entry_point)." }
65
+ - { type: field_matches, field: confianca, pattern: "^(alta|media|baixa)$", _sources: "âncora de conformidade do pod" }
@@ -0,0 +1,91 @@
1
+ # Pod content-carousel — carrossel de notícia configurável
2
+
3
+ Gera um carrossel de Instagram (capa + 5 slides + CTA = 7 peças, entregues como **PNG**
4
+ 1080×1350) a partir de uma âncora editorial fixada pelo usuário **ou de um roteiro escrito
5
+ por você**, no fluxo `digest → visuals → assembly` com runner determinístico (`pc-run-pod` +
6
+ `workflows/wf-content-carousel.yaml`).
7
+
8
+ ## Requisito de host: headless Chrome é OBRIGATÓRIO (leia antes da primeira rodada)
9
+
10
+ **Sem headless Chrome funcional, uma rodada deste pod NÃO FECHA — e não existe escape hatch.**
11
+ Isto é decisão de desenho (`ADR-025 DF-SF11.11-4`, confirmada sem emenda pelo `ADR-028
12
+ DF-SF12.2-3`), não limitação: o entregável do pod são os 7 **PNG**, o HTML é fonte. A etapa
13
+ `assembly` tem um veto de máquina (`command_check render-png.cjs`) que renderiza as 7 peças e
14
+ exige **exatamente 7 arquivos** com **1080×1350 exatos** (lido do IHDR) **antes** de você ser
15
+ chamado a aprovar. Entregar HTML "porque o Chrome falhou" reintroduziria a degradação
16
+ silenciosa que o framework eliminou — o dono aprova **o arquivo que publica**.
17
+
18
+ **Onde o Chrome precisa existir:** na máquina que roda o CLI (`pc-run-pod.cjs`) **e** no host
19
+ que roda um eventual **export** deste pod (o serviço provisiona Chrome desde a SF11.11 —
20
+ `deploy/pod-export/provision-pod-export.sh`).
21
+
22
+ **A falta nunca é silenciosa — ela aparece em 3 pontos, nesta ordem:**
23
+
24
+ | Quando | Onde | O que você vê |
25
+ |---|---|---|
26
+ | Antes de despachar qualquer agente | `capabilityGaps` ⇒ o `start` **recusa** | o script blessed ausente neste motor, nomeado |
27
+ | Antes de o serviço de export subir | preflight do `pod-export.service` | Chrome quebrado ⇒ o serviço **recusa arrancar** |
28
+ | Em runtime, num host sem provisionamento | `render-png.cjs` **exit 3** | `instale google-chrome/chromium ou defina CHROME_BIN` |
29
+
30
+ **Como resolver:** instale `google-chrome` ou `chromium` no host, ou aponte `CHROME_BIN` para
31
+ o binário. Detalhe do mecanismo: `docs/mecanismos/veto-entregavel-png.md`, no repositório do
32
+ framework.
33
+
34
+ ## Origem
35
+
36
+ Absorvido do benchmark 4-braços pods vs squads (2026-07, 5 rodadas de uso com avaliação cega
37
+ do dono) — **braço A3, vencedor operacional** (maior média, única estrutura 25/25, mais
38
+ barato). Generalizado na absorção (SF7.5/ADR-010): dado de dono parametrizado, fonte de
39
+ notícia parametrizável, memória zerada (a experiência é por-instância).
40
+
41
+ ## Configuração por instância
42
+
43
+ - **Dono:** copie `knowledge/dono.example.yaml` → `knowledge/dono.yaml` e preencha (nome,
44
+ handle, linha de autoridade, voz, ação default do CTA). Se ausente/placeholder, o agente
45
+ elicita na 1ª ativação (ADR-010) — a instalação é não-interativa.
46
+ - **Fonte de notícia:** default = Hacker News (API pública, funcional out-of-the-box);
47
+ contrato para plugar outra fonte em `knowledge/aquisicao-ancora.md` §0.
48
+ - **Geração de imagem:** `OPENROUTER_API_KEY` no `.env` do projeto (nunca imprimir a chave).
49
+
50
+ ## Conhecimento do pod
51
+
52
+ `knowledge/`: aquisicao-ancora (contrato de fonte + HN default), image-generation (visuais
53
+ via OpenRouter, restrição de não-cópia de referência), slides-html (spec das 7 peças),
54
+ cta-brief (CTA com remissão à autoridade do dono) e identidade-visual-mascote (mecanismo
55
+ validado em campo: doutrina → spec de personagem → character sheet + recorte → cena nas
56
+ peças-herói → crítica "parece feito por ilustrador contratado?").
57
+
58
+ ## Limites conhecidos
59
+
60
+ Este pod tem **um** limite que nenhum script pega — quem o pega é você, num checkpoint. Ele
61
+ está escrito aqui porque a decisão foi **declará-lo**, não mecanizá-lo (`ADR-034`
62
+ `DF-REPUB-1`/`DF-REPUB-3`, no repositório do framework; o residual já era nomeado pelo
63
+ `ADR-020` `DF-SF10.21-3`).
64
+
65
+ **(a) `contrato_entrada` é uma DECLARAÇÃO do agente — não é prova de proveniência.** O digest
66
+ fecha com o campo `contrato_entrada: ancora:hn` ou `roteiro:proprio`, e o veto de máquina
67
+ (`workflows/wf-content-carousel.yaml:34`, assertion `field_matches`) confere **só** que o valor
68
+ declarado pertence ao conjunto implementado. Ele **não** confere que o agente buscou de fato
69
+ naquela fonte. Se você pedir um modo e o agente declarar outro — por engano, ou por pegar o
70
+ caminho de menor resistência, já que o brief lhe MOSTRA o pattern exigido —, **nenhum script
71
+ pega**: a etapa avança normalmente. Isto não é hipótese: uma run em que o pedido dizia
72
+ `entrada=roteiro` e o artefato declarou `ancora:hn` avançou para `visuals` em execução real
73
+ de QA (gate `sf10.21` do framework).
74
+
75
+ **(b) O gate que pega isso é o checkpoint humano de `digest`** — e o critério já está escrito
76
+ nele, item (0): *"Se a seção que você leria não bate com a run que VOCÊ pediu, o conformador
77
+ declarou o modo errado - isso sozinho já é `revise`."* No ritmo `interactive` esse `revise`
78
+ custa zero: devolve só o `digest` e re-despacha o curador, com **nenhuma imagem gerada**.
79
+
80
+ **(c) `--mode yolo` PULA esse checkpoint** (`skip_modes: ["yolo"]`). No ritmo autônomo a etapa
81
+ `digest` vai direto a `done`, e um modo mentido só aparece no checkpoint de `assembly` — que
82
+ **não** é pulável, mas só acontece **depois** de `visuals` já ter gerado, e pago, os
83
+ backgrounds de capa e CTA na OpenRouter: é essa geração que se descarta e se repaga na run
84
+ refeita, e é esse o dano máximo do limite. Os 7 PNG que `assembly` mostra **não** são geração
85
+ paga — são os 7 HTML renderizados localmente por `render-png.cjs` (headless Chrome), dentro da
86
+ própria etapa. Em nenhum dos dois ritmos o carrossel chega a publicação sem olho humano.
87
+
88
+ **O que não existe, dito na cara:** não há, hoje, verificação automática de proveniência da
89
+ entrada, e nenhuma está planejada. Um cross-check (`contrato_entrada` × o pedido que você
90
+ escreveu) foi desenhado, custeado e **recusado** por razões medidas em `ADR-034`
91
+ `DF-REPUB-2`, com gatilho de retorno nomeado lá.
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: carousel-builder
3
+ description: "Monta o carrossel final: 5 slides internos em HTML explicando a notícia de forma acessível + slide CTA com background, frase forte e remissão à autoridade do dono da instância (knowledge/dono.yaml). Use para: montar os slides internos do carrossel, escrever o slide de CTA final, fechar o pacote de 7 peças de uma rodada, revisar a estrutura do carrossel."
4
+ model: sonnet
5
+ budget_tokens: 1150
6
+ ---
7
+
8
+ # carousel-builder — montagem do carrossel
9
+
10
+ ## Papel
11
+
12
+ Você fecha a rodada: transforma o digest editorial e o visual-set no carrossel completo de 7 peças (capa + 5 slides internos + CTA). Seu critério de qualidade: HTML válido e legível no formato do Instagram, conteúdo fiel ao digest (nada além da fonte), e um CTA que fecha forte com a autoridade técnica do dono da instância.
13
+
14
+ ## Comandos
15
+
16
+ - `*assemble {news-digest} {visual-set}` → `knowledge/slides-html.md` — gera a capa (HTML sobre o background gerado) e os 5 slides internos em HTML (um ângulo do digest por slide, progressão acessível), depois o slide CTA conforme `knowledge/cta-brief.md` (background do visual-set + frase forte de fechamento + remissão à autoridade do dono, conforme `knowledge/dono.yaml`). Entrega o `carousel-package` no formato `templates/assembly-tmpl.md` com os 7 arquivos listados.
17
+
18
+ ## Regras de ouro
19
+
20
+ - Na 1ª ativação da instância, checar `knowledge/dono.yaml`: se ausente ou ainda com valores de placeholder (iguais a `knowledge/dono.example.yaml`), ELICITAR do usuário os dados do dono (nome, handle, linha de autoridade) E o guia de voz (ADR-013, escada: sem voz / guia de estilo / DNA do dono) no MESMO fluxo, persistindo em `knowledge/dono.yaml` — o CTA não se monta sem dono configurado. `voz` escalar antigo vale como `voz.pessoa: "primeira"` (retrocompat).
21
+ - GUARDA DE VOZ (ADR-013): toda peça sai na 1ª pessoa do dono — o dono NUNCA é citado em 3ª pessoa como fonte externa (defeito R2 do benchmark; citar TERCEIROS factualmente continua legítimo); respeitar `voz.lexico_proibido` (o veto léxico do workflow conta de verdade) e `voz.tom`. Ao alterar `voz.lexico_proibido` na elicitação, ATUALIZAR junto os `args` do veto `lexical-check.cjs` em `workflows/wf-content-carousel.yaml` (a derivação é em tempo de autoria — os args do veto são literais).
22
+ - Estrutura fixa e inegociável: capa + 5 slides internos + CTA = 7 peças — nenhuma a menos, nenhuma duplicada (veto do workflow).
23
+ - Conteúdo dos slides vem SÓ do `news-digest` — nunca adicionar fato que o curador não trouxe.
24
+ - Todo slide em HTML autocontido (CSS inline, 1080×1350) que parseia sem erro — HTML quebrado não entra no pacote.
25
+ - O CTA sempre tem os 3 elementos: background gerado, frase forte de fechamento, remissão à autoridade técnica do dono (nome + handle de `knowledge/dono.yaml`) — faltou um, o slide não está pronto.
26
+ - Um ângulo por slide, uma ideia por tela — hierarquia e legibilidade acima de densidade de informação.
27
+ - **LUGAR DAS PEÇAS — invariante, não estilo (`ADR-028`).** Escreva as 7 peças na **RAIZ do `runDir`** (`01-capa.html` … `07-cta.html`, ao lado de `assets/` e `artifacts/`), **nunca** em subdiretório (`pieces/`, `html/`, `slides/`). O veto `render-png.cjs` recebe `--html-dir ".."` como argumento **LITERAL** (`ADR-011` proíbe interpolação em `command_check`): peça fora da raiz não é encontrada, o veto conta 0 de 7 e a etapa **BLOQUEIA**. Vale igual no CLI e no runtime de export. Os paths do `## Pacote Final` saem relativos à raiz, pelo mesmo motivo. Detalhe em `knowledge/slides-html.md`.
28
+ - **AUTOCONFERÊNCIA EM CHROME CONTINUA OBRIGATÓRIA, e o veto de máquina NÃO a substitui.** Antes de declarar o pacote pronto, renderize cada peça e OLHE o resultado. A etapa tem um `command_check` (`render-png.cjs`, ADR-025) que renderiza as 7 peças e as verifica ANTES do checkpoint do dono; ele prova **contagem exata e dimensão exata do PNG**, e mais nada. Ele NÃO vê quebra de linha feia (rótulo partido em duas linhas, moeda separada do número), texto estourando a caixa, contraste ruim nem encaixe copy × canvas — essa classe de defeito é invisível no HTML como texto e só aparece no render. Se você pular a sua conferência porque "o veto passa", o defeito chega ao dono — e é ele quem paga a rodada.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: carousel-visual
3
+ description: "Gera os backgrounds de capa e CTA do carrossel via modelo de imagem na OpenRouter, usando imagem do Pinterest só como referência de estilo/composição. Use para: gerar a imagem de capa do carrossel, gerar o background do slide CTA, traduzir uma referência do Pinterest em prompt de estilo, refazer um visual reprovado."
4
+ model: sonnet
5
+ budget_tokens: 1000
6
+ ---
7
+
8
+ # carousel-visual — geração de visuais do carrossel
9
+
10
+ ## Papel
11
+
12
+ Você produz os backgrounds gerados do carrossel (capa e CTA) chamando um modelo de imagem via OpenRouter. Seu critério de qualidade: a imagem gerada evoca o ESTILO e a COMPOSIÇÃO da referência do Pinterest sem nunca ser cópia ou derivação direta dela (restrição de direito autoral inegociável), e serve de base legível para o texto que vai por cima.
13
+
14
+ ## Comandos
15
+
16
+ - `*visuals {news-digest} {ref-pinterest} [{modelo}]` → `knowledge/image-generation.md` — extrai atributos de estilo/composição da referência EM TEXTO, monta os prompts da capa e do CTA a partir do tema da notícia + atributos extraídos, chama o modelo via OpenRouter (default: Nano Banana 2 / Gemini 3.1 Flash Image; o usuário pode fornecer outro por rodada) e entrega o `visual-set` no formato `templates/visuals-tmpl.md`, com prompt log e declaração de conformidade da referência.
17
+
18
+ ## Regras de ouro
19
+
20
+ - NUNCA enviar a imagem de referência ao modelo como base/init de geração, e NUNCA pedir "reproduza esta imagem" — a referência entra só como atributos de estilo/composição descritos em texto.
21
+ - Antes de declarar `referencia_copiada: nao`, comparar o resultado com a referência: se parecer cópia ou derivação direta, regenerar com prompt ajustado (não entregar).
22
+ - Prompt log completo no `visual-set` — modelo usado, prompts enviados, iterações; sem log não há auditoria.
23
+ - Formato de capa Instagram: 4:5 (1080×1350); o CTA usa a mesma família visual da capa (consistência de marca).
24
+ - O modelo é o fornecido pelo usuário na rodada; sem indicação, usar o default declarado — nunca trocar por conta própria.
@@ -0,0 +1,74 @@
1
+ ---
2
+ name: hn-curator
3
+ description: "Produz o digest editorial do carrossel a partir da ENTRADA do task_ref: uma âncora fixada pelo usuário (modo `ancora`, hoje só a fonte `hn`: item do HN por URL/timestamp) ou um roteiro do próprio dono (modo `roteiro`), que ele CONFORMA sem reescrever. Use para: digerir uma notícia fixada, conformar um roteiro próprio ao formato do pod."
4
+ model: sonnet
5
+ budget_tokens: 1450
6
+ ---
7
+
8
+ # hn-curator — curadoria editorial da ENTRADA (âncora ou roteiro do dono)
9
+
10
+ ## Papel
11
+
12
+ Você transforma a ENTRADA do `task_ref` em matéria-prima editorial do carrossel. **O modo decide o seu
13
+ papel** (`knowledge/aquisicao-ancora.md` §0.1):
14
+
15
+ - **`entrada=ancora`** (§1) — você é **AUTOR**: lê a âncora (hoje, um item do Hacker News) e escreve o digest.
16
+ - **`entrada=roteiro`** (§1b) — você é **CONFORMADOR**, nunca autor: o texto já é do dono e você o mapeia
17
+ à forma do pod **sem reescrevê-lo**, declarando no bloco `pc:fidelidade-roteiro` tudo o que não foi
18
+ preservação pura.
19
+
20
+ Qualidade: todo fato é rastreável à fonte (em `ancora`, item/artigo/discussão; em `roteiro`, o
21
+ arquivo do dono); nada inventado; acessível sem perder precisão.
22
+
23
+ ## Comandos
24
+
25
+ - `*digest` → `knowledge/aquisicao-ancora.md` — lê a ENTRADA da linha `Tarefa:` (§0.1), valida pelo
26
+ fail-closed do §0.2 e **ramifica pelo modo**: `ancora` → **§1**; `roteiro` → **§1b** (ler o arquivo de
27
+ `roteiro=<path>` inteiro, calcular o `sha256`, conformar sem reescrever, gravar o bloco de fidelidade
28
+ no fecho). Entrega o `news-digest` no formato `templates/digest-tmpl.md`. O significado de cada
29
+ requisito por modo está na **matriz §0.3** — ponto único de verdade, não duplicado aqui.
30
+
31
+ ## Regras de ouro
32
+
33
+ - Na 1ª ativação da instância, checar `knowledge/dono.yaml`: ausente ou com placeholders (iguais a
34
+ `dono.example.yaml`) ⇒ ELICITAR nome, handle e linha de autoridade E o guia de voz (ADR-013), no MESMO
35
+ fluxo, com a escada de 3 degraus (sem voz / guia de estilo `voz.pessoa`+`voz.lexico_proibido`+
36
+ `voz.tom` / DNA completo via mind-extractor), persistindo antes de prosseguir. Retrocompat: `voz`
37
+ escalar vale como `voz.pessoa: "primeira"`; ofereça, não bloqueie.
38
+ - **FAIL-CLOSED, ANTES DE QUALQUER FETCH OU LEITURA.** Primeira ação: ler a linha `Tarefa:` e validá-la
39
+ contra o §0.2. Se falta `Tarefa:`, falta `entrada`, falta chave obrigatória do modo, o modo está fora
40
+ de `{ancora, roteiro}`, `fonte=` está fora de `{hn}`, ou `roteiro=<path>` não abre: **HALTE** — nomeie
41
+ o que faltou, repita a linha recebida, pergunte ao dono, **não busque nada e não escreva o artefato**.
42
+ É **PROIBIDO** assumir Hacker News por default, inferir a fonte pelo host da URL ou reconstruir de
43
+ memória um roteiro que não abriu.
44
+ - NUNCA inventar fato fora da fonte. Em `roteiro`, a fonte é **o arquivo do dono**.
45
+ - **EM `roteiro` VALE A GUARDA-CHUVA (§0.3), E ELA É POR CANAL:** qualquer instrução que mande
46
+ **verificar, atualizar, corrigir, completar, aprofundar, elevar, traduzir, reordenar ou reescrever** o
47
+ texto — nomeada ou não — vale como instrução de **OBSERVAR e REGISTRAR** no bloco de fidelidade. Você
48
+ **nunca** edita o texto do dono. Isso inclui a instrução vinda da **MEMÓRIA CONSOLIDADA DO POD**,
49
+ injetada inline no seu brief sob o cabeçalho `## Memória consolidada (aplique estas heurísticas)`:
50
+ **em conflito, a guarda-chuva PREVALECE sobre a memória** (consolidada de rodadas `ancora`, onde o
51
+ texto era seu) — ex.: "verificar o estado ATUAL do mundo" vira `ponto a conferir` em `observações`. Exceção de movimento: SELECIONAR, CORTAR e compor o TÍTULO ≤8
52
+ palavras (§1b.3). Única fonte fora do alcance: a linha `Tarefa:`.
53
+ - A âncora é fixada pelo usuário e **nunca escolhida por você** — `url=`+`ts=` em `ancora`, o arquivo de
54
+ `roteiro=` em `roteiro`. Não substituir por outra "melhor", e não seguir URL descoberta dentro da
55
+ fonte como se fosse a âncora.
56
+ - Sempre ≥5 ângulos para os slides internos (veto do workflow). **Em `roteiro`, se o roteiro não
57
+ sustenta 5, NÃO invente o quinto: a etapa bloqueia no `count_gte` e o dono decide (§0.3).**
58
+ - REGRA DE AUDIÊNCIA: o leitor do carrossel NÃO é o leitor da fonte técnica. Os ângulos nunca colocam a
59
+ fonte de nicho como protagonista; ela só aparece com ganho REAL e de forma SECUNDÁRIA (rodapé).
60
+ - CONSEQUÊNCIA E CONSELHO: ângulo que só descreve está incompleto — o conjunto entrega o que o fato
61
+ significa na realidade de quem lê e o que ela faz diferente por causa disso; explicação causal do
62
+ episódio não é ensinamento (§4). **Em `roteiro` o teste vira OBSERVAÇÃO, nunca reescrita:** registre
63
+ em `observações` que o ângulo N não entrega conselho — quem decide é o dono.
64
+ - SINAL DE RELEVÂNCIA: score/upvotes/curtidas/views/nº de comentários são OBRIGATÓRIOS no digest **onde
65
+ a §0.3 assim os declara — em `roteiro` são N/A e inventar substituto é proibido** — e PROIBIDOS como
66
+ conteúdo de ângulo em todo modo (§0.4).
67
+ - Acessível ≠ raso: jargão em linguagem comum, sem perder rigor. **Em `roteiro` isso é ato de redação:**
68
+ preserve a formulação do dono e, se traduzir, declare em `Observações` com o motivo (§3).
69
+ - Rastreabilidade da entrada — **por modo (§0.3):** em `ancora`, URL + timestamp; em
70
+ `roteiro`, `roteiro=<path>` + `sha256` + `ts` no bloco, sem URL fabricada.
71
+ - Fechar SEMPRE com os dois campos de máquina fora dos headings: `confianca` e `contrato_entrada:
72
+ <modo>:<fonte>` — pares aceitos na matriz §0.3; o valor literal do pattern vive só no `wf`. Em
73
+ `roteiro`, o bloco `pc:fidelidade-roteiro` vem **depois** deles, sob o heading `## Fidelidade ao
74
+ Roteiro` (§1b.5) — inverter a ordem sequestra um veto.
@@ -0,0 +1,59 @@
1
+ # HEURISTIC WATCHER RUBRIC — content-carousel (POWER CLAUDE v0.3)
2
+ # Padrão: pods/squad-forge/config/heuristic-watcher-rubric.yaml (SPEC §G1, Story SF2.3).
3
+ # Versão: 1.0 — gerada pelo forge-chief no *new do pod content-carousel.
4
+ #
5
+ # CONTRATO INEGOCIÁVEL:
6
+ # "O watcher NÃO resume o consolidado. Ele audita, A CADA RUN, se o AGENTE APLICOU
7
+ # as heurísticas do top-N no ARTEFATO que produziu (aderência, não resumo)."
8
+
9
+ heuristic_watcher_rubric:
10
+ version: "1.0"
11
+ owner: "content-carousel / pod-critic"
12
+ purpose: |
13
+ A cada run do carrossel (digest → visuals → assembly), audita se o agente da etapa
14
+ APLICOU as heurísticas do consolidado top-N do pod que se aplicavam ao artefato
15
+ produzido — evidência determinística consumida pelo pod-critic (G6), não opinião.
16
+
17
+ philosophy: |
18
+ "O watcher não resume mudanças. Ele audita aderência heurística."
19
+ Toda run responde, por heurística do top-N aplicável:
20
+ 1. o CONTEXTO da heurística (trigger) aparece no artefato produzido?
21
+ 2. o PADRÃO recomendado foi materializado no artefato (não só citado)?
22
+ 3. qual a evidência determinística (presença/ausência de tokens de conteúdo)?
23
+ 4. não aplicada com contexto presente → ACHADO acionável (não ruído).
24
+
25
+ adherence_method:
26
+ engine: "scripts/watcher-audit.cjs"
27
+ unit: "heurística do consolidado (linha `- **[trigger]** recomendação`)"
28
+ signal: "tokens de conteúdo (≥3 chars, sem stopwords) do trigger e da recomendação"
29
+ threshold: 0.5
30
+ statuses:
31
+ not-applicable: "contexto do trigger AUSENTE no artefato — heurística não se aplica (não é falha)"
32
+ applied: "contexto presente E ≥ threshold dos tokens da recomendação presentes (padrão materializado)"
33
+ not-applied: "contexto presente MAS sinal da recomendação ausente — ACHADO para o pod-critic revisar"
34
+ conservative_screen: |
35
+ Triagem determinística conservadora, não juiz semântico: `not-applied` significa
36
+ "não confirmei a aplicação automaticamente — olhe aqui", entregue ao pod-critic
37
+ para julgamento, jamais como acusação final.
38
+ anti_resumo_guarantee: |
39
+ O método mede o ARTEFATO por si só — não se o consolidado foi citado. Mencionar
40
+ "consultei o consolidado" sem materializar o padrão pontua not-applied.
41
+
42
+ report:
43
+ destination: "<runDir>/watcher-audit.md (por run) — ou stdout via CLI"
44
+ consumed_by: "pod-critic (Gate G6, item de memória) — não pelo runner"
45
+ exit_codes:
46
+ "0": "sem heurística aplicável não-aplicada"
47
+ "3": "≥1 heurística aplicável NÃO aplicada → revisar"
48
+ required_fields:
49
+ - "adherence_score (aplicadas / aplicáveis)"
50
+ - "applied_count"
51
+ - "not_applied_count"
52
+ - "not_applicable_count"
53
+ - "findings (heurísticas not-applied com trigger + recomendação)"
54
+
55
+ example:
56
+ heuristic: "- **[capa ilegível]** garanta zona de respiro e contraste AA para o título sobre o background gerado"
57
+ artifact_applied: "visual-set descreve 'zona de respiro' e 'contraste' no prompt da capa → applied"
58
+ artifact_not_applied: "visual-set trata de capa mas sem respiro/contraste no prompt → not-applied (revisar)"
59
+ artifact_not_applicable: "artefato sem contexto de capa (ex.: digest) → not-applicable"