moai-adk 0.32.8__py3-none-any.whl → 0.41.2__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.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/cli/commands/init.py +4 -1
- moai_adk/cli/commands/update.py +31 -26
- moai_adk/cli/worktree/cli.py +54 -43
- moai_adk/cli/worktree/manager.py +17 -14
- moai_adk/cli/worktree/registry.py +313 -19
- moai_adk/core/config/unified.py +237 -63
- 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/language_config_resolver.py +96 -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/project/backup_utils.py +9 -1
- moai_adk/core/project/initializer.py +33 -96
- moai_adk/core/project/phase_executor.py +79 -33
- moai_adk/core/quality/trust_checker.py +30 -10
- moai_adk/core/realtime_monitoring_dashboard.py +3 -3
- moai_adk/core/rollback_manager.py +46 -19
- moai_adk/core/template/backup.py +4 -3
- moai_adk/core/template/config.py +33 -9
- moai_adk/core/template/merger.py +34 -8
- moai_adk/core/template/processor.py +144 -9
- 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/project/configuration.py +1 -1
- moai_adk/statusline/config.py +5 -2
- moai_adk/statusline/main.py +58 -0
- moai_adk/statusline/renderer.py +56 -84
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +218 -51
- moai_adk/templates/.claude/agents/moai/builder-agent.md +46 -11
- moai_adk/templates/.claude/agents/moai/builder-command.md +88 -26
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +753 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +79 -8
- moai_adk/templates/.claude/agents/moai/expert-backend.md +100 -28
- moai_adk/templates/.claude/agents/moai/expert-database.md +20 -12
- moai_adk/templates/.claude/agents/moai/expert-debug.md +19 -8
- moai_adk/templates/.claude/agents/moai/expert-devops.md +36 -25
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +99 -38
- moai_adk/templates/.claude/agents/moai/expert-performance.md +661 -0
- moai_adk/templates/.claude/agents/moai/expert-refactoring.md +218 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +55 -4
- moai_adk/templates/.claude/agents/moai/expert-testing.md +737 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +20 -11
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +13 -4
- moai_adk/templates/.claude/agents/moai/manager-docs.md +15 -7
- moai_adk/templates/.claude/agents/moai/manager-git.md +192 -37
- moai_adk/templates/.claude/agents/moai/manager-project.md +13 -7
- moai_adk/templates/.claude/agents/moai/manager-quality.md +48 -6
- moai_adk/templates/.claude/agents/moai/manager-spec.md +110 -8
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +203 -17
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +217 -23
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +102 -7
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +107 -86
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +50 -4
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +52 -4
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +49 -5
- moai_adk/templates/.claude/commands/moai/0-project.md +503 -307
- moai_adk/templates/.claude/commands/moai/1-plan.md +255 -323
- moai_adk/templates/.claude/commands/moai/2-run.md +257 -315
- moai_adk/templates/.claude/commands/moai/3-sync.md +421 -56
- moai_adk/templates/.claude/commands/moai/9-feedback.md +40 -34
- moai_adk/templates/.claude/hooks/moai/__init__.py +0 -0
- moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +19 -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_manager.py +12 -14
- moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +1 -1
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +104 -14
- 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/tool_registry.py +804 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +14 -2
- moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +256 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +253 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +307 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +231 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +40 -24
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +248 -32
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +265 -2
- moai_adk/templates/.claude/output-styles/moai/yoda.md +23 -2
- moai_adk/templates/.claude/settings.json +44 -6
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +303 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/reference.md +139 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -196
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +252 -0
- 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 +234 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +19 -13
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +21 -14
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +124 -425
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
- 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-frontend/reference.md +664 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +17 -15
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +105 -315
- moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
- moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +6 -6
- moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +197 -154
- moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
- 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-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-memory-official.md +2 -2
- 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 +432 -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-claude/reference.md +209 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +12 -1
- moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +33 -134
- moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +31 -18
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +30 -30
- 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-core/reference.md +478 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +311 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +17 -16
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +431 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +17 -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 +17 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +194 -0
- 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 +395 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +17 -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 +17 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +473 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +378 -0
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +387 -0
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +419 -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 +384 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +505 -0
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +17 -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 +17 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +490 -0
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +390 -0
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +17 -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 +17 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +433 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +17 -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 +17 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +378 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +212 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
- 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-scala/reference.md +423 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +192 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
- 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-swift/reference.md +672 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +365 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +94 -227
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +26 -6
- moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
- 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-nextra/reference.md +379 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +17 -13
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +1 -1
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +284 -0
- 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 +426 -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 +229 -0
- 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 +250 -0
- 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 +231 -0
- 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 +206 -0
- 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 +224 -0
- 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 +207 -0
- 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 +210 -0
- 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-plugin-builder/SKILL.md +474 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/modules/migration.md +341 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/modules/validation.md +373 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +464 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +307 -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-tool-opencode/SKILL.md +215 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/examples.md +697 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/index.md +96 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/acp.md +115 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/agents.md +241 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/commands.md +197 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/custom-tools.md +197 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/formatters.md +164 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/keybinds.md +150 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/lsp-servers.md +156 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/mcp-servers.md +214 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/models.md +197 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/permissions.md +162 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/rules.md +129 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/skills.md +192 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/themes.md +200 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/tools.md +169 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/config.md +211 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/enterprise.md +68 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/intro.md +127 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/migration-1.0.md +82 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/network.md +72 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/providers.md +310 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/troubleshooting.md +124 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/ecosystem.md +75 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/plugins.md +218 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/sdk.md +266 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/server.md +207 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/cli.md +159 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/github.md +181 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/gitlab.md +122 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/ide.md +74 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/share.md +106 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/tui.md +129 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/zen.md +118 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/reference.md +790 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +190 -424
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +188 -314
- moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +284 -212
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +2 -2
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +1 -1
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +22 -1
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +337 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +13 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +222 -367
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
- 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-testing/reference.md +440 -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 +168 -50
- moai_adk/templates/.gitignore +0 -3
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +5 -12
- moai_adk/templates/.moai/config/config.yaml +20 -306
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +105 -10
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +259 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +4 -5
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +12 -55
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +111 -21
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +34 -18
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +19 -75
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +83 -7
- moai_adk/templates/.moai/config/sections/language.yaml +7 -7
- moai_adk/templates/.moai/config/sections/project.yaml +1 -1
- moai_adk/templates/.moai/config/sections/quality.yaml +7 -4
- moai_adk/templates/.moai/config/sections/system.yaml +11 -1
- moai_adk/templates/.moai/config/statusline-config.yaml +19 -13
- moai_adk/templates/.moai/scripts/setup-glm.py +4 -4
- moai_adk/templates/CLAUDE.md +578 -154
- moai_adk/utils/common.py +33 -0
- moai_adk/version.py +1 -1
- {moai_adk-0.32.8.dist-info → moai_adk-0.41.2.dist-info}/METADATA +905 -109
- moai_adk-0.41.2.dist-info/RECORD +683 -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/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
- moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +0 -352
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +0 -52
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +0 -334
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +0 -310
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +0 -256
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +0 -253
- moai_adk/templates/.claude/skills/moai-lang-unified/README.md +0 -133
- moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +0 -296
- moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +0 -1269
- moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +0 -331
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
- moai_adk/templates/.claude/skills/moai-platform-baas/README.md +0 -186
- moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +0 -290
- moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +0 -1225
- moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +0 -567
- moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +0 -323
- moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +0 -204
- 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 -135
- 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 -410
- 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/cache/personalization.json +0 -10
- moai_adk/templates/.moai/config/presets/manual.yaml +0 -28
- moai_adk/templates/.moai/config/presets/personal.yaml +0 -30
- moai_adk/templates/.moai/config/presets/team.yaml +0 -33
- moai_adk-0.32.8.dist-info/RECORD +0 -396
- /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.32.8.dist-info → moai_adk-0.41.2.dist-info}/WHEEL +0 -0
- {moai_adk-0.32.8.dist-info → moai_adk-0.41.2.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.32.8.dist-info → moai_adk-0.41.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
# Firebase Authentication Reference
|
|
2
|
+
|
|
3
|
+
Extended reference documentation for Firebase Authentication covering advanced patterns, configuration guides, and security best practices.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Context7 Documentation Access
|
|
8
|
+
|
|
9
|
+
For the latest Firebase Authentication documentation, use Context7 MCP tools:
|
|
10
|
+
|
|
11
|
+
Step 1: Resolve library ID using resolve-library-id with query "firebase"
|
|
12
|
+
|
|
13
|
+
Step 2: Fetch documentation using get-library-docs with the resolved Context7 ID and topic "authentication"
|
|
14
|
+
|
|
15
|
+
This provides access to the most current API documentation, breaking changes, and best practices.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Firebase Console Configuration
|
|
20
|
+
|
|
21
|
+
### Authentication Provider Setup
|
|
22
|
+
|
|
23
|
+
Navigate to Firebase Console at console.firebase.google.com, select your project, then go to Authentication section.
|
|
24
|
+
|
|
25
|
+
Sign-in Method Configuration:
|
|
26
|
+
- Enable desired providers under Sign-in method tab
|
|
27
|
+
- Configure OAuth credentials for social providers
|
|
28
|
+
- Set up authorized domains for web applications
|
|
29
|
+
- Configure email templates for email-based authentication
|
|
30
|
+
|
|
31
|
+
### OAuth Provider Configuration
|
|
32
|
+
|
|
33
|
+
Google Sign-In:
|
|
34
|
+
- Automatically configured with Firebase project
|
|
35
|
+
- Configure OAuth consent screen in Google Cloud Console
|
|
36
|
+
- Add authorized domains and redirect URIs
|
|
37
|
+
|
|
38
|
+
Facebook Login:
|
|
39
|
+
- Create Facebook App at developers.facebook.com
|
|
40
|
+
- Copy App ID and App Secret to Firebase Console
|
|
41
|
+
- Configure OAuth redirect URI from Firebase Console
|
|
42
|
+
|
|
43
|
+
Apple Sign-In:
|
|
44
|
+
- Enable Sign In with Apple in Apple Developer Console
|
|
45
|
+
- Configure Service ID for web authentication
|
|
46
|
+
- Generate private key for server-to-server communication
|
|
47
|
+
- Add team ID, key ID, and private key to Firebase Console
|
|
48
|
+
|
|
49
|
+
Twitter/X:
|
|
50
|
+
- Create Twitter App at developer.twitter.com
|
|
51
|
+
- Copy API Key and API Secret to Firebase Console
|
|
52
|
+
|
|
53
|
+
GitHub:
|
|
54
|
+
- Create GitHub OAuth App at github.com/settings/developers
|
|
55
|
+
- Copy Client ID and Client Secret to Firebase Console
|
|
56
|
+
|
|
57
|
+
Microsoft:
|
|
58
|
+
- Register application in Azure Portal
|
|
59
|
+
- Configure as multi-tenant or single-tenant
|
|
60
|
+
- Copy Application ID and Client Secret to Firebase Console
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Admin SDK Setup
|
|
65
|
+
|
|
66
|
+
### Node.js Initialization
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
import { initializeApp, cert } from 'firebase-admin/app';
|
|
70
|
+
import { getAuth } from 'firebase-admin/auth';
|
|
71
|
+
|
|
72
|
+
// Initialize with service account
|
|
73
|
+
initializeApp({
|
|
74
|
+
credential: cert('./service-account-key.json')
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// Or use default credentials (Cloud Functions, Cloud Run)
|
|
78
|
+
initializeApp();
|
|
79
|
+
|
|
80
|
+
const auth = getAuth();
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Python Initialization
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
import firebase_admin
|
|
87
|
+
from firebase_admin import credentials, auth
|
|
88
|
+
|
|
89
|
+
cred = credentials.Certificate('./service-account-key.json')
|
|
90
|
+
firebase_admin.initialize_app(cred)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Go Initialization
|
|
94
|
+
|
|
95
|
+
```go
|
|
96
|
+
import (
|
|
97
|
+
"context"
|
|
98
|
+
firebase "firebase.google.com/go/v4"
|
|
99
|
+
"google.golang.org/api/option"
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
opt := option.WithCredentialsFile("./service-account-key.json")
|
|
103
|
+
app, err := firebase.NewApp(context.Background(), nil, opt)
|
|
104
|
+
client, err := app.Auth(context.Background())
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Multi-Factor Authentication
|
|
110
|
+
|
|
111
|
+
### Enrollment Flow
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
import { multiFactor, PhoneMultiFactorGenerator, PhoneAuthProvider } from 'firebase/auth';
|
|
115
|
+
|
|
116
|
+
const enrollMFA = async (phoneNumber: string) => {
|
|
117
|
+
const user = auth.currentUser;
|
|
118
|
+
if (!user) throw new Error('Not signed in');
|
|
119
|
+
|
|
120
|
+
const mfUser = multiFactor(user);
|
|
121
|
+
const session = await mfUser.getSession();
|
|
122
|
+
|
|
123
|
+
const phoneAuthProvider = new PhoneAuthProvider(auth);
|
|
124
|
+
const verificationId = await phoneAuthProvider.verifyPhoneNumber(
|
|
125
|
+
{ phoneNumber, session },
|
|
126
|
+
recaptchaVerifier
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
// User enters verification code
|
|
130
|
+
const code = await promptUserForCode();
|
|
131
|
+
|
|
132
|
+
const credential = PhoneAuthProvider.credential(verificationId, code);
|
|
133
|
+
const assertion = PhoneMultiFactorGenerator.assertion(credential);
|
|
134
|
+
|
|
135
|
+
await mfUser.enroll(assertion, 'Phone');
|
|
136
|
+
};
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Sign-In with MFA Challenge
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
import { getMultiFactorResolver } from 'firebase/auth';
|
|
143
|
+
|
|
144
|
+
try {
|
|
145
|
+
await signInWithEmailAndPassword(auth, email, password);
|
|
146
|
+
} catch (error: any) {
|
|
147
|
+
if (error.code === 'auth/multi-factor-auth-required') {
|
|
148
|
+
const resolver = getMultiFactorResolver(auth, error);
|
|
149
|
+
|
|
150
|
+
// Show available second factors
|
|
151
|
+
const hints = resolver.hints;
|
|
152
|
+
|
|
153
|
+
// Verify with selected factor
|
|
154
|
+
const phoneAuthProvider = new PhoneAuthProvider(auth);
|
|
155
|
+
const verificationId = await phoneAuthProvider.verifyPhoneNumber(
|
|
156
|
+
{ multiFactorHint: hints[0], session: resolver.session },
|
|
157
|
+
recaptchaVerifier
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
const code = await promptUserForCode();
|
|
161
|
+
const credential = PhoneAuthProvider.credential(verificationId, code);
|
|
162
|
+
const assertion = PhoneMultiFactorGenerator.assertion(credential);
|
|
163
|
+
|
|
164
|
+
await resolver.resolveSignIn(assertion);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Cloud Functions Auth Triggers
|
|
172
|
+
|
|
173
|
+
### User Lifecycle Events
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
import { auth } from 'firebase-functions';
|
|
177
|
+
import { getFirestore, FieldValue } from 'firebase-admin/firestore';
|
|
178
|
+
|
|
179
|
+
// On user creation
|
|
180
|
+
export const onUserCreate = auth.user().onCreate(async (user) => {
|
|
181
|
+
await getFirestore().collection('users').doc(user.uid).set({
|
|
182
|
+
email: user.email,
|
|
183
|
+
displayName: user.displayName,
|
|
184
|
+
photoURL: user.photoURL,
|
|
185
|
+
createdAt: FieldValue.serverTimestamp(),
|
|
186
|
+
providers: user.providerData.map(p => p.providerId)
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
// On user deletion
|
|
191
|
+
export const onUserDelete = auth.user().onDelete(async (user) => {
|
|
192
|
+
// Clean up user data
|
|
193
|
+
const batch = getFirestore().batch();
|
|
194
|
+
|
|
195
|
+
batch.delete(getFirestore().collection('users').doc(user.uid));
|
|
196
|
+
|
|
197
|
+
const userDocs = await getFirestore()
|
|
198
|
+
.collection('userContent')
|
|
199
|
+
.where('userId', '==', user.uid)
|
|
200
|
+
.get();
|
|
201
|
+
|
|
202
|
+
userDocs.forEach(doc => batch.delete(doc.ref));
|
|
203
|
+
|
|
204
|
+
await batch.commit();
|
|
205
|
+
});
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Blocking Functions
|
|
209
|
+
|
|
210
|
+
```typescript
|
|
211
|
+
import { beforeUserCreated, beforeUserSignedIn } from 'firebase-functions/v2/identity';
|
|
212
|
+
|
|
213
|
+
// Validate before user creation
|
|
214
|
+
export const validateUserCreate = beforeUserCreated((event) => {
|
|
215
|
+
const user = event.data;
|
|
216
|
+
|
|
217
|
+
// Domain restriction
|
|
218
|
+
if (!user.email?.endsWith('@company.com')) {
|
|
219
|
+
throw new HttpsError('permission-denied', 'Unauthorized email domain');
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Set initial claims
|
|
223
|
+
return {
|
|
224
|
+
customClaims: { role: 'member' }
|
|
225
|
+
};
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
// Validate before sign-in
|
|
229
|
+
export const validateSignIn = beforeUserSignedIn((event) => {
|
|
230
|
+
const user = event.data;
|
|
231
|
+
|
|
232
|
+
// Check if user is disabled in external system
|
|
233
|
+
// Return undefined to allow, throw to block
|
|
234
|
+
|
|
235
|
+
return;
|
|
236
|
+
});
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Session Management
|
|
242
|
+
|
|
243
|
+
### Persistence Options
|
|
244
|
+
|
|
245
|
+
```typescript
|
|
246
|
+
import {
|
|
247
|
+
setPersistence,
|
|
248
|
+
browserLocalPersistence,
|
|
249
|
+
browserSessionPersistence,
|
|
250
|
+
inMemoryPersistence
|
|
251
|
+
} from 'firebase/auth';
|
|
252
|
+
|
|
253
|
+
// Persist across browser sessions (default)
|
|
254
|
+
await setPersistence(auth, browserLocalPersistence);
|
|
255
|
+
|
|
256
|
+
// Clear on tab close
|
|
257
|
+
await setPersistence(auth, browserSessionPersistence);
|
|
258
|
+
|
|
259
|
+
// No persistence (memory only)
|
|
260
|
+
await setPersistence(auth, inMemoryPersistence);
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### Session Cookies (Server-Side)
|
|
264
|
+
|
|
265
|
+
```typescript
|
|
266
|
+
// Server: Create session cookie
|
|
267
|
+
const expiresIn = 60 * 60 * 24 * 5 * 1000; // 5 days
|
|
268
|
+
const sessionCookie = await getAuth().createSessionCookie(idToken, { expiresIn });
|
|
269
|
+
|
|
270
|
+
// Set cookie in response
|
|
271
|
+
res.cookie('session', sessionCookie, {
|
|
272
|
+
maxAge: expiresIn,
|
|
273
|
+
httpOnly: true,
|
|
274
|
+
secure: true,
|
|
275
|
+
sameSite: 'strict'
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
// Verify session cookie
|
|
279
|
+
const decodedClaims = await getAuth().verifySessionCookie(sessionCookie, true);
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Firebase Auth Emulator
|
|
285
|
+
|
|
286
|
+
### Configuration
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
import { connectAuthEmulator } from 'firebase/auth';
|
|
290
|
+
|
|
291
|
+
if (process.env.NODE_ENV === 'development') {
|
|
292
|
+
connectAuthEmulator(auth, 'http://localhost:9099');
|
|
293
|
+
}
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Emulator Features
|
|
297
|
+
|
|
298
|
+
Test Phone Numbers:
|
|
299
|
+
- Configure test phone numbers in Firebase Console
|
|
300
|
+
- Use any 6-digit code for verification
|
|
301
|
+
- No actual SMS sent
|
|
302
|
+
|
|
303
|
+
Emulator UI:
|
|
304
|
+
- Access at localhost:4000 when running emulator suite
|
|
305
|
+
- View and manage test users
|
|
306
|
+
- Inspect authentication state
|
|
307
|
+
|
|
308
|
+
Programmatic User Creation:
|
|
309
|
+
- Create users via Emulator REST API
|
|
310
|
+
- Useful for test setup
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## Security Best Practices
|
|
315
|
+
|
|
316
|
+
Token Validation:
|
|
317
|
+
- Always verify ID tokens server-side for sensitive operations
|
|
318
|
+
- Check token expiration and issuer claims
|
|
319
|
+
- Use Admin SDK verifyIdToken method
|
|
320
|
+
|
|
321
|
+
Rate Limiting:
|
|
322
|
+
- Firebase automatically rate limits authentication requests
|
|
323
|
+
- Implement additional rate limiting for sensitive operations
|
|
324
|
+
- Monitor failed authentication attempts
|
|
325
|
+
|
|
326
|
+
Secure Configuration:
|
|
327
|
+
- Never expose service account keys in client code
|
|
328
|
+
- Use environment variables for sensitive configuration
|
|
329
|
+
- Rotate API keys periodically
|
|
330
|
+
|
|
331
|
+
Custom Claims Security:
|
|
332
|
+
- Never trust client-provided claims
|
|
333
|
+
- Validate claims server-side before granting access
|
|
334
|
+
- Use Security Rules for claim-based access control
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## Error Codes Reference
|
|
339
|
+
|
|
340
|
+
Common Authentication Errors:
|
|
341
|
+
- auth/user-not-found: No user with provided identifier
|
|
342
|
+
- auth/wrong-password: Invalid password
|
|
343
|
+
- auth/email-already-in-use: Email already registered
|
|
344
|
+
- auth/weak-password: Password does not meet requirements
|
|
345
|
+
- auth/invalid-email: Malformed email address
|
|
346
|
+
- auth/user-disabled: User account is disabled
|
|
347
|
+
- auth/too-many-requests: Rate limit exceeded
|
|
348
|
+
- auth/network-request-failed: Network connectivity issue
|
|
349
|
+
|
|
350
|
+
Social Provider Errors:
|
|
351
|
+
- auth/popup-closed-by-user: User closed popup before completion
|
|
352
|
+
- auth/popup-blocked: Browser blocked popup window
|
|
353
|
+
- auth/account-exists-with-different-credential: Email linked to different provider
|
|
354
|
+
- auth/cancelled-popup-request: Multiple popup requests
|
|
355
|
+
|
|
356
|
+
Phone Auth Errors:
|
|
357
|
+
- auth/invalid-phone-number: Malformed phone number
|
|
358
|
+
- auth/invalid-verification-code: Wrong SMS code
|
|
359
|
+
- auth/code-expired: Verification code expired
|
|
360
|
+
- auth/quota-exceeded: SMS quota exceeded
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
## Platform SDK Versions
|
|
365
|
+
|
|
366
|
+
Web SDK:
|
|
367
|
+
- Firebase JS SDK v9+ (modular)
|
|
368
|
+
- Legacy v8 (compat mode available)
|
|
369
|
+
|
|
370
|
+
Mobile SDKs:
|
|
371
|
+
- iOS: FirebaseAuth via Swift Package Manager or CocoaPods
|
|
372
|
+
- Android: firebase-auth via Gradle
|
|
373
|
+
|
|
374
|
+
Cross-Platform:
|
|
375
|
+
- Flutter: firebase_auth package
|
|
376
|
+
- React Native: @react-native-firebase/auth
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
Version: 1.0.0
|
|
381
|
+
Last Updated: 2025-12-07
|
|
382
|
+
Parent Skill: moai-platform-firebase-auth
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "moai-platform-firestore"
|
|
3
|
+
description: "Firebase Firestore specialist covering NoSQL patterns, real-time sync, offline caching, and Security Rules. Use when building mobile-first apps with offline support, implementing real-time listeners, or configuring Firestore security."
|
|
4
|
+
version: 2.0.0
|
|
5
|
+
category: "platform"
|
|
6
|
+
modularized: true
|
|
7
|
+
user-invocable: false
|
|
8
|
+
tags: ['firestore', 'firebase', 'nosql', 'realtime', 'offline', 'mobile']
|
|
9
|
+
updated: 2026-01-08
|
|
10
|
+
status: "active"
|
|
11
|
+
context7-libraries: ['/firebase/firebase-docs']
|
|
12
|
+
related-skills: ['moai-platform-firebase-auth', 'moai-lang-flutter', 'moai-lang-typescript']
|
|
13
|
+
allowed-tools:
|
|
14
|
+
- Read
|
|
15
|
+
- Write
|
|
16
|
+
- Bash
|
|
17
|
+
- Grep
|
|
18
|
+
- Glob
|
|
19
|
+
- mcp__context7__resolve-library-id
|
|
20
|
+
- mcp__context7__get-library-docs
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# moai-platform-firestore: Firebase Firestore Specialist
|
|
24
|
+
|
|
25
|
+
## Quick Reference
|
|
26
|
+
|
|
27
|
+
Firebase Firestore Expertise: NoSQL document database with real-time synchronization, offline-first architecture, Security Rules, Cloud Functions triggers, and mobile-optimized SDKs.
|
|
28
|
+
|
|
29
|
+
### Core Capabilities
|
|
30
|
+
|
|
31
|
+
Real-time Sync: Automatic synchronization across all connected clients
|
|
32
|
+
Offline Caching: IndexedDB persistence with automatic sync when online
|
|
33
|
+
Security Rules: Declarative field-level access control
|
|
34
|
+
Cloud Functions: Document triggers for server-side processing
|
|
35
|
+
Composite Indexes: Complex query optimization
|
|
36
|
+
|
|
37
|
+
### When to Use Firestore
|
|
38
|
+
|
|
39
|
+
- Mobile-first applications with offline support
|
|
40
|
+
- Real-time collaborative features
|
|
41
|
+
- Cross-platform apps (iOS, Android, Web, Flutter)
|
|
42
|
+
- Projects requiring Google Cloud integration
|
|
43
|
+
- Apps with flexible, evolving data structures
|
|
44
|
+
|
|
45
|
+
### Context7 Documentation Access
|
|
46
|
+
|
|
47
|
+
Step 1: Resolve the Firebase library ID
|
|
48
|
+
- Use mcp__context7__resolve-library-id with libraryName "firebase"
|
|
49
|
+
- Returns the Context7-compatible library ID
|
|
50
|
+
|
|
51
|
+
Step 2: Fetch Firestore documentation
|
|
52
|
+
- Use mcp__context7__get-library-docs with the resolved ID
|
|
53
|
+
- Set topic to specific area: "firestore security-rules", "firestore offline", "firestore real-time"
|
|
54
|
+
- Allocate 6000-8000 tokens for comprehensive coverage
|
|
55
|
+
|
|
56
|
+
### Module Index
|
|
57
|
+
|
|
58
|
+
This skill is organized into specialized modules for deep implementation guidance:
|
|
59
|
+
|
|
60
|
+
Security Rules Module (modules/security-rules.md):
|
|
61
|
+
- Basic rule structure and syntax
|
|
62
|
+
- Role-based access control patterns
|
|
63
|
+
- Custom claims integration
|
|
64
|
+
- Field-level validation
|
|
65
|
+
- Testing and debugging rules
|
|
66
|
+
|
|
67
|
+
Offline and Caching Module (modules/offline-cache.md):
|
|
68
|
+
- Persistent cache configuration
|
|
69
|
+
- Multi-tab manager setup
|
|
70
|
+
- Cache size optimization
|
|
71
|
+
- Sync status handling
|
|
72
|
+
- Network state management
|
|
73
|
+
|
|
74
|
+
Real-time Listeners Module (modules/realtime-listeners.md):
|
|
75
|
+
- Snapshot listener patterns
|
|
76
|
+
- Metadata handling for pending writes
|
|
77
|
+
- Query subscription optimization
|
|
78
|
+
- Listener lifecycle management
|
|
79
|
+
- Error handling strategies
|
|
80
|
+
|
|
81
|
+
Transactions Module (modules/transactions.md):
|
|
82
|
+
- Atomic batch operations
|
|
83
|
+
- Transaction patterns and constraints
|
|
84
|
+
- Distributed counter implementation
|
|
85
|
+
- Conflict resolution strategies
|
|
86
|
+
- Performance considerations
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Implementation Guide
|
|
91
|
+
|
|
92
|
+
### Firestore Initialization with Offline Persistence
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
import { initializeApp } from 'firebase/app'
|
|
96
|
+
import {
|
|
97
|
+
initializeFirestore,
|
|
98
|
+
persistentLocalCache,
|
|
99
|
+
persistentMultipleTabManager,
|
|
100
|
+
CACHE_SIZE_UNLIMITED
|
|
101
|
+
} from 'firebase/firestore'
|
|
102
|
+
|
|
103
|
+
const app = initializeApp({
|
|
104
|
+
apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY,
|
|
105
|
+
authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,
|
|
106
|
+
projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
export const db = initializeFirestore(app, {
|
|
110
|
+
localCache: persistentLocalCache({
|
|
111
|
+
tabManager: persistentMultipleTabManager(),
|
|
112
|
+
cacheSizeBytes: CACHE_SIZE_UNLIMITED
|
|
113
|
+
})
|
|
114
|
+
})
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Basic Security Rules Structure
|
|
118
|
+
|
|
119
|
+
```javascript
|
|
120
|
+
rules_version = '2';
|
|
121
|
+
service cloud.firestore {
|
|
122
|
+
match /databases/{database}/documents {
|
|
123
|
+
match /users/{userId} {
|
|
124
|
+
allow read, write: if request.auth.uid == userId;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
match /documents/{docId} {
|
|
128
|
+
allow read: if resource.data.isPublic == true
|
|
129
|
+
|| request.auth.uid == resource.data.ownerId
|
|
130
|
+
|| request.auth.uid in resource.data.collaborators;
|
|
131
|
+
allow create: if request.auth != null
|
|
132
|
+
&& request.resource.data.ownerId == request.auth.uid;
|
|
133
|
+
allow update, delete: if request.auth.uid == resource.data.ownerId;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Real-time Listener with Metadata
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
import { collection, query, where, orderBy, onSnapshot } from 'firebase/firestore'
|
|
143
|
+
|
|
144
|
+
export function subscribeToDocuments(userId: string, callback: (docs: any[]) => void) {
|
|
145
|
+
const q = query(
|
|
146
|
+
collection(db, 'documents'),
|
|
147
|
+
where('collaborators', 'array-contains', userId),
|
|
148
|
+
orderBy('createdAt', 'desc')
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
return onSnapshot(q, { includeMetadataChanges: true }, (snapshot) => {
|
|
152
|
+
callback(snapshot.docs.map((doc) => ({
|
|
153
|
+
id: doc.id,
|
|
154
|
+
...doc.data(),
|
|
155
|
+
_pending: doc.metadata.hasPendingWrites,
|
|
156
|
+
_fromCache: doc.metadata.fromCache
|
|
157
|
+
})))
|
|
158
|
+
})
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Composite Indexes Configuration
|
|
163
|
+
|
|
164
|
+
```json
|
|
165
|
+
{
|
|
166
|
+
"indexes": [
|
|
167
|
+
{
|
|
168
|
+
"collectionGroup": "documents",
|
|
169
|
+
"queryScope": "COLLECTION",
|
|
170
|
+
"fields": [
|
|
171
|
+
{ "fieldPath": "organizationId", "order": "ASCENDING" },
|
|
172
|
+
{ "fieldPath": "createdAt", "order": "DESCENDING" }
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"collectionGroup": "documents",
|
|
177
|
+
"queryScope": "COLLECTION",
|
|
178
|
+
"fields": [
|
|
179
|
+
{ "fieldPath": "tags", "arrayConfig": "CONTAINS" },
|
|
180
|
+
{ "fieldPath": "createdAt", "order": "DESCENDING" }
|
|
181
|
+
]
|
|
182
|
+
}
|
|
183
|
+
]
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Performance and Pricing
|
|
190
|
+
|
|
191
|
+
### Performance Characteristics
|
|
192
|
+
|
|
193
|
+
Read Latency: 50-200ms (varies by region)
|
|
194
|
+
Write Latency: 100-300ms
|
|
195
|
+
Real-time Propagation: 100-500ms
|
|
196
|
+
Offline Sync: Automatic on reconnection
|
|
197
|
+
|
|
198
|
+
### Free Tier (2024)
|
|
199
|
+
|
|
200
|
+
Storage: 1GB
|
|
201
|
+
Daily Reads: 50,000
|
|
202
|
+
Daily Writes: 20,000
|
|
203
|
+
Daily Deletes: 20,000
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Works Well With
|
|
208
|
+
|
|
209
|
+
- moai-platform-firebase-auth - Firebase Authentication integration
|
|
210
|
+
- moai-lang-flutter - Flutter SDK patterns
|
|
211
|
+
- moai-lang-typescript - TypeScript client patterns
|
|
212
|
+
- moai-domain-mobile - Mobile architecture patterns
|
|
213
|
+
- moai-quality-security - Security Rules best practices
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Additional Resources
|
|
218
|
+
|
|
219
|
+
- reference.md - Extended documentation and best practices
|
|
220
|
+
- examples.md - Complete working code examples
|
|
221
|
+
- modules/security-rules.md - Security Rules deep dive
|
|
222
|
+
- modules/offline-cache.md - Offline persistence patterns
|
|
223
|
+
- modules/realtime-listeners.md - Real-time subscription patterns
|
|
224
|
+
- modules/transactions.md - Batch and transaction operations
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
Status: Production Ready
|
|
229
|
+
Generated with: MoAI-ADK Skill Factory v2.0
|
|
230
|
+
Last Updated: 2026-01-06
|
|
231
|
+
Platform: Firebase Firestore
|