sinapse-ai 9.3.0 → 9.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/.claude/CLAUDE.md +60 -341
  2. package/.claude/hooks/enforce-architecture-first.py +197 -197
  3. package/.claude/hooks/enforce-git-push-authority.sh +25 -4
  4. package/.claude/hooks/mind-clone-governance.py +193 -193
  5. package/.claude/hooks/read-protection.py +152 -152
  6. package/.claude/hooks/sql-governance.py +183 -183
  7. package/.claude/hooks/verify-packages.cjs +83 -0
  8. package/.claude/hooks/write-path-validation.py +195 -195
  9. package/.claude/rules/agent-authority.md +6 -0
  10. package/.claude/rules/agent-handoff.md +5 -0
  11. package/.claude/rules/cross-squad-routing.md +5 -0
  12. package/.claude/rules/hook-governance.md +7 -0
  13. package/.claude/rules/mandatory-delegation.md +24 -0
  14. package/.claude/rules/mcp-usage.md +3 -1
  15. package/.claude/rules/project-intelligence.md +63 -0
  16. package/.claude/rules/response-format.md +4 -0
  17. package/.claude/rules/safe-collaboration.md +14 -2
  18. package/.claude/rules/security-data-protection.md +27 -0
  19. package/.claude/rules/squad-awareness.md +96 -68
  20. package/.claude/rules/token-economy.md +148 -0
  21. package/.claude/rules/tool-examples.md +6 -0
  22. package/.claude/rules/workflow-execution.md +7 -0
  23. package/.codex/agents/analyst.md +342 -71
  24. package/.codex/agents/architect.md +533 -68
  25. package/.codex/agents/data-engineer.md +530 -106
  26. package/.codex/agents/developer.md +657 -0
  27. package/.codex/agents/devops.md +639 -69
  28. package/.codex/agents/product-lead.md +362 -0
  29. package/.codex/agents/project-lead.md +405 -0
  30. package/.codex/agents/quality-gate.md +538 -0
  31. package/.codex/agents/sinapse-orqx.md +9 -7
  32. package/.codex/agents/sprint-lead.md +315 -0
  33. package/.codex/agents/squad-creator.md +402 -0
  34. package/.codex/agents/ux-design-expert.md +523 -0
  35. package/.codex/delegation-matrix.json +756 -44
  36. package/.codex/handoff-packet.schema.json +30 -6
  37. package/.sinapse-ai/core/code-intel/registry-syncer.js +56 -3
  38. package/.sinapse-ai/core/doctor/checks/agent-memory.js +5 -1
  39. package/.sinapse-ai/core/doctor/checks/claude-md.js +4 -1
  40. package/.sinapse-ai/core/doctor/checks/code-intel.js +5 -1
  41. package/.sinapse-ai/core/doctor/checks/commands-count.js +4 -1
  42. package/.sinapse-ai/core/doctor/checks/constitution-consistency.js +4 -1
  43. package/.sinapse-ai/core/doctor/checks/core-config.js +4 -1
  44. package/.sinapse-ai/core/doctor/checks/entity-registry.js +6 -1
  45. package/.sinapse-ai/core/doctor/checks/git-hooks.js +5 -1
  46. package/.sinapse-ai/core/doctor/checks/graph-dashboard.js +4 -1
  47. package/.sinapse-ai/core/doctor/checks/hooks-claude-count.js +5 -1
  48. package/.sinapse-ai/core/doctor/checks/ide-sync.js +4 -1
  49. package/.sinapse-ai/core/doctor/checks/node-version.js +4 -1
  50. package/.sinapse-ai/core/doctor/checks/npm-packages.js +4 -1
  51. package/.sinapse-ai/core/doctor/checks/rules-files.js +4 -1
  52. package/.sinapse-ai/core/doctor/checks/settings-json.js +4 -1
  53. package/.sinapse-ai/core/doctor/checks/skills-count.js +4 -1
  54. package/.sinapse-ai/core/doctor/index.js +157 -50
  55. package/.sinapse-ai/core/ids/registry-updater.js +6 -1
  56. package/.sinapse-ai/core/logger/index.js +319 -0
  57. package/.sinapse-ai/core/orchestration/terminal-spawner.js +2 -2
  58. package/.sinapse-ai/core/telemetry/index.js +247 -0
  59. package/.sinapse-ai/data/entity-registry.yaml +1060 -808
  60. package/.sinapse-ai/development/agents/analyst.md +90 -0
  61. package/.sinapse-ai/development/agents/architect.md +78 -0
  62. package/.sinapse-ai/development/agents/data-engineer.md +38 -0
  63. package/.sinapse-ai/development/agents/developer.md +97 -0
  64. package/.sinapse-ai/development/agents/devops.md +121 -0
  65. package/.sinapse-ai/development/agents/product-lead.md +27 -0
  66. package/.sinapse-ai/development/agents/project-lead.md +28 -0
  67. package/.sinapse-ai/development/agents/quality-gate.md +89 -0
  68. package/.sinapse-ai/development/agents/sprint-lead/MEMORY.md +8 -0
  69. package/.sinapse-ai/development/agents/sprint-lead.md +28 -0
  70. package/.sinapse-ai/development/agents/squad-creator.md +58 -0
  71. package/.sinapse-ai/development/agents/ux-design-expert.md +28 -0
  72. package/.sinapse-ai/development/checklists/agent-quality-gate.md +27 -0
  73. package/.sinapse-ai/development/checklists/brownfield-compatibility-checklist.md +20 -0
  74. package/.sinapse-ai/development/checklists/code-review-checklist.md +106 -0
  75. package/.sinapse-ai/development/checklists/issue-triage-checklist.md +9 -0
  76. package/.sinapse-ai/development/checklists/memory-audit-checklist.md +16 -0
  77. package/.sinapse-ai/development/checklists/pr-quality-checklist.md +72 -0
  78. package/.sinapse-ai/development/checklists/security-deployment-checklist.md +54 -0
  79. package/.sinapse-ai/development/checklists/self-critique-checklist.md +19 -1
  80. package/.sinapse-ai/development/knowledge-base/agent-communication-protocol.md +127 -0
  81. package/.sinapse-ai/development/knowledge-base/database-scaling-patterns.md +374 -0
  82. package/.sinapse-ai/development/knowledge-base/environment-deployment-patterns.md +353 -0
  83. package/.sinapse-ai/development/knowledge-base/gotchas-patterns.md +224 -0
  84. package/.sinapse-ai/development/knowledge-base/infrastructure-decision-framework.md +221 -0
  85. package/.sinapse-ai/development/knowledge-base/security-pre-deploy-checklist.md +410 -0
  86. package/.sinapse-ai/development/knowledge-base/software-architecture-patterns.md +299 -0
  87. package/.sinapse-ai/development/knowledge-base/token-economy-guide.md +198 -0
  88. package/.sinapse-ai/development/scripts/populate-entity-registry.js +5 -1
  89. package/.sinapse-ai/development/skills/captcha-handler.md +82 -0
  90. package/.sinapse-ai/development/skills/chrome-brain.md +81 -0
  91. package/.sinapse-ai/development/skills/debug.md +57 -0
  92. package/.sinapse-ai/development/skills/deploy-readiness.md +93 -0
  93. package/.sinapse-ai/development/skills/fast-review.md +69 -0
  94. package/.sinapse-ai/development/skills/model-router.md +92 -0
  95. package/.sinapse-ai/development/skills/research-synthesis.md +77 -0
  96. package/.sinapse-ai/development/skills/security-scan.md +73 -0
  97. package/.sinapse-ai/development/skills/sinapse-methodology.md +175 -0
  98. package/.sinapse-ai/development/skills/story-fast-track.md +71 -0
  99. package/.sinapse-ai/development/skills/verify.md +53 -0
  100. package/.sinapse-ai/development/tasks/dev-develop-story.md +10 -0
  101. package/.sinapse-ai/development/tasks/environment-promotion-pipeline.md +582 -0
  102. package/.sinapse-ai/development/tasks/generate-agent-handoff.md +223 -0
  103. package/.sinapse-ai/development/tasks/infrastructure-assessment.md +432 -0
  104. package/.sinapse-ai/development/tasks/load-testing-setup.md +611 -0
  105. package/.sinapse-ai/development/tasks/observability-blueprint.md +562 -0
  106. package/.sinapse-ai/development/templates/legal/breach-notification-tmpl.md +113 -0
  107. package/.sinapse-ai/development/templates/legal/privacy-policy-tmpl.md +93 -0
  108. package/.sinapse-ai/development/templates/legal/terms-of-service-tmpl.md +85 -0
  109. package/.sinapse-ai/development/templates/service-template/README.md.hbs +159 -159
  110. package/.sinapse-ai/development/templates/service-template/__tests__/index.test.ts.hbs +238 -238
  111. package/.sinapse-ai/development/templates/service-template/client.ts.hbs +404 -404
  112. package/.sinapse-ai/development/templates/service-template/errors.ts.hbs +183 -183
  113. package/.sinapse-ai/development/templates/service-template/index.ts.hbs +121 -121
  114. package/.sinapse-ai/development/templates/service-template/package.json.hbs +88 -88
  115. package/.sinapse-ai/development/templates/service-template/types.ts.hbs +146 -146
  116. package/.sinapse-ai/development/templates/squad/agent-template.md +17 -4
  117. package/.sinapse-ai/development/templates/squad/checklist-template.md +13 -5
  118. package/.sinapse-ai/development/templates/squad/task-template.md +7 -0
  119. package/.sinapse-ai/development/templates/squad/workflow-template.yaml +7 -0
  120. package/.sinapse-ai/development/templates/squad-template/LICENSE +22 -22
  121. package/.sinapse-ai/development/workflows/fast-track.yaml +87 -0
  122. package/.sinapse-ai/development/workflows/story-development-cycle.yaml +40 -1
  123. package/.sinapse-ai/hooks/ids-post-commit.js +22 -0
  124. package/.sinapse-ai/infrastructure/contracts/compatibility/README.md +42 -0
  125. package/.sinapse-ai/infrastructure/contracts/compatibility/sinapse-current.yaml +35 -0
  126. package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -127
  127. package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -71
  128. package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -51
  129. package/.sinapse-ai/infrastructure/scripts/pr-review-ai.js +16 -13
  130. package/.sinapse-ai/infrastructure/scripts/setup-project-infra.js +128 -0
  131. package/.sinapse-ai/infrastructure/scripts/test-discovery.js +8 -3
  132. package/.sinapse-ai/infrastructure/scripts/validate-codex-delegation.js +3 -1
  133. package/.sinapse-ai/infrastructure/scripts/validate-manifest-parity.js +380 -0
  134. package/.sinapse-ai/infrastructure/scripts/validate-parity.js +76 -25
  135. package/.sinapse-ai/infrastructure/templates/coderabbit.yaml.template +280 -280
  136. package/.sinapse-ai/infrastructure/templates/config/env.example +16 -0
  137. package/.sinapse-ai/infrastructure/templates/config/gitignore-additions.tmpl +59 -0
  138. package/.sinapse-ai/infrastructure/templates/github/CODEOWNERS.template +12 -0
  139. package/.sinapse-ai/infrastructure/templates/github/PULL_REQUEST_TEMPLATE.md +29 -0
  140. package/.sinapse-ai/infrastructure/templates/github/ci-template.yml +77 -0
  141. package/.sinapse-ai/infrastructure/templates/github/issue-templates/bug_report.md +34 -0
  142. package/.sinapse-ai/infrastructure/templates/github/issue-templates/feature_request.md +19 -0
  143. package/.sinapse-ai/infrastructure/templates/github-workflows/ci.yml.template +170 -170
  144. package/.sinapse-ai/infrastructure/templates/github-workflows/pr-automation.yml.template +331 -331
  145. package/.sinapse-ai/infrastructure/templates/github-workflows/release.yml.template +197 -197
  146. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +19 -19
  147. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-node.tmpl +86 -86
  148. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-python.tmpl +146 -146
  149. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-sinapse-base.tmpl +64 -64
  150. package/.sinapse-ai/infrastructure/templates/sinapse-sync.yaml.template +183 -183
  151. package/.sinapse-ai/install-manifest.yaml +333 -162
  152. package/.sinapse-ai/local-config.yaml.template +65 -65
  153. package/.sinapse-ai/monitor/hooks/lib/__init__.py +2 -2
  154. package/.sinapse-ai/monitor/hooks/lib/enrich.py +59 -59
  155. package/.sinapse-ai/monitor/hooks/lib/send_event.py +48 -48
  156. package/.sinapse-ai/monitor/hooks/notification.py +30 -30
  157. package/.sinapse-ai/monitor/hooks/post_tool_use.py +46 -46
  158. package/.sinapse-ai/monitor/hooks/pre_compact.py +30 -30
  159. package/.sinapse-ai/monitor/hooks/pre_tool_use.py +41 -41
  160. package/.sinapse-ai/monitor/hooks/stop.py +30 -30
  161. package/.sinapse-ai/monitor/hooks/subagent_stop.py +30 -30
  162. package/.sinapse-ai/monitor/hooks/user_prompt_submit.py +39 -39
  163. package/.sinapse-ai/product/templates/adr.hbs +126 -126
  164. package/.sinapse-ai/product/templates/dbdr.hbs +242 -242
  165. package/.sinapse-ai/product/templates/epic.hbs +213 -213
  166. package/.sinapse-ai/product/templates/pmdr.hbs +187 -187
  167. package/.sinapse-ai/product/templates/prd-v2.0.hbs +217 -217
  168. package/.sinapse-ai/product/templates/prd.hbs +202 -202
  169. package/.sinapse-ai/product/templates/story-tmpl.yaml +59 -0
  170. package/.sinapse-ai/product/templates/story.hbs +264 -264
  171. package/.sinapse-ai/product/templates/task.hbs +171 -171
  172. package/.sinapse-ai/product/templates/tmpl-comment-on-examples.sql +159 -159
  173. package/.sinapse-ai/product/templates/tmpl-migration-script.sql +92 -92
  174. package/.sinapse-ai/product/templates/tmpl-rls-granular-policies.sql +105 -105
  175. package/.sinapse-ai/product/templates/tmpl-rls-kiss-policy.sql +11 -11
  176. package/.sinapse-ai/product/templates/tmpl-rls-roles.sql +136 -136
  177. package/.sinapse-ai/product/templates/tmpl-rls-simple.sql +78 -78
  178. package/.sinapse-ai/product/templates/tmpl-rls-tenant.sql +153 -153
  179. package/.sinapse-ai/product/templates/tmpl-rollback-script.sql +78 -78
  180. package/.sinapse-ai/product/templates/tmpl-seed-data.sql +141 -141
  181. package/.sinapse-ai/product/templates/tmpl-smoke-test.sql +17 -17
  182. package/.sinapse-ai/product/templates/tmpl-staging-copy-merge.sql +140 -140
  183. package/.sinapse-ai/product/templates/tmpl-stored-proc.sql +141 -141
  184. package/.sinapse-ai/product/templates/tmpl-trigger.sql +153 -153
  185. package/.sinapse-ai/product/templates/tmpl-view-materialized.sql +134 -134
  186. package/.sinapse-ai/product/templates/tmpl-view.sql +178 -178
  187. package/.sinapse-ai/scripts/diagnostics/health-dashboard/package-lock.json +427 -355
  188. package/LICENSE +34 -34
  189. package/README.en.md +167 -20
  190. package/README.md +190 -22
  191. package/bin/cli.js +510 -196
  192. package/bin/postinstall.js +564 -0
  193. package/bin/sinapse-cli +283 -283
  194. package/bin/sinapse-graph.js +9 -0
  195. package/bin/sinapse-init.js +36 -4
  196. package/bin/sinapse-minimal.js +20 -9
  197. package/bin/sinapse.js +202 -122
  198. package/bin/utils/deprecation-warning.js +46 -0
  199. package/bin/utils/pre-push-safety.js +14 -0
  200. package/docs/TELEMETRY.md +131 -0
  201. package/docs/chrome-brain-upgrade-plan.md +624 -0
  202. package/docs/codex-integration-process.md +22 -0
  203. package/docs/codex-parity-program.md +27 -0
  204. package/docs/framework/orqx-plan.md +1 -1
  205. package/docs/ide-integration.md +36 -0
  206. package/docs/installation/chrome-brain.md +17 -7
  207. package/docs/mega-upgrade-orchestration-plan.md +71 -0
  208. package/docs/pt/contributing.md +20 -0
  209. package/docs/research-synthesis-for-upgrade.md +511 -0
  210. package/docs/security-audit-report.md +306 -0
  211. package/package.json +20 -8
  212. package/packages/installer/src/config/configure-environment.js +19 -44
  213. package/packages/installer/src/detection/detect-project-type.js +181 -63
  214. package/packages/installer/src/installer/manifest-signature.js +32 -17
  215. package/packages/installer/src/wizard/i18n.js +12 -0
  216. package/packages/installer/src/wizard/ide-config-generator.js +8 -39
  217. package/packages/installer/src/wizard/index.js +119 -14
  218. package/packages/installer/src/wizard/questions.js +2 -3
  219. package/packages/installer/tests/integration/environment-configuration.test.js +7 -5
  220. package/packages/installer/tests/unit/detection/detect-project-type.test.js +138 -1
  221. package/packages/installer/tests/unit/doctor/doctor-orchestrator.test.js +3 -3
  222. package/packages/sinapse-install/bin/edmcp.js +0 -0
  223. package/packages/sinapse-install/bin/sinapse-install.js +0 -0
  224. package/packages/sinapse-pro-cli/bin/sinapse-pro.js +0 -0
  225. package/scripts/check-markdown-links.py +353 -353
  226. package/scripts/coverage-report-summary.js +169 -0
  227. package/scripts/generate-install-manifest.js +6 -2
  228. package/scripts/release-readiness.js +169 -0
  229. package/scripts/test-install-matrix-local.sh +153 -0
  230. package/scripts/validate-install-docs.js +394 -0
  231. package/scripts/validate-no-external-refs.js +376 -0
  232. package/scripts/validate-squad-orqx.js +302 -0
  233. package/scripts/validate-story-meta.js +263 -0
  234. package/squads/claude-code-mastery/CHANGELOG.md +1 -1
  235. package/squads/claude-code-mastery/README.md +2 -2
  236. package/squads/claude-code-mastery/knowledge-base/claude-code-internals-reference.md +927 -0
  237. package/squads/claude-code-mastery/squad.yaml +1 -1
  238. package/squads/squad-artdir/README.md +90 -0
  239. package/squads/squad-artdir/agents/accessibility-guardian.md +184 -0
  240. package/squads/squad-artdir/agents/artdir-orqx.md +145 -0
  241. package/squads/squad-artdir/agents/color-psychologist.md +166 -0
  242. package/squads/squad-artdir/agents/cro-persuasion.md +161 -0
  243. package/squads/squad-artdir/agents/design-system-architect.md +100 -0
  244. package/squads/squad-artdir/agents/ia-architect.md +169 -0
  245. package/squads/squad-artdir/agents/interaction-designer.md +162 -0
  246. package/squads/squad-artdir/agents/layout-engineer.md +163 -0
  247. package/squads/squad-artdir/agents/motion-architect.md +185 -0
  248. package/squads/squad-artdir/agents/platform-aesthetic-director.md +84 -0
  249. package/squads/squad-artdir/agents/premium-packaging-strategist.md +107 -0
  250. package/squads/squad-artdir/agents/product-surface-director.md +86 -0
  251. package/squads/squad-artdir/agents/type-systemist.md +138 -0
  252. package/squads/squad-artdir/agents/visual-strategist.md +127 -0
  253. package/squads/squad-artdir/checklists/seven-pillars-validation-checklist.md +172 -0
  254. package/squads/squad-artdir/knowledge-base/case-nyo-ia-reference.md +289 -0
  255. package/squads/squad-artdir/knowledge-base/deliverables-templates.md +457 -0
  256. package/squads/squad-artdir/knowledge-base/motion-technique-catalog.md +247 -0
  257. package/squads/squad-artdir/knowledge-base/premium-packaging-principles.md +133 -0
  258. package/squads/squad-artdir/knowledge-base/psychological-toolkit.md +229 -0
  259. package/squads/squad-artdir/knowledge-base/saas-art-direction-canon.md +242 -0
  260. package/squads/squad-artdir/knowledge-base/seven-pillars-framework.md +289 -0
  261. package/squads/squad-artdir/knowledge-base/ten-pillars-framework.md +221 -0
  262. package/squads/squad-artdir/package.json +20 -0
  263. package/squads/squad-artdir/squad.yaml +271 -0
  264. package/squads/squad-artdir/tasks/audit-conversion.md +97 -0
  265. package/squads/squad-artdir/tasks/audit-drift-multi-surface.md +55 -0
  266. package/squads/squad-artdir/tasks/consult-saas-canon.md +54 -0
  267. package/squads/squad-artdir/tasks/create-art-direction-brief.md +110 -0
  268. package/squads/squad-artdir/tasks/create-premium-packaging-brief.md +61 -0
  269. package/squads/squad-artdir/tasks/create-wireflow.md +84 -0
  270. package/squads/squad-artdir/tasks/design-color-system.md +81 -0
  271. package/squads/squad-artdir/tasks/design-product-surface.md +60 -0
  272. package/squads/squad-artdir/tasks/design-token-system.md +58 -0
  273. package/squads/squad-artdir/tasks/diagnose-visual-language.md +92 -0
  274. package/squads/squad-artdir/tasks/first-5-minutes-choreography.md +65 -0
  275. package/squads/squad-artdir/tasks/specify-motion-system.md +84 -0
  276. package/squads/squad-artdir/tasks/validate-against-pillars.md +143 -0
  277. package/squads/squad-artdir/templates/art-direction-brief-template.md +215 -0
  278. package/squads/squad-artdir/workflows/conversion-audit-cycle.yaml +78 -0
  279. package/squads/squad-artdir/workflows/full-art-direction-cycle.yaml +98 -0
  280. package/squads/squad-artdir/workflows/saas-platform-art-direction-cycle.yaml +174 -0
  281. package/squads/squad-brand/knowledge-base/ai-visual-generation-canon.md +234 -0
  282. package/squads/squad-brand/knowledge-base/archetype-brand-mapping.md +12 -1
  283. package/squads/squad-brand/knowledge-base/brand-activism-cultural-branding.md +216 -0
  284. package/squads/squad-brand/knowledge-base/brand-audit-criteria.md +58 -0
  285. package/squads/squad-brand/knowledge-base/brand-digital-strategy.md +188 -0
  286. package/squads/squad-brand/knowledge-base/brand-legal-ip.md +222 -0
  287. package/squads/squad-brand/knowledge-base/brand-naming-framework.md +163 -0
  288. package/squads/squad-brand/knowledge-base/branding-master-reference.md +1001 -0
  289. package/squads/squad-brand/knowledge-base/color-psychology.md +25 -12
  290. package/squads/squad-brand/knowledge-base/employer-personal-branding.md +206 -0
  291. package/squads/squad-brand/knowledge-base/routing-catalog.md +34 -0
  292. package/squads/squad-brand/knowledge-base/sonic-branding-principles.md +6 -1
  293. package/squads/squad-brand/knowledge-base/typography-personality.md +34 -0
  294. package/squads/squad-brand/squad.yaml +20 -6
  295. package/squads/squad-claude/knowledge-base/context-window-optimization.md +334 -0
  296. package/squads/squad-claude/knowledge-base/knowledge-architecture-reference.md +403 -0
  297. package/squads/squad-claude/knowledge-base/memory-systems-reference.md +412 -0
  298. package/squads/squad-claude/knowledge-base/obsidian-claude-integration.md +423 -0
  299. package/squads/squad-claude/knowledge-base/retrieval-augmented-generation.md +320 -0
  300. package/squads/squad-claude/knowledge-base/skill-creation-patterns.md +380 -0
  301. package/squads/squad-claude/knowledge-base/swarm-orchestration-patterns.md +411 -0
  302. package/squads/squad-cloning/knowledge-base/clone-quality-assurance.md +211 -0
  303. package/squads/squad-cloning/knowledge-base/confidence-scoring.md +51 -0
  304. package/squads/squad-cloning/knowledge-base/cross-squad-deployment.md +47 -0
  305. package/squads/squad-cloning/knowledge-base/ethical-guidelines.md +237 -0
  306. package/squads/squad-cloning/knowledge-base/knowledge-graph-for-clones.md +295 -0
  307. package/squads/squad-cloning/knowledge-base/memory-architecture-for-clones.md +229 -0
  308. package/squads/squad-cloning/knowledge-base/multi-agent-deployment-patterns.md +320 -0
  309. package/squads/squad-cloning/knowledge-base/skill-standard-for-clones.md +262 -0
  310. package/squads/squad-cloning/knowledge-base/sop-extraction-guide.md +243 -0
  311. package/squads/squad-commercial/knowledge-base/account-based-selling.md +206 -0
  312. package/squads/squad-commercial/knowledge-base/ai-as-competitive-infrastructure.md +14 -0
  313. package/squads/squad-commercial/knowledge-base/ai-in-sales.md +199 -0
  314. package/squads/squad-commercial/knowledge-base/brazilian-sales-context.md +195 -0
  315. package/squads/squad-commercial/knowledge-base/customer-success-operations.md +83 -2
  316. package/squads/squad-commercial/knowledge-base/prospecting-pipeline-generation.md +69 -0
  317. package/squads/squad-commercial/knowledge-base/sales-enablement-playbook.md +260 -0
  318. package/squads/squad-commercial/knowledge-base/sales-methodology-comparison.md +185 -0
  319. package/squads/squad-commercial/knowledge-base/sales-revenue-master-reference.md +1123 -0
  320. package/squads/squad-content/knowledge-base/ai-native-content-loop.md +220 -0
  321. package/squads/squad-content/knowledge-base/brazilian-content-context.md +176 -0
  322. package/squads/squad-content/knowledge-base/competitor-analysis-methods.md +40 -1
  323. package/squads/squad-content/knowledge-base/content-architecture-taxonomy.md +206 -0
  324. package/squads/squad-content/knowledge-base/content-formats-encyclopedia.md +58 -1
  325. package/squads/squad-content/knowledge-base/content-references-bibliography.md +130 -0
  326. package/squads/squad-content/knowledge-base/content-strategy-master-reference.md +1097 -0
  327. package/squads/squad-content/knowledge-base/content-tech-stack.md +150 -0
  328. package/squads/squad-content/knowledge-base/copywriting-formulas-library.md +188 -0
  329. package/squads/squad-content/knowledge-base/email-newsletter-strategy.md +161 -0
  330. package/squads/squad-content/knowledge-base/platform-algorithm-intelligence.md +86 -1
  331. package/squads/squad-content/knowledge-base/signal-intelligence-v2.md +234 -0
  332. package/squads/squad-content/knowledge-base/social-algorithms-master-reference.md +1007 -0
  333. package/squads/squad-content/knowledge-base/task-ownership-map.md +235 -0
  334. package/squads/squad-content/knowledge-base/video-audio-content-playbook.md +218 -0
  335. package/squads/squad-content/squad.yaml +187 -27
  336. package/squads/squad-copy/knowledge-base/ai-copy-human-loop-canon.md +235 -0
  337. package/squads/squad-copy/knowledge-base/ai-copy-production.md +254 -0
  338. package/squads/squad-copy/knowledge-base/brazilian-copywriting-context.md +242 -0
  339. package/squads/squad-copy/knowledge-base/email-copywriting-system.md +299 -0
  340. package/squads/squad-copy/knowledge-base/landing-page-copy-architecture.md +267 -0
  341. package/squads/squad-copy/knowledge-base/power-words-catalog.md +205 -0
  342. package/squads/squad-copy/knowledge-base/seo-copywriting.md +255 -0
  343. package/squads/squad-copy/knowledge-base/video-script-copywriting.md +239 -0
  344. package/squads/squad-copy/squad.yaml +19 -4
  345. package/squads/squad-council/knowledge-base/brand-strategy-models.md +193 -0
  346. package/squads/squad-council/knowledge-base/growth-strategy-models.md +267 -0
  347. package/squads/squad-council/knowledge-base/innovation-disruption-frameworks.md +193 -0
  348. package/squads/squad-council/knowledge-base/market-analysis-frameworks.md +240 -0
  349. package/squads/squad-council/knowledge-base/organizational-leadership-models.md +212 -0
  350. package/squads/squad-council/knowledge-base/sales-strategy-models.md +215 -0
  351. package/squads/squad-courses/knowledge-base/course-launch-strategy.md +251 -0
  352. package/squads/squad-courses/knowledge-base/domain-advocacia-curriculum.md +385 -0
  353. package/squads/squad-courses/knowledge-base/domain-contabilidade-curriculum.md +266 -0
  354. package/squads/squad-courses/knowledge-base/platform-comparison.md +68 -0
  355. package/squads/squad-courses/knowledge-base/video-production-guide.md +70 -0
  356. package/squads/squad-cybersecurity/knowledge-base/cloud-security-reference.md +363 -0
  357. package/squads/squad-cybersecurity/knowledge-base/compliance-frameworks.md +273 -0
  358. package/squads/squad-cybersecurity/knowledge-base/database-security.md +438 -0
  359. package/squads/squad-cybersecurity/knowledge-base/incident-response-playbook.md +420 -0
  360. package/squads/squad-cybersecurity/knowledge-base/network-security-reference.md +477 -0
  361. package/squads/squad-cybersecurity/knowledge-base/penetration-testing-methodology.md +350 -0
  362. package/squads/squad-cybersecurity/knowledge-base/vulnerability-management.md +349 -0
  363. package/squads/squad-design/knowledge-base/brazilian-design-context.md +223 -0
  364. package/squads/squad-design/knowledge-base/component-api-patterns.md +208 -4
  365. package/squads/squad-design/knowledge-base/cross-surface-token-canon.md +209 -0
  366. package/squads/squad-design/knowledge-base/design-system-master-reference.md +1302 -0
  367. package/squads/squad-design/knowledge-base/design-systems-frameworks.md +91 -1
  368. package/squads/squad-design/knowledge-base/responsive-modern-css.md +96 -4
  369. package/squads/squad-design/knowledge-base/wcag-aria-reference.md +117 -5
  370. package/squads/squad-design/knowledge-base/web-performance-reference.md +127 -4
  371. package/squads/squad-design/squad.yaml +19 -4
  372. package/squads/squad-finance/knowledge-base/brazilian-taxation.md +263 -0
  373. package/squads/squad-finance/knowledge-base/contabilidade-master-reference.md +998 -0
  374. package/squads/squad-finance/knowledge-base/finance-master-reference.md +946 -0
  375. package/squads/squad-finance/knowledge-base/financial-reporting-analysis.md +316 -0
  376. package/squads/squad-finance/knowledge-base/fintech-brazilian-context.md +242 -0
  377. package/squads/squad-finance/knowledge-base/fpa-planning-frameworks.md +286 -0
  378. package/squads/squad-finance/knowledge-base/ma-and-transactions.md +285 -0
  379. package/squads/squad-finance/knowledge-base/risk-management.md +233 -0
  380. package/squads/squad-finance/knowledge-base/startups-venture-capital.md +337 -0
  381. package/squads/squad-growth/knowledge-base/ai-growth-playbook.md +216 -0
  382. package/squads/squad-growth/knowledge-base/attribution-models.md +78 -0
  383. package/squads/squad-growth/knowledge-base/brazilian-growth-context.md +208 -0
  384. package/squads/squad-growth/knowledge-base/community-led-growth.md +175 -0
  385. package/squads/squad-growth/knowledge-base/content-marketing-flywheel.md +190 -0
  386. package/squads/squad-growth/knowledge-base/email-lifecycle-framework.md +192 -0
  387. package/squads/squad-growth/knowledge-base/growth-frameworks-catalog.md +82 -0
  388. package/squads/squad-growth/knowledge-base/growth-master-reference.md +1168 -0
  389. package/squads/squad-growth/knowledge-base/routing-catalog.md +53 -11
  390. package/squads/squad-paidmedia/knowledge-base/audiences-segmentation-deep.md +285 -0
  391. package/squads/squad-paidmedia/knowledge-base/creative-strategy-deep.md +294 -0
  392. package/squads/squad-paidmedia/knowledge-base/google-ads-account-architecture.md +87 -0
  393. package/squads/squad-paidmedia/knowledge-base/meta-ads-campaign-architecture.md +76 -0
  394. package/squads/squad-paidmedia/knowledge-base/paid-media-metrics-reference.md +117 -0
  395. package/squads/squad-paidmedia/knowledge-base/paid-traffic-master-reference.md +1308 -0
  396. package/squads/squad-paidmedia/knowledge-base/routing-catalog.md +95 -18
  397. package/squads/squad-paidmedia/knowledge-base/traffic-masters-frameworks.md +71 -0
  398. package/squads/squad-product/knowledge-base/brazilian-product-context.md +284 -0
  399. package/squads/squad-product/knowledge-base/discovery-methodology-playbook.md +141 -0
  400. package/squads/squad-product/knowledge-base/pm-frameworks-reference.md +125 -9
  401. package/squads/squad-product/knowledge-base/product-analytics-formulas.md +72 -0
  402. package/squads/squad-product/knowledge-base/product-led-growth-reference.md +155 -13
  403. package/squads/squad-product/knowledge-base/product-market-fit-framework.md +222 -0
  404. package/squads/squad-product/knowledge-base/routing-catalog.md +32 -0
  405. package/squads/squad-research/knowledge-base/agentic-second-brain-reference.md +591 -0
  406. package/squads/squad-research/knowledge-base/ai-augmented-research.md +212 -0
  407. package/squads/squad-research/knowledge-base/brazilian-market-research-sources.md +197 -0
  408. package/squads/squad-research/knowledge-base/community-platforms-reference.md +786 -0
  409. package/squads/squad-research/knowledge-base/community-research-methods.md +194 -0
  410. package/squads/squad-research/knowledge-base/mixed-methods-research-design.md +168 -0
  411. package/squads/squad-research/knowledge-base/network-effects-analysis.md +192 -0
  412. package/squads/squad-research/knowledge-base/qualitative-research-deep-methods.md +202 -0
  413. package/squads/squad-research/knowledge-base/quantitative-research-methods.md +208 -0
  414. package/squads/squad-research/knowledge-base/research-frameworks-encyclopedia.md +40 -0
  415. package/squads/squad-research/knowledge-base/research-synthesis-frameworks.md +223 -0
  416. package/squads/squad-storytelling/knowledge-base/brand-mythology-framework.md +236 -0
  417. package/squads/squad-storytelling/knowledge-base/brazilian-storytelling-context.md +237 -0
  418. package/squads/squad-storytelling/knowledge-base/data-storytelling.md +232 -0
  419. package/squads/squad-storytelling/knowledge-base/improv-storytelling.md +226 -0
  420. package/squads/squad-storytelling/knowledge-base/persuasion-narrative-techniques.md +269 -0
  421. package/squads/squad-storytelling/knowledge-base/social-movement-narratives.md +191 -0
  422. package/squads/squad-storytelling/knowledge-base/video-storytelling.md +252 -0
  423. package/.sinapse-ai/core/registry/service-registry.json +0 -6346
  424. package/.sinapse-ai/data/registry-update-log.jsonl +0 -1307
  425. package/.sinapse-ai/manifests/agents.csv +0 -29
  426. package/.sinapse-ai/manifests/tasks.csv +0 -204
  427. package/.sinapse-ai/manifests/workers.csv +0 -196
  428. package/squads/claude-code-mastery/data/swarm-orchestration-patterns.yaml +0 -378
  429. package/squads/squad-animations/knowledge-base/framer-motion-complete-reference.md +0 -710
  430. package/squads/squad-animations/knowledge-base/web-animations-api-view-transitions.md +0 -478
  431. package/squads/squad-growth/tasks/calculate-sample-size.md +0 -121
  432. package/squads/squad-paidmedia/tasks/calculate-sample-size.md +0 -57
