moai-adk 0.34.0__py3-none-any.whl → 1.1.0__py3-none-any.whl
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.
- moai_adk/__main__.py +136 -5
- moai_adk/astgrep/__init__.py +37 -0
- moai_adk/astgrep/analyzer.py +522 -0
- moai_adk/astgrep/models.py +124 -0
- moai_adk/astgrep/rules.py +179 -0
- moai_adk/cli/commands/analyze.py +11 -2
- moai_adk/cli/commands/doctor.py +7 -1
- moai_adk/cli/commands/init.py +321 -11
- moai_adk/cli/commands/language.py +7 -1
- moai_adk/cli/commands/rank.py +449 -0
- moai_adk/cli/commands/status.py +7 -1
- moai_adk/cli/commands/switch.py +325 -0
- moai_adk/cli/commands/update.py +296 -23
- moai_adk/cli/prompts/init_prompts.py +362 -66
- moai_adk/cli/prompts/translations/__init__.py +573 -0
- moai_adk/cli/ui/prompts.py +61 -2
- moai_adk/cli/worktree/cli.py +106 -1
- moai_adk/cli/worktree/manager.py +155 -0
- moai_adk/core/config/unified.py +244 -63
- moai_adk/core/credentials.py +264 -0
- moai_adk/core/error_recovery_system.py +22 -4
- moai_adk/core/git/conflict_detector.py +10 -1
- moai_adk/core/git/event_detector.py +16 -5
- moai_adk/core/integration/engine.py +2 -2
- moai_adk/core/integration/integration_tester.py +5 -5
- moai_adk/core/language_config_resolver.py +9 -3
- moai_adk/core/merge/analyzer.py +509 -324
- moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
- moai_adk/core/migration/backup_manager.py +54 -4
- moai_adk/core/migration/file_migrator.py +174 -2
- moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
- moai_adk/core/migration/version_detector.py +123 -19
- moai_adk/core/migration/version_migrator.py +44 -9
- moai_adk/core/model_allocator.py +241 -0
- moai_adk/core/project/backup_utils.py +12 -2
- moai_adk/core/project/initializer.py +44 -87
- moai_adk/core/project/phase_executor.py +95 -33
- moai_adk/core/project/validator.py +16 -1
- moai_adk/core/quality/trust_checker.py +30 -10
- moai_adk/core/rollback_manager.py +60 -25
- moai_adk/core/template/backup.py +88 -6
- moai_adk/core/template/config.py +33 -9
- moai_adk/core/template/merger.py +34 -8
- moai_adk/core/template/processor.py +334 -11
- moai_adk/core/template_engine.py +10 -1
- moai_adk/core/template_variable_synchronizer.py +16 -2
- moai_adk/core/version_sync.py +54 -6
- moai_adk/foundation/__init__.py +1 -20
- moai_adk/foundation/testing.py +1 -1
- moai_adk/loop/__init__.py +54 -0
- moai_adk/loop/controller.py +305 -0
- moai_adk/loop/feedback.py +230 -0
- moai_adk/loop/state.py +209 -0
- moai_adk/loop/storage.py +220 -0
- moai_adk/lsp/__init__.py +70 -0
- moai_adk/lsp/client.py +320 -0
- moai_adk/lsp/models.py +261 -0
- moai_adk/lsp/protocol.py +404 -0
- moai_adk/lsp/server_manager.py +248 -0
- moai_adk/project/configuration.py +8 -1
- moai_adk/py.typed +0 -0
- moai_adk/ralph/__init__.py +37 -0
- moai_adk/ralph/engine.py +307 -0
- moai_adk/rank/__init__.py +21 -0
- moai_adk/rank/auth.py +425 -0
- moai_adk/rank/client.py +557 -0
- moai_adk/rank/config.py +147 -0
- moai_adk/rank/hook.py +1503 -0
- moai_adk/rank/py.typed +0 -0
- moai_adk/statusline/__init__.py +3 -0
- moai_adk/statusline/enhanced_output_style_detector.py +5 -5
- moai_adk/statusline/main.py +20 -1
- moai_adk/statusline/memory_collector.py +268 -0
- moai_adk/statusline/renderer.py +54 -38
- moai_adk/tag_system/__init__.py +48 -0
- moai_adk/tag_system/atomic_ops.py +117 -0
- moai_adk/tag_system/linkage.py +335 -0
- moai_adk/tag_system/parser.py +176 -0
- moai_adk/tag_system/validator.py +200 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +19 -3
- moai_adk/templates/.claude/agents/moai/builder-command.md +62 -16
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +21 -5
- moai_adk/templates/.claude/agents/moai/expert-backend.md +103 -39
- moai_adk/templates/.claude/agents/moai/expert-debug.md +9 -3
- moai_adk/templates/.claude/agents/moai/expert-devops.md +16 -14
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +45 -31
- moai_adk/templates/.claude/agents/moai/expert-performance.md +13 -9
- moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +19 -3
- moai_adk/templates/.claude/agents/moai/expert-testing.md +13 -9
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-docs.md +10 -5
- moai_adk/templates/.claude/agents/moai/manager-git.md +99 -27
- moai_adk/templates/.claude/agents/moai/manager-project.md +87 -7
- moai_adk/templates/.claude/agents/moai/manager-quality.md +22 -5
- moai_adk/templates/.claude/agents/moai/manager-spec.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +45 -14
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +16 -3
- moai_adk/templates/.claude/commands/moai/0-project.md +239 -1185
- moai_adk/templates/.claude/commands/moai/1-plan.md +383 -363
- moai_adk/templates/.claude/commands/moai/2-run.md +254 -347
- moai_adk/templates/.claude/commands/moai/3-sync.md +174 -100
- moai_adk/templates/.claude/commands/moai/9-feedback.md +49 -33
- moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
- moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
- moai_adk/templates/.claude/commands/moai/fix.md +264 -0
- moai_adk/templates/.claude/commands/moai/loop.md +363 -0
- moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +37 -81
- moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
- moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
- moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
- moai_adk/templates/.claude/hooks/moai/lib/config.py +376 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +24 -28
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +14 -14
- moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
- moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +15 -13
- moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +125 -25
- moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
- moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
- moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
- moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
- moai_adk/templates/.claude/hooks/moai/lib/renderer.py +359 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +5 -5
- moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +30 -18
- moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
- moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
- moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +93 -61
- moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +165 -70
- moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
- moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
- moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +86 -3
- moai_adk/templates/.claude/output-styles/moai/yoda.md +2 -2
- moai_adk/templates/.claude/settings.json +154 -77
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -198
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +169 -323
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +226 -320
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +43 -222
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +75 -219
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +103 -463
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +118 -339
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +74 -377
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +205 -182
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +32 -22
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +96 -316
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +116 -294
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +14 -18
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +86 -270
- moai_adk/templates/.claude/skills/moai-framework-electron/SKILL.md +288 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +76 -582
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1239 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +1136 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +82 -436
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +65 -542
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +889 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +32 -405
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +114 -293
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +83 -307
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +179 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +42 -279
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +94 -556
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1608 -0
- moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +1323 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +108 -358
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +84 -482
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1154 -0
- moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +1087 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +106 -610
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1106 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +1024 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +51 -265
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +106 -442
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +88 -457
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +75 -283
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +97 -252
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +64 -240
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +90 -287
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +200 -206
- moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +75 -330
- moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +100 -340
- moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +113 -326
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +71 -302
- moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +101 -412
- moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +96 -327
- moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +103 -428
- moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +96 -446
- moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +193 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +225 -423
- moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +211 -314
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +15 -43
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +119 -316
- moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +96 -203
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +201 -388
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
- moai_adk/templates/.git-hooks/pre-push +162 -59
- moai_adk/templates/.github/workflows/ci-universal.yml +934 -133
- moai_adk/templates/.gitignore +65 -107
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +2 -20
- moai_adk/templates/.moai/announcements/en.json +18 -0
- moai_adk/templates/.moai/announcements/ja.json +18 -0
- moai_adk/templates/.moai/announcements/ko.json +18 -0
- moai_adk/templates/.moai/announcements/zh.json +18 -0
- moai_adk/templates/.moai/config/config.yaml +8 -2
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
- moai_adk/templates/.moai/config/sections/language.yaml +2 -2
- moai_adk/templates/.moai/config/sections/llm.yaml +41 -0
- moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
- moai_adk/templates/.moai/config/sections/project.yaml +2 -2
- moai_adk/templates/.moai/config/sections/quality.yaml +43 -5
- moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
- moai_adk/templates/.moai/config/sections/system.yaml +46 -1
- moai_adk/templates/.moai/config/sections/user.yaml +1 -1
- moai_adk/templates/.moai/config/statusline-config.yaml +2 -2
- moai_adk/templates/.moai/llm-configs/glm.json +22 -0
- moai_adk/templates/CLAUDE.ja.md +343 -0
- moai_adk/templates/CLAUDE.ko.md +343 -0
- moai_adk/templates/CLAUDE.md +200 -499
- moai_adk/templates/CLAUDE.zh.md +343 -0
- moai_adk/utils/common.py +37 -0
- moai_adk/version.py +1 -1
- moai_adk-1.1.0.dist-info/METADATA +2443 -0
- moai_adk-1.1.0.dist-info/RECORD +701 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/entry_points.txt +2 -0
- moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -0
- moai_adk/core/config/auto_spec_config.py +0 -340
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
- moai_adk/core/spec/confidence_scoring.py +0 -680
- moai_adk/core/spec/ears_template_engine.py +0 -1247
- moai_adk/core/spec/quality_validator.py +0 -687
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +0 -670
- moai_adk/templates/.claude/agents/moai/expert-database.md +0 -777
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +0 -1041
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +0 -458
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +0 -1607
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +0 -789
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +0 -469
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +0 -1032
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +0 -438
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +0 -431
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +0 -402
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +0 -607
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +0 -300
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +0 -537
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -175
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -411
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
- moai_adk/templates/.moai/config/questions/_schema.yaml +0 -151
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +0 -251
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +0 -108
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +0 -81
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +0 -634
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +0 -170
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +0 -87
- moai_adk/templates/.moai/scripts/setup-glm.py +0 -136
- moai_adk-0.34.0.dist-info/METADATA +0 -2999
- moai_adk-0.34.0.dist-info/RECORD +0 -463
- moai_adk-0.34.0.dist-info/licenses/LICENSE +0 -21
- /moai_adk/foundation/{git.py → git/__init__.py} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +0 -0
|
@@ -1,466 +1,141 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: moai-platform-supabase
|
|
3
|
-
description: Supabase specialist covering PostgreSQL 16, pgvector, RLS, real-time subscriptions, and Edge Functions. Use when building full-stack apps with Supabase backend.
|
|
4
|
-
version: 1.0
|
|
5
|
-
category: platform
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
name: "moai-platform-supabase"
|
|
3
|
+
description: "Supabase specialist covering PostgreSQL 16, pgvector, RLS, real-time subscriptions, and Edge Functions. Use when building full-stack apps with Supabase backend."
|
|
4
|
+
version: 2.1.0
|
|
5
|
+
category: "platform"
|
|
6
|
+
modularized: true
|
|
7
|
+
user-invocable: false
|
|
8
|
+
tags: ['supabase', 'postgresql', 'pgvector', 'realtime', 'rls', 'edge-functions']
|
|
9
|
+
context7-libraries: ['/supabase/supabase']
|
|
10
|
+
related-skills: ['moai-platform-neon', 'moai-lang-typescript']
|
|
11
|
+
updated: 2026-01-11
|
|
12
|
+
status: "active"
|
|
13
|
+
allowed-tools:
|
|
14
|
+
- Read
|
|
15
|
+
- Grep
|
|
16
|
+
- Glob
|
|
17
|
+
- mcp__context7__resolve-library-id
|
|
18
|
+
- mcp__context7__get-library-docs
|
|
12
19
|
---
|
|
13
20
|
|
|
14
21
|
# moai-platform-supabase: Supabase Platform Specialist
|
|
15
22
|
|
|
16
|
-
## Quick Reference
|
|
23
|
+
## Quick Reference
|
|
17
24
|
|
|
18
25
|
Supabase Full-Stack Platform: PostgreSQL 16 with pgvector for AI/vector search, Row-Level Security for multi-tenant apps, real-time subscriptions, Edge Functions with Deno runtime, and integrated Storage with transformations.
|
|
19
26
|
|
|
20
27
|
### Core Capabilities
|
|
21
28
|
|
|
22
|
-
PostgreSQL 16
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
PostgreSQL 16 provides latest PostgreSQL with full SQL support, JSONB, and advanced features.
|
|
30
|
+
|
|
31
|
+
pgvector Extension enables AI embeddings storage with HNSW and IVFFlat indexes for similarity search.
|
|
32
|
+
|
|
33
|
+
Row-Level Security provides automatic multi-tenant data isolation at database level.
|
|
34
|
+
|
|
35
|
+
Real-time Subscriptions enable live data sync via Postgres Changes and Presence.
|
|
36
|
+
|
|
37
|
+
Edge Functions provide serverless Deno functions at the edge.
|
|
38
|
+
|
|
39
|
+
Storage provides file storage with automatic image transformations.
|
|
40
|
+
|
|
41
|
+
Auth provides built-in authentication with JWT integration.
|
|
29
42
|
|
|
30
43
|
### When to Use Supabase
|
|
31
44
|
|
|
32
|
-
|
|
33
|
-
- AI/ML applications needing vector embeddings and similarity search
|
|
34
|
-
- Real-time collaborative features (presence, live updates)
|
|
35
|
-
- Full-stack applications needing auth, database, and storage
|
|
36
|
-
- Projects requiring PostgreSQL-specific features
|
|
45
|
+
Use Supabase for multi-tenant SaaS applications requiring data isolation, AI/ML applications needing vector embeddings and similarity search, real-time collaborative features including presence and live updates, full-stack applications needing auth, database, and storage, and projects requiring PostgreSQL-specific features.
|
|
37
46
|
|
|
38
47
|
### Context7 Documentation Access
|
|
39
48
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
```
|
|
49
|
+
For latest Supabase API documentation, use the Context7 MCP tools:
|
|
50
|
+
|
|
51
|
+
Step 1 - Resolve library ID: Use mcp__context7__resolve-library-id with query "supabase" to get the Context7-compatible library ID.
|
|
52
|
+
|
|
53
|
+
Step 2 - Fetch documentation: Use mcp__context7__get-library-docs with the resolved library ID, specifying topic and token allocation.
|
|
54
|
+
|
|
55
|
+
Example topics include "postgresql pgvector", "row-level-security policies", "realtime subscriptions presence", "edge-functions deno", "storage transformations", and "auth jwt".
|
|
48
56
|
|
|
49
57
|
---
|
|
50
58
|
|
|
51
|
-
##
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
-- Create HNSW index for fast similarity search (recommended)
|
|
71
|
-
CREATE INDEX idx_documents_embedding ON documents
|
|
72
|
-
USING hnsw (embedding vector_cosine_ops)
|
|
73
|
-
WITH (m = 16, ef_construction = 64);
|
|
74
|
-
|
|
75
|
-
-- Alternative: IVFFlat index for large datasets (millions of rows)
|
|
76
|
-
-- CREATE INDEX idx_documents_ivf ON documents
|
|
77
|
-
-- USING ivfflat (embedding vector_cosine_ops)
|
|
78
|
-
-- WITH (lists = 100);
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Semantic Search Function:
|
|
82
|
-
```sql
|
|
83
|
-
CREATE OR REPLACE FUNCTION search_documents(
|
|
84
|
-
query_embedding vector(1536),
|
|
85
|
-
match_threshold FLOAT DEFAULT 0.8,
|
|
86
|
-
match_count INT DEFAULT 10
|
|
87
|
-
) RETURNS TABLE (id UUID, content TEXT, similarity FLOAT)
|
|
88
|
-
LANGUAGE plpgsql AS $$
|
|
89
|
-
BEGIN
|
|
90
|
-
RETURN QUERY SELECT d.id, d.content,
|
|
91
|
-
1 - (d.embedding <=> query_embedding) AS similarity
|
|
92
|
-
FROM documents d
|
|
93
|
-
WHERE 1 - (d.embedding <=> query_embedding) > match_threshold
|
|
94
|
-
ORDER BY d.embedding <=> query_embedding
|
|
95
|
-
LIMIT match_count;
|
|
96
|
-
END; $$;
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
Hybrid Search (Vector + Full-Text):
|
|
100
|
-
```sql
|
|
101
|
-
CREATE OR REPLACE FUNCTION hybrid_search(
|
|
102
|
-
query_text TEXT,
|
|
103
|
-
query_embedding vector(1536),
|
|
104
|
-
match_count INT DEFAULT 10,
|
|
105
|
-
full_text_weight FLOAT DEFAULT 0.3,
|
|
106
|
-
semantic_weight FLOAT DEFAULT 0.7
|
|
107
|
-
) RETURNS TABLE (id UUID, content TEXT, score FLOAT) AS $$
|
|
108
|
-
BEGIN
|
|
109
|
-
RETURN QUERY
|
|
110
|
-
WITH semantic AS (
|
|
111
|
-
SELECT e.id, e.content, 1 - (e.embedding <=> query_embedding) AS similarity
|
|
112
|
-
FROM documents e ORDER BY e.embedding <=> query_embedding LIMIT match_count * 2
|
|
113
|
-
),
|
|
114
|
-
full_text AS (
|
|
115
|
-
SELECT e.id, e.content,
|
|
116
|
-
ts_rank(to_tsvector('english', e.content), plainto_tsquery('english', query_text)) AS rank
|
|
117
|
-
FROM documents e
|
|
118
|
-
WHERE to_tsvector('english', e.content) @@ plainto_tsquery('english', query_text)
|
|
119
|
-
LIMIT match_count * 2
|
|
120
|
-
)
|
|
121
|
-
SELECT COALESCE(s.id, f.id), COALESCE(s.content, f.content),
|
|
122
|
-
(COALESCE(s.similarity, 0) * semantic_weight + COALESCE(f.rank, 0) * full_text_weight)
|
|
123
|
-
FROM semantic s FULL OUTER JOIN full_text f ON s.id = f.id
|
|
124
|
-
ORDER BY 3 DESC LIMIT match_count;
|
|
125
|
-
END; $$ LANGUAGE plpgsql;
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### Row-Level Security (RLS) Patterns
|
|
129
|
-
|
|
130
|
-
Basic Tenant Isolation:
|
|
131
|
-
```sql
|
|
132
|
-
ALTER TABLE projects ENABLE ROW LEVEL SECURITY;
|
|
133
|
-
|
|
134
|
-
-- Policy based on JWT claims
|
|
135
|
-
CREATE POLICY "tenant_isolation" ON projects FOR ALL
|
|
136
|
-
USING (tenant_id = (auth.jwt() ->> 'tenant_id')::UUID);
|
|
137
|
-
|
|
138
|
-
-- Owner-based access
|
|
139
|
-
CREATE POLICY "owner_access" ON projects FOR ALL
|
|
140
|
-
USING (owner_id = auth.uid());
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
Multi-Tenant with Hierarchical Access:
|
|
144
|
-
```sql
|
|
145
|
-
-- Organization-based access
|
|
146
|
-
CREATE POLICY "org_member_select" ON organizations FOR SELECT
|
|
147
|
-
USING (id IN (SELECT org_id FROM org_members WHERE user_id = auth.uid()));
|
|
148
|
-
|
|
149
|
-
-- Role-based modification
|
|
150
|
-
CREATE POLICY "org_admin_modify" ON organizations FOR UPDATE
|
|
151
|
-
USING (id IN (
|
|
152
|
-
SELECT org_id FROM org_members
|
|
153
|
-
WHERE user_id = auth.uid() AND role IN ('owner', 'admin')
|
|
154
|
-
));
|
|
155
|
-
|
|
156
|
-
-- Cascading project access through organization membership
|
|
157
|
-
CREATE POLICY "project_access" ON projects FOR ALL
|
|
158
|
-
USING (org_id IN (SELECT org_id FROM org_members WHERE user_id = auth.uid()));
|
|
159
|
-
|
|
160
|
-
-- Service role bypass for server-side operations
|
|
161
|
-
CREATE POLICY "service_bypass" ON organizations FOR ALL TO service_role USING (true);
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### Real-time Subscriptions
|
|
165
|
-
|
|
166
|
-
Table Changes Subscription:
|
|
167
|
-
```typescript
|
|
168
|
-
import { createClient } from '@supabase/supabase-js'
|
|
169
|
-
|
|
170
|
-
const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY)
|
|
171
|
-
|
|
172
|
-
// Subscribe to all changes on a table
|
|
173
|
-
const channel = supabase.channel('db-changes')
|
|
174
|
-
.on('postgres_changes',
|
|
175
|
-
{ event: '*', schema: 'public', table: 'messages' },
|
|
176
|
-
(payload) => console.log('Change:', payload)
|
|
177
|
-
)
|
|
178
|
-
.subscribe()
|
|
179
|
-
|
|
180
|
-
// Filter by specific conditions
|
|
181
|
-
supabase.channel('project-updates')
|
|
182
|
-
.on('postgres_changes',
|
|
183
|
-
{ event: 'UPDATE', schema: 'public', table: 'projects', filter: `id=eq.${projectId}` },
|
|
184
|
-
(payload) => handleProjectUpdate(payload.new)
|
|
185
|
-
)
|
|
186
|
-
.subscribe()
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
Presence Tracking:
|
|
190
|
-
```typescript
|
|
191
|
-
interface PresenceState {
|
|
192
|
-
user_id: string
|
|
193
|
-
online_at: string
|
|
194
|
-
typing?: boolean
|
|
195
|
-
cursor?: { x: number; y: number }
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
const channel = supabase.channel('room:collaborative-doc', {
|
|
199
|
-
config: { presence: { key: userId } }
|
|
200
|
-
})
|
|
201
|
-
|
|
202
|
-
channel
|
|
203
|
-
.on('presence', { event: 'sync' }, () => {
|
|
204
|
-
const state = channel.presenceState<PresenceState>()
|
|
205
|
-
console.log('Online users:', Object.keys(state))
|
|
206
|
-
})
|
|
207
|
-
.on('presence', { event: 'join' }, ({ key, newPresences }) => {
|
|
208
|
-
console.log('User joined:', key, newPresences)
|
|
209
|
-
})
|
|
210
|
-
.on('presence', { event: 'leave' }, ({ key, leftPresences }) => {
|
|
211
|
-
console.log('User left:', key, leftPresences)
|
|
212
|
-
})
|
|
213
|
-
.subscribe(async (status) => {
|
|
214
|
-
if (status === 'SUBSCRIBED') {
|
|
215
|
-
await channel.track({ user_id: userId, online_at: new Date().toISOString() })
|
|
216
|
-
}
|
|
217
|
-
})
|
|
218
|
-
|
|
219
|
-
// Update presence state
|
|
220
|
-
await channel.track({ typing: true })
|
|
221
|
-
await channel.track({ cursor: { x: 100, y: 200 } })
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
### Edge Functions
|
|
225
|
-
|
|
226
|
-
Basic Edge Function with Auth:
|
|
227
|
-
```typescript
|
|
228
|
-
// supabase/functions/api/index.ts
|
|
229
|
-
import { serve } from 'https://deno.land/std@0.168.0/http/server.ts'
|
|
230
|
-
import { createClient } from 'https://esm.sh/@supabase/supabase-js@2'
|
|
231
|
-
|
|
232
|
-
const corsHeaders = {
|
|
233
|
-
'Access-Control-Allow-Origin': '*',
|
|
234
|
-
'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type'
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
serve(async (req) => {
|
|
238
|
-
if (req.method === 'OPTIONS') {
|
|
239
|
-
return new Response('ok', { headers: corsHeaders })
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
const supabase = createClient(
|
|
243
|
-
Deno.env.get('SUPABASE_URL')!,
|
|
244
|
-
Deno.env.get('SUPABASE_SERVICE_ROLE_KEY')!
|
|
245
|
-
)
|
|
246
|
-
|
|
247
|
-
// Verify JWT token
|
|
248
|
-
const authHeader = req.headers.get('authorization')
|
|
249
|
-
if (!authHeader) {
|
|
250
|
-
return new Response(JSON.stringify({ error: 'Unauthorized' }),
|
|
251
|
-
{ status: 401, headers: { ...corsHeaders, 'Content-Type': 'application/json' } })
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
const { data: { user }, error } = await supabase.auth.getUser(
|
|
255
|
-
authHeader.replace('Bearer ', '')
|
|
256
|
-
)
|
|
257
|
-
|
|
258
|
-
if (error || !user) {
|
|
259
|
-
return new Response(JSON.stringify({ error: 'Invalid token' }),
|
|
260
|
-
{ status: 401, headers: { ...corsHeaders, 'Content-Type': 'application/json' } })
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
// Process request
|
|
264
|
-
const body = await req.json()
|
|
265
|
-
return new Response(JSON.stringify({ success: true, user_id: user.id }),
|
|
266
|
-
{ headers: { ...corsHeaders, 'Content-Type': 'application/json' } })
|
|
267
|
-
})
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
Rate Limiting in Edge Functions:
|
|
271
|
-
```typescript
|
|
272
|
-
async function checkRateLimit(
|
|
273
|
-
supabase: SupabaseClient, identifier: string, limit: number, windowSeconds: number
|
|
274
|
-
): Promise<boolean> {
|
|
275
|
-
const windowStart = new Date(Date.now() - windowSeconds * 1000).toISOString()
|
|
276
|
-
const { count } = await supabase
|
|
277
|
-
.from('rate_limits')
|
|
278
|
-
.select('*', { count: 'exact', head: true })
|
|
279
|
-
.eq('identifier', identifier)
|
|
280
|
-
.gte('created_at', windowStart)
|
|
281
|
-
|
|
282
|
-
if (count && count >= limit) return false
|
|
283
|
-
await supabase.from('rate_limits').insert({ identifier })
|
|
284
|
-
return true
|
|
285
|
-
}
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
### Storage with Image Transformations
|
|
289
|
-
|
|
290
|
-
```typescript
|
|
291
|
-
const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY)
|
|
292
|
-
|
|
293
|
-
async function uploadImage(file: File, userId: string) {
|
|
294
|
-
const fileName = `${userId}/${Date.now()}-${file.name}`
|
|
295
|
-
|
|
296
|
-
const { data, error } = await supabase.storage
|
|
297
|
-
.from('images')
|
|
298
|
-
.upload(fileName, file, { cacheControl: '3600', upsert: false })
|
|
299
|
-
|
|
300
|
-
if (error) throw error
|
|
301
|
-
|
|
302
|
-
// Get transformed URLs
|
|
303
|
-
const { data: { publicUrl } } = supabase.storage
|
|
304
|
-
.from('images')
|
|
305
|
-
.getPublicUrl(fileName, {
|
|
306
|
-
transform: { width: 800, height: 600, resize: 'contain' }
|
|
307
|
-
})
|
|
308
|
-
|
|
309
|
-
const { data: { publicUrl: thumbnailUrl } } = supabase.storage
|
|
310
|
-
.from('images')
|
|
311
|
-
.getPublicUrl(fileName, {
|
|
312
|
-
transform: { width: 200, height: 200, resize: 'cover' }
|
|
313
|
-
})
|
|
314
|
-
|
|
315
|
-
return { originalPath: data.path, publicUrl, thumbnailUrl }
|
|
316
|
-
}
|
|
317
|
-
```
|
|
59
|
+
## Module Index
|
|
60
|
+
|
|
61
|
+
This skill uses progressive disclosure with specialized modules for detailed implementation patterns.
|
|
62
|
+
|
|
63
|
+
### Core Modules
|
|
64
|
+
|
|
65
|
+
postgresql-pgvector covers PostgreSQL 16 with pgvector extension for AI embeddings and semantic search. Topics include vector storage with 1536-dimension OpenAI embeddings, HNSW and IVFFlat index strategies, semantic search functions, and hybrid search combining vector and full-text.
|
|
66
|
+
|
|
67
|
+
row-level-security covers RLS policies for multi-tenant data isolation. Topics include basic tenant isolation patterns, hierarchical organization access, role-based modification policies, and service role bypass for server operations.
|
|
68
|
+
|
|
69
|
+
realtime-presence covers real-time subscriptions and presence tracking. Topics include Postgres Changes subscription patterns, filtered change listeners, presence state management, and collaborative cursor and typing indicators.
|
|
70
|
+
|
|
71
|
+
edge-functions covers serverless Deno functions at the edge. Topics include basic Edge Function with authentication, CORS header configuration, JWT token verification, and rate limiting implementation.
|
|
72
|
+
|
|
73
|
+
storage-cdn covers file storage with image transformations. Topics include file upload patterns, image transformation URLs, thumbnail generation, and cache control configuration.
|
|
74
|
+
|
|
75
|
+
auth-integration covers authentication patterns and JWT handling. Topics include server-side client creation, cookie-based session management, auth state synchronization, and protected route patterns.
|
|
76
|
+
|
|
77
|
+
typescript-patterns covers TypeScript client patterns and service layers. Topics include server-side client for Next.js App Router, service layer abstraction pattern, subscription management, and type-safe database operations.
|
|
318
78
|
|
|
319
79
|
---
|
|
320
80
|
|
|
321
|
-
##
|
|
322
|
-
|
|
323
|
-
###
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
CREATE TABLE organization_members (
|
|
339
|
-
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
340
|
-
organization_id UUID REFERENCES organizations(id) ON DELETE CASCADE,
|
|
341
|
-
user_id UUID NOT NULL,
|
|
342
|
-
role TEXT NOT NULL CHECK (role IN ('owner', 'admin', 'member', 'viewer')),
|
|
343
|
-
joined_at TIMESTAMPTZ DEFAULT NOW(),
|
|
344
|
-
UNIQUE(organization_id, user_id)
|
|
345
|
-
);
|
|
346
|
-
|
|
347
|
-
-- Projects within organizations
|
|
348
|
-
CREATE TABLE projects (
|
|
349
|
-
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
350
|
-
organization_id UUID REFERENCES organizations(id) ON DELETE CASCADE,
|
|
351
|
-
name TEXT NOT NULL,
|
|
352
|
-
owner_id UUID NOT NULL,
|
|
353
|
-
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
354
|
-
);
|
|
355
|
-
|
|
356
|
-
-- Enable RLS on all tables
|
|
357
|
-
ALTER TABLE organizations ENABLE ROW LEVEL SECURITY;
|
|
358
|
-
ALTER TABLE organization_members ENABLE ROW LEVEL SECURITY;
|
|
359
|
-
ALTER TABLE projects ENABLE ROW LEVEL SECURITY;
|
|
360
|
-
|
|
361
|
-
-- Create comprehensive RLS policies
|
|
362
|
-
CREATE POLICY "org_member_select" ON organizations FOR SELECT
|
|
363
|
-
USING (id IN (SELECT organization_id FROM organization_members WHERE user_id = auth.uid()));
|
|
364
|
-
|
|
365
|
-
CREATE POLICY "org_admin_update" ON organizations FOR UPDATE
|
|
366
|
-
USING (id IN (SELECT organization_id FROM organization_members
|
|
367
|
-
WHERE user_id = auth.uid() AND role IN ('owner', 'admin')));
|
|
368
|
-
|
|
369
|
-
CREATE POLICY "project_member_access" ON projects FOR ALL
|
|
370
|
-
USING (organization_id IN (SELECT organization_id FROM organization_members WHERE user_id = auth.uid()));
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
### TypeScript Client Patterns
|
|
374
|
-
|
|
375
|
-
Server-Side Client (Next.js App Router):
|
|
376
|
-
```typescript
|
|
377
|
-
import { createServerClient } from '@supabase/ssr'
|
|
378
|
-
import { cookies } from 'next/headers'
|
|
379
|
-
import { Database } from './database.types'
|
|
380
|
-
|
|
381
|
-
export function createServerSupabase() {
|
|
382
|
-
const cookieStore = cookies()
|
|
383
|
-
return createServerClient<Database>(
|
|
384
|
-
process.env.NEXT_PUBLIC_SUPABASE_URL!,
|
|
385
|
-
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
|
|
386
|
-
{
|
|
387
|
-
cookies: {
|
|
388
|
-
get(name: string) { return cookieStore.get(name)?.value },
|
|
389
|
-
set(name, value, options) { cookieStore.set({ name, value, ...options }) },
|
|
390
|
-
remove(name, options) { cookieStore.set({ name, value: '', ...options }) }
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
)
|
|
394
|
-
}
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
Service Layer Pattern:
|
|
398
|
-
```typescript
|
|
399
|
-
import { supabase } from './supabase/client'
|
|
400
|
-
|
|
401
|
-
export class DocumentService {
|
|
402
|
-
async create(projectId: string, title: string, content: string) {
|
|
403
|
-
const { data: { user } } = await supabase.auth.getUser()
|
|
404
|
-
const { data, error } = await supabase
|
|
405
|
-
.from('documents')
|
|
406
|
-
.insert({ project_id: projectId, title, content, created_by: user!.id })
|
|
407
|
-
.select().single()
|
|
408
|
-
|
|
409
|
-
if (error) throw error
|
|
410
|
-
|
|
411
|
-
// Generate embedding async
|
|
412
|
-
await supabase.functions.invoke('generate-embedding',
|
|
413
|
-
{ body: { documentId: data.id, content } })
|
|
414
|
-
|
|
415
|
-
return data
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
async semanticSearch(projectId: string, query: string) {
|
|
419
|
-
const { data: embeddingData } = await supabase.functions.invoke(
|
|
420
|
-
'get-embedding', { body: { text: query } })
|
|
421
|
-
|
|
422
|
-
const { data, error } = await supabase.rpc('search_documents', {
|
|
423
|
-
p_project_id: projectId,
|
|
424
|
-
p_query_embedding: embeddingData.embedding,
|
|
425
|
-
p_match_threshold: 0.7,
|
|
426
|
-
p_match_count: 10
|
|
427
|
-
})
|
|
428
|
-
|
|
429
|
-
if (error) throw error
|
|
430
|
-
return data
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
subscribeToChanges(projectId: string, callback: (payload: any) => void) {
|
|
434
|
-
return supabase.channel(`documents:${projectId}`)
|
|
435
|
-
.on('postgres_changes',
|
|
436
|
-
{ event: '*', schema: 'public', table: 'documents', filter: `project_id=eq.${projectId}` },
|
|
437
|
-
callback)
|
|
438
|
-
.subscribe()
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
```
|
|
81
|
+
## Quick Start Patterns
|
|
82
|
+
|
|
83
|
+
### Database Setup
|
|
84
|
+
|
|
85
|
+
To enable pgvector extension and create embeddings table, execute SQL to create extension vector if not exists. Create a documents table with id as UUID primary key defaulting to gen_random_uuid(), content as TEXT not null, embedding as vector with 1536 dimensions, metadata as JSONB defaulting to empty object, and created_at as TIMESTAMPTZ defaulting to NOW(). Create an index on documents embedding using hnsw with vector_cosine_ops operator class.
|
|
86
|
+
|
|
87
|
+
### Basic RLS Policy
|
|
88
|
+
|
|
89
|
+
To create a tenant isolation policy, alter the projects table to enable row level security. Create a policy named "tenant_isolation" on projects for all operations using a condition where tenant_id equals the tenant_id extracted from the auth.jwt() function cast to UUID.
|
|
90
|
+
|
|
91
|
+
### Real-time Subscription
|
|
92
|
+
|
|
93
|
+
For real-time subscription, create a channel using supabase.channel with a channel name. Chain the on method for postgres_changes with event set to asterisk for all events, schema set to public, and table set to messages. Provide a callback that logs the payload. Chain subscribe to activate the subscription.
|
|
94
|
+
|
|
95
|
+
### Edge Function Template
|
|
96
|
+
|
|
97
|
+
For Edge Function template, import serve from deno.land/std/http/server.ts and createClient from esm.sh/@supabase/supabase-js. Call serve with an async handler that creates a Supabase client using environment variables SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY. Process the request and return a new Response with JSON stringified success object.
|
|
442
98
|
|
|
443
99
|
---
|
|
444
100
|
|
|
445
101
|
## Best Practices
|
|
446
102
|
|
|
447
|
-
Performance: Use HNSW indexes for vectors
|
|
448
|
-
|
|
449
|
-
|
|
103
|
+
Performance: Use HNSW indexes for vectors and Supavisor for connection pooling in serverless environments.
|
|
104
|
+
|
|
105
|
+
Security: Always enable RLS, verify JWT tokens, and use service_role only in Edge Functions.
|
|
106
|
+
|
|
107
|
+
Migration: Use Supabase CLI with supabase migration new and supabase db push commands.
|
|
450
108
|
|
|
451
109
|
---
|
|
452
110
|
|
|
453
111
|
## Works Well With
|
|
454
112
|
|
|
455
|
-
- moai-platform-neon
|
|
456
|
-
- moai-lang-typescript
|
|
457
|
-
- moai-domain-backend
|
|
458
|
-
- moai-quality
|
|
459
|
-
- moai-workflow-
|
|
113
|
+
- moai-platform-neon for alternative PostgreSQL for specific use cases
|
|
114
|
+
- moai-lang-typescript for TypeScript patterns for Supabase client
|
|
115
|
+
- moai-domain-backend for backend architecture integration
|
|
116
|
+
- moai-foundation-quality for security and RLS best practices
|
|
117
|
+
- moai-workflow-testing for test-driven development with Supabase
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Module References
|
|
122
|
+
|
|
123
|
+
For detailed implementation patterns, see the modules directory:
|
|
124
|
+
|
|
125
|
+
- modules/postgresql-pgvector.md covers complete vector search implementation
|
|
126
|
+
- modules/row-level-security.md covers multi-tenant RLS patterns
|
|
127
|
+
- modules/realtime-presence.md covers real-time collaboration features
|
|
128
|
+
- modules/edge-functions.md covers serverless function patterns
|
|
129
|
+
- modules/storage-cdn.md covers file storage and transformations
|
|
130
|
+
- modules/auth-integration.md covers authentication patterns
|
|
131
|
+
- modules/typescript-patterns.md covers TypeScript client architecture
|
|
132
|
+
|
|
133
|
+
For API reference summary, see reference.md. For full-stack templates, see examples.md.
|
|
460
134
|
|
|
461
135
|
---
|
|
462
136
|
|
|
463
137
|
Status: Production Ready
|
|
464
138
|
Generated with: MoAI-ADK Skill Factory v2.0
|
|
465
|
-
Last Updated:
|
|
139
|
+
Last Updated: 2026-01-11
|
|
140
|
+
Version: 2.1.0 (Modularized)
|
|
466
141
|
Coverage: PostgreSQL 16, pgvector, RLS, Real-time, Edge Functions, Storage
|