moai-adk 0.8.0__py3-none-any.whl → 0.34.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 +136 -21
- moai_adk/cli/__init__.py +6 -2
- moai_adk/cli/commands/__init__.py +1 -4
- moai_adk/cli/commands/analyze.py +116 -0
- moai_adk/cli/commands/doctor.py +17 -5
- moai_adk/cli/commands/init.py +118 -48
- moai_adk/cli/commands/language.py +248 -0
- moai_adk/cli/commands/status.py +8 -13
- moai_adk/cli/commands/update.py +1978 -149
- moai_adk/cli/main.py +3 -2
- moai_adk/cli/prompts/init_prompts.py +144 -91
- moai_adk/cli/spec_status.py +263 -0
- moai_adk/cli/ui/__init__.py +44 -0
- moai_adk/cli/ui/progress.py +422 -0
- moai_adk/cli/ui/prompts.py +389 -0
- moai_adk/cli/ui/theme.py +129 -0
- moai_adk/cli/worktree/__init__.py +27 -0
- moai_adk/cli/worktree/__main__.py +31 -0
- moai_adk/cli/worktree/cli.py +683 -0
- moai_adk/cli/worktree/exceptions.py +89 -0
- moai_adk/cli/worktree/manager.py +493 -0
- moai_adk/cli/worktree/models.py +65 -0
- moai_adk/cli/worktree/registry.py +422 -0
- moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
- moai_adk/core/__init__.py +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/auto_spec_config.py +340 -0
- moai_adk/core/config/migration.py +148 -17
- moai_adk/core/config/unified.py +436 -0
- moai_adk/core/context_manager.py +273 -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 +1902 -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 +413 -0
- moai_adk/core/git/event_detector.py +3 -5
- moai_adk/core/git/manager.py +91 -2
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
- moai_adk/core/input_validation_middleware.py +1006 -0
- moai_adk/core/integration/__init__.py +22 -0
- moai_adk/core/integration/engine.py +157 -0
- moai_adk/core/integration/integration_tester.py +226 -0
- moai_adk/core/integration/models.py +88 -0
- moai_adk/core/integration/utils.py +211 -0
- moai_adk/core/issue_creator.py +305 -0
- moai_adk/core/jit_context_loader.py +956 -0
- moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
- moai_adk/core/language_config.py +202 -0
- moai_adk/core/language_config_resolver.py +572 -0
- moai_adk/core/language_validator.py +543 -0
- moai_adk/core/mcp/setup.py +116 -0
- moai_adk/core/merge/__init__.py +9 -0
- moai_adk/core/merge/analyzer.py +481 -0
- moai_adk/core/migration/__init__.py +18 -0
- moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
- moai_adk/core/migration/backup_manager.py +277 -0
- moai_adk/core/migration/custom_element_scanner.py +358 -0
- moai_adk/core/migration/file_migrator.py +209 -0
- moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
- moai_adk/core/migration/selective_restorer.py +470 -0
- moai_adk/core/migration/template_utils.py +74 -0
- moai_adk/core/migration/user_selection_ui.py +338 -0
- moai_adk/core/migration/version_detector.py +139 -0
- moai_adk/core/migration/version_migrator.py +228 -0
- moai_adk/core/performance/__init__.py +6 -0
- moai_adk/core/performance/cache_system.py +316 -0
- moai_adk/core/performance/parallel_processor.py +116 -0
- moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
- moai_adk/core/project/__init__.py +0 -1
- moai_adk/core/project/backup_utils.py +2 -7
- moai_adk/core/project/checker.py +2 -4
- moai_adk/core/project/detector.py +189 -22
- moai_adk/core/project/initializer.py +218 -27
- moai_adk/core/project/phase_executor.py +416 -44
- moai_adk/core/project/validator.py +7 -32
- moai_adk/core/quality/__init__.py +1 -1
- moai_adk/core/quality/trust_checker.py +37 -101
- 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 +918 -0
- moai_adk/core/session_manager.py +651 -0
- moai_adk/core/skill_loading_system.py +579 -0
- moai_adk/core/spec/confidence_scoring.py +680 -0
- moai_adk/core/spec/ears_template_engine.py +1247 -0
- moai_adk/core/spec/quality_validator.py +687 -0
- moai_adk/core/spec_status_manager.py +478 -0
- moai_adk/core/template/__init__.py +0 -1
- moai_adk/core/template/backup.py +82 -17
- moai_adk/core/template/config.py +112 -40
- moai_adk/core/template/languages.py +0 -1
- moai_adk/core/template/merger.py +75 -26
- moai_adk/core/template/processor.py +750 -72
- moai_adk/core/template_engine.py +310 -0
- moai_adk/core/template_variable_synchronizer.py +417 -0
- moai_adk/core/unified_permission_manager.py +745 -0
- moai_adk/core/user_behavior_analytics.py +851 -0
- moai_adk/core/version_sync.py +429 -0
- moai_adk/foundation/__init__.py +56 -0
- moai_adk/foundation/backend.py +1027 -0
- moai_adk/foundation/database.py +1115 -0
- moai_adk/foundation/devops.py +1585 -0
- moai_adk/foundation/ears.py +431 -0
- moai_adk/foundation/frontend.py +870 -0
- moai_adk/foundation/git/commit_templates.py +557 -0
- moai_adk/foundation/git.py +376 -0
- moai_adk/foundation/langs.py +484 -0
- moai_adk/foundation/ml_ops.py +1162 -0
- moai_adk/foundation/testing.py +1524 -0
- moai_adk/foundation/trust/trust_principles.py +676 -0
- moai_adk/foundation/trust/validation_checklist.py +1573 -0
- moai_adk/project/__init__.py +0 -0
- moai_adk/project/configuration.py +1084 -0
- moai_adk/project/documentation.py +566 -0
- moai_adk/project/schema.py +447 -0
- moai_adk/statusline/__init__.py +38 -0
- moai_adk/statusline/alfred_detector.py +105 -0
- moai_adk/statusline/config.py +376 -0
- moai_adk/statusline/enhanced_output_style_detector.py +372 -0
- moai_adk/statusline/git_collector.py +190 -0
- moai_adk/statusline/main.py +322 -0
- moai_adk/statusline/metrics_tracker.py +78 -0
- moai_adk/statusline/renderer.py +343 -0
- moai_adk/statusline/update_checker.py +129 -0
- moai_adk/statusline/version_reader.py +741 -0
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +670 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +474 -0
- moai_adk/templates/.claude/agents/moai/builder-command.md +1172 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +666 -0
- moai_adk/templates/.claude/agents/moai/expert-backend.md +899 -0
- moai_adk/templates/.claude/agents/moai/expert-database.md +777 -0
- moai_adk/templates/.claude/agents/moai/expert-debug.md +401 -0
- moai_adk/templates/.claude/agents/moai/expert-devops.md +720 -0
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +734 -0
- moai_adk/templates/.claude/agents/moai/expert-performance.md +657 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +509 -0
- moai_adk/templates/.claude/agents/moai/expert-testing.md +733 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +1041 -0
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +432 -0
- moai_adk/templates/.claude/agents/moai/manager-docs.md +573 -0
- moai_adk/templates/.claude/agents/moai/manager-git.md +1020 -0
- moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
- moai_adk/templates/.claude/agents/moai/manager-quality.md +624 -0
- moai_adk/templates/.claude/agents/moai/manager-spec.md +809 -0
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +780 -0
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +784 -0
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +458 -0
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +1607 -0
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +789 -0
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +469 -0
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1032 -0
- moai_adk/templates/.claude/commands/moai/0-project.md +1384 -0
- moai_adk/templates/.claude/commands/moai/1-plan.md +1427 -0
- moai_adk/templates/.claude/commands/moai/2-run.md +943 -0
- moai_adk/templates/.claude/commands/moai/3-sync.md +1324 -0
- moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
- moai_adk/templates/.claude/hooks/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
- moai_adk/templates/.claude/hooks/{alfred/core → moai/lib}/checkpoint.py +10 -37
- moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
- moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
- moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
- moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1075 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +560 -0
- moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
- moai_adk/templates/.claude/settings.json +78 -50
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +438 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +249 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +406 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +328 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +313 -283
- 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 +295 -95
- 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 +470 -97
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +955 -16
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +651 -18
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +455 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +492 -0
- moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
- moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +202 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +441 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +315 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +364 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +618 -93
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +446 -91
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +612 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +477 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +346 -94
- 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 +352 -91
- 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-kotlin/SKILL.md +344 -86
- 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 +617 -96
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +364 -314
- 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 +545 -89
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +650 -87
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +341 -93
- 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 +463 -89
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +620 -16
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +410 -17
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +486 -112
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +905 -16
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +659 -17
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +333 -92
- 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 +300 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +319 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +372 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +402 -0
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +607 -0
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +300 -0
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +537 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +290 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +390 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +398 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +379 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +358 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +467 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +466 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +482 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +449 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +390 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +175 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1462 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +534 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +456 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +411 -0
- moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
- moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
- moai_adk/templates/.git-hooks/pre-commit +128 -0
- moai_adk/templates/.git-hooks/pre-push +365 -0
- moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
- moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
- moai_adk/templates/.github/workflows/spec-issue-sync.yml +206 -36
- moai_adk/templates/.gitignore +194 -13
- moai_adk/templates/.mcp.json +31 -0
- moai_adk/templates/.moai/config/config.yaml +58 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +151 -0
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +251 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +81 -0
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +634 -0
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +170 -0
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +87 -0
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
- moai_adk/templates/.moai/config/sections/language.yaml +11 -0
- moai_adk/templates/.moai/config/sections/project.yaml +13 -0
- moai_adk/templates/.moai/config/sections/quality.yaml +17 -0
- moai_adk/templates/.moai/config/sections/system.yaml +14 -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 +571 -244
- moai_adk/utils/__init__.py +24 -2
- moai_adk/utils/banner.py +9 -13
- moai_adk/utils/common.py +294 -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-0.34.0.dist-info/METADATA +2999 -0
- moai_adk-0.34.0.dist-info/RECORD +463 -0
- {moai_adk-0.8.0.dist-info → moai_adk-0.34.0.dist-info}/WHEEL +1 -1
- {moai_adk-0.8.0.dist-info → moai_adk-0.34.0.dist-info}/entry_points.txt +1 -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-cpp/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -30
- 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-javascript/SKILL.md +0 -125
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -32
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -31
- 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 → moai_adk-0.34.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
# moai-workflow-testing Reference
|
|
2
|
+
|
|
3
|
+
Progressive Disclosure Level 2: Extended documentation for testing, debugging, and quality workflows.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## API Reference
|
|
8
|
+
|
|
9
|
+
### Core Classes
|
|
10
|
+
|
|
11
|
+
DevelopmentWorkflow:
|
|
12
|
+
- Purpose: Unified development lifecycle management
|
|
13
|
+
- Initialization: `DevelopmentWorkflow(project_path, config)`
|
|
14
|
+
- Primary Methods:
|
|
15
|
+
- `execute_complete_workflow()` - Run full development cycle
|
|
16
|
+
- `execute_complete_cycle()` - Async complete cycle execution
|
|
17
|
+
- `run_code_review()` - Execute code review stage
|
|
18
|
+
- `run_full_test_suite()` - Execute all tests
|
|
19
|
+
- `run_performance_tests()` - Execute performance tests
|
|
20
|
+
- `run_security_analysis()` - Execute security analysis
|
|
21
|
+
|
|
22
|
+
AIDebugger:
|
|
23
|
+
- Purpose: AI-powered intelligent debugging
|
|
24
|
+
- Initialization: `AIDebugger(context7_client)`
|
|
25
|
+
- Key Methods:
|
|
26
|
+
- `debug_with_context7_patterns(exception, context, project_path)` - Debug with AI assistance
|
|
27
|
+
- `classify_error(exception)` - Classify error type
|
|
28
|
+
- `suggest_solutions(analysis)` - Generate fix suggestions
|
|
29
|
+
- `apply_fix(solution)` - Apply recommended fix
|
|
30
|
+
|
|
31
|
+
AIRefactorer:
|
|
32
|
+
- Purpose: Intelligent code refactoring
|
|
33
|
+
- Initialization: `AIRefactorer(context7_client)`
|
|
34
|
+
- Key Methods:
|
|
35
|
+
- `refactor_with_intelligence(project_path)` - Analyze and suggest refactoring
|
|
36
|
+
- `analyze_technical_debt(project_path)` - Calculate debt score
|
|
37
|
+
- `generate_refactor_plan(opportunities)` - Create refactoring roadmap
|
|
38
|
+
- `apply_safe_refactor(plan)` - Apply safe refactoring operations
|
|
39
|
+
|
|
40
|
+
PerformanceProfiler:
|
|
41
|
+
- Purpose: Real-time performance analysis
|
|
42
|
+
- Initialization: `PerformanceProfiler(context7_client)`
|
|
43
|
+
- Key Methods:
|
|
44
|
+
- `start_profiling(profile_types)` - Begin profiling session
|
|
45
|
+
- `stop_profiling()` - End profiling and get results
|
|
46
|
+
- `detect_bottlenecks(results)` - Identify performance issues
|
|
47
|
+
- `suggest_optimizations(bottlenecks)` - Generate optimization suggestions
|
|
48
|
+
|
|
49
|
+
TDDManager:
|
|
50
|
+
- Purpose: Test-driven development cycle management
|
|
51
|
+
- Initialization: `TDDManager(project_path, context7_client)`
|
|
52
|
+
- Key Methods:
|
|
53
|
+
- `run_full_tdd_cycle(specification, target_function)` - Complete RED-GREEN-REFACTOR
|
|
54
|
+
- `generate_test(spec)` - Generate test from specification
|
|
55
|
+
- `run_tests()` - Execute test suite
|
|
56
|
+
- `calculate_coverage()` - Get test coverage metrics
|
|
57
|
+
|
|
58
|
+
AutomatedCodeReviewer:
|
|
59
|
+
- Purpose: AI-powered code review with TRUST 5
|
|
60
|
+
- Initialization: `AutomatedCodeReviewer(context7_client)`
|
|
61
|
+
- Key Methods:
|
|
62
|
+
- `review_codebase(project_path)` - Full codebase review
|
|
63
|
+
- `calculate_trust_score(review_data)` - Calculate TRUST 5 score
|
|
64
|
+
- `identify_critical_issues(review_data)` - Find critical problems
|
|
65
|
+
- `generate_review_report(review_data)` - Create detailed report
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Configuration Options
|
|
70
|
+
|
|
71
|
+
### WorkflowConfig Schema
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
@dataclass
|
|
75
|
+
class WorkflowConfig:
|
|
76
|
+
# Module enablement
|
|
77
|
+
enable_debugging: bool = True
|
|
78
|
+
enable_refactoring: bool = True
|
|
79
|
+
enable_profiling: bool = True
|
|
80
|
+
enable_tdd: bool = True
|
|
81
|
+
enable_code_review: bool = True
|
|
82
|
+
|
|
83
|
+
# Context7 integration
|
|
84
|
+
context7_client: Optional[Context7Client] = None
|
|
85
|
+
|
|
86
|
+
# Quality thresholds
|
|
87
|
+
min_trust_score: float = 0.85
|
|
88
|
+
max_critical_issues: int = 0
|
|
89
|
+
required_coverage: float = 0.80
|
|
90
|
+
|
|
91
|
+
# Performance thresholds
|
|
92
|
+
max_response_time_ms: int = 100
|
|
93
|
+
max_memory_usage_mb: int = 512
|
|
94
|
+
min_throughput_rps: int = 1000
|
|
95
|
+
|
|
96
|
+
# Profiling options
|
|
97
|
+
profile_types: List[str] = field(default_factory=lambda: ['cpu', 'memory'])
|
|
98
|
+
|
|
99
|
+
# Output options
|
|
100
|
+
output_format: str = 'json' # json, html, markdown
|
|
101
|
+
verbose: bool = False
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### TestSpecification Schema
|
|
105
|
+
|
|
106
|
+
```python
|
|
107
|
+
@dataclass
|
|
108
|
+
class TestSpecification:
|
|
109
|
+
name: str # Test name (test_*)
|
|
110
|
+
description: str # What is being tested
|
|
111
|
+
test_type: TestType # UNIT, INTEGRATION, E2E
|
|
112
|
+
requirements: List[str] # Test requirements
|
|
113
|
+
acceptance_criteria: List[str] # Pass/fail criteria
|
|
114
|
+
fixtures: Optional[List[str]] = None # Required fixtures
|
|
115
|
+
mocks: Optional[List[str]] = None # Required mocks
|
|
116
|
+
timeout_seconds: int = 30 # Test timeout
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Quality Gates Configuration
|
|
120
|
+
|
|
121
|
+
```yaml
|
|
122
|
+
quality_gates:
|
|
123
|
+
code_review:
|
|
124
|
+
min_trust_score: 0.85 # Minimum TRUST 5 score
|
|
125
|
+
max_critical_issues: 0 # Maximum critical issues
|
|
126
|
+
max_high_issues: 5 # Maximum high-severity issues
|
|
127
|
+
required_sections:
|
|
128
|
+
- security
|
|
129
|
+
- performance
|
|
130
|
+
- maintainability
|
|
131
|
+
|
|
132
|
+
testing:
|
|
133
|
+
required_coverage: 0.80 # Minimum test coverage
|
|
134
|
+
max_test_failures: 0 # Maximum allowed failures
|
|
135
|
+
timeout_multiplier: 2.0 # CI timeout multiplier
|
|
136
|
+
|
|
137
|
+
performance:
|
|
138
|
+
response_time_p99_ms: 200 # 99th percentile response time
|
|
139
|
+
memory_growth_threshold: 0.1 # Max memory growth percentage
|
|
140
|
+
cpu_threshold: 0.8 # Max CPU utilization
|
|
141
|
+
|
|
142
|
+
security:
|
|
143
|
+
max_vulnerabilities: 0 # Maximum security vulnerabilities
|
|
144
|
+
allowed_severity: ["low"] # Allowed vulnerability severities
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Integration Patterns
|
|
150
|
+
|
|
151
|
+
### Pattern 1: CI/CD Pipeline Integration
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
# Complete CI/CD integration with quality gates
|
|
155
|
+
from moai_workflow_testing import DevelopmentWorkflow, WorkflowConfig
|
|
156
|
+
|
|
157
|
+
async def ci_pipeline(commit_hash: str, project_path: str):
|
|
158
|
+
"""Run full CI pipeline with all quality gates."""
|
|
159
|
+
|
|
160
|
+
config = WorkflowConfig(
|
|
161
|
+
enable_debugging=False, # Skip debugging in CI
|
|
162
|
+
enable_refactoring=False, # Skip refactoring suggestions
|
|
163
|
+
min_trust_score=0.85,
|
|
164
|
+
required_coverage=0.80
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
workflow = DevelopmentWorkflow(project_path, config)
|
|
168
|
+
|
|
169
|
+
# Stage 1: Code Review
|
|
170
|
+
review_result = await workflow.run_code_review()
|
|
171
|
+
if review_result.trust_score < config.min_trust_score:
|
|
172
|
+
return {"status": "failed", "stage": "code_review", "details": review_result}
|
|
173
|
+
|
|
174
|
+
# Stage 2: Testing
|
|
175
|
+
test_result = await workflow.run_full_test_suite()
|
|
176
|
+
if not test_result.all_passed:
|
|
177
|
+
return {"status": "failed", "stage": "testing", "details": test_result}
|
|
178
|
+
|
|
179
|
+
# Stage 3: Performance
|
|
180
|
+
perf_result = await workflow.run_performance_tests()
|
|
181
|
+
if not perf_result.meets_thresholds:
|
|
182
|
+
return {"status": "failed", "stage": "performance", "details": perf_result}
|
|
183
|
+
|
|
184
|
+
# Stage 4: Security
|
|
185
|
+
security_result = await workflow.run_security_analysis()
|
|
186
|
+
if security_result.has_critical:
|
|
187
|
+
return {"status": "failed", "stage": "security", "details": security_result}
|
|
188
|
+
|
|
189
|
+
return {"status": "passed", "commit": commit_hash}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Pattern 2: TDD Workflow with Context7
|
|
193
|
+
|
|
194
|
+
```python
|
|
195
|
+
# Enhanced TDD with Context7 best practices
|
|
196
|
+
from moai_workflow_testing import TDDManager, TestSpecification, TestType
|
|
197
|
+
|
|
198
|
+
async def implement_feature_tdd(feature_spec: dict, context7_client):
|
|
199
|
+
"""Implement feature using TDD with Context7 patterns."""
|
|
200
|
+
|
|
201
|
+
tdd = TDDManager("/project/src", context7_client=context7_client)
|
|
202
|
+
|
|
203
|
+
# Create test specification from feature
|
|
204
|
+
test_spec = TestSpecification(
|
|
205
|
+
name=f"test_{feature_spec['name']}",
|
|
206
|
+
description=feature_spec['description'],
|
|
207
|
+
test_type=TestType.UNIT,
|
|
208
|
+
requirements=feature_spec['requirements'],
|
|
209
|
+
acceptance_criteria=feature_spec['acceptance_criteria']
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
# RED: Generate failing test
|
|
213
|
+
failing_test = await tdd.generate_test(test_spec)
|
|
214
|
+
assert await tdd.run_tests() == False # Should fail
|
|
215
|
+
|
|
216
|
+
# GREEN: Implement minimum code
|
|
217
|
+
implementation = await tdd.generate_implementation(test_spec)
|
|
218
|
+
assert await tdd.run_tests() == True # Should pass
|
|
219
|
+
|
|
220
|
+
# REFACTOR: Optimize with Context7 patterns
|
|
221
|
+
refactored = await tdd.refactor_with_patterns(implementation)
|
|
222
|
+
assert await tdd.run_tests() == True # Still passes
|
|
223
|
+
|
|
224
|
+
# Coverage check
|
|
225
|
+
coverage = await tdd.calculate_coverage()
|
|
226
|
+
assert coverage >= 0.85
|
|
227
|
+
|
|
228
|
+
return {
|
|
229
|
+
"test": failing_test,
|
|
230
|
+
"implementation": refactored,
|
|
231
|
+
"coverage": coverage
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Pattern 3: AI-Powered Debugging Session
|
|
236
|
+
|
|
237
|
+
```python
|
|
238
|
+
# Intelligent debugging with automatic fix application
|
|
239
|
+
from moai_workflow_testing import AIDebugger
|
|
240
|
+
|
|
241
|
+
async def debug_production_error(exception, context, context7_client):
|
|
242
|
+
"""Debug production error with AI assistance."""
|
|
243
|
+
|
|
244
|
+
debugger = AIDebugger(context7_client=context7_client)
|
|
245
|
+
|
|
246
|
+
# Analyze error with Context7 patterns
|
|
247
|
+
analysis = await debugger.debug_with_context7_patterns(
|
|
248
|
+
exception=exception,
|
|
249
|
+
context=context,
|
|
250
|
+
project_path="/project/src"
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
print(f"Error Classification: {analysis.classification}")
|
|
254
|
+
print(f"Root Cause: {analysis.root_cause}")
|
|
255
|
+
print(f"Solutions Found: {len(analysis.solutions)}")
|
|
256
|
+
|
|
257
|
+
# Apply recommended fix
|
|
258
|
+
if analysis.solutions:
|
|
259
|
+
best_solution = analysis.solutions[0]
|
|
260
|
+
if best_solution.confidence > 0.9:
|
|
261
|
+
result = await debugger.apply_fix(best_solution)
|
|
262
|
+
print(f"Fix Applied: {result.success}")
|
|
263
|
+
return result
|
|
264
|
+
|
|
265
|
+
return analysis
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Pattern 4: Performance Optimization Workflow
|
|
269
|
+
|
|
270
|
+
```python
|
|
271
|
+
# Comprehensive performance optimization
|
|
272
|
+
from moai_workflow_testing import PerformanceProfiler
|
|
273
|
+
|
|
274
|
+
async def optimize_critical_path(function_name: str, context7_client):
|
|
275
|
+
"""Profile and optimize critical code path."""
|
|
276
|
+
|
|
277
|
+
profiler = PerformanceProfiler(context7_client=context7_client)
|
|
278
|
+
|
|
279
|
+
# Multi-dimensional profiling
|
|
280
|
+
profiler.start_profiling(['cpu', 'memory', 'line', 'io'])
|
|
281
|
+
|
|
282
|
+
# Execute target function
|
|
283
|
+
result = await execute_function(function_name)
|
|
284
|
+
|
|
285
|
+
# Collect and analyze results
|
|
286
|
+
profile_results = profiler.stop_profiling()
|
|
287
|
+
|
|
288
|
+
# Detect bottlenecks
|
|
289
|
+
bottlenecks = await profiler.detect_bottlenecks(profile_results)
|
|
290
|
+
|
|
291
|
+
# Generate optimizations
|
|
292
|
+
optimizations = await profiler.suggest_optimizations(bottlenecks)
|
|
293
|
+
|
|
294
|
+
# Create optimization report
|
|
295
|
+
report = {
|
|
296
|
+
"function": function_name,
|
|
297
|
+
"original_metrics": profile_results.summary,
|
|
298
|
+
"bottlenecks": [b.to_dict() for b in bottlenecks],
|
|
299
|
+
"optimizations": [o.to_dict() for o in optimizations],
|
|
300
|
+
"estimated_improvement": calculate_improvement(optimizations)
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
return report
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## Troubleshooting
|
|
309
|
+
|
|
310
|
+
### Common Issues
|
|
311
|
+
|
|
312
|
+
Issue: Context7 connection timeout:
|
|
313
|
+
- Cause: MCP server not responding or network issues
|
|
314
|
+
- Solution: Check Context7 server status and restart if needed
|
|
315
|
+
- Prevention: Implement retry logic with exponential backoff
|
|
316
|
+
|
|
317
|
+
Issue: Test coverage below threshold:
|
|
318
|
+
- Cause: Insufficient test cases or uncovered code paths
|
|
319
|
+
- Solution: Use `tdd.identify_uncovered_paths()` to find gaps
|
|
320
|
+
- Prevention: Run coverage check before commits
|
|
321
|
+
|
|
322
|
+
Issue: Performance profiler high overhead:
|
|
323
|
+
- Cause: Line profiler active on large files
|
|
324
|
+
- Solution: Use targeted profiling on specific functions
|
|
325
|
+
- Prevention: Configure `max_line_profile_lines` threshold
|
|
326
|
+
|
|
327
|
+
Issue: Code review false positives:
|
|
328
|
+
- Cause: Overly strict rule configuration
|
|
329
|
+
- Solution: Adjust rule severity in `quality_gates` config
|
|
330
|
+
- Prevention: Tune rules based on project context
|
|
331
|
+
|
|
332
|
+
Issue: TDD cycle stuck in RED phase:
|
|
333
|
+
- Cause: Specification too complex or ambiguous
|
|
334
|
+
- Solution: Break down specification into smaller units
|
|
335
|
+
- Prevention: Follow EARS format for clear specifications
|
|
336
|
+
|
|
337
|
+
### Diagnostic Commands
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
# CLI diagnostics
|
|
341
|
+
moai-workflow diagnose --full-check
|
|
342
|
+
moai-workflow test --dry-run --verbose
|
|
343
|
+
moai-workflow profile --list-available
|
|
344
|
+
moai-workflow review --show-rules
|
|
345
|
+
|
|
346
|
+
# Python diagnostics
|
|
347
|
+
from moai_workflow_testing import diagnose
|
|
348
|
+
|
|
349
|
+
# Component health check
|
|
350
|
+
report = await diagnose.check_all_components()
|
|
351
|
+
print(f"Debugger: {report.debugger_status}")
|
|
352
|
+
print(f"Profiler: {report.profiler_status}")
|
|
353
|
+
print(f"TDD Manager: {report.tdd_status}")
|
|
354
|
+
print(f"Reviewer: {report.reviewer_status}")
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### Log Locations
|
|
358
|
+
|
|
359
|
+
- Workflow logs: `.moai/logs/workflow.log`
|
|
360
|
+
- Test results: `.moai/test-results/`
|
|
361
|
+
- Profile data: `.moai/profiles/`
|
|
362
|
+
- Review reports: `.moai/reviews/`
|
|
363
|
+
- Debug sessions: `.moai/debug-sessions/`
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## External Resources
|
|
368
|
+
|
|
369
|
+
### Official Documentation
|
|
370
|
+
|
|
371
|
+
- pytest Documentation: https://docs.pytest.org/
|
|
372
|
+
- Python Profiling Guide: https://docs.python.org/3/library/profile.html
|
|
373
|
+
- Coverage.py: https://coverage.readthedocs.io/
|
|
374
|
+
|
|
375
|
+
### Analysis Tool References
|
|
376
|
+
|
|
377
|
+
- pylint: https://pylint.readthedocs.io/
|
|
378
|
+
- flake8: https://flake8.pycqa.org/
|
|
379
|
+
- bandit: https://bandit.readthedocs.io/
|
|
380
|
+
- mypy: https://mypy.readthedocs.io/
|
|
381
|
+
|
|
382
|
+
### Related Skills
|
|
383
|
+
|
|
384
|
+
- moai-foundation-core - TRUST 5 framework and SPEC-First TDD
|
|
385
|
+
- moai-domain-backend - Backend development workflows
|
|
386
|
+
- moai-domain-frontend - Frontend development workflows
|
|
387
|
+
- moai-platform-baas - Backend-as-a-Service integration
|
|
388
|
+
|
|
389
|
+
### Module References
|
|
390
|
+
|
|
391
|
+
- AI Debugging: `modules/ai-debugging.md`
|
|
392
|
+
- Smart Refactoring: `modules/smart-refactoring.md`
|
|
393
|
+
- Performance Optimization: `modules/performance-optimization.md`
|
|
394
|
+
- TDD with Context7: `modules/tdd-context7.md`
|
|
395
|
+
- Automated Code Review: `modules/automated-code-review.md`
|
|
396
|
+
|
|
397
|
+
### Best Practices
|
|
398
|
+
|
|
399
|
+
Testing:
|
|
400
|
+
- Write tests before implementation (TDD)
|
|
401
|
+
- Maintain 85%+ coverage
|
|
402
|
+
- Use meaningful test names
|
|
403
|
+
- Mock external dependencies
|
|
404
|
+
- Run tests in isolation
|
|
405
|
+
|
|
406
|
+
Debugging:
|
|
407
|
+
- Capture full stack traces
|
|
408
|
+
- Include reproduction steps
|
|
409
|
+
- Document environment details
|
|
410
|
+
- Use structured logging
|
|
411
|
+
- Apply fixes incrementally
|
|
412
|
+
|
|
413
|
+
Performance:
|
|
414
|
+
- Profile before optimizing
|
|
415
|
+
- Focus on bottlenecks
|
|
416
|
+
- Measure improvement
|
|
417
|
+
- Document baseline metrics
|
|
418
|
+
- Test under realistic load
|
|
419
|
+
|
|
420
|
+
Code Review:
|
|
421
|
+
- Follow TRUST 5 guidelines
|
|
422
|
+
- Address critical issues first
|
|
423
|
+
- Document review decisions
|
|
424
|
+
- Track technical debt
|
|
425
|
+
- Share knowledge through reviews
|
|
426
|
+
|
|
427
|
+
### Version History
|
|
428
|
+
|
|
429
|
+
| Version | Date | Changes |
|
|
430
|
+
|---------|------------|---------------------------------------------------|
|
|
431
|
+
| 1.0.0 | 2025-11-30 | Initial unified workflow release |
|
|
432
|
+
| 0.9.0 | 2025-11-25 | Added Context7 integration |
|
|
433
|
+
| 0.8.0 | 2025-11-20 | Added performance optimization module |
|
|
434
|
+
| 0.7.0 | 2025-11-15 | Added automated code review |
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
Status: Reference Documentation Complete
|
|
439
|
+
Last Updated: 2025-12-06
|
|
440
|
+
Skill Version: 1.0.0
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Start one or more servers, wait for them to be ready, run a command, then clean up.
|
|
4
|
+
|
|
5
|
+
Usage:
|
|
6
|
+
# Single server
|
|
7
|
+
python scripts/with_server.py --server "npm run dev" --port 5173 -- python automation.py
|
|
8
|
+
python scripts/with_server.py --server "npm start" --port 3000 -- python test.py
|
|
9
|
+
|
|
10
|
+
# Multiple servers with working directories
|
|
11
|
+
python scripts/with_server.py \
|
|
12
|
+
--server "python server.py" --port 3000 --cwd backend \
|
|
13
|
+
--server "npm run dev" --port 5173 --cwd frontend \
|
|
14
|
+
-- python test.py
|
|
15
|
+
|
|
16
|
+
Security Note:
|
|
17
|
+
This script uses shell=False to prevent command injection attacks (CWE-78).
|
|
18
|
+
Use --cwd to specify working directories instead of shell operators like 'cd'.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
import argparse
|
|
22
|
+
import shlex
|
|
23
|
+
import socket
|
|
24
|
+
import subprocess
|
|
25
|
+
import sys
|
|
26
|
+
import time
|
|
27
|
+
from pathlib import Path
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def is_server_ready(port, timeout=30):
|
|
31
|
+
"""Wait for server to be ready by polling the port."""
|
|
32
|
+
start_time = time.time()
|
|
33
|
+
while time.time() - start_time < timeout:
|
|
34
|
+
try:
|
|
35
|
+
with socket.create_connection(("localhost", port), timeout=1):
|
|
36
|
+
return True
|
|
37
|
+
except (socket.error, ConnectionRefusedError):
|
|
38
|
+
time.sleep(0.5)
|
|
39
|
+
return False
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def parse_command_safely(cmd_string):
|
|
43
|
+
"""
|
|
44
|
+
Parse a command string into a list for subprocess execution.
|
|
45
|
+
|
|
46
|
+
Uses shlex.split() for safe command parsing to prevent shell injection.
|
|
47
|
+
This handles quoted arguments properly but does NOT support shell operators
|
|
48
|
+
like &&, ||, |, ;, or redirections.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
cmd_string: Command string to parse
|
|
52
|
+
|
|
53
|
+
Returns:
|
|
54
|
+
List of command arguments suitable for subprocess with shell=False
|
|
55
|
+
|
|
56
|
+
Raises:
|
|
57
|
+
ValueError: If command contains unsupported shell operators
|
|
58
|
+
"""
|
|
59
|
+
# Check for shell operators that are not supported
|
|
60
|
+
shell_operators = ["&&", "||", "|", ";", ">", "<", ">>", "<<"]
|
|
61
|
+
for op in shell_operators:
|
|
62
|
+
if op in cmd_string:
|
|
63
|
+
raise ValueError(
|
|
64
|
+
f"Shell operator '{op}' is not supported for security reasons. "
|
|
65
|
+
f"Use --cwd to change working directory instead of 'cd &&'."
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
try:
|
|
69
|
+
return shlex.split(cmd_string)
|
|
70
|
+
except ValueError as e:
|
|
71
|
+
raise ValueError(f"Failed to parse command '{cmd_string}': {e}") from e
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def main():
|
|
75
|
+
parser = argparse.ArgumentParser(
|
|
76
|
+
description="Run command with one or more servers",
|
|
77
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
78
|
+
epilog="""
|
|
79
|
+
Security:
|
|
80
|
+
This script uses shell=False to prevent command injection attacks (CWE-78).
|
|
81
|
+
Shell operators (&&, ||, |, ;) are not supported for security reasons.
|
|
82
|
+
Use --cwd to specify working directories instead of 'cd &&' patterns.
|
|
83
|
+
|
|
84
|
+
Examples:
|
|
85
|
+
# Single server
|
|
86
|
+
python with_server.py --server "npm run dev" --port 3000 -- pytest
|
|
87
|
+
|
|
88
|
+
# Multiple servers with different working directories
|
|
89
|
+
python with_server.py \\
|
|
90
|
+
--server "python server.py" --port 3000 --cwd backend \\
|
|
91
|
+
--server "npm run dev" --port 5173 --cwd frontend \\
|
|
92
|
+
-- pytest tests/
|
|
93
|
+
""",
|
|
94
|
+
)
|
|
95
|
+
parser.add_argument(
|
|
96
|
+
"--server",
|
|
97
|
+
action="append",
|
|
98
|
+
dest="servers",
|
|
99
|
+
required=True,
|
|
100
|
+
help="Server command (can be repeated)",
|
|
101
|
+
)
|
|
102
|
+
parser.add_argument(
|
|
103
|
+
"--port",
|
|
104
|
+
action="append",
|
|
105
|
+
dest="ports",
|
|
106
|
+
type=int,
|
|
107
|
+
required=True,
|
|
108
|
+
help="Port for each server (must match --server count)",
|
|
109
|
+
)
|
|
110
|
+
parser.add_argument(
|
|
111
|
+
"--cwd",
|
|
112
|
+
action="append",
|
|
113
|
+
dest="cwds",
|
|
114
|
+
default=None,
|
|
115
|
+
help="Working directory for each server (optional, defaults to current directory)",
|
|
116
|
+
)
|
|
117
|
+
parser.add_argument(
|
|
118
|
+
"--timeout",
|
|
119
|
+
type=int,
|
|
120
|
+
default=30,
|
|
121
|
+
help="Timeout in seconds per server (default: 30)",
|
|
122
|
+
)
|
|
123
|
+
parser.add_argument("command", nargs=argparse.REMAINDER, help="Command to run after server(s) ready")
|
|
124
|
+
|
|
125
|
+
args = parser.parse_args()
|
|
126
|
+
|
|
127
|
+
# Remove the '--' separator if present
|
|
128
|
+
if args.command and args.command[0] == "--":
|
|
129
|
+
args.command = args.command[1:]
|
|
130
|
+
|
|
131
|
+
if not args.command:
|
|
132
|
+
print("Error: No command specified to run")
|
|
133
|
+
sys.exit(1)
|
|
134
|
+
|
|
135
|
+
# Parse server configurations
|
|
136
|
+
if len(args.servers) != len(args.ports):
|
|
137
|
+
print("Error: Number of --server and --port arguments must match")
|
|
138
|
+
sys.exit(1)
|
|
139
|
+
|
|
140
|
+
# Handle working directories - default to None (current dir) for each server
|
|
141
|
+
cwds = args.cwds or []
|
|
142
|
+
while len(cwds) < len(args.servers):
|
|
143
|
+
cwds.append(None)
|
|
144
|
+
|
|
145
|
+
if len(cwds) > len(args.servers):
|
|
146
|
+
print("Error: Too many --cwd arguments (must not exceed number of --server arguments)")
|
|
147
|
+
sys.exit(1)
|
|
148
|
+
|
|
149
|
+
servers = []
|
|
150
|
+
for cmd, port, cwd in zip(args.servers, args.ports, cwds):
|
|
151
|
+
# Validate and resolve working directory
|
|
152
|
+
resolved_cwd = None
|
|
153
|
+
if cwd:
|
|
154
|
+
cwd_path = Path(cwd)
|
|
155
|
+
if not cwd_path.exists():
|
|
156
|
+
print(f"Error: Working directory '{cwd}' does not exist")
|
|
157
|
+
sys.exit(1)
|
|
158
|
+
if not cwd_path.is_dir():
|
|
159
|
+
print(f"Error: '{cwd}' is not a directory")
|
|
160
|
+
sys.exit(1)
|
|
161
|
+
resolved_cwd = str(cwd_path.resolve())
|
|
162
|
+
|
|
163
|
+
# Parse command safely
|
|
164
|
+
try:
|
|
165
|
+
cmd_list = parse_command_safely(cmd)
|
|
166
|
+
except ValueError as e:
|
|
167
|
+
print(f"Error: {e}")
|
|
168
|
+
sys.exit(1)
|
|
169
|
+
|
|
170
|
+
servers.append({"cmd": cmd, "cmd_list": cmd_list, "port": port, "cwd": resolved_cwd})
|
|
171
|
+
|
|
172
|
+
server_processes = []
|
|
173
|
+
|
|
174
|
+
try:
|
|
175
|
+
# Start all servers
|
|
176
|
+
for i, server in enumerate(servers):
|
|
177
|
+
cwd_info = f" (cwd: {server['cwd']})" if server["cwd"] else ""
|
|
178
|
+
print(f"Starting server {i + 1}/{len(servers)}: {server['cmd']}{cwd_info}")
|
|
179
|
+
|
|
180
|
+
# Use shell=False with parsed command list to prevent command injection (CWE-78)
|
|
181
|
+
process = subprocess.Popen(
|
|
182
|
+
server["cmd_list"],
|
|
183
|
+
stdout=subprocess.PIPE,
|
|
184
|
+
stderr=subprocess.PIPE,
|
|
185
|
+
cwd=server["cwd"],
|
|
186
|
+
)
|
|
187
|
+
server_processes.append(process)
|
|
188
|
+
|
|
189
|
+
# Wait for this server to be ready
|
|
190
|
+
print(f"Waiting for server on port {server['port']}...")
|
|
191
|
+
if not is_server_ready(server["port"], timeout=args.timeout):
|
|
192
|
+
raise RuntimeError(f"Server failed to start on port {server['port']} within {args.timeout}s")
|
|
193
|
+
|
|
194
|
+
print(f"Server ready on port {server['port']}")
|
|
195
|
+
|
|
196
|
+
print(f"\nAll {len(servers)} server(s) ready")
|
|
197
|
+
|
|
198
|
+
# Run the command
|
|
199
|
+
print(f"Running: {' '.join(args.command)}\n")
|
|
200
|
+
result = subprocess.run(args.command)
|
|
201
|
+
sys.exit(result.returncode)
|
|
202
|
+
|
|
203
|
+
finally:
|
|
204
|
+
# Clean up all servers
|
|
205
|
+
print(f"\nStopping {len(server_processes)} server(s)...")
|
|
206
|
+
for i, process in enumerate(server_processes):
|
|
207
|
+
try:
|
|
208
|
+
process.terminate()
|
|
209
|
+
process.wait(timeout=5)
|
|
210
|
+
except subprocess.TimeoutExpired:
|
|
211
|
+
process.kill()
|
|
212
|
+
process.wait()
|
|
213
|
+
print(f"Server {i + 1} stopped")
|
|
214
|
+
print("All servers stopped")
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
if __name__ == "__main__":
|
|
218
|
+
main()
|