@@ -1,197 +1,197 @@
1
- #!/usr/bin/env python3
2
- """
3
- Hook: Enforce Architecture-First Development
4
-
5
- REGRA: Código só pode ser criado/editado se existir documentação prévia.
6
-
7
- Este hook intercepta Write/Edit em paths de código e verifica se existe
8
- documentação aprovada antes de permitir a operação.
9
-
10
- Exit Codes:
11
- - 0: Permitido (doc existe ou path não requer doc)
12
- - 2: Bloqueado (doc não existe para path protegido)
13
- """
14
-
15
- import json
16
- import sys
17
- import os
18
- from pathlib import Path
19
-
20
- # =============================================================================
21
- # CONFIGURAÇÃO: Paths que EXIGEM documentação prévia
22
- # =============================================================================
23
-
24
- PROTECTED_PATHS = [
25
- # Edge Functions - exigem docs/architecture/{function-name}.md
26
- {
27
- "pattern": "supabase/functions/",
28
- "doc_patterns": [
29
- "docs/architecture/{name}.md",
30
- "docs/architecture/{name}-architecture.md",
31
- "docs/approved-plans/{name}.md",
32
- ],
33
- "extract_name": lambda p: p.split("supabase/functions/")[1].split("/")[0] if "supabase/functions/" in p else None,
34
- },
35
- # Migrations - exigem documentação de schema changes
36
- {
37
- "pattern": "supabase/migrations/",
38
- "doc_patterns": [
39
- "docs/approved-plans/migration-{name}.md",
40
- "docs/architecture/database-changes.md",
41
- ],
42
- "extract_name": lambda p: Path(p).stem if "supabase/migrations/" in p else None,
43
- "allow_if_exists": True, # Permite editar migrations existentes
44
- },
45
- ]
46
-
47
- # Paths que são SEMPRE permitidos (não exigem doc)
48
- ALWAYS_ALLOWED = [
49
- ".claude/",
50
- "docs/",
51
- "outputs/",
52
- "squads/",
53
- ".sinapse-ai/",
54
- ".sinapse-custom/",
55
- "node_modules/",
56
- ".git/",
57
- "package.json",
58
- "package-lock.json",
59
- "tsconfig.json",
60
- ".env",
61
- "README.md",
62
- ]
63
-
64
- # =============================================================================
65
- # LÓGICA DO HOOK
66
- # =============================================================================
67
-
68
- def get_project_root():
69
- """Obtém o root do projeto via variável de ambiente ou cwd."""
70
- return os.environ.get("CLAUDE_PROJECT_DIR", os.getcwd())
71
-
72
- def is_always_allowed(file_path: str) -> bool:
73
- """Verifica se o path está na lista de sempre permitidos."""
74
- for allowed in ALWAYS_ALLOWED:
75
- if allowed in file_path:
76
- return True
77
- return False
78
-
79
- def find_matching_protection(file_path: str) -> dict | None:
80
- """Encontra a regra de proteção que corresponde ao path."""
81
- for protection in PROTECTED_PATHS:
82
- if protection["pattern"] in file_path:
83
- return protection
84
- return None
85
-
86
- def check_documentation_exists(file_path: str, protection: dict, project_root: str) -> tuple[bool, str]:
87
- """
88
- Verifica se existe documentação para o path protegido.
89
-
90
- Returns:
91
- (exists: bool, doc_path: str | None)
92
- """
93
- extract_fn = protection.get("extract_name")
94
- if not extract_fn:
95
- return True, None
96
-
97
- name = extract_fn(file_path)
98
- if not name:
99
- return True, None
100
-
101
- # Verificar cada padrão de documentação
102
- for doc_pattern in protection["doc_patterns"]:
103
- doc_path = doc_pattern.format(name=name)
104
- full_doc_path = os.path.join(project_root, doc_path)
105
-
106
- if os.path.exists(full_doc_path):
107
- return True, doc_path
108
-
109
- # Se allow_if_exists e o arquivo já existe, permitir edição
110
- if protection.get("allow_if_exists"):
111
- full_file_path = os.path.join(project_root, file_path) if not file_path.startswith("/") else file_path
112
- if os.path.exists(full_file_path):
113
- return True, "(arquivo existente)"
114
-
115
- return False, None
116
-
117
- def format_required_docs(protection: dict, name: str) -> str:
118
- """Formata a lista de documentos aceitos."""
119
- docs = []
120
- for pattern in protection["doc_patterns"]:
121
- docs.append(f" - {pattern.format(name=name)}")
122
- return "\n".join(docs)
123
-
124
- def main():
125
- # Ler input do stdin
126
- try:
127
- input_data = json.load(sys.stdin)
128
- except json.JSONDecodeError:
129
- # Se não conseguir parsear, permitir (fail-open)
130
- sys.exit(0)
131
-
132
- tool_name = input_data.get("tool_name", "")
133
- tool_input = input_data.get("tool_input", {})
134
- file_path = tool_input.get("file_path", "")
135
-
136
- # Só processar Write e Edit
137
- if tool_name not in ["Write", "Edit"]:
138
- sys.exit(0)
139
-
140
- # Normalizar path (remover prefixo absoluto se presente)
141
- project_root = get_project_root()
142
- relative_path = file_path
143
- if file_path.startswith(project_root):
144
- relative_path = file_path[len(project_root):].lstrip("/")
145
-
146
- # Verificar se é sempre permitido
147
- if is_always_allowed(relative_path):
148
- sys.exit(0)
149
-
150
- # Verificar se path está protegido
151
- protection = find_matching_protection(relative_path)
152
- if not protection:
153
- # Path não protegido, permitir
154
- sys.exit(0)
155
-
156
- # Verificar se documentação existe
157
- doc_exists, doc_path = check_documentation_exists(relative_path, protection, project_root)
158
-
159
- if doc_exists:
160
- # Documentação existe, permitir
161
- sys.exit(0)
162
-
163
- # BLOQUEAR: Documentação não existe
164
- name = protection["extract_name"](relative_path) or "unknown"
165
- required_docs = format_required_docs(protection, name)
166
-
167
- error_message = f"""
168
- ╔══════════════════════════════════════════════════════════════════════════════╗
169
- ║ 🛑 ARCHITECTURE-FIRST: Documentação obrigatória antes de código ║
170
- ╠══════════════════════════════════════════════════════════════════════════════╣
171
- ║ ║
172
- ║ Arquivo bloqueado: {relative_path[:50]:<50} ║
173
- ║ ║
174
- ║ REGRA: Antes de criar/editar código em paths protegidos, você DEVE: ║
175
- ║ ║
176
- ║ 1. Documentar o plano de arquitetura ║
177
- ║ 2. Obter aprovação do usuário ║
178
- ║ 3. Criar o arquivo de documentação ║
179
- ║ ║
180
- ║ Documentos aceitos para '{name}': ║
181
- {required_docs}
182
- ║ ║
183
- ║ AÇÃO: Crie um dos documentos acima com o plano aprovado, depois tente ║
184
- ║ novamente a operação de código. ║
185
- ║ ║
186
- ║ DICA: Use `*create-doc architecture` para criar doc de arquitetura ║
187
- ║ Ou crie docs/approved-plans/{name}.md com o plano resumido ║
188
- ║ ║
189
- ╚══════════════════════════════════════════════════════════════════════════════╝
190
- """
191
-
192
- print(error_message, file=sys.stderr)
193
- sys.exit(2) # Exit code 2 = bloqueia o tool
194
-
195
- if __name__ == "__main__":
196
- main()
197
-
1
+ #!/usr/bin/env python3
2
+ """
3
+ Hook: Enforce Architecture-First Development
4
+
5
+ REGRA: Código só pode ser criado/editado se existir documentação prévia.
6
+
7
+ Este hook intercepta Write/Edit em paths de código e verifica se existe
8
+ documentação aprovada antes de permitir a operação.
9
+
10
+ Exit Codes:
11
+ - 0: Permitido (doc existe ou path não requer doc)
12
+ - 2: Bloqueado (doc não existe para path protegido)
13
+ """
14
+
15
+ import json
16
+ import sys
17
+ import os
18
+ from pathlib import Path
19
+
20
+ # =============================================================================
21
+ # CONFIGURAÇÃO: Paths que EXIGEM documentação prévia
22
+ # =============================================================================
23
+
24
+ PROTECTED_PATHS = [
25
+ # Edge Functions - exigem docs/architecture/{function-name}.md
26
+ {
27
+ "pattern": "supabase/functions/",
28
+ "doc_patterns": [
29
+ "docs/architecture/{name}.md",
30
+ "docs/architecture/{name}-architecture.md",
31
+ "docs/approved-plans/{name}.md",
32
+ ],
33
+ "extract_name": lambda p: p.split("supabase/functions/")[1].split("/")[0] if "supabase/functions/" in p else None,
34
+ },
35
+ # Migrations - exigem documentação de schema changes
36
+ {
37
+ "pattern": "supabase/migrations/",
38
+ "doc_patterns": [
39
+ "docs/approved-plans/migration-{name}.md",
40
+ "docs/architecture/database-changes.md",
41
+ ],
42
+ "extract_name": lambda p: Path(p).stem if "supabase/migrations/" in p else None,
43
+ "allow_if_exists": True, # Permite editar migrations existentes
44
+ },
45
+ ]
46
+
47
+ # Paths que são SEMPRE permitidos (não exigem doc)
48
+ ALWAYS_ALLOWED = [
49
+ ".claude/",
50
+ "docs/",
51
+ "outputs/",
52
+ "squads/",
53
+ ".sinapse-ai/",
54
+ ".sinapse-custom/",
55
+ "node_modules/",
56
+ ".git/",
57
+ "package.json",
58
+ "package-lock.json",
59
+ "tsconfig.json",
60
+ ".env",
61
+ "README.md",
62
+ ]
63
+
64
+ # =============================================================================
65
+ # LÓGICA DO HOOK
66
+ # =============================================================================
67
+
68
+ def get_project_root():
69
+ """Obtém o root do projeto via variável de ambiente ou cwd."""
70
+ return os.environ.get("CLAUDE_PROJECT_DIR", os.getcwd())
71
+
72
+ def is_always_allowed(file_path: str) -> bool:
73
+ """Verifica se o path está na lista de sempre permitidos."""
74
+ for allowed in ALWAYS_ALLOWED:
75
+ if allowed in file_path:
76
+ return True
77
+ return False
78
+
79
+ def find_matching_protection(file_path: str) -> dict | None:
80
+ """Encontra a regra de proteção que corresponde ao path."""
81
+ for protection in PROTECTED_PATHS:
82
+ if protection["pattern"] in file_path:
83
+ return protection
84
+ return None
85
+
86
+ def check_documentation_exists(file_path: str, protection: dict, project_root: str) -> tuple[bool, str]:
87
+ """
88
+ Verifica se existe documentação para o path protegido.
89
+
90
+ Returns:
91
+ (exists: bool, doc_path: str | None)
92
+ """
93
+ extract_fn = protection.get("extract_name")
94
+ if not extract_fn:
95
+ return True, None
96
+
97
+ name = extract_fn(file_path)
98
+ if not name:
99
+ return True, None
100
+
101
+ # Verificar cada padrão de documentação
102
+ for doc_pattern in protection["doc_patterns"]:
103
+ doc_path = doc_pattern.format(name=name)
104
+ full_doc_path = os.path.join(project_root, doc_path)
105
+
106
+ if os.path.exists(full_doc_path):
107
+ return True, doc_path
108
+
109
+ # Se allow_if_exists e o arquivo já existe, permitir edição
110
+ if protection.get("allow_if_exists"):
111
+ full_file_path = os.path.join(project_root, file_path) if not file_path.startswith("/") else file_path
112
+ if os.path.exists(full_file_path):
113
+ return True, "(arquivo existente)"
114
+
115
+ return False, None
116
+
117
+ def format_required_docs(protection: dict, name: str) -> str:
118
+ """Formata a lista de documentos aceitos."""
119
+ docs = []
120
+ for pattern in protection["doc_patterns"]:
121
+ docs.append(f" - {pattern.format(name=name)}")
122
+ return "\n".join(docs)
123
+
124
+ def main():
125
+ # Ler input do stdin
126
+ try:
127
+ input_data = json.load(sys.stdin)
128
+ except json.JSONDecodeError:
129
+ # Se não conseguir parsear, permitir (fail-open)
130
+ sys.exit(0)
131
+
132
+ tool_name = input_data.get("tool_name", "")
133
+ tool_input = input_data.get("tool_input", {})
134
+ file_path = tool_input.get("file_path", "")
135
+
136
+ # Só processar Write e Edit
137
+ if tool_name not in ["Write", "Edit"]:
138
+ sys.exit(0)
139
+
140
+ # Normalizar path (remover prefixo absoluto se presente)
141
+ project_root = get_project_root()
142
+ relative_path = file_path
143
+ if file_path.startswith(project_root):
144
+ relative_path = file_path[len(project_root):].lstrip("/")
145
+
146
+ # Verificar se é sempre permitido
147
+ if is_always_allowed(relative_path):
148
+ sys.exit(0)
149
+
150
+ # Verificar se path está protegido
151
+ protection = find_matching_protection(relative_path)
152
+ if not protection:
153
+ # Path não protegido, permitir
154
+ sys.exit(0)
155
+
156
+ # Verificar se documentação existe
157
+ doc_exists, doc_path = check_documentation_exists(relative_path, protection, project_root)
158
+
159
+ if doc_exists:
160
+ # Documentação existe, permitir
161
+ sys.exit(0)
162
+
163
+ # BLOQUEAR: Documentação não existe
164
+ name = protection["extract_name"](relative_path) or "unknown"
165
+ required_docs = format_required_docs(protection, name)
166
+
167
+ error_message = f"""
168
+ ╔══════════════════════════════════════════════════════════════════════════════╗
169
+ ║ 🛑 ARCHITECTURE-FIRST: Documentação obrigatória antes de código ║
170
+ ╠══════════════════════════════════════════════════════════════════════════════╣
171
+ ║ ║
172
+ ║ Arquivo bloqueado: {relative_path[:50]:<50} ║
173
+ ║ ║
174
+ ║ REGRA: Antes de criar/editar código em paths protegidos, você DEVE: ║
175
+ ║ ║
176
+ ║ 1. Documentar o plano de arquitetura ║
177
+ ║ 2. Obter aprovação do usuário ║
178
+ ║ 3. Criar o arquivo de documentação ║
179
+ ║ ║
180
+ ║ Documentos aceitos para '{name}': ║
181
+ {required_docs}
182
+ ║ ║
183
+ ║ AÇÃO: Crie um dos documentos acima com o plano aprovado, depois tente ║
184
+ ║ novamente a operação de código. ║
185
+ ║ ║
186
+ ║ DICA: Use `*create-doc architecture` para criar doc de arquitetura ║
187
+ ║ Ou crie docs/approved-plans/{name}.md com o plano resumido ║
188
+ ║ ║
189
+ ╚══════════════════════════════════════════════════════════════════════════════╝
190
+ """
191
+
192
+ print(error_message, file=sys.stderr)
193
+ sys.exit(2) # Exit code 2 = bloqueia o tool
194
+
195
+ if __name__ == "__main__":
196
+ main()
197
+
@@ -1,13 +1,34 @@
1
1
  #!/bin/bash
