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,134 +1,134 @@
1
- -- Materialized View Template
2
- -- View: :view_name
3
- -- Created: :created_date
4
- -- Author: :author
5
- -- Description: :description
6
- --
7
- -- Materialized views cache query results for performance
8
- -- IMPORTANT: Data is not live - must be refreshed periodically
9
-
10
- -- =============================================================================
11
- -- BASIC MATERIALIZED VIEW
12
- -- =============================================================================
13
-
14
- -- Drop existing view if exists
15
- DROP MATERIALIZED VIEW IF EXISTS :view_name CASCADE;
16
-
17
- -- Create materialized view
18
- CREATE MATERIALIZED VIEW :view_name AS
19
- SELECT
20
- t.id,
21
- t.name,
22
- t.category,
23
- t.created_at,
24
- -- Aggregations
25
- COUNT(r.id) AS related_count,
26
- SUM(r.amount) AS total_amount,
27
- AVG(r.rating) AS avg_rating,
28
- -- Computed columns
29
- CASE
30
- WHEN t.status = 'active' THEN true
31
- ELSE false
32
- END AS is_active
33
- FROM :base_table t
34
- LEFT JOIN :related_table r ON r.parent_id = t.id
35
- WHERE t.deleted_at IS NULL
36
- GROUP BY t.id, t.name, t.category, t.created_at, t.status
37
- -- Store data sorted for efficient access
38
- WITH DATA;
39
-
40
- -- =============================================================================
41
- -- INDEXES ON MATERIALIZED VIEW
42
- -- =============================================================================
43
-
44
- -- Unique index (required for CONCURRENT refresh)
45
- CREATE UNIQUE INDEX IF NOT EXISTS idx_:view_name_id
46
- ON :view_name (id);
47
-
48
- -- Additional indexes for common queries
49
- CREATE INDEX IF NOT EXISTS idx_:view_name_category
50
- ON :view_name (category);
51
-
52
- CREATE INDEX IF NOT EXISTS idx_:view_name_created_at
53
- ON :view_name (created_at DESC);
54
-
55
- -- =============================================================================
56
- -- REFRESH FUNCTION
57
- -- =============================================================================
58
-
59
- -- Function to refresh the materialized view
60
- CREATE OR REPLACE FUNCTION refresh_:view_name()
61
- RETURNS void
62
- LANGUAGE plpgsql
63
- SECURITY DEFINER
64
- AS $$
65
- BEGIN
66
- -- CONCURRENTLY allows queries during refresh (requires unique index)
67
- REFRESH MATERIALIZED VIEW CONCURRENTLY :view_name;
68
-
69
- -- Log refresh
70
- RAISE NOTICE 'Materialized view :view_name refreshed at %', NOW();
71
- END;
72
- $$;
73
-
74
- -- Grant execute to service role (for scheduled refresh)
75
- GRANT EXECUTE ON FUNCTION refresh_:view_name() TO service_role;
76
-
77
- -- =============================================================================
78
- -- SCHEDULED REFRESH (pg_cron)
79
- -- =============================================================================
80
- --
81
- -- If using pg_cron extension (available in Supabase):
82
- --
83
- -- Enable extension (one-time, requires superuser)
84
- -- CREATE EXTENSION IF NOT EXISTS pg_cron;
85
- --
86
- -- Schedule refresh every hour
87
- -- SELECT cron.schedule(
88
- -- 'refresh-:view_name',
89
- -- '0 * * * *', -- Every hour at minute 0
90
- -- $$SELECT refresh_:view_name()$$
91
- -- );
92
- --
93
- -- To remove schedule:
94
- -- SELECT cron.unschedule('refresh-:view_name');
95
-
96
- -- =============================================================================
97
- -- TRIGGER-BASED REFRESH (Alternative)
98
- -- =============================================================================
99
-
100
- -- Refresh when base table changes (use with caution - can be slow)
101
- -- CREATE OR REPLACE FUNCTION refresh_:view_name_trigger()
102
- -- RETURNS TRIGGER AS $$
103
- -- BEGIN
104
- -- REFRESH MATERIALIZED VIEW CONCURRENTLY :view_name;
105
- -- RETURN NULL;
106
- -- END;
107
- -- $$ LANGUAGE plpgsql;
108
- --
109
- -- CREATE TRIGGER trigger_refresh_:view_name
110
- -- AFTER INSERT OR UPDATE OR DELETE ON :base_table
111
- -- FOR EACH STATEMENT
112
- -- EXECUTE FUNCTION refresh_:view_name_trigger();
113
-
114
- -- =============================================================================
115
- -- VIEW METADATA
116
- -- =============================================================================
117
-
118
- COMMENT ON MATERIALIZED VIEW :view_name IS ':description. Refresh: hourly or on-demand.';
119
-
120
- -- =============================================================================
121
- -- USAGE
122
- -- =============================================================================
123
- --
124
- -- Query the view (cached data, very fast):
125
- -- SELECT * FROM :view_name WHERE category = 'example';
126
- --
127
- -- Manual refresh (use during low-traffic periods):
128
- -- REFRESH MATERIALIZED VIEW CONCURRENTLY :view_name;
129
- -- OR
130
- -- SELECT refresh_:view_name();
131
- --
132
- -- Check last refresh time (approximate):
133
- -- SELECT pg_stat_get_last_analyze_time(':view_name'::regclass);
134
-
1
+ -- Materialized View Template
2
+ -- View: :view_name
3
+ -- Created: :created_date
4
+ -- Author: :author
5
+ -- Description: :description
6
+ --
7
+ -- Materialized views cache query results for performance
8
+ -- IMPORTANT: Data is not live - must be refreshed periodically
9
+
10
+ -- =============================================================================
11
+ -- BASIC MATERIALIZED VIEW
12
+ -- =============================================================================
13
+
14
+ -- Drop existing view if exists
15
+ DROP MATERIALIZED VIEW IF EXISTS :view_name CASCADE;
16
+
17
+ -- Create materialized view
18
+ CREATE MATERIALIZED VIEW :view_name AS
19
+ SELECT
20
+ t.id,
21
+ t.name,
22
+ t.category,
23
+ t.created_at,
24
+ -- Aggregations
25
+ COUNT(r.id) AS related_count,
26
+ SUM(r.amount) AS total_amount,
27
+ AVG(r.rating) AS avg_rating,
28
+ -- Computed columns
29
+ CASE
30
+ WHEN t.status = 'active' THEN true
31
+ ELSE false
32
+ END AS is_active
33
+ FROM :base_table t
34
+ LEFT JOIN :related_table r ON r.parent_id = t.id
35
+ WHERE t.deleted_at IS NULL
36
+ GROUP BY t.id, t.name, t.category, t.created_at, t.status
37
+ -- Store data sorted for efficient access
38
+ WITH DATA;
39
+
40
+ -- =============================================================================
41
+ -- INDEXES ON MATERIALIZED VIEW
42
+ -- =============================================================================
43
+
44
+ -- Unique index (required for CONCURRENT refresh)
45
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_:view_name_id
46
+ ON :view_name (id);
47
+
48
+ -- Additional indexes for common queries
49
+ CREATE INDEX IF NOT EXISTS idx_:view_name_category
50
+ ON :view_name (category);
51
+
52
+ CREATE INDEX IF NOT EXISTS idx_:view_name_created_at
53
+ ON :view_name (created_at DESC);
54
+
55
+ -- =============================================================================
56
+ -- REFRESH FUNCTION
57
+ -- =============================================================================
58
+
59
+ -- Function to refresh the materialized view
60
+ CREATE OR REPLACE FUNCTION refresh_:view_name()
61
+ RETURNS void
62
+ LANGUAGE plpgsql
63
+ SECURITY DEFINER
64
+ AS $$
65
+ BEGIN
66
+ -- CONCURRENTLY allows queries during refresh (requires unique index)
67
+ REFRESH MATERIALIZED VIEW CONCURRENTLY :view_name;
68
+
69
+ -- Log refresh
70
+ RAISE NOTICE 'Materialized view :view_name refreshed at %', NOW();
71
+ END;
72
+ $$;
73
+
74
+ -- Grant execute to service role (for scheduled refresh)
75
+ GRANT EXECUTE ON FUNCTION refresh_:view_name() TO service_role;
76
+
77
+ -- =============================================================================
78
+ -- SCHEDULED REFRESH (pg_cron)
79
+ -- =============================================================================
80
+ --
81
+ -- If using pg_cron extension (available in Supabase):
82
+ --
83
+ -- Enable extension (one-time, requires superuser)
84
+ -- CREATE EXTENSION IF NOT EXISTS pg_cron;
85
+ --
86
+ -- Schedule refresh every hour
87
+ -- SELECT cron.schedule(
88
+ -- 'refresh-:view_name',
89
+ -- '0 * * * *', -- Every hour at minute 0
90
+ -- $$SELECT refresh_:view_name()$$
91
+ -- );
92
+ --
93
+ -- To remove schedule:
94
+ -- SELECT cron.unschedule('refresh-:view_name');
95
+
96
+ -- =============================================================================
97
+ -- TRIGGER-BASED REFRESH (Alternative)
98
+ -- =============================================================================
99
+
100
+ -- Refresh when base table changes (use with caution - can be slow)
101
+ -- CREATE OR REPLACE FUNCTION refresh_:view_name_trigger()
102
+ -- RETURNS TRIGGER AS $$
103
+ -- BEGIN
104
+ -- REFRESH MATERIALIZED VIEW CONCURRENTLY :view_name;
105
+ -- RETURN NULL;
106
+ -- END;
107
+ -- $$ LANGUAGE plpgsql;
108
+ --
109
+ -- CREATE TRIGGER trigger_refresh_:view_name
110
+ -- AFTER INSERT OR UPDATE OR DELETE ON :base_table
111
+ -- FOR EACH STATEMENT
112
+ -- EXECUTE FUNCTION refresh_:view_name_trigger();
113
+
114
+ -- =============================================================================
115
+ -- VIEW METADATA
116
+ -- =============================================================================
117
+
118
+ COMMENT ON MATERIALIZED VIEW :view_name IS ':description. Refresh: hourly or on-demand.';
119
+
120
+ -- =============================================================================
121
+ -- USAGE
122
+ -- =============================================================================
123
+ --
124
+ -- Query the view (cached data, very fast):
125
+ -- SELECT * FROM :view_name WHERE category = 'example';
126
+ --
127
+ -- Manual refresh (use during low-traffic periods):
128
+ -- REFRESH MATERIALIZED VIEW CONCURRENTLY :view_name;
129
+ -- OR
130
+ -- SELECT refresh_:view_name();
131
+ --
132
+ -- Check last refresh time (approximate):
133
+ -- SELECT pg_stat_get_last_analyze_time(':view_name'::regclass);
134
+
@@ -1,178 +1,178 @@
1
- -- View Template
2
- -- View: :view_name
3
- -- Created: :created_date
4
- -- Author: :author
5
- -- Description: :description
6
- --
7
- -- Views are virtual tables that provide a simplified interface
8
- -- Data is always live (not cached like materialized views)
9
-
10
- -- =============================================================================
11
- -- BASIC VIEW
12
- -- =============================================================================
13
-
14
- -- Drop existing view if exists
15
- DROP VIEW IF EXISTS :view_name CASCADE;
16
-
17
- -- Create view
18
- CREATE OR REPLACE VIEW :view_name AS
19
- SELECT
20
- t.id,
21
- t.name,
22
- t.description,
23
- t.status,
24
- t.created_at,
25
- t.updated_at,
26
- -- Related data
27
- u.email AS owner_email,
28
- u.raw_user_meta_data->>'full_name' AS owner_name,
29
- -- Computed columns
30
- CASE
31
- WHEN t.status = 'active' THEN 'Active'
32
- WHEN t.status = 'pending' THEN 'Pending'
33
- WHEN t.status = 'archived' THEN 'Archived'
34
- ELSE 'Unknown'
35
- END AS status_label,
36
- -- Age calculation
37
- EXTRACT(DAY FROM NOW() - t.created_at) AS days_old
38
- FROM :base_table t
39
- LEFT JOIN auth.users u ON u.id = t.user_id
40
- WHERE t.deleted_at IS NULL;
41
-
42
- -- =============================================================================
43
- -- VIEW WITH AGGREGATIONS
44
- -- =============================================================================
45
-
46
- CREATE OR REPLACE VIEW :view_name_summary AS
47
- SELECT
48
- t.category,
49
- COUNT(*) AS total_count,
50
- COUNT(*) FILTER (WHERE t.status = 'active') AS active_count,
51
- COUNT(*) FILTER (WHERE t.status = 'pending') AS pending_count,
52
- MIN(t.created_at) AS earliest,
53
- MAX(t.created_at) AS latest,
54
- AVG(t.value)::NUMERIC(10,2) AS avg_value
55
- FROM :base_table t
56
- WHERE t.deleted_at IS NULL
57
- GROUP BY t.category;
58
-
59
- -- =============================================================================
60
- -- VIEW WITH RLS CONSIDERATION
61
- -- =============================================================================
62
-
63
- -- Views inherit RLS from underlying tables
64
- -- If base table has RLS, view will respect it
65
- --
66
- -- For views that need custom RLS-like behavior,
67
- -- wrap in a SECURITY DEFINER function:
68
-
69
- CREATE OR REPLACE FUNCTION get_:view_name_for_user()
70
- RETURNS TABLE (
71
- id UUID,
72
- name TEXT,
73
- status TEXT,
74
- created_at TIMESTAMPTZ
75
- )
76
- LANGUAGE plpgsql
77
- SECURITY INVOKER
78
- STABLE
79
- AS $$
80
- BEGIN
81
- RETURN QUERY
82
- SELECT
83
- v.id,
84
- v.name,
85
- v.status,
86
- v.created_at
87
- FROM :view_name v
88
- WHERE v.user_id = auth.uid()
89
- ORDER BY v.created_at DESC;
90
- END;
91
- $$;
92
-
93
- -- =============================================================================
94
- -- VIEW WITH JOINED DATA
95
- -- =============================================================================
96
-
97
- CREATE OR REPLACE VIEW :view_name_detailed AS
98
- SELECT
99
- t.id,
100
- t.name,
101
- t.status,
102
- -- One-to-one relationship
103
- d.detail_field,
104
- -- One-to-many aggregation
105
- (
106
- SELECT json_agg(json_build_object(
107
- 'id', c.id,
108
- 'name', c.name,
109
- 'created_at', c.created_at
110
- ))
111
- FROM :child_table c
112
- WHERE c.parent_id = t.id
113
- ) AS children,
114
- -- Count
115
- (
116
- SELECT COUNT(*)
117
- FROM :child_table c
118
- WHERE c.parent_id = t.id
119
- ) AS children_count,
120
- t.created_at,
121
- t.updated_at
122
- FROM :base_table t
123
- LEFT JOIN :detail_table d ON d.id = t.detail_id
124
- WHERE t.deleted_at IS NULL;
125
-
126
- -- =============================================================================
127
- -- UPDATEABLE VIEW (with INSTEAD OF triggers)
128
- -- =============================================================================
129
-
130
- -- Simple updateable view (for basic cases)
131
- CREATE OR REPLACE VIEW :view_name_editable AS
132
- SELECT
133
- id,
134
- name,
135
- description,
136
- status,
137
- updated_at
138
- FROM :base_table
139
- WHERE deleted_at IS NULL;
140
-
141
- -- Make it updateable via trigger
142
- CREATE OR REPLACE FUNCTION :view_name_editable_update()
143
- RETURNS TRIGGER AS $$
144
- BEGIN
145
- UPDATE :base_table
146
- SET
147
- name = NEW.name,
148
- description = NEW.description,
149
- status = NEW.status,
150
- updated_at = NOW()
151
- WHERE id = NEW.id
152
- AND user_id = auth.uid(); -- RLS check
153
-
154
- RETURN NEW;
155
- END;
156
- $$ LANGUAGE plpgsql SECURITY DEFINER;
157
-
158
- CREATE TRIGGER trigger_:view_name_editable_update
159
- INSTEAD OF UPDATE ON :view_name_editable
160
- FOR EACH ROW
161
- EXECUTE FUNCTION :view_name_editable_update();
162
-
163
- -- =============================================================================
164
- -- VIEW METADATA
165
- -- =============================================================================
166
-
167
- COMMENT ON VIEW :view_name IS ':description';
168
-
169
- -- =============================================================================
170
- -- PERMISSIONS
171
- -- =============================================================================
172
-
173
- -- Grant SELECT on view (inherits base table RLS)
174
- GRANT SELECT ON :view_name TO authenticated;
175
-
176
- -- For updateable views, also grant UPDATE
177
- -- GRANT UPDATE ON :view_name_editable TO authenticated;
178
-
1
+ -- View Template
2
+ -- View: :view_name
3
+ -- Created: :created_date
4
+ -- Author: :author
5
+ -- Description: :description
6
+ --
7
+ -- Views are virtual tables that provide a simplified interface
8
+ -- Data is always live (not cached like materialized views)
9
+
10
+ -- =============================================================================
11
+ -- BASIC VIEW
12
+ -- =============================================================================
13
+
14
+ -- Drop existing view if exists
15
+ DROP VIEW IF EXISTS :view_name CASCADE;
16
+
17
+ -- Create view
18
+ CREATE OR REPLACE VIEW :view_name AS
19
+ SELECT
20
+ t.id,
21
+ t.name,
22
+ t.description,
23
+ t.status,
24
+ t.created_at,
25
+ t.updated_at,
26
+ -- Related data
27
+ u.email AS owner_email,
28
+ u.raw_user_meta_data->>'full_name' AS owner_name,
29
+ -- Computed columns
30
+ CASE
31
+ WHEN t.status = 'active' THEN 'Active'
32
+ WHEN t.status = 'pending' THEN 'Pending'
33
+ WHEN t.status = 'archived' THEN 'Archived'
34
+ ELSE 'Unknown'
35
+ END AS status_label,
36
+ -- Age calculation
37
+ EXTRACT(DAY FROM NOW() - t.created_at) AS days_old
38
+ FROM :base_table t
39
+ LEFT JOIN auth.users u ON u.id = t.user_id
40
+ WHERE t.deleted_at IS NULL;
41
+
42
+ -- =============================================================================
43
+ -- VIEW WITH AGGREGATIONS
44
+ -- =============================================================================
45
+
46
+ CREATE OR REPLACE VIEW :view_name_summary AS
47
+ SELECT
48
+ t.category,
49
+ COUNT(*) AS total_count,
50
+ COUNT(*) FILTER (WHERE t.status = 'active') AS active_count,
51
+ COUNT(*) FILTER (WHERE t.status = 'pending') AS pending_count,
52
+ MIN(t.created_at) AS earliest,
53
+ MAX(t.created_at) AS latest,
54
+ AVG(t.value)::NUMERIC(10,2) AS avg_value
55
+ FROM :base_table t
56
+ WHERE t.deleted_at IS NULL
57
+ GROUP BY t.category;
58
+
59
+ -- =============================================================================
60
+ -- VIEW WITH RLS CONSIDERATION
61
+ -- =============================================================================
62
+
63
+ -- Views inherit RLS from underlying tables
64
+ -- If base table has RLS, view will respect it
65
+ --
66
+ -- For views that need custom RLS-like behavior,
67
+ -- wrap in a SECURITY DEFINER function:
68
+
69
+ CREATE OR REPLACE FUNCTION get_:view_name_for_user()
70
+ RETURNS TABLE (
71
+ id UUID,
72
+ name TEXT,
73
+ status TEXT,
74
+ created_at TIMESTAMPTZ
75
+ )
76
+ LANGUAGE plpgsql
77
+ SECURITY INVOKER
78
+ STABLE
79
+ AS $$
80
+ BEGIN
81
+ RETURN QUERY
82
+ SELECT
83
+ v.id,
84
+ v.name,
85
+ v.status,
86
+ v.created_at
87
+ FROM :view_name v
88
+ WHERE v.user_id = auth.uid()
89
+ ORDER BY v.created_at DESC;
90
+ END;
91
+ $$;
92
+
93
+ -- =============================================================================
94
+ -- VIEW WITH JOINED DATA
95
+ -- =============================================================================
96
+
97
+ CREATE OR REPLACE VIEW :view_name_detailed AS
98
+ SELECT
99
+ t.id,
100
+ t.name,
101
+ t.status,
102
+ -- One-to-one relationship
103
+ d.detail_field,
104
+ -- One-to-many aggregation
105
+ (
106
+ SELECT json_agg(json_build_object(
107
+ 'id', c.id,
108
+ 'name', c.name,
109
+ 'created_at', c.created_at
110
+ ))
111
+ FROM :child_table c
112
+ WHERE c.parent_id = t.id
113
+ ) AS children,
114
+ -- Count
115
+ (
116
+ SELECT COUNT(*)
117
+ FROM :child_table c
118
+ WHERE c.parent_id = t.id
119
+ ) AS children_count,
120
+ t.created_at,
121
+ t.updated_at
122
+ FROM :base_table t
123
+ LEFT JOIN :detail_table d ON d.id = t.detail_id
124
+ WHERE t.deleted_at IS NULL;
125
+
126
+ -- =============================================================================
127
+ -- UPDATEABLE VIEW (with INSTEAD OF triggers)
128
+ -- =============================================================================
129
+
130
+ -- Simple updateable view (for basic cases)
131
+ CREATE OR REPLACE VIEW :view_name_editable AS
132
+ SELECT
133
+ id,
134
+ name,
135
+ description,
136
+ status,
137
+ updated_at
138
+ FROM :base_table
139
+ WHERE deleted_at IS NULL;
140
+
141
+ -- Make it updateable via trigger
142
+ CREATE OR REPLACE FUNCTION :view_name_editable_update()
143
+ RETURNS TRIGGER AS $$
144
+ BEGIN
145
+ UPDATE :base_table
146
+ SET
147
+ name = NEW.name,
148
+ description = NEW.description,
149
+ status = NEW.status,
150
+ updated_at = NOW()
151
+ WHERE id = NEW.id
152
+ AND user_id = auth.uid(); -- RLS check
153
+
154
+ RETURN NEW;
155
+ END;
156
+ $$ LANGUAGE plpgsql SECURITY DEFINER;
157
+
158
+ CREATE TRIGGER trigger_:view_name_editable_update
159
+ INSTEAD OF UPDATE ON :view_name_editable
160
+ FOR EACH ROW
161
+ EXECUTE FUNCTION :view_name_editable_update();
162
+
163
+ -- =============================================================================
164
+ -- VIEW METADATA
165
+ -- =============================================================================
166
+
167
+ COMMENT ON VIEW :view_name IS ':description';
168
+
169
+ -- =============================================================================
170
+ -- PERMISSIONS
171
+ -- =============================================================================
172
+
173
+ -- Grant SELECT on view (inherits base table RLS)
174
+ GRANT SELECT ON :view_name TO authenticated;
175
+
176
+ -- For updateable views, also grant UPDATE
177
+ -- GRANT UPDATE ON :view_name_editable TO authenticated;
178
+