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
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""Session event handlers
|
|
3
|
-
|
|
4
|
-
SessionStart, SessionEnd event handling
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
from core import HookPayload, HookResult
|
|
8
|
-
from core.checkpoint import list_checkpoints
|
|
9
|
-
from core.project import count_specs, detect_language, get_git_info, get_package_version_info
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def handle_session_start(payload: HookPayload) -> HookResult:
|
|
13
|
-
"""SessionStart event handler with GRACEFUL DEGRADATION
|
|
14
|
-
|
|
15
|
-
When Claude Code Session starts, it displays a summary of project status.
|
|
16
|
-
You can check the language, Git status, SPEC progress, and checkpoint list at a glance.
|
|
17
|
-
All optional operations are wrapped in try-except to ensure hook completes quickly even if
|
|
18
|
-
Git commands, file I/O, or other operations timeout or fail.
|
|
19
|
-
|
|
20
|
-
Args:
|
|
21
|
-
payload: Claude Code event payload (cwd key required)
|
|
22
|
-
|
|
23
|
-
Returns:
|
|
24
|
-
HookResult(system_message=project status summary message)
|
|
25
|
-
|
|
26
|
-
Message Format:
|
|
27
|
-
🚀 MoAI-ADK Session Started
|
|
28
|
-
Language: {language}
|
|
29
|
-
[Branch: {branch} ({commit hash})] - optional if git fails
|
|
30
|
-
[Changes: {Number of Changed Files}] - optional if git fails
|
|
31
|
-
[SPEC Progress: {Complete}/{Total} ({percent}%)] - optional if specs fail
|
|
32
|
-
[Checkpoints: {number} available] - optional if checkpoint list fails
|
|
33
|
-
|
|
34
|
-
Graceful Degradation Strategy:
|
|
35
|
-
- CRITICAL: Language detection (must succeed - no try-except)
|
|
36
|
-
- OPTIONAL: Git info (skip if timeout/failure)
|
|
37
|
-
- OPTIONAL: SPEC progress (skip if timeout/failure)
|
|
38
|
-
- OPTIONAL: Checkpoint list (skip if timeout/failure)
|
|
39
|
-
- Always display SOMETHING to user, never return empty message
|
|
40
|
-
|
|
41
|
-
Note:
|
|
42
|
-
- Claude Code processes SessionStart in several stages (clear → compact)
|
|
43
|
-
- Display message only at "compact" stage to prevent duplicate output
|
|
44
|
-
- "clear" step returns minimal result (empty hookSpecificOutput)
|
|
45
|
-
- CRITICAL: All optional operations must complete within 2-3 seconds total
|
|
46
|
-
|
|
47
|
-
TDD History:
|
|
48
|
-
- RED: Session startup message format test
|
|
49
|
-
- GREEN: Generate status message by combining helper functions
|
|
50
|
-
- REFACTOR: Improved message format, improved readability, added checkpoint list
|
|
51
|
-
- FIX: Prevent duplicate output of clear step (only compact step is displayed)
|
|
52
|
-
- UPDATE: Migrated to Claude Code standard Hook schema
|
|
53
|
-
- HOTFIX: Add graceful degradation for timeout scenarios (Issue #66)
|
|
54
|
-
|
|
55
|
-
@TAG:CHECKPOINT-EVENT-001
|
|
56
|
-
@TAG:HOOKS-TIMEOUT-001
|
|
57
|
-
"""
|
|
58
|
-
# Claude Code SessionStart runs in several stages (clear, compact, etc.)
|
|
59
|
-
# Ignore the "clear" stage and output messages only at the "compact" stage
|
|
60
|
-
event_phase = payload.get("phase", "")
|
|
61
|
-
if event_phase == "clear":
|
|
62
|
-
# Return minimal valid Hook result for clear phase
|
|
63
|
-
return HookResult(continue_execution=True)
|
|
64
|
-
|
|
65
|
-
cwd = payload.get("cwd", ".")
|
|
66
|
-
|
|
67
|
-
# CRITICAL: Language detection - MUST succeed (no try-except)
|
|
68
|
-
language = detect_language(cwd)
|
|
69
|
-
|
|
70
|
-
# OPTIONAL: Git info - skip if timeout/failure
|
|
71
|
-
git_info = {}
|
|
72
|
-
try:
|
|
73
|
-
git_info = get_git_info(cwd)
|
|
74
|
-
except Exception:
|
|
75
|
-
# Graceful degradation - continue without git info
|
|
76
|
-
pass
|
|
77
|
-
|
|
78
|
-
# OPTIONAL: SPEC progress - skip if timeout/failure
|
|
79
|
-
specs = {"completed": 0, "total": 0, "percentage": 0}
|
|
80
|
-
try:
|
|
81
|
-
specs = count_specs(cwd)
|
|
82
|
-
except Exception:
|
|
83
|
-
# Graceful degradation - continue without spec info
|
|
84
|
-
pass
|
|
85
|
-
|
|
86
|
-
# OPTIONAL: Checkpoint list - skip if timeout/failure
|
|
87
|
-
checkpoints = []
|
|
88
|
-
try:
|
|
89
|
-
checkpoints = list_checkpoints(cwd, max_count=10)
|
|
90
|
-
except Exception:
|
|
91
|
-
# Graceful degradation - continue without checkpoints
|
|
92
|
-
pass
|
|
93
|
-
|
|
94
|
-
# OPTIONAL: Package version info - skip if timeout/failure
|
|
95
|
-
version_info = {}
|
|
96
|
-
try:
|
|
97
|
-
version_info = get_package_version_info()
|
|
98
|
-
except Exception:
|
|
99
|
-
# Graceful degradation - continue without version info
|
|
100
|
-
pass
|
|
101
|
-
|
|
102
|
-
# Build message with available information
|
|
103
|
-
branch = git_info.get("branch", "N/A") if git_info else "N/A"
|
|
104
|
-
commit = git_info.get("commit", "N/A")[:7] if git_info else "N/A"
|
|
105
|
-
changes = git_info.get("changes", 0) if git_info else 0
|
|
106
|
-
spec_progress = f"{specs['completed']}/{specs['total']}" if specs["total"] > 0 else "0/0"
|
|
107
|
-
|
|
108
|
-
# system_message: displayed directly to the user
|
|
109
|
-
lines = [
|
|
110
|
-
"🚀 MoAI-ADK Session Started",
|
|
111
|
-
"", # Blank line after title
|
|
112
|
-
]
|
|
113
|
-
|
|
114
|
-
# Add version info first (at the top, right after title)
|
|
115
|
-
if version_info and version_info.get("current") != "unknown":
|
|
116
|
-
version_line = f" 🗿 MoAI-ADK Ver: {version_info['current']}"
|
|
117
|
-
if version_info.get("update_available"):
|
|
118
|
-
version_line += f" → {version_info['latest']} available ✨"
|
|
119
|
-
lines.append(version_line)
|
|
120
|
-
|
|
121
|
-
# Add upgrade recommendation if update is available
|
|
122
|
-
if version_info.get("update_available") and version_info.get("upgrade_command"):
|
|
123
|
-
lines.append(f" ⬆️ Upgrade: {version_info['upgrade_command']}")
|
|
124
|
-
|
|
125
|
-
# Add language info
|
|
126
|
-
lines.append(f" 🐍 Language: {language}")
|
|
127
|
-
|
|
128
|
-
# Add Git info only if available (not degraded)
|
|
129
|
-
if git_info:
|
|
130
|
-
lines.append(f" 🌿 Branch: {branch} ({commit})")
|
|
131
|
-
lines.append(f" 📝 Changes: {changes}")
|
|
132
|
-
|
|
133
|
-
# Add last commit message if available
|
|
134
|
-
last_commit = git_info.get("last_commit", "")
|
|
135
|
-
if last_commit:
|
|
136
|
-
lines.append(f" 🔨 Last: {last_commit}")
|
|
137
|
-
|
|
138
|
-
# Add Checkpoint list (show only the latest 3 items)
|
|
139
|
-
if checkpoints:
|
|
140
|
-
lines.append(f" 🗂️ Checkpoints: {len(checkpoints)} available")
|
|
141
|
-
for cp in reversed(checkpoints[-3:]): # Latest 3 items
|
|
142
|
-
branch_short = cp["branch"].replace("before-", "")
|
|
143
|
-
lines.append(f" 📌 {branch_short}")
|
|
144
|
-
lines.append("") # Blank line before restore command
|
|
145
|
-
lines.append(" ↩️ Restore: /alfred:0-project restore")
|
|
146
|
-
|
|
147
|
-
# Add SPEC progress only if available (not degraded) - at the bottom
|
|
148
|
-
if specs["total"] > 0:
|
|
149
|
-
lines.append(f" 📋 SPEC Progress: {spec_progress} ({specs['percentage']}%)")
|
|
150
|
-
|
|
151
|
-
system_message = "\n".join(lines)
|
|
152
|
-
|
|
153
|
-
return HookResult(system_message=system_message)
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
def handle_session_end(payload: HookPayload) -> HookResult:
|
|
157
|
-
"""SessionEnd event handler (default implementation)"""
|
|
158
|
-
return HookResult()
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
__all__ = ["handle_session_start", "handle_session_end"]
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# @CODE:HOOK-TOOL-001 | SPEC: TBD | TEST: tests/hooks/test_handlers.py
|
|
3
|
-
"""Tool usage handlers
|
|
4
|
-
|
|
5
|
-
PreToolUse, PostToolUse event handling
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
from core import HookPayload, HookResult
|
|
9
|
-
from core.checkpoint import create_checkpoint, detect_risky_operation
|
|
10
|
-
from core.tags import scan_recent_changes_for_missing_tags
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def handle_pre_tool_use(payload: HookPayload) -> HookResult:
|
|
14
|
-
"""PreToolUse event handler (Event-Driven Checkpoint integration)
|
|
15
|
-
|
|
16
|
-
Automatically creates checkpoints before dangerous operations.
|
|
17
|
-
Called before using the Claude Code tool, it notifies the user when danger is detected.
|
|
18
|
-
|
|
19
|
-
Args:
|
|
20
|
-
payload: Claude Code event payload
|
|
21
|
-
(includes tool, arguments, cwd keys)
|
|
22
|
-
|
|
23
|
-
Returns:
|
|
24
|
-
HookResult(
|
|
25
|
-
system_message=checkpoint creation notification (when danger is detected);
|
|
26
|
-
continue_execution=True (always continue operation)
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
Checkpoint Triggers:
|
|
30
|
-
- Bash: rm -rf, git merge, git reset --hard
|
|
31
|
-
- Edit/Write: CLAUDE.md, config.json
|
|
32
|
-
- MultiEdit: ≥10 files
|
|
33
|
-
|
|
34
|
-
Examples:
|
|
35
|
-
Bash tool (rm -rf) detection:
|
|
36
|
-
→ "🛡️ Checkpoint created: before-delete-20251015-143000"
|
|
37
|
-
|
|
38
|
-
Notes:
|
|
39
|
-
- Return continue_execution=True even after detection of danger (continue operation)
|
|
40
|
-
- Work continues even when checkpoint fails (ignores)
|
|
41
|
-
- Transparent background operation
|
|
42
|
-
|
|
43
|
-
@TAG:CHECKPOINT-EVENT-001
|
|
44
|
-
"""
|
|
45
|
-
tool_name = payload.get("tool", "")
|
|
46
|
-
tool_args = payload.get("arguments", {})
|
|
47
|
-
cwd = payload.get("cwd", ".")
|
|
48
|
-
|
|
49
|
-
# Dangerous operation detection (best-effort)
|
|
50
|
-
try:
|
|
51
|
-
is_risky, operation_type = detect_risky_operation(tool_name, tool_args, cwd)
|
|
52
|
-
# Create checkpoint when danger is detected
|
|
53
|
-
if is_risky:
|
|
54
|
-
checkpoint_branch = create_checkpoint(cwd, operation_type)
|
|
55
|
-
if checkpoint_branch != "checkpoint-failed":
|
|
56
|
-
system_message = (
|
|
57
|
-
f"🛡️ Checkpoint created: {checkpoint_branch}\n"
|
|
58
|
-
f" Operation: {operation_type}"
|
|
59
|
-
)
|
|
60
|
-
return HookResult(system_message=system_message, continue_execution=True)
|
|
61
|
-
except Exception:
|
|
62
|
-
# Do not fail the hook if risk detection errors out
|
|
63
|
-
pass
|
|
64
|
-
|
|
65
|
-
# TAG Guard (gentle): warn when recent changes miss @TAG
|
|
66
|
-
issues = scan_recent_changes_for_missing_tags(cwd)
|
|
67
|
-
if issues:
|
|
68
|
-
# Summarize first few issues for display
|
|
69
|
-
preview = "\n".join(
|
|
70
|
-
f" - {i.path} → 기대 태그: {i.expected}" for i in issues[:5]
|
|
71
|
-
)
|
|
72
|
-
more = "" if len(issues) <= 5 else f"\n (외 {len(issues)-5}건 더 존재)"
|
|
73
|
-
msg = (
|
|
74
|
-
"⚠️ TAG 누락 감지: 생성/수정한 파일 중 @TAG가 없는 항목이 있습니다.\n"
|
|
75
|
-
f"{preview}{more}\n"
|
|
76
|
-
"권장 조치:\n"
|
|
77
|
-
" 1) SPEC/TEST/CODE/DOC 유형에 맞는 @TAG를 파일 상단 주석이나 헤더에 추가\n"
|
|
78
|
-
" 2) rg로 확인: rg '@(SPEC|TEST|CODE|DOC):' -n <경로>\n"
|
|
79
|
-
)
|
|
80
|
-
return HookResult(system_message=msg, continue_execution=True)
|
|
81
|
-
|
|
82
|
-
return HookResult(continue_execution=True)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
def handle_post_tool_use(payload: HookPayload) -> HookResult:
|
|
86
|
-
"""PostToolUse event handler (default implementation)"""
|
|
87
|
-
return HookResult()
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
__all__ = ["handle_pre_tool_use", "handle_post_tool_use"]
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""User interaction handlers
|
|
3
|
-
|
|
4
|
-
Handling the UserPromptSubmit event
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
from core import HookPayload, HookResult
|
|
8
|
-
from core.context import get_jit_context
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def handle_user_prompt_submit(payload: HookPayload) -> HookResult:
|
|
12
|
-
"""UserPromptSubmit event handler
|
|
13
|
-
|
|
14
|
-
Analyze user prompts and automatically add relevant documents into context.
|
|
15
|
-
Follow the just-in-time (JIT) retrieval principle to load only the documents you need.
|
|
16
|
-
|
|
17
|
-
Args:
|
|
18
|
-
payload: Claude Code event payload
|
|
19
|
-
(includes userPrompt, cwd keys)
|
|
20
|
-
|
|
21
|
-
Returns:
|
|
22
|
-
HookResult(
|
|
23
|
-
system_message=Number of Files loaded (or None),
|
|
24
|
-
context_files=Recommended document path list
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
TDD History:
|
|
28
|
-
- RED: JIT document loading scenario testing
|
|
29
|
-
- GREEN: Recommend documents by calling get_jit_context()
|
|
30
|
-
- REFACTOR: Message conditional display (only when there is a file)
|
|
31
|
-
- UPDATE: Migrated to Claude Code standard Hook schema with snake_case fields
|
|
32
|
-
"""
|
|
33
|
-
user_prompt = payload.get("userPrompt", "")
|
|
34
|
-
cwd = payload.get("cwd", ".")
|
|
35
|
-
context_files = get_jit_context(user_prompt, cwd)
|
|
36
|
-
|
|
37
|
-
system_message = f"📎 Loaded {len(context_files)} context file(s)" if context_files else None
|
|
38
|
-
|
|
39
|
-
return HookResult(system_message=system_message, context_files=context_files)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
__all__ = ["handle_user_prompt_submit"]
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env -S uv run --script
|
|
2
|
-
# /// script
|
|
3
|
-
# requires-python = ">=3.11"
|
|
4
|
-
# ///
|
|
5
|
-
"""Test Hook Output Validation
|
|
6
|
-
|
|
7
|
-
자동 테스트: Claude Code Hook JSON 스키마 검증
|
|
8
|
-
|
|
9
|
-
- SessionStart Hook JSON 출력 검증
|
|
10
|
-
- UserPromptSubmit Hook 특수 스키마 검증
|
|
11
|
-
- 모든 Hook 이벤트 스키마 일관성 검증
|
|
12
|
-
|
|
13
|
-
실행:
|
|
14
|
-
uv run test_hook_output.py
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
import json
|
|
18
|
-
import sys
|
|
19
|
-
from pathlib import Path
|
|
20
|
-
|
|
21
|
-
# Add hooks directory to sys.path
|
|
22
|
-
HOOKS_DIR = Path(__file__).parent
|
|
23
|
-
if str(HOOKS_DIR) not in sys.path:
|
|
24
|
-
sys.path.insert(0, str(HOOKS_DIR))
|
|
25
|
-
|
|
26
|
-
from core import HookResult # noqa: E402
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def test_basic_output():
|
|
30
|
-
"""Test 1: Basic output with only continue flag"""
|
|
31
|
-
result = HookResult(continue_execution=True)
|
|
32
|
-
output = result.to_dict()
|
|
33
|
-
|
|
34
|
-
assert output == {"continue": True}, f"Expected {{'continue': True}}, got {output}"
|
|
35
|
-
print("✅ Test 1: Basic output - PASSED")
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def test_system_message_top_level():
|
|
39
|
-
"""Test 2: systemMessage at TOP-LEVEL (not in hookSpecificOutput)"""
|
|
40
|
-
result = HookResult(system_message="Test message")
|
|
41
|
-
output = result.to_dict()
|
|
42
|
-
|
|
43
|
-
assert "systemMessage" in output, "systemMessage not found in output"
|
|
44
|
-
assert output["systemMessage"] == "Test message"
|
|
45
|
-
assert "hookSpecificOutput" not in output, "hookSpecificOutput should not be in to_dict() output"
|
|
46
|
-
print("✅ Test 2: systemMessage (top-level) - PASSED")
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
def test_decision_with_reason():
|
|
50
|
-
"""Test 3: decision + reason (block pattern)"""
|
|
51
|
-
result = HookResult(decision="block", reason="Dangerous operation")
|
|
52
|
-
output = result.to_dict()
|
|
53
|
-
|
|
54
|
-
assert output.get("decision") == "block"
|
|
55
|
-
assert output.get("reason") == "Dangerous operation"
|
|
56
|
-
assert "continue" not in output, "continue should not appear when decision is set"
|
|
57
|
-
print("✅ Test 3: decision + reason - PASSED")
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
def test_user_prompt_submit_schema():
|
|
61
|
-
"""Test 4: UserPromptSubmit special schema"""
|
|
62
|
-
result = HookResult(context_files=["tests/", "docs/"])
|
|
63
|
-
output = result.to_user_prompt_submit_dict()
|
|
64
|
-
|
|
65
|
-
assert "hookSpecificOutput" in output
|
|
66
|
-
assert output["hookSpecificOutput"]["hookEventName"] == "UserPromptSubmit"
|
|
67
|
-
assert "additionalContext" in output["hookSpecificOutput"]
|
|
68
|
-
assert "📎 Context: tests/" in output["hookSpecificOutput"]["additionalContext"]
|
|
69
|
-
print("✅ Test 4: UserPromptSubmit schema - PASSED")
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
def test_permission_decision():
|
|
73
|
-
"""Test 5: permissionDecision field"""
|
|
74
|
-
result = HookResult(permission_decision="deny")
|
|
75
|
-
output = result.to_dict()
|
|
76
|
-
|
|
77
|
-
assert output.get("permissionDecision") == "deny"
|
|
78
|
-
assert "continue" in output # continue should still be present
|
|
79
|
-
print("✅ Test 5: permissionDecision - PASSED")
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
def test_session_start_typical_output():
|
|
83
|
-
"""Test 6: Typical SessionStart output"""
|
|
84
|
-
result = HookResult(
|
|
85
|
-
continue_execution=True,
|
|
86
|
-
system_message="🚀 MoAI-ADK Session Started\n Language: python\n Branch: develop"
|
|
87
|
-
)
|
|
88
|
-
output = result.to_dict()
|
|
89
|
-
|
|
90
|
-
# Validate schema
|
|
91
|
-
assert "continue" in output or "decision" in output, "Missing continue or decision"
|
|
92
|
-
assert output.get("systemMessage", "").startswith("🚀 MoAI-ADK")
|
|
93
|
-
|
|
94
|
-
# Ensure internal fields are NOT in output
|
|
95
|
-
assert "context_files" not in output, "Internal field context_files leaked to output"
|
|
96
|
-
assert "suggestions" not in output, "Internal field suggestions leaked to output"
|
|
97
|
-
assert "exit_code" not in output, "Internal field exit_code leaked to output"
|
|
98
|
-
|
|
99
|
-
print("✅ Test 6: SessionStart typical output - PASSED")
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
def test_json_serializable():
|
|
103
|
-
"""Test 7: Output is JSON serializable"""
|
|
104
|
-
result = HookResult(
|
|
105
|
-
system_message="Test",
|
|
106
|
-
decision="approve",
|
|
107
|
-
reason="Valid operation"
|
|
108
|
-
)
|
|
109
|
-
output = result.to_dict()
|
|
110
|
-
|
|
111
|
-
try:
|
|
112
|
-
json_str = json.dumps(output)
|
|
113
|
-
parsed = json.loads(json_str)
|
|
114
|
-
assert parsed == output
|
|
115
|
-
print("✅ Test 7: JSON serializable - PASSED")
|
|
116
|
-
except Exception as e:
|
|
117
|
-
print(f"❌ Test 7: JSON serialization FAILED: {e}")
|
|
118
|
-
sys.exit(1)
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
def test_user_prompt_submit_with_system_message():
|
|
122
|
-
"""Test 8: UserPromptSubmit with both context and system message"""
|
|
123
|
-
result = HookResult(
|
|
124
|
-
context_files=["src/"],
|
|
125
|
-
system_message="Loading context..."
|
|
126
|
-
)
|
|
127
|
-
output = result.to_user_prompt_submit_dict()
|
|
128
|
-
|
|
129
|
-
assert "hookSpecificOutput" in output
|
|
130
|
-
assert "Loading context..." in output["hookSpecificOutput"]["additionalContext"]
|
|
131
|
-
assert "📎 Context: src/" in output["hookSpecificOutput"]["additionalContext"]
|
|
132
|
-
print("✅ Test 8: UserPromptSubmit with system_message - PASSED")
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
def main():
|
|
136
|
-
"""Run all tests"""
|
|
137
|
-
print("\n" + "="*60)
|
|
138
|
-
print("🧪 Claude Code Hook Output Validation Tests")
|
|
139
|
-
print("="*60 + "\n")
|
|
140
|
-
|
|
141
|
-
tests = [
|
|
142
|
-
test_basic_output,
|
|
143
|
-
test_system_message_top_level,
|
|
144
|
-
test_decision_with_reason,
|
|
145
|
-
test_user_prompt_submit_schema,
|
|
146
|
-
test_permission_decision,
|
|
147
|
-
test_session_start_typical_output,
|
|
148
|
-
test_json_serializable,
|
|
149
|
-
test_user_prompt_submit_with_system_message,
|
|
150
|
-
]
|
|
151
|
-
|
|
152
|
-
failed = 0
|
|
153
|
-
for test in tests:
|
|
154
|
-
try:
|
|
155
|
-
test()
|
|
156
|
-
except AssertionError as e:
|
|
157
|
-
print(f"❌ {test.__name__}: FAILED - {e}")
|
|
158
|
-
failed += 1
|
|
159
|
-
except Exception as e:
|
|
160
|
-
print(f"❌ {test.__name__}: ERROR - {e}")
|
|
161
|
-
failed += 1
|
|
162
|
-
|
|
163
|
-
print("\n" + "="*60)
|
|
164
|
-
if failed == 0:
|
|
165
|
-
print(f"✅ ALL {len(tests)} TESTS PASSED")
|
|
166
|
-
print("="*60 + "\n")
|
|
167
|
-
sys.exit(0)
|
|
168
|
-
else:
|
|
169
|
-
print(f"❌ {failed}/{len(tests)} TESTS FAILED")
|
|
170
|
-
print("="*60 + "\n")
|
|
171
|
-
sys.exit(1)
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
if __name__ == "__main__":
|
|
175
|
-
main()
|