2
2
  # enforce-git-push-authority.sh
3
- # PreToolUse hook: blocks "git push" commands in Bash tool
4
- # Only meant to run when agent is NOT @devops
3
+ # PreToolUse hook: blocks "git push" commands in Bash tool unless active agent is @devops
4
+ # Detects active agent via .sinapse/session-state.json (same pattern as enforce-delegation.cjs)
5
5
  # Uses node (not jq) for JSON parsing — works on Windows/Git Bash
6
- # FAIL-CLOSED: if parsing fails, blocks the command (exit 2)
7
- # Hardened v2: also detects indirect execution via script files and pipes
6
+ # FAIL-CLOSED: if parsing fails OR session-state is missing/unreadable, blocks the command
7
+ # Hardened v3: adds real agent detection (Story 10.15), retains indirect-execution checks
8
8
 
9
9
  INPUT=$(cat)
10
10
 
11
+ # Resolve project root consistently with other hooks
12
+ PROJECT_ROOT="${CLAUDE_PROJECT_DIR:-$(pwd)}"
13
+
14
+ # Detect active agent from session state (fail-closed: empty string on any error)
15
+ AGENT=$(node -e "
16
+ const fs = require('fs');
17
+ const path = require('path');
18
+ try {
19
+ const p = path.join(process.argv[1], '.sinapse', 'session-state.json');
20
+ const s = JSON.parse(fs.readFileSync(p, 'utf8'));
21
+ console.log(s.lastAgent || '');
22
+ } catch (e) {
23
+ console.log('');
24
+ }
25
+ " "$PROJECT_ROOT" 2>/dev/null)
26
+
27
+ # If active agent is @devops, allow the command immediately (AC 1)
28
+ if [ "$AGENT" = "devops" ]; then
29
+ exit 0
30
+ fi
31
+
11
32
  # Extract command from JSON using node (available on all SINAPSE systems)
12
33
  COMMAND=$(echo "$INPUT" | node -e "
13
34
  let d='';