moai-adk 0.8.0__py3-none-any.whl → 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- moai_adk/__init__.py +2 -6
- moai_adk/__main__.py +267 -21
- moai_adk/astgrep/__init__.py +37 -0
- moai_adk/astgrep/analyzer.py +522 -0
- moai_adk/astgrep/models.py +124 -0
- moai_adk/astgrep/rules.py +179 -0
- moai_adk/cli/__init__.py +6 -2
- moai_adk/cli/commands/__init__.py +1 -4
- moai_adk/cli/commands/analyze.py +125 -0
- moai_adk/cli/commands/doctor.py +24 -6
- moai_adk/cli/commands/init.py +437 -57
- moai_adk/cli/commands/language.py +254 -0
- moai_adk/cli/commands/rank.py +449 -0
- moai_adk/cli/commands/status.py +15 -14
- moai_adk/cli/commands/switch.py +325 -0
- moai_adk/cli/commands/update.py +2195 -93
- moai_adk/cli/main.py +3 -2
- moai_adk/cli/prompts/init_prompts.py +457 -108
- moai_adk/cli/prompts/translations/__init__.py +573 -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 +448 -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 +788 -0
- moai_adk/cli/worktree/exceptions.py +89 -0
- moai_adk/cli/worktree/manager.py +648 -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 +0 -1
- 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 +6 -0
- moai_adk/core/config/migration.py +148 -17
- moai_adk/core/config/unified.py +617 -0
- moai_adk/core/context_manager.py +273 -0
- moai_adk/core/credentials.py +264 -0
- moai_adk/core/diagnostics/slash_commands.py +0 -1
- moai_adk/core/enterprise_features.py +1404 -0
- moai_adk/core/error_recovery_system.py +1920 -0
- moai_adk/core/event_driven_hook_system.py +1371 -0
- moai_adk/core/git/__init__.py +8 -1
- moai_adk/core/git/branch.py +0 -1
- moai_adk/core/git/branch_manager.py +2 -10
- moai_adk/core/git/checkpoint.py +1 -7
- moai_adk/core/git/commit.py +0 -1
- moai_adk/core/git/conflict_detector.py +422 -0
- moai_adk/core/git/event_detector.py +16 -7
- moai_adk/core/git/manager.py +91 -2
- 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 +578 -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 +666 -0
- moai_adk/core/migration/__init__.py +18 -0
- moai_adk/core/migration/alfred_to_moai_migrator.py +389 -0
- moai_adk/core/migration/backup_manager.py +327 -0
- moai_adk/core/migration/custom_element_scanner.py +358 -0
- moai_adk/core/migration/file_migrator.py +381 -0
- moai_adk/core/migration/interactive_checkbox_ui.py +499 -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 +243 -0
- moai_adk/core/migration/version_migrator.py +263 -0
- moai_adk/core/model_allocator.py +241 -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 +0 -1
- moai_adk/core/project/backup_utils.py +13 -8
- moai_adk/core/project/checker.py +2 -4
- moai_adk/core/project/detector.py +189 -22
- moai_adk/core/project/initializer.py +177 -29
- moai_adk/core/project/phase_executor.py +482 -48
- moai_adk/core/project/validator.py +22 -32
- moai_adk/core/quality/__init__.py +1 -1
- moai_adk/core/quality/trust_checker.py +66 -110
- moai_adk/core/quality/validators/__init__.py +1 -1
- moai_adk/core/quality/validators/base_validator.py +1 -1
- moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
- moai_adk/core/robust_json_parser.py +611 -0
- moai_adk/core/rollback_manager.py +953 -0
- moai_adk/core/session_manager.py +651 -0
- moai_adk/core/skill_loading_system.py +579 -0
- moai_adk/core/spec_status_manager.py +478 -0
- moai_adk/core/template/__init__.py +0 -1
- moai_adk/core/template/backup.py +168 -21
- moai_adk/core/template/config.py +141 -45
- moai_adk/core/template/languages.py +0 -1
- moai_adk/core/template/merger.py +107 -32
- moai_adk/core/template/processor.py +1075 -74
- moai_adk/core/template_engine.py +319 -0
- moai_adk/core/template_variable_synchronizer.py +431 -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 +477 -0
- moai_adk/foundation/__init__.py +37 -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/__init__.py +376 -0
- moai_adk/foundation/git/commit_templates.py +557 -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/loop/__init__.py +54 -0
- moai_adk/loop/controller.py +305 -0
- moai_adk/loop/feedback.py +230 -0
- moai_adk/loop/state.py +209 -0
- moai_adk/loop/storage.py +220 -0
- moai_adk/lsp/__init__.py +70 -0
- moai_adk/lsp/client.py +320 -0
- moai_adk/lsp/models.py +261 -0
- moai_adk/lsp/protocol.py +404 -0
- moai_adk/lsp/server_manager.py +248 -0
- moai_adk/project/__init__.py +0 -0
- moai_adk/project/configuration.py +1091 -0
- moai_adk/project/documentation.py +566 -0
- moai_adk/project/schema.py +447 -0
- moai_adk/py.typed +0 -0
- moai_adk/ralph/__init__.py +37 -0
- moai_adk/ralph/engine.py +307 -0
- moai_adk/rank/__init__.py +21 -0
- moai_adk/rank/auth.py +425 -0
- moai_adk/rank/client.py +557 -0
- moai_adk/rank/config.py +147 -0
- moai_adk/rank/hook.py +1503 -0
- moai_adk/rank/py.typed +0 -0
- moai_adk/statusline/__init__.py +41 -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 +341 -0
- moai_adk/statusline/memory_collector.py +268 -0
- moai_adk/statusline/metrics_tracker.py +78 -0
- moai_adk/statusline/renderer.py +359 -0
- moai_adk/statusline/update_checker.py +129 -0
- moai_adk/statusline/version_reader.py +741 -0
- moai_adk/tag_system/__init__.py +48 -0
- moai_adk/tag_system/atomic_ops.py +117 -0
- moai_adk/tag_system/linkage.py +335 -0
- moai_adk/tag_system/parser.py +176 -0
- moai_adk/tag_system/validator.py +200 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +490 -0
- moai_adk/templates/.claude/agents/moai/builder-command.md +1218 -0
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +682 -0
- moai_adk/templates/.claude/agents/moai/expert-backend.md +963 -0
- moai_adk/templates/.claude/agents/moai/expert-debug.md +407 -0
- moai_adk/templates/.claude/agents/moai/expert-devops.md +722 -0
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +748 -0
- moai_adk/templates/.claude/agents/moai/expert-performance.md +661 -0
- moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +525 -0
- moai_adk/templates/.claude/agents/moai/expert-testing.md +737 -0
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +438 -0
- moai_adk/templates/.claude/agents/moai/manager-docs.md +578 -0
- moai_adk/templates/.claude/agents/moai/manager-git.md +1092 -0
- moai_adk/templates/.claude/agents/moai/manager-project.md +971 -0
- moai_adk/templates/.claude/agents/moai/manager-quality.md +641 -0
- moai_adk/templates/.claude/agents/moai/manager-spec.md +815 -0
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +811 -0
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +797 -0
- moai_adk/templates/.claude/commands/moai/0-project.md +438 -0
- moai_adk/templates/.claude/commands/moai/1-plan.md +1447 -0
- moai_adk/templates/.claude/commands/moai/2-run.md +850 -0
- moai_adk/templates/.claude/commands/moai/3-sync.md +1398 -0
- moai_adk/templates/.claude/commands/moai/9-feedback.md +330 -0
- moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
- moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
- moai_adk/templates/.claude/commands/moai/fix.md +264 -0
- moai_adk/templates/.claude/commands/moai/loop.md +363 -0
- moai_adk/templates/.claude/hooks/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +41 -0
- moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
- moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -0
- moai_adk/templates/.claude/hooks/{alfred/core → moai/lib}/checkpoint.py +13 -37
- moai_adk/templates/.claude/hooks/moai/lib/common.py +161 -0
- moai_adk/templates/.claude/hooks/moai/lib/config.py +376 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +442 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
- moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
- moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +592 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +417 -0
- moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
- moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
- moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +219 -0
- moai_adk/templates/.claude/hooks/moai/lib/project.py +777 -0
- moai_adk/templates/.claude/hooks/moai/lib/renderer.py +359 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
- moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
- moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +542 -0
- moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
- moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
- moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +894 -0
- moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1170 -0
- moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
- moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
- moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +643 -0
- moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
- moai_adk/templates/.claude/settings.json +177 -72
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +303 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +252 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +56 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +120 -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 +185 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +207 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +234 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +132 -281
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +610 -1525
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +423 -619
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +133 -77
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +817 -16
- 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 +532 -17
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +91 -78
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +955 -16
- 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 +651 -18
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +234 -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 +189 -0
- moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +327 -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 +225 -0
- 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/best-practices-checklist.md +616 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +739 -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 +670 -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-plugin-marketplaces-official.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +467 -0
- 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 +420 -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 +221 -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 +242 -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-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 +228 -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/patterns.md +22 -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-ears-format.md +200 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +171 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -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 +239 -0
- 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 +180 -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-framework-electron/SKILL.md +288 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +96 -77
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1226 -16
- moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +1119 -14
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +80 -79
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +572 -16
- 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 +388 -15
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +135 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +889 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +104 -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 +153 -80
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +906 -16
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +721 -15
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +117 -80
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +851 -16
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +278 -18
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +133 -79
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +960 -16
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1528 -17
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +100 -79
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +993 -16
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +549 -18
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +135 -76
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1595 -16
- moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +1309 -16
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +141 -341
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +849 -496
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +731 -243
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +134 -76
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1141 -16
- moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +1074 -17
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +136 -77
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1093 -16
- 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 +1010 -17
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +112 -78
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +646 -16
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +491 -18
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +113 -75
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +620 -16
- 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 +410 -17
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +88 -83
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +905 -16
- 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 +659 -17
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +115 -82
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1076 -16
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +718 -21
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +145 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/modules/advanced-patterns.md +465 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/modules/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 +143 -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 +336 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +350 -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/modules/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 +175 -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-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 +135 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +158 -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 +166 -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 +127 -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 +156 -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 +146 -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 +141 -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 +132 -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-tool-ast-grep/SKILL.md +193 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +251 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/modules/advanced-patterns.md +379 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/modules/optimization.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +287 -0
- 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/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-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 +270 -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 +269 -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 +269 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/advanced-patterns.md +576 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +302 -0
- 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 +263 -0
- 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/optimization.md +505 -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 +327 -0
- 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 +313 -0
- 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 +265 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -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-workflow-worktree/SKILL.md +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/examples.md +606 -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/.claude/skills/moai-workflow-worktree/reference.md +357 -0
- moai_adk/templates/.git-hooks/pre-commit +128 -0
- moai_adk/templates/.git-hooks/pre-push +468 -0
- moai_adk/templates/.github/workflows/ci-universal.yml +1314 -0
- moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
- moai_adk/templates/.github/workflows/spec-issue-sync.yml +206 -36
- moai_adk/templates/.gitignore +152 -13
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +13 -0
- moai_adk/templates/.moai/announcements/en.json +18 -0
- moai_adk/templates/.moai/announcements/ja.json +18 -0
- moai_adk/templates/.moai/announcements/ko.json +18 -0
- moai_adk/templates/.moai/announcements/zh.json +18 -0
- moai_adk/templates/.moai/config/config.yaml +64 -0
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -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/llm.yaml +41 -0
- moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
- moai_adk/templates/.moai/config/sections/project.yaml +13 -0
- moai_adk/templates/.moai/config/sections/quality.yaml +55 -0
- moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
- moai_adk/templates/.moai/config/sections/system.yaml +59 -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/llm-configs/glm.json +22 -0
- moai_adk/templates/CLAUDE.ja.md +343 -0
- moai_adk/templates/CLAUDE.ko.md +343 -0
- moai_adk/templates/CLAUDE.md +274 -246
- moai_adk/templates/CLAUDE.zh.md +343 -0
- moai_adk/utils/__init__.py +24 -2
- moai_adk/utils/banner.py +9 -13
- moai_adk/utils/common.py +331 -0
- moai_adk/utils/link_validator.py +241 -0
- moai_adk/utils/logger.py +4 -9
- 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-1.1.0.dist-info/METADATA +2443 -0
- moai_adk-1.1.0.dist-info/RECORD +701 -0
- {moai_adk-0.8.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +1 -1
- moai_adk-1.1.0.dist-info/entry_points.txt +5 -0
- moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -0
- moai_adk/cli/commands/backup.py +0 -80
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -293
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -196
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -207
- moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -375
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -343
- moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -246
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -320
- moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -837
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -272
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -265
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -311
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -352
- moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1184
- moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -665
- moai_adk/templates/.claude/commands/alfred/2-run.md +0 -488
- moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -623
- moai_adk/templates/.claude/hooks/alfred/HOOK_SCHEMA_VALIDATION.md +0 -313
- moai_adk/templates/.claude/hooks/alfred/README.md +0 -230
- moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -174
- moai_adk/templates/.claude/hooks/alfred/core/__init__.py +0 -170
- moai_adk/templates/.claude/hooks/alfred/core/context.py +0 -67
- moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -416
- moai_adk/templates/.claude/hooks/alfred/core/tags.py +0 -198
- moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -21
- moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +0 -25
- moai_adk/templates/.claude/hooks/alfred/handlers/session.py +0 -161
- moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +0 -90
- moai_adk/templates/.claude/hooks/alfred/handlers/user.py +0 -42
- moai_adk/templates/.claude/hooks/alfred/test_hook_output.py +0 -175
- moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +0 -640
- moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +0 -696
- moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +0 -474
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
- moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
- moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
- moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
- moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
- moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
- moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
- moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
- moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
- moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
- moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
- moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
- moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
- moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
- moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
- moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
- moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
- moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
- moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +0 -482
- moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +0 -278
- moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
- moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +0 -477
- moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
- moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +0 -271
- moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
- moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +0 -583
- moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +0 -526
- moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +0 -465
- moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +0 -328
- moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +0 -312
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +0 -285
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +0 -278
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +0 -303
- moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +0 -137
- moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +0 -218
- moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +0 -161
- moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +0 -541
- moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +0 -622
- moai_adk/templates/.github/ISSUE_TEMPLATE/spec.yml +0 -176
- moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -69
- moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -256
- moai_adk/templates/.moai/config.json +0 -96
- moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +0 -208
- moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +0 -369
- moai_adk/templates/.moai/memory/CLAUDE-RULES.md +0 -539
- moai_adk/templates/.moai/memory/CONFIG-SCHEMA.md +0 -444
- moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +0 -344
- moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +0 -220
- moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +0 -218
- moai_adk/templates/.moai/memory/SPEC-METADATA.md +0 -356
- moai_adk/templates/.moai/memory/config-schema.md +0 -444
- moai_adk/templates/.moai/memory/gitflow-protection-policy.md +0 -220
- moai_adk/templates/.moai/memory/spec-metadata.md +0 -356
- moai_adk/templates/.moai/project/product.md +0 -161
- moai_adk/templates/.moai/project/structure.md +0 -156
- moai_adk/templates/.moai/project/tech.md +0 -227
- moai_adk/templates/__init__.py +0 -2
- moai_adk-0.8.0.dist-info/METADATA +0 -1722
- moai_adk-0.8.0.dist-info/RECORD +0 -282
- moai_adk-0.8.0.dist-info/entry_points.txt +0 -2
- moai_adk-0.8.0.dist-info/licenses/LICENSE +0 -21
|
@@ -1,660 +1,464 @@
|
|
|
1
|
-
# Backend
|
|
2
|
-
|
|
3
|
-
## Architecture Decision Matrix
|
|
4
|
-
|
|
5
|
-
### When to Choose Each Pattern
|
|
6
|
-
|
|
7
|
-
| Pattern | Team Size | Complexity | Deployment | Scaling | Use Cases |
|
|
8
|
-
|---------|-----------|------------|------------|---------|-----------|
|
|
9
|
-
| **Layered Monolith** | 1-5 | Low-Medium | Simple | Vertical | MVPs, startups, internal tools |
|
|
10
|
-
| **Modular Monolith** | 5-15 | Medium | Simple | Vertical | Growing products, clear domains |
|
|
11
|
-
| **Microservices** | 15+ | High | Complex | Horizontal | Large-scale, multi-team, polyglot |
|
|
12
|
-
| **Serverless** | Any | Low-Medium | Managed | Auto | Event-driven, spiky traffic, rapid prototyping |
|
|
13
|
-
| **Event-Driven** | 10+ | High | Complex | Horizontal | Real-time analytics, decoupled systems, audit logs |
|
|
14
|
-
|
|
15
|
-
### Decision Criteria
|
|
16
|
-
|
|
17
|
-
**Choose Layered Monolith when**:
|
|
18
|
-
- Small team (1-5 developers)
|
|
19
|
-
- Rapid prototyping phase
|
|
20
|
-
- Simple deployment requirements
|
|
21
|
-
- Limited operational expertise
|
|
22
|
-
- Cost-sensitive project
|
|
23
|
-
|
|
24
|
-
**Choose Modular Monolith when**:
|
|
25
|
-
- Growing team (5-15 developers)
|
|
26
|
-
- Clear domain boundaries emerging
|
|
27
|
-
- Need independent module development
|
|
28
|
-
- Want extraction path to microservices
|
|
29
|
-
- Prefer simple deployment
|
|
30
|
-
|
|
31
|
-
**Choose Microservices when**:
|
|
32
|
-
- Large team (15+ developers)
|
|
33
|
-
- Multiple independent products/teams
|
|
34
|
-
- Polyglot technology requirements
|
|
35
|
-
- Need independent scaling per service
|
|
36
|
-
- High operational maturity (Kubernetes, Istio)
|
|
37
|
-
|
|
38
|
-
**Choose Serverless when**:
|
|
39
|
-
- Event-driven workloads
|
|
40
|
-
- Spiky or unpredictable traffic
|
|
41
|
-
- Want zero infrastructure management
|
|
42
|
-
- Cost optimization for low usage
|
|
43
|
-
- Rapid feature iteration
|
|
44
|
-
|
|
45
|
-
**Choose Event-Driven when**:
|
|
46
|
-
- Real-time data processing
|
|
47
|
-
- Audit logging requirements
|
|
48
|
-
- Decoupled system integration
|
|
49
|
-
- Complex business workflows
|
|
50
|
-
- Need event replay capability
|
|
1
|
+
# Backend Development Reference
|
|
51
2
|
|
|
52
|
-
##
|
|
53
|
-
|
|
54
|
-
### Container Orchestration
|
|
55
|
-
|
|
56
|
-
| Tool | Complexity | Ecosystem | Scaling | Multi-cloud | Production Ready |
|
|
57
|
-
|------|------------|-----------|---------|-------------|------------------|
|
|
58
|
-
| **Kubernetes 1.31.x** | High | Massive | Excellent | Yes | Yes |
|
|
59
|
-
| **Docker Swarm** | Low | Limited | Good | Partial | Yes |
|
|
60
|
-
| **AWS ECS** | Medium | AWS only | Good | No | Yes |
|
|
61
|
-
| **Nomad** | Medium | HashiCorp | Good | Yes | Yes |
|
|
62
|
-
|
|
63
|
-
**Recommendation**: Kubernetes 1.31.x for production, Docker Compose for local dev.
|
|
64
|
-
|
|
65
|
-
### Service Mesh
|
|
66
|
-
|
|
67
|
-
| Tool | Complexity | Features | Performance | Maturity |
|
|
68
|
-
|------|------------|----------|-------------|----------|
|
|
69
|
-
| **Istio 1.21.x** | High | Comprehensive | Good | Mature |
|
|
70
|
-
| **Linkerd 2.14.x** | Low | Core features | Excellent | Mature |
|
|
71
|
-
| **Consul Connect** | Medium | Full stack | Good | Mature |
|
|
72
|
-
| **AWS App Mesh** | Medium | AWS native | Good | Growing |
|
|
73
|
-
|
|
74
|
-
**Recommendation**: Istio 1.21.x for full features, Linkerd for simplicity.
|
|
75
|
-
|
|
76
|
-
### Message Brokers
|
|
77
|
-
|
|
78
|
-
| Tool | Throughput | Durability | Ordering | Complexity | Use Case |
|
|
79
|
-
|------|------------|------------|----------|------------|----------|
|
|
80
|
-
| **Apache Kafka 3.7.x** | Very High | Excellent | Partition | High | Event streaming, logs |
|
|
81
|
-
| **RabbitMQ 3.13.x** | High | Good | Queue | Medium | Task queues, RPC |
|
|
82
|
-
| **Redis Streams 7.2.x** | Very High | Good | Stream | Low | Real-time, lightweight |
|
|
83
|
-
| **Amazon SQS** | Medium | Excellent | Best-effort | Low | Serverless, AWS |
|
|
84
|
-
| **NATS 2.10.x** | Very High | Good | Stream | Low | Microservices messaging |
|
|
85
|
-
| **Apache Pulsar 3.2.x** | Very High | Excellent | Partition | High | Multi-tenancy, geo-replication |
|
|
86
|
-
|
|
87
|
-
**Recommendation**: Kafka 3.7.x for event streaming, RabbitMQ 3.13.x for task queues, NATS for lightweight microservices messaging.
|
|
88
|
-
|
|
89
|
-
### Observability Stack Comparison
|
|
90
|
-
|
|
91
|
-
| Stack | Traces | Metrics | Logs | Complexity | Cost |
|
|
92
|
-
|-------|--------|---------|------|------------|------|
|
|
93
|
-
| **OpenTelemetry + Prometheus + Jaeger + ELK** | Yes | Yes | Yes | High | OSS |
|
|
94
|
-
| **Datadog** | Yes | Yes | Yes | Low | High |
|
|
95
|
-
| **New Relic** | Yes | Yes | Yes | Low | High |
|
|
96
|
-
| **AWS X-Ray + CloudWatch** | Yes | Yes | Yes | Medium | Medium |
|
|
97
|
-
| **Grafana Cloud** | Yes | Yes | Yes | Low | Medium |
|
|
98
|
-
|
|
99
|
-
**Recommendation**: OpenTelemetry 1.24.0 + Prometheus 2.48.x + Jaeger 1.51.x for vendor-neutral OSS stack.
|
|
100
|
-
|
|
101
|
-
### Database Selection Matrix
|
|
3
|
+
## API Reference
|
|
102
4
|
|
|
103
|
-
|
|
104
|
-
|----------|------|-------------|-------------|-------------------|----------|
|
|
105
|
-
| **PostgreSQL 16.x** | SQL | Vertical + Read Replicas | Strong ACID | SQL + JSONB | Relational, complex queries |
|
|
106
|
-
| **MongoDB 8.0.x** | Document | Horizontal (Sharding) | Tunable | Flexible schema | Rapid prototyping, catalogs |
|
|
107
|
-
| **Redis 7.2.x** | Key-Value | Horizontal (Cluster) | Eventual | Limited | Caching, sessions, pub/sub |
|
|
108
|
-
| **Cassandra 4.1.x** | Wide-Column | Horizontal | Tunable | CQL | Time-series, write-heavy |
|
|
109
|
-
|
|
110
|
-
**Recommendation**: PostgreSQL 16.x as default, MongoDB 8.0.x for schema flexibility.
|
|
111
|
-
|
|
112
|
-
## Deployment Strategies
|
|
113
|
-
|
|
114
|
-
### Blue-Green Deployment
|
|
115
|
-
|
|
116
|
-
**Pattern**:
|
|
117
|
-
- Two identical production environments (Blue = current, Green = new)
|
|
118
|
-
- Switch traffic after validation
|
|
119
|
-
- Instant rollback capability
|
|
120
|
-
|
|
121
|
-
**Pros**:
|
|
122
|
-
- Zero downtime
|
|
123
|
-
- Easy rollback
|
|
124
|
-
- Full validation before switch
|
|
125
|
-
|
|
126
|
-
**Cons**:
|
|
127
|
-
- Double infrastructure cost
|
|
128
|
-
- Data migration complexity
|
|
129
|
-
- Requires load balancer
|
|
5
|
+
### FastAPI Application Setup
|
|
130
6
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
x-canary:
|
|
165
|
-
exact: "true"
|
|
166
|
-
route:
|
|
167
|
-
- destination:
|
|
168
|
-
host: backend
|
|
169
|
-
subset: v2
|
|
170
|
-
- route:
|
|
171
|
-
- destination:
|
|
172
|
-
host: backend
|
|
173
|
-
subset: v1
|
|
174
|
-
weight: 90
|
|
175
|
-
- destination:
|
|
176
|
-
host: backend
|
|
177
|
-
subset: v2
|
|
178
|
-
weight: 10
|
|
7
|
+
Complete application structure:
|
|
8
|
+
```python
|
|
9
|
+
from fastapi import FastAPI, Depends, HTTPException, status
|
|
10
|
+
from fastapi.middleware.cors import CORSMiddleware
|
|
11
|
+
from fastapi.security import OAuth2PasswordBearer
|
|
12
|
+
from contextlib import asynccontextmanager
|
|
13
|
+
|
|
14
|
+
@asynccontextmanager
|
|
15
|
+
async def lifespan(app: FastAPI):
|
|
16
|
+
# Startup
|
|
17
|
+
await database.connect()
|
|
18
|
+
await cache.connect()
|
|
19
|
+
yield
|
|
20
|
+
# Shutdown
|
|
21
|
+
await database.disconnect()
|
|
22
|
+
await cache.disconnect()
|
|
23
|
+
|
|
24
|
+
app = FastAPI(
|
|
25
|
+
title="API Service",
|
|
26
|
+
version="2.0.0",
|
|
27
|
+
lifespan=lifespan,
|
|
28
|
+
docs_url="/docs",
|
|
29
|
+
redoc_url="/redoc",
|
|
30
|
+
openapi_url="/openapi.json"
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
app.add_middleware(
|
|
34
|
+
CORSMiddleware,
|
|
35
|
+
allow_origins=["*"],
|
|
36
|
+
allow_credentials=True,
|
|
37
|
+
allow_methods=["*"],
|
|
38
|
+
allow_headers=["*"],
|
|
39
|
+
)
|
|
179
40
|
```
|
|
180
41
|
|
|
181
|
-
###
|
|
182
|
-
|
|
183
|
-
**Pattern**:
|
|
184
|
-
- Incrementally replace instances (pod-by-pod)
|
|
185
|
-
- Kubernetes default strategy
|
|
186
|
-
- Health checks control rollout
|
|
187
|
-
|
|
188
|
-
**Pros**:
|
|
189
|
-
- Built-in Kubernetes support
|
|
190
|
-
- No extra infrastructure
|
|
191
|
-
- Automatic rollback on failure
|
|
192
|
-
|
|
193
|
-
**Cons**:
|
|
194
|
-
- Version compatibility required
|
|
195
|
-
- Slower than blue-green
|
|
196
|
-
- Mixed versions during rollout
|
|
42
|
+
### Database Connection Patterns
|
|
197
43
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
44
|
+
SQLAlchemy Async Engine:
|
|
45
|
+
```python
|
|
46
|
+
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
|
|
47
|
+
from sqlalchemy.orm import sessionmaker
|
|
48
|
+
|
|
49
|
+
DATABASE_URL = "postgresql+asyncpg://user:pass@localhost/db"
|
|
50
|
+
|
|
51
|
+
engine = create_async_engine(
|
|
52
|
+
DATABASE_URL,
|
|
53
|
+
pool_size=20,
|
|
54
|
+
max_overflow=30,
|
|
55
|
+
pool_pre_ping=True,
|
|
56
|
+
pool_recycle=3600,
|
|
57
|
+
echo=False
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
async_session = sessionmaker(
|
|
61
|
+
engine, class_=AsyncSession, expire_on_commit=False
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
async def get_db():
|
|
65
|
+
async with async_session() as session:
|
|
66
|
+
try:
|
|
67
|
+
yield session
|
|
68
|
+
await session.commit()
|
|
69
|
+
except Exception:
|
|
70
|
+
await session.rollback()
|
|
71
|
+
raise
|
|
209
72
|
```
|
|
210
73
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
**Pattern**:
|
|
214
|
-
- Route users to different features based on criteria
|
|
215
|
-
- Measure business metrics
|
|
216
|
-
- Gradual feature rollout
|
|
217
|
-
|
|
218
|
-
**Pros**:
|
|
219
|
-
- Business metric validation
|
|
220
|
-
- User segmentation
|
|
221
|
-
- Independent of deployment
|
|
222
|
-
|
|
223
|
-
**Cons**:
|
|
224
|
-
- Code complexity (feature flags)
|
|
225
|
-
- Requires analytics
|
|
226
|
-
- Technical debt if not cleaned
|
|
227
|
-
|
|
228
|
-
**Best for**: Product experiments, new features.
|
|
229
|
-
|
|
230
|
-
**Tools**: LaunchDarkly, Split.io, Unleash, AWS AppConfig.
|
|
231
|
-
|
|
232
|
-
## Monitoring and Observability Setup
|
|
233
|
-
|
|
234
|
-
### OpenTelemetry 1.24.0 Integration
|
|
235
|
-
|
|
236
|
-
**Step 1: Instrument Application**:
|
|
74
|
+
Motor (MongoDB) Connection:
|
|
237
75
|
```python
|
|
238
|
-
from
|
|
239
|
-
from opentelemetry.sdk.trace import TracerProvider
|
|
240
|
-
from opentelemetry.sdk.trace.export import BatchSpanProcessor
|
|
241
|
-
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
|
|
76
|
+
from motor.motor_asyncio import AsyncIOMotorClient
|
|
242
77
|
|
|
243
|
-
|
|
244
|
-
tracer = trace.get_tracer(__name__)
|
|
78
|
+
MONGODB_URL = "mongodb://localhost:27017"
|
|
245
79
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
80
|
+
client = AsyncIOMotorClient(
|
|
81
|
+
MONGODB_URL,
|
|
82
|
+
maxPoolSize=50,
|
|
83
|
+
minPoolSize=10,
|
|
84
|
+
maxIdleTimeMS=50000,
|
|
85
|
+
waitQueueTimeoutMS=5000
|
|
86
|
+
)
|
|
250
87
|
|
|
251
|
-
|
|
252
|
-
```yaml
|
|
253
|
-
apiVersion: apps/v1
|
|
254
|
-
kind: Deployment
|
|
255
|
-
metadata:
|
|
256
|
-
name: otel-collector
|
|
257
|
-
spec:
|
|
258
|
-
template:
|
|
259
|
-
spec:
|
|
260
|
-
containers:
|
|
261
|
-
- name: otel-collector
|
|
262
|
-
image: otel/opentelemetry-collector:0.92.0
|
|
263
|
-
ports:
|
|
264
|
-
- containerPort: 4317 # OTLP gRPC
|
|
265
|
-
- containerPort: 4318 # OTLP HTTP
|
|
266
|
-
```
|
|
88
|
+
db = client.myapp
|
|
267
89
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
# otel-collector-config.yaml
|
|
271
|
-
receivers:
|
|
272
|
-
otlp:
|
|
273
|
-
protocols:
|
|
274
|
-
grpc:
|
|
275
|
-
http:
|
|
276
|
-
|
|
277
|
-
processors:
|
|
278
|
-
batch:
|
|
279
|
-
|
|
280
|
-
exporters:
|
|
281
|
-
prometheus:
|
|
282
|
-
endpoint: "0.0.0.0:8889"
|
|
283
|
-
jaeger:
|
|
284
|
-
endpoint: "jaeger:14250"
|
|
285
|
-
elasticsearch:
|
|
286
|
-
endpoints: ["http://elasticsearch:9200"]
|
|
287
|
-
|
|
288
|
-
service:
|
|
289
|
-
pipelines:
|
|
290
|
-
traces:
|
|
291
|
-
receivers: [otlp]
|
|
292
|
-
processors: [batch]
|
|
293
|
-
exporters: [jaeger]
|
|
294
|
-
metrics:
|
|
295
|
-
receivers: [otlp]
|
|
296
|
-
processors: [batch]
|
|
297
|
-
exporters: [prometheus]
|
|
298
|
-
logs:
|
|
299
|
-
receivers: [otlp]
|
|
300
|
-
processors: [batch]
|
|
301
|
-
exporters: [elasticsearch]
|
|
90
|
+
async def get_mongodb():
|
|
91
|
+
return db
|
|
302
92
|
```
|
|
303
93
|
|
|
304
|
-
|
|
94
|
+
Redis Connection:
|
|
95
|
+
```python
|
|
96
|
+
import redis.asyncio as redis
|
|
305
97
|
|
|
306
|
-
|
|
307
|
-
```bash
|
|
308
|
-
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
|
|
309
|
-
helm install prometheus prometheus-community/kube-prometheus-stack \
|
|
310
|
-
--set prometheus.prometheusSpec.retention=30d \
|
|
311
|
-
--set prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.resources.requests.storage=50Gi
|
|
312
|
-
```
|
|
98
|
+
REDIS_URL = "redis://localhost:6379"
|
|
313
99
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
name: backend-metrics
|
|
320
|
-
spec:
|
|
321
|
-
selector:
|
|
322
|
-
matchLabels:
|
|
323
|
-
app: backend
|
|
324
|
-
endpoints:
|
|
325
|
-
- port: metrics
|
|
326
|
-
interval: 15s
|
|
327
|
-
```
|
|
100
|
+
redis_pool = redis.ConnectionPool.from_url(
|
|
101
|
+
REDIS_URL,
|
|
102
|
+
max_connections=50,
|
|
103
|
+
decode_responses=True
|
|
104
|
+
)
|
|
328
105
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
apiVersion: monitoring.coreos.com/v1
|
|
332
|
-
kind: PrometheusRule
|
|
333
|
-
metadata:
|
|
334
|
-
name: backend-alerts
|
|
335
|
-
spec:
|
|
336
|
-
groups:
|
|
337
|
-
- name: backend
|
|
338
|
-
interval: 30s
|
|
339
|
-
rules:
|
|
340
|
-
- alert: HighErrorRate
|
|
341
|
-
expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.05
|
|
342
|
-
for: 5m
|
|
343
|
-
labels:
|
|
344
|
-
severity: critical
|
|
345
|
-
annotations:
|
|
346
|
-
summary: "High error rate detected"
|
|
106
|
+
async def get_redis():
|
|
107
|
+
return redis.Redis(connection_pool=redis_pool)
|
|
347
108
|
```
|
|
348
109
|
|
|
349
|
-
###
|
|
110
|
+
### Authentication Middleware
|
|
350
111
|
|
|
351
|
-
|
|
352
|
-
```
|
|
353
|
-
|
|
354
|
-
|
|
112
|
+
JWT Authentication:
|
|
113
|
+
```python
|
|
114
|
+
from jose import jwt, JWTError
|
|
115
|
+
from datetime import datetime, timedelta
|
|
116
|
+
from passlib.context import CryptContext
|
|
117
|
+
|
|
118
|
+
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
|
|
119
|
+
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="auth/login")
|
|
120
|
+
|
|
121
|
+
SECRET_KEY = "your-secret-key"
|
|
122
|
+
ALGORITHM = "HS256"
|
|
123
|
+
ACCESS_TOKEN_EXPIRE_MINUTES = 30
|
|
124
|
+
|
|
125
|
+
def create_access_token(data: dict, expires_delta: timedelta = None):
|
|
126
|
+
to_encode = data.copy()
|
|
127
|
+
expire = datetime.utcnow() + (expires_delta or timedelta(minutes=15))
|
|
128
|
+
to_encode.update({"exp": expire})
|
|
129
|
+
return jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
|
|
130
|
+
|
|
131
|
+
async def get_current_user(token: str = Depends(oauth2_scheme)):
|
|
132
|
+
credentials_exception = HTTPException(
|
|
133
|
+
status_code=status.HTTP_401_UNAUTHORIZED,
|
|
134
|
+
detail="Could not validate credentials",
|
|
135
|
+
headers={"WWW-Authenticate": "Bearer"},
|
|
136
|
+
)
|
|
137
|
+
try:
|
|
138
|
+
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
|
|
139
|
+
user_id: str = payload.get("sub")
|
|
140
|
+
if user_id is None:
|
|
141
|
+
raise credentials_exception
|
|
142
|
+
except JWTError:
|
|
143
|
+
raise credentials_exception
|
|
144
|
+
return await get_user_by_id(user_id)
|
|
355
145
|
```
|
|
356
146
|
|
|
357
|
-
|
|
358
|
-
```bash
|
|
359
|
-
helm repo add jaegertracing https://jaegertracing.github.io/helm-charts
|
|
360
|
-
helm install jaeger jaegertracing/jaeger \
|
|
361
|
-
--set provisionDataStore.cassandra=false \
|
|
362
|
-
--set provisionDataStore.elasticsearch=true \
|
|
363
|
-
--set storage.type=elasticsearch \
|
|
364
|
-
--set storage.elasticsearch.host=elasticsearch-master \
|
|
365
|
-
--set storage.elasticsearch.port=9200
|
|
366
|
-
```
|
|
147
|
+
---
|
|
367
148
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
- **RED Metrics**: Rate, Errors, Duration per service
|
|
372
|
-
- **Kubernetes Cluster**: Node/pod resource usage
|
|
373
|
-
- **Database Performance**: Query latency, connection pool
|
|
374
|
-
- **Application Logs**: Error rate trends, log volume
|
|
375
|
-
|
|
376
|
-
**Import Community Dashboards**:
|
|
377
|
-
- Kubernetes Cluster Monitoring (ID: 7249)
|
|
378
|
-
- Node Exporter Full (ID: 1860)
|
|
379
|
-
- PostgreSQL Database (ID: 9628)
|
|
380
|
-
|
|
381
|
-
## Performance Benchmarking
|
|
382
|
-
|
|
383
|
-
### Load Testing Tools
|
|
384
|
-
|
|
385
|
-
| Tool | Protocol | Complexity | Reporting | Use Case |
|
|
386
|
-
|------|----------|------------|-----------|----------|
|
|
387
|
-
| **k6** | HTTP, gRPC, WebSocket | Low | Good | API load testing |
|
|
388
|
-
| **Gatling** | HTTP, WebSocket | Medium | Excellent | Complex scenarios |
|
|
389
|
-
| **JMeter** | HTTP, JDBC, JMS, etc. | High | Good | Enterprise testing |
|
|
390
|
-
| **Locust** | HTTP, custom | Low | Good | Python-based scripting |
|
|
391
|
-
|
|
392
|
-
**Recommendation**: k6 for API load testing, Gatling for complex user journeys.
|
|
393
|
-
|
|
394
|
-
### k6 Example (HTTP API)
|
|
395
|
-
|
|
396
|
-
```javascript
|
|
397
|
-
import http from 'k6/http';
|
|
398
|
-
import { check, sleep } from 'k6';
|
|
399
|
-
|
|
400
|
-
export let options = {
|
|
401
|
-
stages: [
|
|
402
|
-
{ duration: '2m', target: 100 }, // Ramp-up
|
|
403
|
-
{ duration: '5m', target: 100 }, // Steady
|
|
404
|
-
{ duration: '2m', target: 0 }, // Ramp-down
|
|
405
|
-
],
|
|
406
|
-
thresholds: {
|
|
407
|
-
http_req_duration: ['p(95)<500'], // 95% under 500ms
|
|
408
|
-
http_req_failed: ['rate<0.01'], // Error rate < 1%
|
|
409
|
-
},
|
|
410
|
-
};
|
|
411
|
-
|
|
412
|
-
export default function () {
|
|
413
|
-
let res = http.get('https://api.example.com/users');
|
|
414
|
-
check(res, {
|
|
415
|
-
'status is 200': (r) => r.status === 200,
|
|
416
|
-
'response time < 500ms': (r) => r.timings.duration < 500,
|
|
417
|
-
});
|
|
418
|
-
sleep(1);
|
|
419
|
-
}
|
|
420
|
-
```
|
|
149
|
+
## Configuration Options
|
|
150
|
+
|
|
151
|
+
### Application Configuration
|
|
421
152
|
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
153
|
+
```yaml
|
|
154
|
+
# config/settings.yaml
|
|
155
|
+
app:
|
|
156
|
+
name: "Backend Service"
|
|
157
|
+
version: "2.0.0"
|
|
158
|
+
debug: false
|
|
159
|
+
environment: "production"
|
|
160
|
+
|
|
161
|
+
server:
|
|
162
|
+
host: "0.0.0.0"
|
|
163
|
+
port: 8000
|
|
164
|
+
workers: 4
|
|
165
|
+
reload: false
|
|
166
|
+
|
|
167
|
+
database:
|
|
168
|
+
postgresql:
|
|
169
|
+
url: "postgresql+asyncpg://user:pass@localhost/db"
|
|
170
|
+
pool_size: 20
|
|
171
|
+
max_overflow: 30
|
|
172
|
+
pool_pre_ping: true
|
|
173
|
+
mongodb:
|
|
174
|
+
url: "mongodb://localhost:27017"
|
|
175
|
+
database: "myapp"
|
|
176
|
+
max_pool_size: 50
|
|
177
|
+
redis:
|
|
178
|
+
url: "redis://localhost:6379"
|
|
179
|
+
max_connections: 50
|
|
180
|
+
|
|
181
|
+
security:
|
|
182
|
+
secret_key: "${SECRET_KEY}"
|
|
183
|
+
algorithm: "HS256"
|
|
184
|
+
access_token_expire_minutes: 30
|
|
185
|
+
refresh_token_expire_days: 7
|
|
186
|
+
|
|
187
|
+
cors:
|
|
188
|
+
allow_origins:
|
|
189
|
+
- "http://localhost:3000"
|
|
190
|
+
- "https://myapp.com"
|
|
191
|
+
allow_credentials: true
|
|
192
|
+
allow_methods: ["*"]
|
|
193
|
+
allow_headers: ["*"]
|
|
194
|
+
|
|
195
|
+
logging:
|
|
196
|
+
level: "INFO"
|
|
197
|
+
format: "json"
|
|
198
|
+
handlers:
|
|
199
|
+
- console
|
|
200
|
+
- file
|
|
425
201
|
```
|
|
426
202
|
|
|
427
|
-
###
|
|
428
|
-
|
|
429
|
-
| Metric | Target | Good | Excellent |
|
|
430
|
-
|--------|--------|------|-----------|
|
|
431
|
-
| **API Response Time (p95)** | <500ms | <200ms | <100ms |
|
|
432
|
-
| **Error Rate** | <1% | <0.1% | <0.01% |
|
|
433
|
-
| **Throughput** | 1000 req/s | 5000 req/s | 10000 req/s |
|
|
434
|
-
| **Database Query (p95)** | <100ms | <50ms | <10ms |
|
|
435
|
-
| **CPU Usage** | <70% | <50% | <30% |
|
|
436
|
-
| **Memory Usage** | <80% | <60% | <40% |
|
|
437
|
-
|
|
438
|
-
## Security Best Practices
|
|
439
|
-
|
|
440
|
-
### OWASP API Security Top 10 2023 Checklist
|
|
441
|
-
|
|
442
|
-
- [ ] **API1: Broken Object Level Authorization**
|
|
443
|
-
- Implement per-object access control checks
|
|
444
|
-
- Validate user owns the resource before access
|
|
445
|
-
- Use UUIDs instead of sequential IDs
|
|
446
|
-
|
|
447
|
-
- [ ] **API2: Broken Authentication**
|
|
448
|
-
- Use industry-standard auth (OAuth 2.0, OpenID Connect)
|
|
449
|
-
- Implement rate limiting on auth endpoints
|
|
450
|
-
- Rotate secrets regularly
|
|
451
|
-
|
|
452
|
-
- [ ] **API3: Broken Object Property Level Authorization**
|
|
453
|
-
- Use response DTOs to filter sensitive fields
|
|
454
|
-
- Validate input against allowed fields (no mass assignment)
|
|
455
|
-
- Implement role-based field visibility
|
|
456
|
-
|
|
457
|
-
- [ ] **API4: Unrestricted Resource Consumption**
|
|
458
|
-
- Enforce pagination (max 100 items per page)
|
|
459
|
-
- Implement rate limiting (Redis-based)
|
|
460
|
-
- Set request timeouts and size limits
|
|
461
|
-
|
|
462
|
-
- [ ] **API5: Broken Function Level Authorization**
|
|
463
|
-
- Validate roles/permissions on every endpoint
|
|
464
|
-
- Deny by default, allow explicitly
|
|
465
|
-
- Use middleware for consistent checks
|
|
466
|
-
|
|
467
|
-
- [ ] **API6: Unrestricted Access to Sensitive Business Flows**
|
|
468
|
-
- Implement CAPTCHA for critical flows
|
|
469
|
-
- Detect and block automated abuse
|
|
470
|
-
- Monitor for unusual patterns
|
|
471
|
-
|
|
472
|
-
- [ ] **API7: Server Side Request Forgery (SSRF)**
|
|
473
|
-
- Validate and whitelist URLs
|
|
474
|
-
- Block private IP ranges
|
|
475
|
-
- Use network segmentation
|
|
476
|
-
|
|
477
|
-
- [ ] **API8: Security Misconfiguration**
|
|
478
|
-
- Disable debug mode in production
|
|
479
|
-
- Remove unnecessary endpoints
|
|
480
|
-
- Use security headers (HSTS, CSP, etc.)
|
|
481
|
-
|
|
482
|
-
- [ ] **API9: Improper Inventory Management**
|
|
483
|
-
- Document all API versions
|
|
484
|
-
- Deprecate old versions gracefully
|
|
485
|
-
- Monitor for unauthorized endpoints
|
|
486
|
-
|
|
487
|
-
- [ ] **API10: Unsafe Consumption of APIs**
|
|
488
|
-
- Validate external API responses
|
|
489
|
-
- Set timeouts for external calls
|
|
490
|
-
- Handle partial failures gracefully
|
|
491
|
-
|
|
492
|
-
### Rate Limiting Implementation (Redis 7.2.x)
|
|
493
|
-
|
|
494
|
-
**Token Bucket Algorithm**:
|
|
495
|
-
```python
|
|
496
|
-
import redis
|
|
497
|
-
import time
|
|
203
|
+
### Environment Variables
|
|
498
204
|
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
205
|
+
APP_ENV - Application environment (development, staging, production)
|
|
206
|
+
DATABASE_URL - Primary database connection string
|
|
207
|
+
MONGODB_URL - MongoDB connection string
|
|
208
|
+
REDIS_URL - Redis connection string
|
|
209
|
+
SECRET_KEY - JWT signing key
|
|
210
|
+
CORS_ORIGINS - Comma-separated allowed origins
|
|
211
|
+
LOG_LEVEL - Logging level (DEBUG, INFO, WARNING, ERROR)
|
|
503
212
|
|
|
504
|
-
|
|
505
|
-
if current is None:
|
|
506
|
-
r.setex(key, window, 1)
|
|
507
|
-
return False
|
|
213
|
+
---
|
|
508
214
|
|
|
509
|
-
|
|
510
|
-
if current >= max_requests:
|
|
511
|
-
return True
|
|
215
|
+
## Integration Patterns
|
|
512
216
|
|
|
513
|
-
|
|
514
|
-
return False
|
|
515
|
-
```
|
|
217
|
+
### Service Layer Pattern
|
|
516
218
|
|
|
517
|
-
**Sliding Window (Accurate)**:
|
|
518
219
|
```python
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
220
|
+
from abc import ABC, abstractmethod
|
|
221
|
+
from typing import Generic, TypeVar, List, Optional
|
|
222
|
+
|
|
223
|
+
T = TypeVar('T')
|
|
224
|
+
|
|
225
|
+
class BaseService(ABC, Generic[T]):
|
|
226
|
+
@abstractmethod
|
|
227
|
+
async def get(self, id: int) -> Optional[T]:
|
|
228
|
+
pass
|
|
229
|
+
|
|
230
|
+
@abstractmethod
|
|
231
|
+
async def get_all(self, skip: int = 0, limit: int = 100) -> List[T]:
|
|
232
|
+
pass
|
|
233
|
+
|
|
234
|
+
@abstractmethod
|
|
235
|
+
async def create(self, obj: T) -> T:
|
|
236
|
+
pass
|
|
237
|
+
|
|
238
|
+
@abstractmethod
|
|
239
|
+
async def update(self, id: int, obj: T) -> Optional[T]:
|
|
240
|
+
pass
|
|
241
|
+
|
|
242
|
+
@abstractmethod
|
|
243
|
+
async def delete(self, id: int) -> bool:
|
|
244
|
+
pass
|
|
245
|
+
|
|
246
|
+
class UserService(BaseService[User]):
|
|
247
|
+
def __init__(self, db: AsyncSession, cache: Redis):
|
|
248
|
+
self.db = db
|
|
249
|
+
self.cache = cache
|
|
250
|
+
|
|
251
|
+
async def get(self, id: int) -> Optional[User]:
|
|
252
|
+
# Check cache first
|
|
253
|
+
cached = await self.cache.get(f"user:{id}")
|
|
254
|
+
if cached:
|
|
255
|
+
return User.parse_raw(cached)
|
|
256
|
+
|
|
257
|
+
# Query database
|
|
258
|
+
user = await self.db.get(User, id)
|
|
259
|
+
if user:
|
|
260
|
+
await self.cache.setex(f"user:{id}", 3600, user.json())
|
|
261
|
+
return user
|
|
537
262
|
```
|
|
538
263
|
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
### Resource Right-Sizing
|
|
264
|
+
### Repository Pattern
|
|
542
265
|
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
266
|
+
```python
|
|
267
|
+
from sqlalchemy import select, update, delete
|
|
268
|
+
from sqlalchemy.ext.asyncio import AsyncSession
|
|
269
|
+
|
|
270
|
+
class UserRepository:
|
|
271
|
+
def __init__(self, session: AsyncSession):
|
|
272
|
+
self.session = session
|
|
273
|
+
|
|
274
|
+
async def find_by_id(self, user_id: int) -> Optional[User]:
|
|
275
|
+
result = await self.session.execute(
|
|
276
|
+
select(User).where(User.id == user_id)
|
|
277
|
+
)
|
|
278
|
+
return result.scalar_one_or_none()
|
|
279
|
+
|
|
280
|
+
async def find_by_email(self, email: str) -> Optional[User]:
|
|
281
|
+
result = await self.session.execute(
|
|
282
|
+
select(User).where(User.email == email)
|
|
283
|
+
)
|
|
284
|
+
return result.scalar_one_or_none()
|
|
285
|
+
|
|
286
|
+
async def create(self, user_data: UserCreate) -> User:
|
|
287
|
+
user = User(**user_data.dict())
|
|
288
|
+
self.session.add(user)
|
|
289
|
+
await self.session.flush()
|
|
290
|
+
return user
|
|
291
|
+
|
|
292
|
+
async def update(self, user_id: int, data: UserUpdate) -> Optional[User]:
|
|
293
|
+
await self.session.execute(
|
|
294
|
+
update(User)
|
|
295
|
+
.where(User.id == user_id)
|
|
296
|
+
.values(**data.dict(exclude_unset=True))
|
|
297
|
+
)
|
|
298
|
+
return await self.find_by_id(user_id)
|
|
552
299
|
```
|
|
553
300
|
|
|
554
|
-
|
|
555
|
-
- Set requests based on p50 usage
|
|
556
|
-
- Set limits based on p99 usage
|
|
557
|
-
- Enable Vertical Pod Autoscaler for recommendations
|
|
558
|
-
|
|
559
|
-
### Auto-Scaling Strategies
|
|
301
|
+
### Event-Driven Architecture
|
|
560
302
|
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
303
|
+
```python
|
|
304
|
+
import asyncio
|
|
305
|
+
from aio_pika import connect_robust, Message, ExchangeType
|
|
306
|
+
|
|
307
|
+
class EventPublisher:
|
|
308
|
+
def __init__(self, amqp_url: str):
|
|
309
|
+
self.amqp_url = amqp_url
|
|
310
|
+
self.connection = None
|
|
311
|
+
self.channel = None
|
|
312
|
+
self.exchange = None
|
|
313
|
+
|
|
314
|
+
async def connect(self):
|
|
315
|
+
self.connection = await connect_robust(self.amqp_url)
|
|
316
|
+
self.channel = await self.connection.channel()
|
|
317
|
+
self.exchange = await self.channel.declare_exchange(
|
|
318
|
+
"events", ExchangeType.TOPIC, durable=True
|
|
319
|
+
)
|
|
320
|
+
|
|
321
|
+
async def publish(self, event_type: str, data: dict):
|
|
322
|
+
message = Message(
|
|
323
|
+
json.dumps(data).encode(),
|
|
324
|
+
content_type="application/json",
|
|
325
|
+
headers={"event_type": event_type}
|
|
326
|
+
)
|
|
327
|
+
await self.exchange.publish(message, routing_key=event_type)
|
|
328
|
+
|
|
329
|
+
class EventSubscriber:
|
|
330
|
+
def __init__(self, amqp_url: str):
|
|
331
|
+
self.amqp_url = amqp_url
|
|
332
|
+
self.handlers = {}
|
|
333
|
+
|
|
334
|
+
def on(self, event_type: str):
|
|
335
|
+
def decorator(func):
|
|
336
|
+
self.handlers[event_type] = func
|
|
337
|
+
return func
|
|
338
|
+
return decorator
|
|
339
|
+
|
|
340
|
+
async def start(self):
|
|
341
|
+
connection = await connect_robust(self.amqp_url)
|
|
342
|
+
channel = await connection.channel()
|
|
343
|
+
exchange = await channel.declare_exchange(
|
|
344
|
+
"events", ExchangeType.TOPIC, durable=True
|
|
345
|
+
)
|
|
346
|
+
queue = await channel.declare_queue("", exclusive=True)
|
|
347
|
+
|
|
348
|
+
for event_type in self.handlers:
|
|
349
|
+
await queue.bind(exchange, routing_key=event_type)
|
|
350
|
+
|
|
351
|
+
async with queue.iterator() as queue_iter:
|
|
352
|
+
async for message in queue_iter:
|
|
353
|
+
async with message.process():
|
|
354
|
+
event_type = message.headers.get("event_type")
|
|
355
|
+
if event_type in self.handlers:
|
|
356
|
+
data = json.loads(message.body)
|
|
357
|
+
await self.handlers[event_type](data)
|
|
587
358
|
```
|
|
588
359
|
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
-
|
|
599
|
-
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
-
|
|
608
|
-
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
-
|
|
660
|
-
-
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## Troubleshooting
|
|
363
|
+
|
|
364
|
+
### Common Issues
|
|
365
|
+
|
|
366
|
+
Issue: Connection pool exhausted
|
|
367
|
+
Symptoms: Requests timeout, "too many connections" errors
|
|
368
|
+
Solution:
|
|
369
|
+
- Increase pool_size and max_overflow in database configuration
|
|
370
|
+
- Check for connection leaks (ensure proper context manager usage)
|
|
371
|
+
- Implement connection health checks with pool_pre_ping
|
|
372
|
+
|
|
373
|
+
Issue: Slow database queries
|
|
374
|
+
Symptoms: High response times, database CPU spikes
|
|
375
|
+
Solution:
|
|
376
|
+
- Use EXPLAIN ANALYZE to identify slow queries
|
|
377
|
+
- Add appropriate indexes based on query patterns
|
|
378
|
+
- Implement query result caching with Redis
|
|
379
|
+
- Consider read replicas for read-heavy workloads
|
|
380
|
+
|
|
381
|
+
Issue: Memory leaks in async operations
|
|
382
|
+
Symptoms: Gradual memory increase, eventual OOM
|
|
383
|
+
Solution:
|
|
384
|
+
- Use async context managers properly
|
|
385
|
+
- Implement proper cleanup in lifespan handlers
|
|
386
|
+
- Monitor task cancellation and cleanup
|
|
387
|
+
- Use weak references for caches where appropriate
|
|
388
|
+
|
|
389
|
+
Issue: CORS errors in browser
|
|
390
|
+
Symptoms: Cross-origin requests blocked
|
|
391
|
+
Solution:
|
|
392
|
+
- Verify allow_origins includes client domain
|
|
393
|
+
- Check allow_credentials setting for cookie-based auth
|
|
394
|
+
- Ensure preflight OPTIONS requests are handled
|
|
395
|
+
- Add explicit headers for custom request headers
|
|
396
|
+
|
|
397
|
+
Issue: JWT token expiration issues
|
|
398
|
+
Symptoms: Users logged out unexpectedly
|
|
399
|
+
Solution:
|
|
400
|
+
- Implement refresh token rotation
|
|
401
|
+
- Use sliding window expiration for active users
|
|
402
|
+
- Add token refresh middleware
|
|
403
|
+
- Handle token refresh in frontend interceptors
|
|
404
|
+
|
|
405
|
+
### Performance Optimization
|
|
406
|
+
|
|
407
|
+
Query Optimization:
|
|
408
|
+
- Use select_related/joinedload for N+1 query prevention
|
|
409
|
+
- Implement pagination with cursor-based approach for large datasets
|
|
410
|
+
- Use database-level aggregations instead of application-level
|
|
411
|
+
- Cache frequently accessed, rarely changed data
|
|
412
|
+
|
|
413
|
+
Connection Management:
|
|
414
|
+
- Tune pool sizes based on actual workload
|
|
415
|
+
- Use connection poolers (PgBouncer) for high-concurrency
|
|
416
|
+
- Implement circuit breakers for external service calls
|
|
417
|
+
- Monitor connection metrics and adjust accordingly
|
|
418
|
+
|
|
419
|
+
Async Best Practices:
|
|
420
|
+
- Use asyncio.gather for concurrent operations
|
|
421
|
+
- Implement proper timeout handling
|
|
422
|
+
- Use semaphores to limit concurrent external calls
|
|
423
|
+
- Profile async code with py-spy or similar tools
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## External Resources
|
|
428
|
+
|
|
429
|
+
### Frameworks
|
|
430
|
+
- FastAPI: https://fastapi.tiangolo.com/
|
|
431
|
+
- Django: https://www.djangoproject.com/
|
|
432
|
+
- Flask: https://flask.palletsprojects.com/
|
|
433
|
+
- Starlette: https://www.starlette.io/
|
|
434
|
+
|
|
435
|
+
### Databases
|
|
436
|
+
- SQLAlchemy: https://docs.sqlalchemy.org/
|
|
437
|
+
- Motor (MongoDB): https://motor.readthedocs.io/
|
|
438
|
+
- Redis-py: https://redis-py.readthedocs.io/
|
|
439
|
+
- asyncpg: https://magicstack.github.io/asyncpg/
|
|
440
|
+
|
|
441
|
+
### Message Queues
|
|
442
|
+
- RabbitMQ: https://www.rabbitmq.com/documentation.html
|
|
443
|
+
- Apache Kafka: https://kafka.apache.org/documentation/
|
|
444
|
+
- aio-pika: https://aio-pika.readthedocs.io/
|
|
445
|
+
|
|
446
|
+
### Security
|
|
447
|
+
- OWASP API Security: https://owasp.org/www-project-api-security/
|
|
448
|
+
- python-jose: https://python-jose.readthedocs.io/
|
|
449
|
+
- Passlib: https://passlib.readthedocs.io/
|
|
450
|
+
|
|
451
|
+
### Monitoring
|
|
452
|
+
- Prometheus: https://prometheus.io/docs/
|
|
453
|
+
- OpenTelemetry: https://opentelemetry.io/docs/
|
|
454
|
+
- Grafana: https://grafana.com/docs/
|
|
455
|
+
|
|
456
|
+
### Best Practices
|
|
457
|
+
- 12 Factor App: https://12factor.net/
|
|
458
|
+
- Microservices Patterns: https://microservices.io/patterns/
|
|
459
|
+
- API Design Guidelines: https://github.com/microsoft/api-guidelines
|
|
460
|
+
|
|
461
|
+
---
|
|
462
|
+
|
|
463
|
+
Version: 1.0.0
|
|
464
|
+
Last Updated: 2025-12-06
|