moai-adk 0.35.1__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/__init__.py +10 -0
- moai_adk/__main__.py +199 -0
- moai_adk/cli/__init__.py +6 -0
- moai_adk/cli/commands/__init__.py +17 -0
- moai_adk/cli/commands/analyze.py +116 -0
- moai_adk/cli/commands/doctor.py +272 -0
- moai_adk/cli/commands/init.py +372 -0
- moai_adk/cli/commands/language.py +248 -0
- moai_adk/cli/commands/status.py +104 -0
- moai_adk/cli/commands/update.py +2686 -0
- moai_adk/cli/main.py +13 -0
- moai_adk/cli/prompts/__init__.py +5 -0
- moai_adk/cli/prompts/init_prompts.py +219 -0
- moai_adk/cli/spec_status.py +263 -0
- moai_adk/cli/ui/__init__.py +44 -0
- moai_adk/cli/ui/progress.py +422 -0
- moai_adk/cli/ui/prompts.py +389 -0
- moai_adk/cli/ui/theme.py +129 -0
- moai_adk/cli/worktree/__init__.py +27 -0
- moai_adk/cli/worktree/__main__.py +31 -0
- moai_adk/cli/worktree/cli.py +683 -0
- moai_adk/cli/worktree/exceptions.py +89 -0
- moai_adk/cli/worktree/manager.py +493 -0
- moai_adk/cli/worktree/models.py +65 -0
- moai_adk/cli/worktree/registry.py +422 -0
- moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
- moai_adk/core/__init__.py +1 -0
- moai_adk/core/analysis/__init__.py +9 -0
- moai_adk/core/analysis/session_analyzer.py +400 -0
- moai_adk/core/claude_integration.py +393 -0
- moai_adk/core/command_helpers.py +270 -0
- moai_adk/core/comprehensive_monitoring_system.py +1183 -0
- moai_adk/core/config/__init__.py +19 -0
- moai_adk/core/config/auto_spec_config.py +340 -0
- moai_adk/core/config/migration.py +244 -0
- moai_adk/core/config/unified.py +436 -0
- moai_adk/core/context_manager.py +273 -0
- moai_adk/core/diagnostics/__init__.py +19 -0
- moai_adk/core/diagnostics/slash_commands.py +159 -0
- moai_adk/core/enterprise_features.py +1404 -0
- moai_adk/core/error_recovery_system.py +1902 -0
- moai_adk/core/event_driven_hook_system.py +1371 -0
- moai_adk/core/git/__init__.py +31 -0
- moai_adk/core/git/branch.py +25 -0
- moai_adk/core/git/branch_manager.py +129 -0
- moai_adk/core/git/checkpoint.py +134 -0
- moai_adk/core/git/commit.py +67 -0
- moai_adk/core/git/conflict_detector.py +413 -0
- moai_adk/core/git/event_detector.py +79 -0
- moai_adk/core/git/manager.py +216 -0
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
- moai_adk/core/input_validation_middleware.py +1006 -0
- moai_adk/core/integration/__init__.py +22 -0
- moai_adk/core/integration/engine.py +157 -0
- moai_adk/core/integration/integration_tester.py +226 -0
- moai_adk/core/integration/models.py +88 -0
- moai_adk/core/integration/utils.py +211 -0
- moai_adk/core/issue_creator.py +305 -0
- moai_adk/core/jit_context_loader.py +956 -0
- moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
- moai_adk/core/language_config.py +202 -0
- moai_adk/core/language_config_resolver.py +572 -0
- moai_adk/core/language_validator.py +543 -0
- moai_adk/core/mcp/setup.py +116 -0
- moai_adk/core/merge/__init__.py +9 -0
- moai_adk/core/merge/analyzer.py +605 -0
- moai_adk/core/migration/__init__.py +18 -0
- moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
- moai_adk/core/migration/backup_manager.py +277 -0
- moai_adk/core/migration/custom_element_scanner.py +358 -0
- moai_adk/core/migration/file_migrator.py +209 -0
- moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
- moai_adk/core/migration/selective_restorer.py +470 -0
- moai_adk/core/migration/template_utils.py +74 -0
- moai_adk/core/migration/user_selection_ui.py +338 -0
- moai_adk/core/migration/version_detector.py +139 -0
- moai_adk/core/migration/version_migrator.py +228 -0
- moai_adk/core/performance/__init__.py +6 -0
- moai_adk/core/performance/cache_system.py +316 -0
- moai_adk/core/performance/parallel_processor.py +116 -0
- moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
- moai_adk/core/project/__init__.py +1 -0
- moai_adk/core/project/backup_utils.py +70 -0
- moai_adk/core/project/checker.py +300 -0
- moai_adk/core/project/detector.py +293 -0
- moai_adk/core/project/initializer.py +387 -0
- moai_adk/core/project/phase_executor.py +716 -0
- moai_adk/core/project/validator.py +139 -0
- moai_adk/core/quality/__init__.py +6 -0
- moai_adk/core/quality/trust_checker.py +377 -0
- moai_adk/core/quality/validators/__init__.py +6 -0
- moai_adk/core/quality/validators/base_validator.py +19 -0
- moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
- moai_adk/core/robust_json_parser.py +611 -0
- moai_adk/core/rollback_manager.py +918 -0
- moai_adk/core/session_manager.py +651 -0
- moai_adk/core/skill_loading_system.py +579 -0
- moai_adk/core/spec/confidence_scoring.py +680 -0
- moai_adk/core/spec/ears_template_engine.py +1247 -0
- moai_adk/core/spec/quality_validator.py +687 -0
- moai_adk/core/spec_status_manager.py +478 -0
- moai_adk/core/template/__init__.py +7 -0
- moai_adk/core/template/backup.py +174 -0
- moai_adk/core/template/config.py +191 -0
- moai_adk/core/template/languages.py +43 -0
- moai_adk/core/template/merger.py +233 -0
- moai_adk/core/template/processor.py +1200 -0
- moai_adk/core/template_engine.py +310 -0
- moai_adk/core/template_variable_synchronizer.py +417 -0
- moai_adk/core/unified_permission_manager.py +745 -0
- moai_adk/core/user_behavior_analytics.py +851 -0
- moai_adk/core/version_sync.py +429 -0
- moai_adk/foundation/__init__.py +56 -0
- moai_adk/foundation/backend.py +1027 -0
- moai_adk/foundation/database.py +1115 -0
- moai_adk/foundation/devops.py +1585 -0
- moai_adk/foundation/ears.py +431 -0
- moai_adk/foundation/frontend.py +870 -0
- moai_adk/foundation/git/commit_templates.py +557 -0
- moai_adk/foundation/git.py +376 -0
- moai_adk/foundation/langs.py +484 -0
- moai_adk/foundation/ml_ops.py +1162 -0
- moai_adk/foundation/testing.py +1524 -0
- moai_adk/foundation/trust/trust_principles.py +676 -0
- moai_adk/foundation/trust/validation_checklist.py +1573 -0
- moai_adk/project/__init__.py +0 -0
- moai_adk/project/configuration.py +1084 -0
- moai_adk/project/documentation.py +566 -0
- moai_adk/project/schema.py +447 -0
- moai_adk/statusline/__init__.py +38 -0
- moai_adk/statusline/alfred_detector.py +105 -0
- moai_adk/statusline/config.py +376 -0
- moai_adk/statusline/enhanced_output_style_detector.py +372 -0
- moai_adk/statusline/git_collector.py +190 -0
- moai_adk/statusline/main.py +322 -0
- moai_adk/statusline/metrics_tracker.py +78 -0
- moai_adk/statusline/renderer.py +343 -0
- moai_adk/statusline/update_checker.py +129 -0
- moai_adk/statusline/version_reader.py +741 -0
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +714 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +474 -0
- moai_adk/templates/.claude/agents/moai/builder-command.md +1172 -0
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +637 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +666 -0
- moai_adk/templates/.claude/agents/moai/expert-backend.md +899 -0
- moai_adk/templates/.claude/agents/moai/expert-database.md +777 -0
- moai_adk/templates/.claude/agents/moai/expert-debug.md +401 -0
- moai_adk/templates/.claude/agents/moai/expert-devops.md +720 -0
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +734 -0
- moai_adk/templates/.claude/agents/moai/expert-performance.md +657 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +513 -0
- moai_adk/templates/.claude/agents/moai/expert-testing.md +733 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +1041 -0
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +432 -0
- moai_adk/templates/.claude/agents/moai/manager-docs.md +573 -0
- moai_adk/templates/.claude/agents/moai/manager-git.md +1060 -0
- moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
- moai_adk/templates/.claude/agents/moai/manager-quality.md +624 -0
- moai_adk/templates/.claude/agents/moai/manager-spec.md +809 -0
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +780 -0
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +784 -0
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +458 -0
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +1607 -0
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +789 -0
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +469 -0
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1032 -0
- moai_adk/templates/.claude/commands/moai/0-project.md +1386 -0
- moai_adk/templates/.claude/commands/moai/1-plan.md +1427 -0
- moai_adk/templates/.claude/commands/moai/2-run.md +943 -0
- moai_adk/templates/.claude/commands/moai/3-sync.md +1324 -0
- moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
- moai_adk/templates/.claude/hooks/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
- moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
- moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
- moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
- moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1083 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +560 -0
- moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
- moai_adk/templates/.claude/settings.json +172 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +307 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -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 +249 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +406 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +328 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +320 -0
- 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 +323 -0
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +497 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +455 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +492 -0
- moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
- moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +202 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +441 -0
- 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 +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +315 -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 +364 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +649 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +478 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +612 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +477 -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 +376 -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 +385 -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-kotlin/SKILL.md +382 -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 +644 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +481 -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 +579 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +687 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +372 -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 +497 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +497 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +368 -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 +300 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +319 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +372 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +402 -0
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +607 -0
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +300 -0
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +537 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +291 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +390 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +398 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +379 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +358 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +467 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +466 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +482 -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/migration.md +341 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +463 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/validation.md +373 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/SKILL.md +275 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/adaptive-mfa.md +233 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/akamai-integration.md +215 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/application-credentials.md +280 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-log-events.md +225 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-overview.md +140 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/bot-detection.md +144 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/breached-password-detection.md +187 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/brute-force-protection.md +189 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/certifications.md +282 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/compliance-overview.md +263 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/continuous-session-protection.md +307 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/customize-mfa.md +178 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/dpop-implementation.md +283 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/fapi-implementation.md +259 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/gdpr-compliance.md +313 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/guardian-configuration.md +269 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/highly-regulated-identity.md +272 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/jwt-fundamentals.md +248 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mdl-verification.md +211 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-api-management.md +278 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-factors.md +226 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-overview.md +174 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mtls-sender-constraining.md +316 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/ropg-flow-mfa.md +217 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-center.md +325 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-guidance.md +277 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/state-parameters.md +178 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/step-up-authentication.md +251 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/suspicious-ip-throttling.md +240 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/tenant-access-control.md +180 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/webauthn-fido.md +235 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +449 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +390 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +175 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1434 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +534 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +456 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +411 -0
- moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
- moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
- moai_adk/templates/.git-hooks/pre-commit +128 -0
- moai_adk/templates/.git-hooks/pre-push +365 -0
- moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
- moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
- moai_adk/templates/.github/workflows/spec-issue-sync.yml +337 -0
- moai_adk/templates/.gitignore +222 -0
- moai_adk/templates/.mcp.json +13 -0
- moai_adk/templates/.moai/config/config.yaml +58 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +174 -0
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +251 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +107 -0
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +79 -0
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +632 -0
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +182 -0
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +96 -0
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
- moai_adk/templates/.moai/config/sections/language.yaml +11 -0
- moai_adk/templates/.moai/config/sections/project.yaml +13 -0
- moai_adk/templates/.moai/config/sections/quality.yaml +17 -0
- moai_adk/templates/.moai/config/sections/system.yaml +24 -0
- moai_adk/templates/.moai/config/sections/user.yaml +5 -0
- moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
- moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
- moai_adk/templates/CLAUDE.md +642 -0
- moai_adk/utils/__init__.py +30 -0
- moai_adk/utils/banner.py +38 -0
- moai_adk/utils/common.py +294 -0
- moai_adk/utils/link_validator.py +241 -0
- moai_adk/utils/logger.py +147 -0
- moai_adk/utils/safe_file_reader.py +206 -0
- moai_adk/utils/timeout.py +160 -0
- moai_adk/utils/toon_utils.py +256 -0
- moai_adk/version.py +22 -0
- moai_adk-0.35.1.dist-info/METADATA +3018 -0
- moai_adk-0.35.1.dist-info/RECORD +502 -0
- moai_adk-0.35.1.dist-info/WHEEL +4 -0
- moai_adk-0.35.1.dist-info/entry_points.txt +3 -0
- moai_adk-0.35.1.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moai-platform-neon
|
|
3
|
+
description: Neon serverless PostgreSQL specialist covering auto-scaling, database branching, PITR, and connection pooling. Use when building serverless apps needing PostgreSQL.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
category: platform
|
|
6
|
+
tags: [neon, postgresql, serverless, branching, auto-scaling]
|
|
7
|
+
context7-libraries: [/neondatabase/neon]
|
|
8
|
+
related-skills: [moai-platform-supabase, moai-lang-typescript]
|
|
9
|
+
allowed-tools: Read, Write, Bash, Grep, Glob
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# moai-platform-neon: Neon Serverless PostgreSQL Specialist
|
|
13
|
+
|
|
14
|
+
## Quick Reference (30 seconds)
|
|
15
|
+
|
|
16
|
+
Neon Serverless PostgreSQL Expertise: Specialized knowledge for Neon serverless PostgreSQL covering auto-scaling, scale-to-zero compute, database branching, Point-in-Time Recovery, and modern ORM integration.
|
|
17
|
+
|
|
18
|
+
### Core Capabilities
|
|
19
|
+
|
|
20
|
+
Serverless Compute: Auto-scaling PostgreSQL with scale-to-zero for cost optimization
|
|
21
|
+
Database Branching: Instant copy-on-write branches for dev, staging, and preview environments
|
|
22
|
+
Point-in-Time Recovery: 30-day PITR with instant restore to any timestamp
|
|
23
|
+
Connection Pooling: Built-in connection pooler for serverless and edge compatibility
|
|
24
|
+
PostgreSQL 16: Full PostgreSQL 16 compatibility with extensions support
|
|
25
|
+
|
|
26
|
+
### Quick Decision Guide
|
|
27
|
+
|
|
28
|
+
- Need serverless PostgreSQL with auto-scaling? Neon
|
|
29
|
+
- Need database branching for CI/CD? Neon branching
|
|
30
|
+
- Need edge-compatible database? Neon with connection pooling
|
|
31
|
+
- Need instant preview environments? Neon branch per PR
|
|
32
|
+
|
|
33
|
+
### Context7 Library Mapping
|
|
34
|
+
|
|
35
|
+
Neon: /neondatabase/neon
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Implementation Guide
|
|
40
|
+
|
|
41
|
+
### Setup and Configuration
|
|
42
|
+
|
|
43
|
+
Package Installation:
|
|
44
|
+
```bash
|
|
45
|
+
npm install @neondatabase/serverless
|
|
46
|
+
npm install drizzle-orm # Optional: Drizzle ORM
|
|
47
|
+
npm install @prisma/client prisma # Optional: Prisma ORM
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Environment Configuration:
|
|
51
|
+
```env
|
|
52
|
+
# Direct connection (for migrations)
|
|
53
|
+
DATABASE_URL=postgresql://user:pass@ep-xxx.region.neon.tech/dbname?sslmode=require
|
|
54
|
+
|
|
55
|
+
# Pooled connection (for serverless/edge)
|
|
56
|
+
DATABASE_URL_POOLED=postgresql://user:pass@ep-xxx-pooler.region.neon.tech/dbname?sslmode=require
|
|
57
|
+
|
|
58
|
+
# Neon API for branching
|
|
59
|
+
NEON_API_KEY=neon_api_key_xxx
|
|
60
|
+
NEON_PROJECT_ID=project-xxx
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Serverless Driver Usage
|
|
64
|
+
|
|
65
|
+
Basic Query Execution:
|
|
66
|
+
```typescript
|
|
67
|
+
import { neon } from '@neondatabase/serverless'
|
|
68
|
+
|
|
69
|
+
const sql = neon(process.env.DATABASE_URL!)
|
|
70
|
+
|
|
71
|
+
// Simple query
|
|
72
|
+
const users = await sql`SELECT * FROM users WHERE active = true`
|
|
73
|
+
|
|
74
|
+
// Parameterized query (SQL injection safe)
|
|
75
|
+
const userId = 'user-123'
|
|
76
|
+
const user = await sql`SELECT * FROM users WHERE id = ${userId}`
|
|
77
|
+
|
|
78
|
+
// Transaction support
|
|
79
|
+
const result = await sql.transaction([
|
|
80
|
+
sql`UPDATE accounts SET balance = balance - 100 WHERE id = ${fromId}`,
|
|
81
|
+
sql`UPDATE accounts SET balance = balance + 100 WHERE id = ${toId}`
|
|
82
|
+
])
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
WebSocket Connection for Session Persistence:
|
|
86
|
+
```typescript
|
|
87
|
+
import { Pool, neonConfig } from '@neondatabase/serverless'
|
|
88
|
+
import ws from 'ws'
|
|
89
|
+
|
|
90
|
+
// Required for Node.js environments
|
|
91
|
+
neonConfig.webSocketConstructor = ws
|
|
92
|
+
|
|
93
|
+
const pool = new Pool({ connectionString: process.env.DATABASE_URL })
|
|
94
|
+
|
|
95
|
+
// Use pool for session-based operations
|
|
96
|
+
const client = await pool.connect()
|
|
97
|
+
try {
|
|
98
|
+
await client.query('BEGIN')
|
|
99
|
+
await client.query('INSERT INTO logs (message) VALUES ($1)', ['Action'])
|
|
100
|
+
await client.query('COMMIT')
|
|
101
|
+
} finally {
|
|
102
|
+
client.release()
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Database Branching
|
|
107
|
+
|
|
108
|
+
Branch Management API:
|
|
109
|
+
```typescript
|
|
110
|
+
class NeonBranchManager {
|
|
111
|
+
private apiKey: string
|
|
112
|
+
private projectId: string
|
|
113
|
+
private baseUrl = 'https://console.neon.tech/api/v2'
|
|
114
|
+
|
|
115
|
+
constructor(apiKey: string, projectId: string) {
|
|
116
|
+
this.apiKey = apiKey
|
|
117
|
+
this.projectId = projectId
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
private async request(path: string, options: RequestInit = {}) {
|
|
121
|
+
const response = await fetch(`${this.baseUrl}${path}`, {
|
|
122
|
+
...options,
|
|
123
|
+
headers: {
|
|
124
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
125
|
+
'Content-Type': 'application/json',
|
|
126
|
+
...options.headers
|
|
127
|
+
}
|
|
128
|
+
})
|
|
129
|
+
if (!response.ok) throw new Error(`Neon API error: ${response.statusText}`)
|
|
130
|
+
return response.json()
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
async createBranch(name: string, parentId: string = 'main') {
|
|
134
|
+
return this.request(`/projects/${this.projectId}/branches`, {
|
|
135
|
+
method: 'POST',
|
|
136
|
+
body: JSON.stringify({
|
|
137
|
+
branch: { name, parent_id: parentId }
|
|
138
|
+
})
|
|
139
|
+
})
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
async deleteBranch(branchId: string) {
|
|
143
|
+
return this.request(`/projects/${this.projectId}/branches/${branchId}`, {
|
|
144
|
+
method: 'DELETE'
|
|
145
|
+
})
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
async listBranches() {
|
|
149
|
+
return this.request(`/projects/${this.projectId}/branches`)
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
async getBranchConnectionString(branchId: string) {
|
|
153
|
+
const endpoints = await this.request(
|
|
154
|
+
`/projects/${this.projectId}/branches/${branchId}/endpoints`
|
|
155
|
+
)
|
|
156
|
+
return endpoints.endpoints[0]?.connection_uri
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Preview Branch for Pull Requests:
|
|
162
|
+
```typescript
|
|
163
|
+
async function createPreviewEnvironment(prNumber: number) {
|
|
164
|
+
const branchManager = new NeonBranchManager(
|
|
165
|
+
process.env.NEON_API_KEY!,
|
|
166
|
+
process.env.NEON_PROJECT_ID!
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
// Create branch from main
|
|
170
|
+
const branch = await branchManager.createBranch(`pr-${prNumber}`, 'main')
|
|
171
|
+
|
|
172
|
+
// Get connection string
|
|
173
|
+
const connectionString = await branchManager.getBranchConnectionString(branch.branch.id)
|
|
174
|
+
|
|
175
|
+
return {
|
|
176
|
+
branchId: branch.branch.id,
|
|
177
|
+
branchName: branch.branch.name,
|
|
178
|
+
connectionString
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
async function cleanupPreviewEnvironment(branchId: string) {
|
|
183
|
+
const branchManager = new NeonBranchManager(
|
|
184
|
+
process.env.NEON_API_KEY!,
|
|
185
|
+
process.env.NEON_PROJECT_ID!
|
|
186
|
+
)
|
|
187
|
+
await branchManager.deleteBranch(branchId)
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Point-in-Time Recovery
|
|
192
|
+
|
|
193
|
+
Restore to Specific Timestamp:
|
|
194
|
+
```typescript
|
|
195
|
+
async function restoreToPoint(timestamp: Date) {
|
|
196
|
+
const branchManager = new NeonBranchManager(
|
|
197
|
+
process.env.NEON_API_KEY!,
|
|
198
|
+
process.env.NEON_PROJECT_ID!
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
const response = await fetch(
|
|
202
|
+
`https://console.neon.tech/api/v2/projects/${process.env.NEON_PROJECT_ID}/branches`,
|
|
203
|
+
{
|
|
204
|
+
method: 'POST',
|
|
205
|
+
headers: {
|
|
206
|
+
'Authorization': `Bearer ${process.env.NEON_API_KEY}`,
|
|
207
|
+
'Content-Type': 'application/json'
|
|
208
|
+
},
|
|
209
|
+
body: JSON.stringify({
|
|
210
|
+
branch: {
|
|
211
|
+
name: `restore-${timestamp.toISOString().replace(/[:.]/g, '-')}`,
|
|
212
|
+
parent_id: 'main',
|
|
213
|
+
parent_timestamp: timestamp.toISOString()
|
|
214
|
+
}
|
|
215
|
+
})
|
|
216
|
+
}
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
return response.json()
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Usage: Restore to 1 hour ago
|
|
223
|
+
const oneHourAgo = new Date(Date.now() - 60 * 60 * 1000)
|
|
224
|
+
const restoredBranch = await restoreToPoint(oneHourAgo)
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Drizzle ORM Integration
|
|
228
|
+
|
|
229
|
+
Schema Definition:
|
|
230
|
+
```typescript
|
|
231
|
+
// schema.ts
|
|
232
|
+
import { pgTable, uuid, text, timestamp, boolean, jsonb } from 'drizzle-orm/pg-core'
|
|
233
|
+
|
|
234
|
+
export const users = pgTable('users', {
|
|
235
|
+
id: uuid('id').primaryKey().defaultRandom(),
|
|
236
|
+
email: text('email').notNull().unique(),
|
|
237
|
+
name: text('name'),
|
|
238
|
+
createdAt: timestamp('created_at').defaultNow(),
|
|
239
|
+
metadata: jsonb('metadata')
|
|
240
|
+
})
|
|
241
|
+
|
|
242
|
+
export const projects = pgTable('projects', {
|
|
243
|
+
id: uuid('id').primaryKey().defaultRandom(),
|
|
244
|
+
name: text('name').notNull(),
|
|
245
|
+
ownerId: uuid('owner_id').references(() => users.id),
|
|
246
|
+
isPublic: boolean('is_public').default(false),
|
|
247
|
+
createdAt: timestamp('created_at').defaultNow()
|
|
248
|
+
})
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Drizzle Client Setup:
|
|
252
|
+
```typescript
|
|
253
|
+
// db.ts
|
|
254
|
+
import { neon } from '@neondatabase/serverless'
|
|
255
|
+
import { drizzle } from 'drizzle-orm/neon-http'
|
|
256
|
+
import * as schema from './schema'
|
|
257
|
+
|
|
258
|
+
const sql = neon(process.env.DATABASE_URL!)
|
|
259
|
+
export const db = drizzle(sql, { schema })
|
|
260
|
+
|
|
261
|
+
// Query examples
|
|
262
|
+
const allUsers = await db.select().from(schema.users)
|
|
263
|
+
|
|
264
|
+
const userProjects = await db
|
|
265
|
+
.select()
|
|
266
|
+
.from(schema.projects)
|
|
267
|
+
.where(eq(schema.projects.ownerId, userId))
|
|
268
|
+
.orderBy(desc(schema.projects.createdAt))
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Prisma ORM Integration
|
|
272
|
+
|
|
273
|
+
Prisma Schema:
|
|
274
|
+
```prisma
|
|
275
|
+
// schema.prisma
|
|
276
|
+
generator client {
|
|
277
|
+
provider = "prisma-client-js"
|
|
278
|
+
previewFeatures = ["driverAdapters"]
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
datasource db {
|
|
282
|
+
provider = "postgresql"
|
|
283
|
+
url = env("DATABASE_URL")
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
model User {
|
|
287
|
+
id String @id @default(uuid())
|
|
288
|
+
email String @unique
|
|
289
|
+
name String?
|
|
290
|
+
projects Project[]
|
|
291
|
+
createdAt DateTime @default(now())
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
model Project {
|
|
295
|
+
id String @id @default(uuid())
|
|
296
|
+
name String
|
|
297
|
+
owner User @relation(fields: [ownerId], references: [id])
|
|
298
|
+
ownerId String
|
|
299
|
+
isPublic Boolean @default(false)
|
|
300
|
+
createdAt DateTime @default(now())
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
Prisma with Neon Serverless Driver:
|
|
305
|
+
```typescript
|
|
306
|
+
// db.ts
|
|
307
|
+
import { Pool, neonConfig } from '@neondatabase/serverless'
|
|
308
|
+
import { PrismaNeon } from '@prisma/adapter-neon'
|
|
309
|
+
import { PrismaClient } from '@prisma/client'
|
|
310
|
+
|
|
311
|
+
neonConfig.webSocketConstructor = require('ws')
|
|
312
|
+
|
|
313
|
+
const pool = new Pool({ connectionString: process.env.DATABASE_URL })
|
|
314
|
+
const adapter = new PrismaNeon(pool)
|
|
315
|
+
export const prisma = new PrismaClient({ adapter })
|
|
316
|
+
|
|
317
|
+
// Query examples
|
|
318
|
+
const users = await prisma.user.findMany({
|
|
319
|
+
include: { projects: true }
|
|
320
|
+
})
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## Advanced Patterns
|
|
326
|
+
|
|
327
|
+
### Connection Pooling for Edge
|
|
328
|
+
|
|
329
|
+
Edge Function Configuration:
|
|
330
|
+
```typescript
|
|
331
|
+
import { neon } from '@neondatabase/serverless'
|
|
332
|
+
|
|
333
|
+
// Use pooled connection for edge environments
|
|
334
|
+
const sql = neon(process.env.DATABASE_URL_POOLED!)
|
|
335
|
+
|
|
336
|
+
export const config = {
|
|
337
|
+
runtime: 'edge'
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
export default async function handler(request: Request) {
|
|
341
|
+
const users = await sql`SELECT id, name FROM users LIMIT 10`
|
|
342
|
+
return Response.json(users)
|
|
343
|
+
}
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### CI/CD Branch Automation
|
|
347
|
+
|
|
348
|
+
GitHub Actions Integration:
|
|
349
|
+
```yaml
|
|
350
|
+
name: Preview Environment
|
|
351
|
+
|
|
352
|
+
on:
|
|
353
|
+
pull_request:
|
|
354
|
+
types: [opened, synchronize, closed]
|
|
355
|
+
|
|
356
|
+
jobs:
|
|
357
|
+
create-preview:
|
|
358
|
+
if: github.event.action != 'closed'
|
|
359
|
+
runs-on: ubuntu-latest
|
|
360
|
+
steps:
|
|
361
|
+
- name: Create Neon Branch
|
|
362
|
+
id: create-branch
|
|
363
|
+
run: |
|
|
364
|
+
BRANCH=$(curl -s -X POST \
|
|
365
|
+
-H "Authorization: Bearer ${{ secrets.NEON_API_KEY }}" \
|
|
366
|
+
-H "Content-Type: application/json" \
|
|
367
|
+
-d '{"branch":{"name":"pr-${{ github.event.number }}"}}' \
|
|
368
|
+
"https://console.neon.tech/api/v2/projects/${{ secrets.NEON_PROJECT_ID }}/branches")
|
|
369
|
+
echo "branch_id=$(echo $BRANCH | jq -r '.branch.id')" >> $GITHUB_OUTPUT
|
|
370
|
+
|
|
371
|
+
cleanup-preview:
|
|
372
|
+
if: github.event.action == 'closed'
|
|
373
|
+
runs-on: ubuntu-latest
|
|
374
|
+
steps:
|
|
375
|
+
- name: Delete Neon Branch
|
|
376
|
+
run: |
|
|
377
|
+
curl -X DELETE \
|
|
378
|
+
-H "Authorization: Bearer ${{ secrets.NEON_API_KEY }}" \
|
|
379
|
+
"https://console.neon.tech/api/v2/projects/${{ secrets.NEON_PROJECT_ID }}/branches/pr-${{ github.event.number }}"
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
### Auto-Scaling Configuration
|
|
383
|
+
|
|
384
|
+
Compute Settings via API:
|
|
385
|
+
```typescript
|
|
386
|
+
async function configureAutoScaling(endpointId: string) {
|
|
387
|
+
const response = await fetch(
|
|
388
|
+
`https://console.neon.tech/api/v2/projects/${process.env.NEON_PROJECT_ID}/endpoints/${endpointId}`,
|
|
389
|
+
{
|
|
390
|
+
method: 'PATCH',
|
|
391
|
+
headers: {
|
|
392
|
+
'Authorization': `Bearer ${process.env.NEON_API_KEY}`,
|
|
393
|
+
'Content-Type': 'application/json'
|
|
394
|
+
},
|
|
395
|
+
body: JSON.stringify({
|
|
396
|
+
endpoint: {
|
|
397
|
+
autoscaling_limit_min_cu: 0.25, // Scale to zero
|
|
398
|
+
autoscaling_limit_max_cu: 4, // Max 4 compute units
|
|
399
|
+
suspend_timeout_seconds: 300 // Suspend after 5 min idle
|
|
400
|
+
}
|
|
401
|
+
})
|
|
402
|
+
}
|
|
403
|
+
)
|
|
404
|
+
return response.json()
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
### Migration Workflow
|
|
409
|
+
|
|
410
|
+
Development to Production:
|
|
411
|
+
```typescript
|
|
412
|
+
// Run migrations on direct connection (not pooled)
|
|
413
|
+
import { migrate } from 'drizzle-orm/neon-http/migrator'
|
|
414
|
+
import { neon } from '@neondatabase/serverless'
|
|
415
|
+
import { drizzle } from 'drizzle-orm/neon-http'
|
|
416
|
+
|
|
417
|
+
async function runMigrations() {
|
|
418
|
+
// Use direct connection for migrations
|
|
419
|
+
const sql = neon(process.env.DATABASE_URL!)
|
|
420
|
+
const db = drizzle(sql)
|
|
421
|
+
|
|
422
|
+
await migrate(db, { migrationsFolder: './drizzle' })
|
|
423
|
+
console.log('Migrations completed')
|
|
424
|
+
}
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## Provider Decision Guide
|
|
430
|
+
|
|
431
|
+
### When to Use Neon
|
|
432
|
+
|
|
433
|
+
Serverless Applications: Auto-scaling and scale-to-zero reduce costs
|
|
434
|
+
Preview Environments: Instant branching enables per-PR databases
|
|
435
|
+
Edge Deployment: Connection pooling works with edge runtimes
|
|
436
|
+
Development Workflow: Branch from production for realistic dev data
|
|
437
|
+
Cost Optimization: Pay only for active compute time
|
|
438
|
+
|
|
439
|
+
### When to Consider Alternatives
|
|
440
|
+
|
|
441
|
+
Need Vector Search: Consider Supabase with pgvector
|
|
442
|
+
Need Real-time Subscriptions: Consider Supabase or Convex
|
|
443
|
+
Need NoSQL Flexibility: Consider Firestore or Convex
|
|
444
|
+
Need Built-in Auth: Consider Supabase
|
|
445
|
+
|
|
446
|
+
### Pricing Reference (2024)
|
|
447
|
+
|
|
448
|
+
Free Tier: 3GB storage, 100 compute hours per month
|
|
449
|
+
Pro Tier: Usage-based pricing, additional storage and compute
|
|
450
|
+
Scale-to-Zero: No charges during idle periods
|
|
451
|
+
|
|
452
|
+
---
|
|
453
|
+
|
|
454
|
+
## Works Well With
|
|
455
|
+
|
|
456
|
+
- moai-platform-supabase - Alternative when RLS or pgvector needed
|
|
457
|
+
- moai-lang-typescript - TypeScript patterns for Drizzle and Prisma
|
|
458
|
+
- moai-domain-backend - Backend architecture with database integration
|
|
459
|
+
- moai-workflow-cicd - CI/CD pipeline integration patterns
|
|
460
|
+
- moai-context7-integration - Latest Neon documentation access
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
Status: Production Ready
|
|
465
|
+
Generated with: MoAI-ADK Skill Factory v2.0
|
|
466
|
+
Last Updated: 2025-12-07
|
|
467
|
+
Technology: Neon Serverless PostgreSQL
|