moai-adk 0.25.4__py3-none-any.whl → 0.41.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.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/__init__.py +2 -5
- moai_adk/__main__.py +114 -82
- moai_adk/cli/__init__.py +6 -1
- moai_adk/cli/commands/__init__.py +1 -3
- moai_adk/cli/commands/analyze.py +5 -16
- moai_adk/cli/commands/doctor.py +6 -18
- moai_adk/cli/commands/init.py +60 -126
- moai_adk/cli/commands/language.py +14 -35
- moai_adk/cli/commands/status.py +9 -15
- moai_adk/cli/commands/update.py +1560 -190
- moai_adk/cli/prompts/init_prompts.py +112 -56
- moai_adk/cli/spec_status.py +263 -0
- moai_adk/cli/ui/__init__.py +44 -0
- moai_adk/cli/ui/progress.py +422 -0
- moai_adk/cli/ui/prompts.py +389 -0
- moai_adk/cli/ui/theme.py +129 -0
- moai_adk/cli/worktree/__init__.py +27 -0
- moai_adk/cli/worktree/__main__.py +31 -0
- moai_adk/cli/worktree/cli.py +683 -0
- moai_adk/cli/worktree/exceptions.py +89 -0
- moai_adk/cli/worktree/manager.py +493 -0
- moai_adk/cli/worktree/models.py +65 -0
- moai_adk/cli/worktree/registry.py +422 -0
- moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
- moai_adk/core/analysis/session_analyzer.py +17 -56
- moai_adk/core/claude_integration.py +26 -54
- moai_adk/core/command_helpers.py +10 -10
- moai_adk/core/comprehensive_monitoring_system.py +1183 -0
- moai_adk/core/config/migration.py +19 -9
- moai_adk/core/config/unified.py +610 -0
- moai_adk/core/context_manager.py +6 -12
- moai_adk/core/enterprise_features.py +1404 -0
- moai_adk/core/error_recovery_system.py +747 -116
- moai_adk/core/event_driven_hook_system.py +1371 -0
- moai_adk/core/git/__init__.py +8 -0
- moai_adk/core/git/branch_manager.py +3 -11
- moai_adk/core/git/checkpoint.py +1 -3
- moai_adk/core/git/conflict_detector.py +422 -0
- moai_adk/core/git/event_detector.py +16 -5
- moai_adk/core/git/manager.py +91 -1
- moai_adk/core/input_validation_middleware.py +1006 -0
- moai_adk/core/integration/engine.py +6 -18
- moai_adk/core/integration/integration_tester.py +10 -9
- moai_adk/core/integration/utils.py +1 -1
- moai_adk/core/issue_creator.py +10 -28
- moai_adk/core/jit_context_loader.py +956 -0
- moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
- moai_adk/core/language_config_resolver.py +578 -0
- moai_adk/core/language_validator.py +28 -41
- moai_adk/core/mcp/setup.py +15 -12
- moai_adk/core/merge/__init__.py +9 -0
- moai_adk/core/merge/analyzer.py +666 -0
- moai_adk/core/migration/alfred_to_moai_migrator.py +389 -0
- moai_adk/core/migration/backup_manager.py +131 -12
- moai_adk/core/migration/custom_element_scanner.py +358 -0
- moai_adk/core/migration/file_migrator.py +181 -18
- 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 +127 -27
- moai_adk/core/migration/version_migrator.py +47 -12
- moai_adk/core/performance/cache_system.py +8 -10
- moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
- moai_adk/core/project/backup_utils.py +9 -1
- moai_adk/core/project/checker.py +2 -4
- moai_adk/core/project/detector.py +1 -3
- moai_adk/core/project/initializer.py +142 -93
- moai_adk/core/project/phase_executor.py +130 -111
- moai_adk/core/project/validator.py +6 -12
- moai_adk/core/quality/trust_checker.py +39 -37
- moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
- moai_adk/core/robust_json_parser.py +611 -0
- moai_adk/core/rollback_manager.py +116 -164
- moai_adk/core/session_manager.py +10 -26
- moai_adk/core/skill_loading_system.py +579 -0
- moai_adk/core/spec_status_manager.py +64 -74
- moai_adk/core/template/backup.py +48 -22
- moai_adk/core/template/config.py +142 -45
- moai_adk/core/template/merger.py +45 -27
- moai_adk/core/template/processor.py +391 -152
- moai_adk/core/template_engine.py +83 -41
- 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 +56 -0
- moai_adk/foundation/backend.py +1027 -0
- moai_adk/foundation/database.py +1115 -0
- moai_adk/foundation/devops.py +1585 -0
- moai_adk/foundation/ears.py +431 -0
- moai_adk/foundation/frontend.py +870 -0
- moai_adk/foundation/git/commit_templates.py +4 -12
- moai_adk/foundation/git.py +376 -0
- moai_adk/foundation/langs.py +484 -0
- moai_adk/foundation/ml_ops.py +1162 -0
- moai_adk/foundation/testing.py +1524 -0
- moai_adk/foundation/trust/trust_principles.py +23 -72
- moai_adk/foundation/trust/validation_checklist.py +57 -162
- moai_adk/project/__init__.py +0 -0
- moai_adk/project/configuration.py +1084 -0
- moai_adk/project/documentation.py +566 -0
- moai_adk/project/schema.py +447 -0
- moai_adk/statusline/alfred_detector.py +1 -3
- moai_adk/statusline/config.py +18 -6
- moai_adk/statusline/enhanced_output_style_detector.py +23 -15
- moai_adk/statusline/main.py +109 -15
- moai_adk/statusline/renderer.py +85 -69
- moai_adk/statusline/update_checker.py +3 -9
- moai_adk/statusline/version_reader.py +140 -46
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +716 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +480 -0
- moai_adk/templates/.claude/agents/moai/builder-command.md +1194 -0
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +753 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +672 -0
- moai_adk/templates/.claude/agents/moai/expert-backend.md +903 -0
- moai_adk/templates/.claude/agents/moai/expert-database.md +782 -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 +727 -0
- moai_adk/templates/.claude/agents/moai/expert-performance.md +661 -0
- moai_adk/templates/.claude/agents/moai/expert-refactoring.md +218 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +525 -0
- moai_adk/templates/.claude/agents/moai/expert-testing.md +737 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +1047 -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 +897 -0
- moai_adk/templates/.claude/agents/moai/manager-quality.md +640 -0
- moai_adk/templates/.claude/agents/moai/manager-spec.md +815 -0
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +786 -0
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +797 -0
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +464 -0
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +1588 -0
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +795 -0
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +475 -0
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1038 -0
- moai_adk/templates/.claude/commands/moai/0-project.md +1339 -0
- moai_adk/templates/.claude/commands/moai/1-plan.md +1367 -0
- moai_adk/templates/.claude/commands/moai/2-run.md +825 -0
- moai_adk/templates/.claude/commands/moai/3-sync.md +1358 -0
- moai_adk/templates/.claude/commands/moai/9-feedback.md +320 -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 +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +247 -0
- moai_adk/templates/.claude/hooks/moai/lib/common.py +161 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +444 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
- moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +407 -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/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 +804 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +542 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +256 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +253 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +307 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +231 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +866 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1125 -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 +209 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +302 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/reference.md +139 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +302 -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 +324 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +326 -0
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +194 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +454 -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 +280 -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 +243 -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 +729 -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 +432 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-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 +449 -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 +414 -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 +363 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +430 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +193 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +394 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +472 -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 +377 -0
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +386 -0
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +418 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +383 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +504 -0
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +389 -0
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +432 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +17 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +211 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +191 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +364 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +164 -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 +335 -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 +373 -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 +283 -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 +425 -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 +228 -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 +249 -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 +230 -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 +205 -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 +223 -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 +206 -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 +209 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +473 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/modules/migration.md +341 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/modules/validation.md +373 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +464 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +306 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/SKILL.md +214 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/examples.md +697 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/index.md +96 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/acp.md +115 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/agents.md +241 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/commands.md +197 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/custom-tools.md +197 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/formatters.md +164 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/keybinds.md +150 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/lsp-servers.md +156 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/mcp-servers.md +214 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/models.md +197 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/permissions.md +162 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/rules.md +129 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/skills.md +192 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/themes.md +200 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/tools.md +169 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/config.md +211 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/enterprise.md +68 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/intro.md +127 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/migration-1.0.md +82 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/network.md +72 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/providers.md +310 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/troubleshooting.md +124 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/ecosystem.md +75 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/plugins.md +218 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/sdk.md +266 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/server.md +207 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/cli.md +159 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/github.md +181 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/gitlab.md +122 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/ide.md +74 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/share.md +106 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/tui.md +129 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/zen.md +118 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/reference.md +790 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +211 -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-project/README.md +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +260 -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 +336 -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 +386 -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 +307 -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 +227 -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 +103 -41
- moai_adk/templates/.git-hooks/pre-push +244 -31
- moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
- moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
- moai_adk/templates/.gitignore +181 -44
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +6 -15
- moai_adk/templates/.moai/config/config.yaml +58 -0
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +174 -0
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +259 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +107 -0
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +79 -0
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +632 -0
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +183 -0
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +96 -0
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
- moai_adk/templates/.moai/config/sections/language.yaml +11 -0
- moai_adk/templates/.moai/config/sections/project.yaml +13 -0
- moai_adk/templates/.moai/config/sections/quality.yaml +18 -0
- moai_adk/templates/.moai/config/sections/system.yaml +24 -0
- moai_adk/templates/.moai/config/sections/user.yaml +5 -0
- moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
- moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
- moai_adk/templates/CLAUDE.md +804 -499
- moai_adk/utils/__init__.py +24 -1
- moai_adk/utils/banner.py +7 -10
- moai_adk/utils/common.py +49 -30
- moai_adk/utils/link_validator.py +4 -12
- moai_adk/utils/safe_file_reader.py +2 -6
- moai_adk/utils/timeout.py +160 -0
- moai_adk/utils/toon_utils.py +256 -0
- moai_adk/version.py +22 -0
- moai_adk-0.41.0.dist-info/METADATA +3274 -0
- moai_adk-0.41.0.dist-info/RECORD +683 -0
- {moai_adk-0.25.4.dist-info → moai_adk-0.41.0.dist-info}/WHEEL +1 -1
- {moai_adk-0.25.4.dist-info → moai_adk-0.41.0.dist-info}/entry_points.txt +1 -0
- moai_adk/cli/commands/backup.py +0 -82
- moai_adk/cli/commands/improve_user_experience.py +0 -348
- moai_adk/cli/commands/migrate.py +0 -158
- moai_adk/cli/commands/validate_links.py +0 -118
- moai_adk/core/config/auto_spec_config.py +0 -346
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -925
- moai_adk/core/spec/confidence_scoring.py +0 -749
- moai_adk/core/spec/ears_template_engine.py +0 -1182
- moai_adk/core/spec/quality_validator.py +0 -721
- moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -413
- moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
- moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
- moai_adk/utils/user_experience.py +0 -531
- moai_adk-0.25.4.dist-info/METADATA +0 -2279
- moai_adk-0.25.4.dist-info/RECORD +0 -112
- {moai_adk-0.25.4.dist-info → moai_adk-0.41.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
"""Custom Element Scanner for MoAI-ADK
|
|
2
|
+
|
|
3
|
+
This module provides functionality to scan for user-created custom elements
|
|
4
|
+
(agents, commands, skills, hooks) that are not part of the official MoAI-ADK template
|
|
5
|
+
installation. Unlike the existing detection functions that use template-based filtering,
|
|
6
|
+
this scanner compares against fresh installation file lists to identify truly custom elements.
|
|
7
|
+
|
|
8
|
+
The scanner is used during updates to provide users with a list of their custom
|
|
9
|
+
elements that can be selectively restored from backup.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
import logging
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
from typing import Any, Dict, List, Set
|
|
15
|
+
|
|
16
|
+
from moai_adk.core.migration.template_utils import (
|
|
17
|
+
_get_template_agent_names,
|
|
18
|
+
_get_template_command_names,
|
|
19
|
+
_get_template_hook_names,
|
|
20
|
+
_get_template_skill_names,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
logger = logging.getLogger(__name__)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class TemplateSkill:
|
|
27
|
+
"""Represents a template skill directory."""
|
|
28
|
+
|
|
29
|
+
def __init__(self, name: str, path: Path, has_skill_md: bool, is_template: bool = False):
|
|
30
|
+
"""Initialize a TemplateSkill.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
name: Name of the skill directory
|
|
34
|
+
path: Path to the skill directory
|
|
35
|
+
has_skill_md: Whether the skill has a SKILL.md file
|
|
36
|
+
is_template: Whether this skill is part of the MoAI-ADK template
|
|
37
|
+
"""
|
|
38
|
+
self.name = name
|
|
39
|
+
self.path = path
|
|
40
|
+
self.has_skill_md = has_skill_md
|
|
41
|
+
self.is_template = is_template
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class CustomElementScanner:
|
|
45
|
+
"""Scanner for detecting user-created custom elements in MoAI-ADK projects.
|
|
46
|
+
|
|
47
|
+
This scanner identifies elements that are not part of the official MoAI-ADK
|
|
48
|
+
template by comparing against fresh installation file lists, providing a more
|
|
49
|
+
accurate detection of user-created content.
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
def __init__(self, project_path: Path):
|
|
53
|
+
"""Initialize the scanner.
|
|
54
|
+
|
|
55
|
+
Args:
|
|
56
|
+
project_path: Path to the MoAI-ADK project directory
|
|
57
|
+
"""
|
|
58
|
+
self.project_path = project_path
|
|
59
|
+
self.template_elements = self._get_template_elements()
|
|
60
|
+
|
|
61
|
+
def _get_template_elements(self) -> Dict[str, Set[str]]:
|
|
62
|
+
"""Get template element names from fresh installation.
|
|
63
|
+
|
|
64
|
+
Returns:
|
|
65
|
+
Dictionary with element types as keys and sets of element names as values
|
|
66
|
+
"""
|
|
67
|
+
return {
|
|
68
|
+
"skills": _get_template_skill_names(),
|
|
69
|
+
"commands": _get_template_command_names(),
|
|
70
|
+
"agents": _get_template_agent_names(),
|
|
71
|
+
"hooks": _get_template_hook_names(),
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
def scan_custom_elements(self) -> Dict[str, Any]:
|
|
75
|
+
"""Scan for user-created custom elements only.
|
|
76
|
+
|
|
77
|
+
Scans the project directory for agents, commands, skills, and hooks that are
|
|
78
|
+
NOT part of the official MoAI-ADK template installation. Template elements
|
|
79
|
+
in moai/ subdirectories and moai-* prefixed skills are excluded because
|
|
80
|
+
they are automatically overwritten during updates.
|
|
81
|
+
|
|
82
|
+
Exclusions:
|
|
83
|
+
- agents/moai/* - Template agents (overwritten during update)
|
|
84
|
+
- commands/moai/* - Template commands (overwritten during update)
|
|
85
|
+
- skills/moai-* - Template skills (overwritten during update)
|
|
86
|
+
- hooks/moai/* - Template hooks (overwritten during update)
|
|
87
|
+
|
|
88
|
+
Returns:
|
|
89
|
+
Dictionary with element types as keys and lists of custom element paths as values
|
|
90
|
+
|
|
91
|
+
Example:
|
|
92
|
+
{
|
|
93
|
+
"agents": [Path(".claude/agents/custom/my-agent.md")],
|
|
94
|
+
"commands": [Path(".claude/commands/custom/my-command.md")],
|
|
95
|
+
"skills": [Path(".claude/skills/my-custom-skill/")],
|
|
96
|
+
"hooks": [Path(".claude/hooks/custom/my-hook.py")]
|
|
97
|
+
}
|
|
98
|
+
"""
|
|
99
|
+
custom_elements: Dict[str, Any] = {}
|
|
100
|
+
|
|
101
|
+
# Scan agents (all files in .claude/agents/, excluding template files)
|
|
102
|
+
custom_elements["agents"] = self._scan_custom_agents()
|
|
103
|
+
|
|
104
|
+
# Scan commands (all files in .claude/commands/moai/, excluding template files)
|
|
105
|
+
custom_elements["commands"] = self._scan_custom_commands()
|
|
106
|
+
|
|
107
|
+
# Scan skills (all directories in .claude/skills/, excluding moai-* patterns)
|
|
108
|
+
custom_elements["skills"] = self._scan_custom_skills()
|
|
109
|
+
|
|
110
|
+
# Scan hooks (all files in .claude/hooks/moai/, excluding template files)
|
|
111
|
+
custom_elements["hooks"] = self._scan_custom_hooks()
|
|
112
|
+
|
|
113
|
+
return custom_elements
|
|
114
|
+
|
|
115
|
+
def _scan_custom_agents(self) -> List[Path]:
|
|
116
|
+
"""Scan for custom agents only (excluding agents/moai/* template agents).
|
|
117
|
+
|
|
118
|
+
Template agents in the moai/ subdirectory are automatically overwritten
|
|
119
|
+
during updates. Only user-created custom agents should be available
|
|
120
|
+
for restoration.
|
|
121
|
+
|
|
122
|
+
Returns:
|
|
123
|
+
List of paths to custom agent files (excluding moai/ subdirectory)
|
|
124
|
+
"""
|
|
125
|
+
agents_dir = self.project_path / ".claude" / "agents"
|
|
126
|
+
|
|
127
|
+
if not agents_dir.exists():
|
|
128
|
+
return []
|
|
129
|
+
|
|
130
|
+
custom_agents = []
|
|
131
|
+
|
|
132
|
+
# Scan all subdirectories under agents EXCEPT moai/
|
|
133
|
+
for item in agents_dir.iterdir():
|
|
134
|
+
if item.is_dir():
|
|
135
|
+
# Skip moai/ subdirectory - template agents should be overwritten
|
|
136
|
+
if item.name == "moai":
|
|
137
|
+
continue
|
|
138
|
+
# Scan custom subdirectories
|
|
139
|
+
for file_path in item.rglob("*.md"):
|
|
140
|
+
relative_path = file_path.relative_to(self.project_path)
|
|
141
|
+
custom_agents.append(relative_path)
|
|
142
|
+
elif item.is_file() and item.suffix == ".md":
|
|
143
|
+
# Include root-level agent files (not in any subdirectory)
|
|
144
|
+
relative_path = item.relative_to(self.project_path)
|
|
145
|
+
custom_agents.append(relative_path)
|
|
146
|
+
|
|
147
|
+
return custom_agents
|
|
148
|
+
|
|
149
|
+
def _scan_custom_commands(self) -> List[Path]:
|
|
150
|
+
"""Scan for custom commands only (excluding commands/moai/* template commands).
|
|
151
|
+
|
|
152
|
+
Template commands in the moai/ subdirectory are automatically overwritten
|
|
153
|
+
during updates. Only user-created custom commands should be available
|
|
154
|
+
for restoration.
|
|
155
|
+
|
|
156
|
+
Returns:
|
|
157
|
+
List of paths to custom command files (excluding moai/ subdirectory)
|
|
158
|
+
"""
|
|
159
|
+
commands_dir = self.project_path / ".claude" / "commands"
|
|
160
|
+
|
|
161
|
+
if not commands_dir.exists():
|
|
162
|
+
return []
|
|
163
|
+
|
|
164
|
+
custom_commands = []
|
|
165
|
+
|
|
166
|
+
# Scan all subdirectories under commands EXCEPT moai/
|
|
167
|
+
# moai/ subdirectory contains template commands that should be overwritten
|
|
168
|
+
for subdir in commands_dir.iterdir():
|
|
169
|
+
if subdir.is_dir():
|
|
170
|
+
# Skip moai/ subdirectory - template commands should be overwritten
|
|
171
|
+
if subdir.name == "moai":
|
|
172
|
+
continue
|
|
173
|
+
# Scan custom subdirectories
|
|
174
|
+
for file_path in subdir.rglob("*.md"):
|
|
175
|
+
relative_path = file_path.relative_to(self.project_path)
|
|
176
|
+
custom_commands.append(relative_path)
|
|
177
|
+
elif subdir.is_file() and subdir.suffix == ".md":
|
|
178
|
+
# Include root-level command files (not in any subdirectory)
|
|
179
|
+
relative_path = subdir.relative_to(self.project_path)
|
|
180
|
+
custom_commands.append(relative_path)
|
|
181
|
+
|
|
182
|
+
return custom_commands
|
|
183
|
+
|
|
184
|
+
def _scan_custom_skills(self) -> List[TemplateSkill]:
|
|
185
|
+
"""Scan for custom skills only (excluding moai-* template skills).
|
|
186
|
+
|
|
187
|
+
Template skills (moai-* prefix) are automatically overwritten during updates.
|
|
188
|
+
Only user-created custom skills should be available for restoration.
|
|
189
|
+
|
|
190
|
+
Returns:
|
|
191
|
+
List of TemplateSkill objects representing custom skill directories only
|
|
192
|
+
"""
|
|
193
|
+
skills_dir = self.project_path / ".claude" / "skills"
|
|
194
|
+
|
|
195
|
+
if not skills_dir.exists():
|
|
196
|
+
return []
|
|
197
|
+
|
|
198
|
+
custom_skills = []
|
|
199
|
+
template_skills = self.template_elements["skills"]
|
|
200
|
+
|
|
201
|
+
for skill_dir in skills_dir.iterdir():
|
|
202
|
+
if skill_dir.is_dir():
|
|
203
|
+
# Skip moai-* template skills - they should be overwritten, not restored
|
|
204
|
+
# Only include user-created custom skills (non-moai-* prefix)
|
|
205
|
+
if skill_dir.name.startswith("moai-"):
|
|
206
|
+
continue
|
|
207
|
+
|
|
208
|
+
relative_path = skill_dir.relative_to(self.project_path)
|
|
209
|
+
is_template_skill = skill_dir.name in template_skills
|
|
210
|
+
|
|
211
|
+
custom_skills.append(
|
|
212
|
+
TemplateSkill(
|
|
213
|
+
name=skill_dir.name,
|
|
214
|
+
path=relative_path,
|
|
215
|
+
has_skill_md=(skill_dir / "SKILL.md").exists(),
|
|
216
|
+
is_template=is_template_skill,
|
|
217
|
+
)
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
return custom_skills
|
|
221
|
+
|
|
222
|
+
def _scan_custom_hooks(self) -> List[Path]:
|
|
223
|
+
"""Scan for custom hooks only (excluding hooks/moai/* template hooks).
|
|
224
|
+
|
|
225
|
+
Template hooks in the moai/ subdirectory are automatically overwritten
|
|
226
|
+
during updates. Only user-created custom hooks should be available
|
|
227
|
+
for restoration.
|
|
228
|
+
|
|
229
|
+
Returns:
|
|
230
|
+
List of paths to custom hook files (excluding moai/ subdirectory)
|
|
231
|
+
"""
|
|
232
|
+
hooks_dir = self.project_path / ".claude" / "hooks"
|
|
233
|
+
|
|
234
|
+
if not hooks_dir.exists():
|
|
235
|
+
return []
|
|
236
|
+
|
|
237
|
+
custom_hooks = []
|
|
238
|
+
|
|
239
|
+
# Scan all subdirectories under hooks EXCEPT moai/
|
|
240
|
+
# moai/ subdirectory contains template hooks that should be overwritten
|
|
241
|
+
for subdir in hooks_dir.iterdir():
|
|
242
|
+
if subdir.is_dir():
|
|
243
|
+
# Skip moai/ subdirectory - template hooks should be overwritten
|
|
244
|
+
if subdir.name == "moai":
|
|
245
|
+
continue
|
|
246
|
+
# Scan custom subdirectories
|
|
247
|
+
for file_path in subdir.rglob("*.py"):
|
|
248
|
+
relative_path = file_path.relative_to(self.project_path)
|
|
249
|
+
custom_hooks.append(relative_path)
|
|
250
|
+
elif subdir.is_file() and subdir.suffix == ".py":
|
|
251
|
+
# Include root-level hook files (not in any subdirectory)
|
|
252
|
+
relative_path = subdir.relative_to(self.project_path)
|
|
253
|
+
custom_hooks.append(relative_path)
|
|
254
|
+
|
|
255
|
+
return custom_hooks
|
|
256
|
+
|
|
257
|
+
def get_custom_elements_display_list(self) -> List[Dict[str, Any]]:
|
|
258
|
+
"""Get formatted list of custom elements for display.
|
|
259
|
+
|
|
260
|
+
Returns:
|
|
261
|
+
List of dictionaries containing element info for CLI display
|
|
262
|
+
"""
|
|
263
|
+
custom_elements = self.scan_custom_elements()
|
|
264
|
+
display_list = []
|
|
265
|
+
index = 1
|
|
266
|
+
|
|
267
|
+
# Add agents
|
|
268
|
+
for agent_path in custom_elements["agents"]:
|
|
269
|
+
display_list.append(
|
|
270
|
+
{
|
|
271
|
+
"index": index,
|
|
272
|
+
"type": "agent",
|
|
273
|
+
"name": agent_path.stem,
|
|
274
|
+
"path": str(agent_path),
|
|
275
|
+
"display_name": f"{agent_path.stem} (agent)",
|
|
276
|
+
}
|
|
277
|
+
)
|
|
278
|
+
index += 1
|
|
279
|
+
|
|
280
|
+
# Add commands
|
|
281
|
+
for command_path in custom_elements["commands"]:
|
|
282
|
+
display_list.append(
|
|
283
|
+
{
|
|
284
|
+
"index": index,
|
|
285
|
+
"type": "command",
|
|
286
|
+
"name": command_path.stem,
|
|
287
|
+
"path": str(command_path),
|
|
288
|
+
"display_name": f"{command_path.stem} (command)",
|
|
289
|
+
}
|
|
290
|
+
)
|
|
291
|
+
index += 1
|
|
292
|
+
|
|
293
|
+
# Add skills
|
|
294
|
+
skills_list: List[TemplateSkill] = custom_elements["skills"]
|
|
295
|
+
for skill in skills_list:
|
|
296
|
+
skill_display_name = skill.name
|
|
297
|
+
# Add indicator for template vs custom skills
|
|
298
|
+
if hasattr(skill, "is_template") and skill.is_template:
|
|
299
|
+
skill_display_name = f"{skill.name} (template)"
|
|
300
|
+
else:
|
|
301
|
+
skill_display_name = f"{skill.name} (custom)"
|
|
302
|
+
|
|
303
|
+
display_list.append(
|
|
304
|
+
{
|
|
305
|
+
"index": index,
|
|
306
|
+
"type": "skill",
|
|
307
|
+
"name": skill.name,
|
|
308
|
+
"path": str(skill.path),
|
|
309
|
+
"display_name": skill_display_name,
|
|
310
|
+
}
|
|
311
|
+
)
|
|
312
|
+
index += 1
|
|
313
|
+
|
|
314
|
+
# Add hooks
|
|
315
|
+
for hook_path in custom_elements["hooks"]:
|
|
316
|
+
display_list.append(
|
|
317
|
+
{
|
|
318
|
+
"index": index,
|
|
319
|
+
"type": "hook",
|
|
320
|
+
"name": hook_path.stem,
|
|
321
|
+
"path": str(hook_path),
|
|
322
|
+
"display_name": f"{hook_path.stem} (hook)",
|
|
323
|
+
}
|
|
324
|
+
)
|
|
325
|
+
index += 1
|
|
326
|
+
|
|
327
|
+
return display_list
|
|
328
|
+
|
|
329
|
+
def get_element_count(self) -> int:
|
|
330
|
+
"""Get total count of custom elements.
|
|
331
|
+
|
|
332
|
+
Returns:
|
|
333
|
+
Total number of custom elements found
|
|
334
|
+
"""
|
|
335
|
+
custom_elements = self.scan_custom_elements()
|
|
336
|
+
return (
|
|
337
|
+
len(custom_elements["agents"])
|
|
338
|
+
+ len(custom_elements["commands"])
|
|
339
|
+
+ len(custom_elements["skills"])
|
|
340
|
+
+ len(custom_elements["hooks"])
|
|
341
|
+
)
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
def create_custom_element_scanner(project_path: str | Path) -> CustomElementScanner:
|
|
345
|
+
"""Factory function to create a CustomElementScanner.
|
|
346
|
+
|
|
347
|
+
Args:
|
|
348
|
+
project_path: Path to the MoAI-ADK project directory
|
|
349
|
+
|
|
350
|
+
Returns:
|
|
351
|
+
Configured CustomElementScanner instance
|
|
352
|
+
|
|
353
|
+
Example:
|
|
354
|
+
>>> scanner = create_custom_element_scanner("/path/to/project")
|
|
355
|
+
>>> elements = scanner.scan_custom_elements()
|
|
356
|
+
>>> print(f"Found {len(elements['agents']) custom agents")
|
|
357
|
+
"""
|
|
358
|
+
return CustomElementScanner(Path(project_path).resolve())
|
|
@@ -3,12 +3,20 @@ File migration module for MoAI-ADK version upgrades
|
|
|
3
3
|
|
|
4
4
|
Handles the actual file movement and directory creation
|
|
5
5
|
during migration processes.
|
|
6
|
+
|
|
7
|
+
Supports migration between:
|
|
8
|
+
- Legacy config.json (.moai/config.json) - pre-v0.24.0
|
|
9
|
+
- Intermediate config.json (.moai/config/config.json) - v0.24.0
|
|
10
|
+
- Section YAML files (.moai/config/sections/*.yaml) - v0.36.0+
|
|
6
11
|
"""
|
|
7
12
|
|
|
13
|
+
import json
|
|
8
14
|
import logging
|
|
9
15
|
import shutil
|
|
10
16
|
from pathlib import Path
|
|
11
|
-
from typing import Dict, List
|
|
17
|
+
from typing import Any, Dict, List
|
|
18
|
+
|
|
19
|
+
import yaml
|
|
12
20
|
|
|
13
21
|
logger = logging.getLogger(__name__)
|
|
14
22
|
|
|
@@ -47,9 +55,7 @@ class FileMigrator:
|
|
|
47
55
|
logger.error(f"Failed to create directory {directory}: {e}")
|
|
48
56
|
return False
|
|
49
57
|
|
|
50
|
-
def move_file(
|
|
51
|
-
self, source: Path, destination: Path, copy_instead: bool = True
|
|
52
|
-
) -> bool:
|
|
58
|
+
def move_file(self, source: Path, destination: Path, copy_instead: bool = True) -> bool:
|
|
53
59
|
"""
|
|
54
60
|
Move a file from source to destination
|
|
55
61
|
|
|
@@ -113,13 +119,26 @@ class FileMigrator:
|
|
|
113
119
|
# Safety check for safe mode
|
|
114
120
|
if safe:
|
|
115
121
|
safe_patterns = [
|
|
122
|
+
# Legacy and intermediate config.json
|
|
116
123
|
".moai/config.json",
|
|
124
|
+
".moai/config/config.json",
|
|
125
|
+
# Statusline configs
|
|
117
126
|
".claude/statusline-config.yaml",
|
|
127
|
+
".moai/config/statusline-config.yaml",
|
|
128
|
+
# Section YAML files (v0.36.0+)
|
|
129
|
+
".moai/config/sections/user.yaml",
|
|
130
|
+
".moai/config/sections/language.yaml",
|
|
131
|
+
".moai/config/sections/project.yaml",
|
|
132
|
+
".moai/config/sections/git-strategy.yaml",
|
|
133
|
+
".moai/config/sections/quality.yaml",
|
|
134
|
+
".moai/config/sections/system.yaml",
|
|
118
135
|
]
|
|
119
|
-
|
|
120
|
-
str(file_path.relative_to(self.project_root))
|
|
121
|
-
for pattern in safe_patterns
|
|
122
|
-
|
|
136
|
+
try:
|
|
137
|
+
rel_path = str(file_path.relative_to(self.project_root))
|
|
138
|
+
is_safe = any(rel_path.endswith(pattern) for pattern in safe_patterns)
|
|
139
|
+
except ValueError:
|
|
140
|
+
is_safe = False
|
|
141
|
+
|
|
123
142
|
if not is_safe:
|
|
124
143
|
logger.warning(f"Refusing to delete non-safe file: {file_path}")
|
|
125
144
|
return False
|
|
@@ -132,20 +151,21 @@ class FileMigrator:
|
|
|
132
151
|
logger.error(f"Failed to delete file {file_path}: {e}")
|
|
133
152
|
return False
|
|
134
153
|
|
|
135
|
-
def execute_migration_plan(self, plan: Dict[str,
|
|
154
|
+
def execute_migration_plan(self, plan: Dict[str, Any]) -> Dict[str, Any]:
|
|
136
155
|
"""
|
|
137
156
|
Execute a migration plan
|
|
138
157
|
|
|
139
158
|
Args:
|
|
140
|
-
plan: Migration plan dictionary with 'create', 'move', 'cleanup' keys
|
|
159
|
+
plan: Migration plan dictionary with 'create', 'move', 'convert', 'cleanup' keys
|
|
141
160
|
|
|
142
161
|
Returns:
|
|
143
162
|
Dictionary with execution results
|
|
144
163
|
"""
|
|
145
|
-
results = {
|
|
164
|
+
results: Dict[str, Any] = {
|
|
146
165
|
"success": True,
|
|
147
166
|
"created_dirs": 0,
|
|
148
167
|
"moved_files": 0,
|
|
168
|
+
"converted_files": 0,
|
|
149
169
|
"cleaned_files": 0,
|
|
150
170
|
"errors": [],
|
|
151
171
|
}
|
|
@@ -166,17 +186,160 @@ class FileMigrator:
|
|
|
166
186
|
|
|
167
187
|
if self.move_file(source, dest, copy_instead=True):
|
|
168
188
|
results["moved_files"] += 1
|
|
169
|
-
logger.info(
|
|
170
|
-
|
|
171
|
-
)
|
|
189
|
+
logger.info(f"✅ {move_op['description']}: {move_op['from']} → {move_op['to']}")
|
|
190
|
+
else:
|
|
191
|
+
results["errors"].append(f"Failed to move: {move_op['from']} → {move_op['to']}")
|
|
192
|
+
results["success"] = False
|
|
193
|
+
|
|
194
|
+
# Convert config.json to section YAML files (v0.36.0+ migration)
|
|
195
|
+
for convert_op in plan.get("convert", []):
|
|
196
|
+
source = self.project_root / convert_op["from"]
|
|
197
|
+
target_dir = self.project_root / convert_op["to_dir"]
|
|
198
|
+
|
|
199
|
+
if self.convert_json_to_section_yaml(source, target_dir):
|
|
200
|
+
results["converted_files"] += 1
|
|
201
|
+
logger.info(f"✅ {convert_op['description']}: {convert_op['from']} → {convert_op['to_dir']}/")
|
|
172
202
|
else:
|
|
173
|
-
results["errors"].append(
|
|
174
|
-
f"Failed to move: {move_op['from']} → {move_op['to']}"
|
|
175
|
-
)
|
|
203
|
+
results["errors"].append(f"Failed to convert: {convert_op['from']} → {convert_op['to_dir']}/")
|
|
176
204
|
results["success"] = False
|
|
177
205
|
|
|
178
206
|
return results
|
|
179
207
|
|
|
208
|
+
def convert_json_to_section_yaml(self, source_json: Path, target_dir: Path) -> bool:
|
|
209
|
+
"""
|
|
210
|
+
Convert a config.json file to section YAML files
|
|
211
|
+
|
|
212
|
+
Args:
|
|
213
|
+
source_json: Path to the source config.json file
|
|
214
|
+
target_dir: Path to the target sections directory
|
|
215
|
+
|
|
216
|
+
Returns:
|
|
217
|
+
True if conversion was successful
|
|
218
|
+
"""
|
|
219
|
+
if not source_json.exists():
|
|
220
|
+
logger.warning(f"Source JSON file not found: {source_json}")
|
|
221
|
+
return False
|
|
222
|
+
|
|
223
|
+
try:
|
|
224
|
+
# Read the source JSON
|
|
225
|
+
with open(source_json, "r", encoding="utf-8") as f:
|
|
226
|
+
config_data = json.load(f)
|
|
227
|
+
|
|
228
|
+
# Ensure target directory exists
|
|
229
|
+
target_dir.mkdir(parents=True, exist_ok=True)
|
|
230
|
+
|
|
231
|
+
# Map JSON keys to section files
|
|
232
|
+
section_mapping = self._get_section_mapping(config_data)
|
|
233
|
+
|
|
234
|
+
# Write each section to its YAML file
|
|
235
|
+
for section_name, section_data in section_mapping.items():
|
|
236
|
+
if section_data:
|
|
237
|
+
yaml_file = target_dir / f"{section_name}.yaml"
|
|
238
|
+
# Skip if file already exists (don't overwrite)
|
|
239
|
+
if yaml_file.exists():
|
|
240
|
+
logger.debug(f"Section file already exists, skipping: {yaml_file}")
|
|
241
|
+
continue
|
|
242
|
+
|
|
243
|
+
with open(yaml_file, "w", encoding="utf-8") as f:
|
|
244
|
+
# Add header comment
|
|
245
|
+
f.write(f"# {section_name.replace('-', ' ').title()} Settings\n")
|
|
246
|
+
f.write("# Migrated from config.json\n\n")
|
|
247
|
+
yaml.dump(section_data, f, default_flow_style=False, allow_unicode=True)
|
|
248
|
+
logger.debug(f"Created section file: {yaml_file}")
|
|
249
|
+
|
|
250
|
+
logger.info(f"Successfully converted {source_json} to section YAML files")
|
|
251
|
+
return True
|
|
252
|
+
|
|
253
|
+
except Exception as e:
|
|
254
|
+
logger.error(f"Failed to convert {source_json} to section YAML: {e}")
|
|
255
|
+
return False
|
|
256
|
+
|
|
257
|
+
def _get_section_mapping(self, config_data: Dict[str, Any]) -> Dict[str, Dict[str, Any]]:
|
|
258
|
+
"""
|
|
259
|
+
Map config.json data to section YAML structure
|
|
260
|
+
|
|
261
|
+
Args:
|
|
262
|
+
config_data: The config.json data as a dictionary
|
|
263
|
+
|
|
264
|
+
Returns:
|
|
265
|
+
Dictionary mapping section names to their data
|
|
266
|
+
"""
|
|
267
|
+
sections: Dict[str, Dict[str, Any]] = {
|
|
268
|
+
"user": {},
|
|
269
|
+
"language": {},
|
|
270
|
+
"project": {},
|
|
271
|
+
"git-strategy": {},
|
|
272
|
+
"quality": {},
|
|
273
|
+
"system": {},
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
# Map user settings
|
|
277
|
+
if "user_name" in config_data:
|
|
278
|
+
sections["user"]["user"] = {"name": config_data["user_name"]}
|
|
279
|
+
if "user" in config_data:
|
|
280
|
+
sections["user"]["user"] = config_data["user"]
|
|
281
|
+
|
|
282
|
+
# Map language settings
|
|
283
|
+
language_keys = ["conversation_language", "agent_prompt_language", "documentation_language", "code_comments"]
|
|
284
|
+
language_data = {}
|
|
285
|
+
for key in language_keys:
|
|
286
|
+
if key in config_data:
|
|
287
|
+
language_data[key] = config_data[key]
|
|
288
|
+
if "language" in config_data:
|
|
289
|
+
language_data.update(config_data["language"])
|
|
290
|
+
if language_data:
|
|
291
|
+
sections["language"]["language"] = language_data
|
|
292
|
+
|
|
293
|
+
# Map project settings
|
|
294
|
+
project_keys = ["project_name", "project_type", "project_description", "locale", "created_at", "initialized"]
|
|
295
|
+
project_data = {}
|
|
296
|
+
for key in project_keys:
|
|
297
|
+
if key in config_data:
|
|
298
|
+
# Normalize key names
|
|
299
|
+
normalized_key = key.replace("project_", "")
|
|
300
|
+
project_data[normalized_key] = config_data[key]
|
|
301
|
+
if "project" in config_data:
|
|
302
|
+
project_data.update(config_data["project"])
|
|
303
|
+
if project_data:
|
|
304
|
+
sections["project"]["project"] = project_data
|
|
305
|
+
|
|
306
|
+
# Map git strategy settings
|
|
307
|
+
git_keys = ["git_strategy", "auto_branch", "branch_prefix", "commit_style"]
|
|
308
|
+
git_data = {}
|
|
309
|
+
for key in git_keys:
|
|
310
|
+
if key in config_data:
|
|
311
|
+
git_data[key] = config_data[key]
|
|
312
|
+
if "git" in config_data:
|
|
313
|
+
git_data.update(config_data["git"])
|
|
314
|
+
if git_data:
|
|
315
|
+
sections["git-strategy"]["git"] = git_data
|
|
316
|
+
|
|
317
|
+
# Map quality settings
|
|
318
|
+
quality_keys = ["tdd_enabled", "test_framework", "coverage_threshold"]
|
|
319
|
+
quality_data = {}
|
|
320
|
+
for key in quality_keys:
|
|
321
|
+
if key in config_data:
|
|
322
|
+
quality_data[key] = config_data[key]
|
|
323
|
+
if "quality" in config_data:
|
|
324
|
+
quality_data.update(config_data["quality"])
|
|
325
|
+
if "tdd" in config_data:
|
|
326
|
+
quality_data["tdd"] = config_data["tdd"]
|
|
327
|
+
if quality_data:
|
|
328
|
+
sections["quality"]["quality"] = quality_data
|
|
329
|
+
|
|
330
|
+
# Map system settings
|
|
331
|
+
system_data: Dict[str, Any] = {}
|
|
332
|
+
if "moai_version" in config_data:
|
|
333
|
+
system_data["moai"] = {"version": config_data["moai_version"]}
|
|
334
|
+
if "moai" in config_data:
|
|
335
|
+
system_data["moai"] = config_data["moai"]
|
|
336
|
+
if "github" in config_data:
|
|
337
|
+
system_data["github"] = config_data["github"]
|
|
338
|
+
if system_data:
|
|
339
|
+
sections["system"] = system_data
|
|
340
|
+
|
|
341
|
+
return sections
|
|
342
|
+
|
|
180
343
|
def cleanup_old_files(self, cleanup_list: List[str], dry_run: bool = False) -> int:
|
|
181
344
|
"""
|
|
182
345
|
Clean up old files after successful migration
|
|
@@ -204,7 +367,7 @@ class FileMigrator:
|
|
|
204
367
|
|
|
205
368
|
return cleaned
|
|
206
369
|
|
|
207
|
-
def get_migration_summary(self) -> Dict[str,
|
|
370
|
+
def get_migration_summary(self) -> Dict[str, Any]:
|
|
208
371
|
"""
|
|
209
372
|
Get summary of migration operations performed
|
|
210
373
|
|