moai-adk 0.4.5__py3-none-any.whl → 0.20.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/__init__.py +1 -1
- moai_adk/__main__.py +74 -1
- moai_adk/cli/commands/__init__.py +1 -1
- moai_adk/cli/commands/analyze.py +119 -0
- moai_adk/cli/commands/backup.py +25 -1
- moai_adk/cli/commands/doctor.py +31 -5
- moai_adk/cli/commands/improve_user_experience.py +307 -0
- moai_adk/cli/commands/init.py +111 -10
- moai_adk/cli/commands/status.py +33 -3
- moai_adk/cli/commands/update.py +921 -130
- moai_adk/cli/commands/validate_links.py +120 -0
- moai_adk/cli/prompts/init_prompts.py +22 -87
- moai_adk/core/analysis/__init__.py +9 -0
- moai_adk/core/analysis/session_analyzer.py +388 -0
- moai_adk/core/analysis/tag_chain_analyzer.py +344 -0
- moai_adk/core/analysis/tag_chain_repair.py +879 -0
- moai_adk/core/config/__init__.py +19 -0
- moai_adk/core/config/migration.py +235 -0
- moai_adk/core/git/__init__.py +1 -1
- moai_adk/core/git/branch.py +1 -1
- moai_adk/core/git/commit.py +1 -1
- moai_adk/core/git/manager.py +1 -1
- moai_adk/core/issue_creator.py +313 -0
- moai_adk/core/mcp/setup.py +56 -0
- moai_adk/core/mcp/setup_old.py +296 -0
- moai_adk/core/project/backup_utils.py +1 -1
- moai_adk/core/project/checker.py +2 -2
- moai_adk/core/project/detector.py +211 -12
- moai_adk/core/project/initializer.py +85 -15
- moai_adk/core/project/phase_executor.py +76 -13
- moai_adk/core/project/validator.py +13 -13
- moai_adk/core/quality/__init__.py +1 -1
- moai_adk/core/quality/trust_checker.py +1 -1
- moai_adk/core/quality/validators/__init__.py +1 -1
- moai_adk/core/quality/validators/base_validator.py +1 -1
- moai_adk/core/tags/__init__.py +86 -0
- moai_adk/core/tags/auto_corrector.py +693 -0
- moai_adk/core/tags/ci_validator.py +463 -0
- moai_adk/core/tags/cli.py +283 -0
- moai_adk/core/tags/generator.py +109 -0
- moai_adk/core/tags/inserter.py +99 -0
- moai_adk/core/tags/mapper.py +126 -0
- moai_adk/core/tags/parser.py +76 -0
- moai_adk/core/tags/policy_validator.py +580 -0
- moai_adk/core/tags/pre_commit_validator.py +421 -0
- moai_adk/core/tags/reporter.py +956 -0
- moai_adk/core/tags/rollback_manager.py +525 -0
- moai_adk/core/tags/tags.py +149 -0
- moai_adk/core/tags/validator.py +897 -0
- moai_adk/core/template/__init__.py +1 -1
- moai_adk/core/template/backup.py +1 -1
- moai_adk/core/template/merger.py +50 -1
- moai_adk/core/template/processor.py +119 -13
- moai_adk/core/template_engine.py +268 -0
- moai_adk/templates/.claude/agents/alfred/backend-expert.md +348 -0
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +209 -944
- moai_adk/templates/.claude/agents/alfred/database-expert.md +352 -0
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +34 -5
- moai_adk/templates/.claude/agents/alfred/devops-expert.md +464 -0
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +38 -8
- moai_adk/templates/.claude/agents/alfred/format-expert.md +469 -0
- moai_adk/templates/.claude/agents/alfred/frontend-expert.md +357 -0
- moai_adk/templates/.claude/agents/alfred/git-manager.md +128 -9
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +104 -6
- moai_adk/templates/.claude/agents/alfred/project-manager.md +88 -16
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +36 -9
- moai_adk/templates/.claude/agents/alfred/security-expert.md +270 -0
- moai_adk/templates/.claude/agents/alfred/skill-factory.md +865 -0
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +214 -43
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +111 -9
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +309 -160
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +36 -7
- moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +605 -0
- moai_adk/templates/.claude/commands/alfred/0-project.md +393 -966
- moai_adk/templates/.claude/commands/alfred/1-plan.md +651 -367
- moai_adk/templates/.claude/commands/alfred/2-run.md +388 -241
- moai_adk/templates/.claude/commands/alfred/3-sync.md +1921 -410
- moai_adk/templates/.claude/commands/alfred/9-feedback.md +153 -0
- moai_adk/templates/.claude/commands/alfred/release-new.md +3604 -0
- moai_adk/templates/.claude/hooks/alfred/core/project.py +484 -20
- moai_adk/templates/.claude/hooks/alfred/core/timeout.py +136 -0
- moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +108 -0
- moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +198 -0
- moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +14 -6
- moai_adk/templates/.claude/hooks/alfred/post_tool__enable_streaming_ui.py +50 -0
- moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +93 -0
- moai_adk/templates/.claude/hooks/alfred/post_tool__tag_auto_corrector.py +407 -0
- moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +99 -0
- moai_adk/templates/.claude/hooks/alfred/pre_tool__realtime_tag_monitor.py +335 -0
- moai_adk/templates/.claude/hooks/alfred/pre_tool__tag_policy_validator.py +325 -0
- moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +93 -0
- moai_adk/templates/.claude/hooks/alfred/session_start__auto_cleanup.py +580 -0
- moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +298 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +170 -0
- moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/checkpoint.py +3 -3
- moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/context.py +5 -5
- moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +749 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +230 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +198 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +21 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/daily_analysis.py +351 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +154 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +174 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +87 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +61 -0
- moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +111 -0
- moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +1 -0
- moai_adk/templates/.claude/hooks/alfred/utils/hook_config.py +94 -0
- moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +161 -0
- moai_adk/templates/.claude/output-styles/alfred/alfred-moai-adk-beginner.md +267 -0
- moai_adk/templates/.claude/output-styles/alfred/keating-personal-tutor.md +440 -0
- moai_adk/templates/.claude/output-styles/alfred/r2d2-agentic-coding.md +583 -0
- moai_adk/templates/.claude/settings.json +96 -14
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +70 -0
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +62 -0
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/reference.md +242 -0
- moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/SKILL.md +237 -0
- moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/examples.md +871 -0
- moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/reference.md +653 -0
- moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/README.md +162 -0
- moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/SKILL.md +227 -0
- moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/examples.md +354 -0
- moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/reference.md +158 -0
- moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/SKILL.md +179 -79
- moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/examples.md +117 -0
- moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/scripts/pre-review-check.sh +62 -0
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +132 -0
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/reference.md +444 -0
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +62 -0
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +405 -0
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +51 -0
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +355 -0
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +239 -0
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +323 -0
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +286 -0
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +126 -0
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +229 -0
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +4 -0
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +150 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +87 -73
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-personas/README.md +42 -0
- moai_adk/templates/.claude/skills/moai-alfred-personas/SKILL.md +429 -0
- moai_adk/templates/.claude/skills/moai-alfred-personas/examples.md +520 -0
- moai_adk/templates/.claude/skills/moai-alfred-personas/reference.md +405 -0
- moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +89 -0
- moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +122 -0
- moai_adk/templates/.claude/skills/moai-alfred-practices/reference.md +369 -0
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +508 -0
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +481 -0
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +100 -0
- moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +77 -0
- moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +265 -0
- moai_adk/templates/.claude/skills/moai-alfred-rules/reference.md +539 -0
- moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +320 -0
- moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +4 -0
- moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +84 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +137 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +219 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples/validate-spec.sh +161 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +541 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +622 -0
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +19 -0
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +4 -0
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +211 -0
- moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +288 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +269 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +298 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +307 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +252 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +199 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +316 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +263 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/CHECKLIST.md +482 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/EXAMPLES.md +303 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/METADATA.md +477 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL.md +273 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/STRUCTURE.md +583 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/WEB-RESEARCH.md +526 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/reference.md +608 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/generate-structure.sh +328 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/validate-skill.sh +312 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/examples-template.md +285 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/reference-template.md +278 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/scripts-template.sh +303 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +291 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
- moai_adk/templates/.claude/skills/moai-change-logger/SKILL.md +563 -0
- moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +802 -0
- moai_adk/templates/.claude/skills/moai-design-systems/examples.md +1238 -0
- moai_adk/templates/.claude/skills/moai-design-systems/reference.md +673 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +234 -43
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +97 -69
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +97 -72
- moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +97 -74
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +98 -74
- moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +102 -73
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +97 -73
- moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +97 -67
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +97 -79
- moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +97 -71
- moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +265 -64
- moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1064 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1047 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +87 -78
- moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +87 -70
- moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +87 -86
- moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +80 -62
- moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +207 -50
- moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +90 -71
- moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +78 -58
- moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +78 -51
- moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/.!11330!examples.md +0 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +253 -32
- moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
- moai_adk/templates/.claude/skills/moai-jit-docs-enhanced/SKILL.md +460 -0
- moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +98 -74
- moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +98 -76
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +2358 -70
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +2962 -68
- moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +1898 -70
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +1465 -68
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +2364 -66
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +1630 -69
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +89 -61
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +735 -66
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +97 -73
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +98 -73
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +1834 -70
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +99 -74
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +97 -74
- moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +98 -74
- moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +1959 -69
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-template/SKILL.md +348 -0
- moai_adk/templates/.claude/skills/moai-lang-template/VARIABLES.md +98 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +1230 -66
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
- moai_adk/templates/.claude/skills/moai-learning-optimizer/SKILL.md +575 -0
- moai_adk/templates/.claude/skills/moai-project-batch-questions/README.md +50 -0
- moai_adk/templates/.claude/skills/moai-project-batch-questions/SKILL.md +304 -0
- moai_adk/templates/.claude/skills/moai-project-batch-questions/examples.md +417 -0
- moai_adk/templates/.claude/skills/moai-project-batch-questions/reference.md +704 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/README.md +87 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/SKILL.md +552 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/examples.md +1109 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/reference.md +514 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/validate.py +106 -0
- moai_adk/templates/.claude/skills/moai-project-documentation/README.md +11 -0
- moai_adk/templates/.claude/skills/moai-project-documentation/SKILL.md +622 -0
- moai_adk/templates/.claude/skills/moai-project-documentation/examples.md +20 -0
- moai_adk/templates/.claude/skills/moai-project-documentation/reference.md +12 -0
- moai_adk/templates/.claude/skills/moai-project-language-initializer/README.md +152 -0
- moai_adk/templates/.claude/skills/moai-project-language-initializer/SKILL.md +285 -0
- moai_adk/templates/.claude/skills/moai-project-language-initializer/examples.md +333 -0
- moai_adk/templates/.claude/skills/moai-project-language-initializer/reference.md +386 -0
- moai_adk/templates/.claude/skills/moai-project-template-optimizer/README.md +49 -0
- moai_adk/templates/.claude/skills/moai-project-template-optimizer/SKILL.md +319 -0
- moai_adk/templates/.claude/skills/moai-project-template-optimizer/examples.md +58 -0
- moai_adk/templates/.claude/skills/moai-project-template-optimizer/reference.md +123 -0
- moai_adk/templates/.claude/skills/moai-session-info/SKILL.md +314 -0
- moai_adk/templates/.claude/skills/moai-streaming-ui/SKILL.md +552 -0
- moai_adk/templates/.claude/skills/moai-tag-policy-validator/SKILL.md +570 -0
- moai_adk/templates/.git-hooks/pre-commit +66 -0
- moai_adk/templates/.git-hooks/pre-push +255 -0
- moai_adk/templates/.github/workflows/c-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/cpp-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/csharp-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/dart-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/go-tag-validation.yml +130 -0
- moai_adk/templates/.github/workflows/java-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/javascript-tag-validation.yml +135 -0
- moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/moai-gitflow.yml +166 -3
- moai_adk/templates/.github/workflows/moai-release-create.yml +100 -0
- moai_adk/templates/.github/workflows/moai-release-pipeline.yml +188 -0
- moai_adk/templates/.github/workflows/php-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/python-tag-validation.yml +118 -0
- moai_adk/templates/.github/workflows/release.yml +118 -0
- moai_adk/templates/.github/workflows/ruby-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/rust-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/shell-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/spec-issue-sync.yml +338 -0
- moai_adk/templates/.github/workflows/swift-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/tag-report.yml +269 -0
- moai_adk/templates/.github/workflows/tag-validation.yml +186 -0
- moai_adk/templates/.github/workflows/typescript-tag-validation.yml +154 -0
- moai_adk/templates/.mcp.json +31 -0
- moai_adk/templates/.moai/config.json +80 -7
- moai_adk/templates/CLAUDE.md +562 -546
- moai_adk/utils/banner.py +5 -5
- moai_adk/utils/common.py +294 -0
- moai_adk/utils/link_validator.py +235 -0
- moai_adk/utils/logger.py +8 -8
- moai_adk/utils/user_experience.py +451 -0
- moai_adk-0.20.1.dist-info/METADATA +233 -0
- moai_adk-0.20.1.dist-info/RECORD +404 -0
- moai_adk/templates/.claude/hooks/alfred/README.md +0 -230
- moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -156
- moai_adk/templates/.claude/hooks/alfred/core/__init__.py +0 -85
- moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +0 -25
- moai_adk/templates/.claude/hooks/alfred/handlers/session.py +0 -92
- moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +0 -70
- moai_adk/templates/.claude/hooks/alfred/handlers/user.py +0 -41
- moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +0 -636
- moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +0 -692
- moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +0 -470
- moai_adk/templates/.claude/skills/moai-alfred-debugger-pro/SKILL.md +0 -103
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -103
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -95
- moai_adk/templates/.claude/skills/moai-alfred-performance-optimizer/SKILL.md +0 -105
- moai_adk/templates/.claude/skills/moai-alfred-refactoring-coach/SKILL.md +0 -97
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -97
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -90
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -99
- moai_adk/templates/.claude/skills/moai-alfred-tui-survey/SKILL.md +0 -87
- moai_adk/templates/.claude/skills/moai-alfred-tui-survey/examples.md +0 -62
- moai_adk/templates/.claude/skills/moai-claude-code/SKILL.md +0 -94
- moai_adk/templates/.claude/skills/moai-claude-code/examples.md +0 -513
- moai_adk/templates/.claude/skills/moai-claude-code/reference.md +0 -433
- moai_adk/templates/.claude/skills/moai-claude-code/templates/agent-full.md +0 -332
- moai_adk/templates/.claude/skills/moai-claude-code/templates/command-full.md +0 -384
- moai_adk/templates/.claude/skills/moai-claude-code/templates/plugin-full.json +0 -363
- moai_adk/templates/.claude/skills/moai-claude-code/templates/settings-full.json +0 -595
- moai_adk/templates/.claude/skills/moai-claude-code/templates/skill-full.md +0 -496
- moai_adk/templates/.claude/skills/moai-lang-clojure/SKILL.md +0 -100
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +0 -99
- moai_adk/templates/.claude/skills/moai-lang-haskell/SKILL.md +0 -100
- moai_adk/templates/.claude/skills/moai-lang-julia/SKILL.md +0 -98
- moai_adk/templates/.claude/skills/moai-lang-lua/SKILL.md +0 -98
- moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -69
- 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/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.4.5.dist-info/METADATA +0 -369
- moai_adk-0.4.5.dist-info/RECORD +0 -152
- {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/WHEEL +0 -0
- {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @CODE:CORE-PROJECT-001 | @CODE:INIT-
|
|
1
|
+
# @CODE:CORE-PROJECT-001 | @CODE:INIT-005:INIT
|
|
2
2
|
# SPEC: SPEC-CORE-PROJECT-001.md, SPEC-INIT-003.md
|
|
3
3
|
# TEST: tests/unit/test_project_initializer.py, tests/unit/test_init_reinit.py
|
|
4
4
|
"""Project Initialization Module
|
|
@@ -11,10 +11,11 @@ Phase-based 5-step initialization process:
|
|
|
11
11
|
5. Validation: Verification and finalization
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
|
+
import json
|
|
14
15
|
import time
|
|
16
|
+
from datetime import datetime
|
|
15
17
|
from pathlib import Path
|
|
16
18
|
|
|
17
|
-
from moai_adk.core.project.detector import LanguageDetector
|
|
18
19
|
from moai_adk.core.project.phase_executor import PhaseExecutor, ProgressCallback
|
|
19
20
|
from moai_adk.core.project.validator import ProjectValidator
|
|
20
21
|
|
|
@@ -53,14 +54,69 @@ class ProjectInitializer:
|
|
|
53
54
|
path: Project root directory
|
|
54
55
|
"""
|
|
55
56
|
self.path = Path(path).resolve()
|
|
56
|
-
self.detector = LanguageDetector()
|
|
57
57
|
self.validator = ProjectValidator()
|
|
58
58
|
self.executor = PhaseExecutor(self.validator)
|
|
59
59
|
|
|
60
|
+
def _create_memory_files(self) -> list[str]:
|
|
61
|
+
"""Create runtime session and memory files (auto-generated per user/session)
|
|
62
|
+
|
|
63
|
+
Returns:
|
|
64
|
+
List of created memory files
|
|
65
|
+
|
|
66
|
+
@CODE:INIT-MEMORY-001 | Auto-generate session memory files
|
|
67
|
+
"""
|
|
68
|
+
memory_dir = self.path / ".moai" / "memory"
|
|
69
|
+
memory_dir.mkdir(parents=True, exist_ok=True)
|
|
70
|
+
created_files = []
|
|
71
|
+
|
|
72
|
+
# 1. project-notes.json - Project tracking notes (empty on init)
|
|
73
|
+
project_notes = {
|
|
74
|
+
"tech_debt": [],
|
|
75
|
+
"performance_bottlenecks": [],
|
|
76
|
+
"recent_patterns": {
|
|
77
|
+
"frequent_file_edits": [],
|
|
78
|
+
"test_failures": [],
|
|
79
|
+
"git_operations": "daily commits, feature branches"
|
|
80
|
+
},
|
|
81
|
+
"next_priorities": []
|
|
82
|
+
}
|
|
83
|
+
project_notes_file = memory_dir / "project-notes.json"
|
|
84
|
+
project_notes_file.write_text(json.dumps(project_notes, indent=2))
|
|
85
|
+
created_files.append(str(project_notes_file))
|
|
86
|
+
|
|
87
|
+
# 2. session-hint.json - Last session state
|
|
88
|
+
session_hint = {
|
|
89
|
+
"last_command": None,
|
|
90
|
+
"command_timestamp": None,
|
|
91
|
+
"hours_ago": None,
|
|
92
|
+
"active_spec": None,
|
|
93
|
+
"current_branch": "main"
|
|
94
|
+
}
|
|
95
|
+
session_hint_file = memory_dir / "session-hint.json"
|
|
96
|
+
session_hint_file.write_text(json.dumps(session_hint, indent=2))
|
|
97
|
+
created_files.append(str(session_hint_file))
|
|
98
|
+
|
|
99
|
+
# 3. user-patterns.json - User preferences and expertise
|
|
100
|
+
user_patterns = {
|
|
101
|
+
"tech_preferences": {},
|
|
102
|
+
"expertise_signals": {
|
|
103
|
+
"ask_question_skip_rate": 0.0,
|
|
104
|
+
"custom_workflows": 0,
|
|
105
|
+
"estimated_level": "beginner"
|
|
106
|
+
},
|
|
107
|
+
"skip_questions": [],
|
|
108
|
+
"last_updated": datetime.now().isoformat() + "Z"
|
|
109
|
+
}
|
|
110
|
+
user_patterns_file = memory_dir / "user-patterns.json"
|
|
111
|
+
user_patterns_file.write_text(json.dumps(user_patterns, indent=2))
|
|
112
|
+
created_files.append(str(user_patterns_file))
|
|
113
|
+
|
|
114
|
+
return created_files
|
|
115
|
+
|
|
60
116
|
def initialize(
|
|
61
117
|
self,
|
|
62
118
|
mode: str = "personal",
|
|
63
|
-
locale: str = "ko"
|
|
119
|
+
locale: str = "en", # Changed from "ko" to "en" (will be configurable in /alfred:0-project)
|
|
64
120
|
language: str | None = None,
|
|
65
121
|
backup_enabled: bool = True,
|
|
66
122
|
progress_callback: ProgressCallback | None = None,
|
|
@@ -69,9 +125,9 @@ class ProjectInitializer:
|
|
|
69
125
|
"""Execute project initialization (5-phase process)
|
|
70
126
|
|
|
71
127
|
Args:
|
|
72
|
-
mode: Project mode (personal/team)
|
|
73
|
-
locale: Locale (ko/en/ja/zh)
|
|
74
|
-
language: Force language specification (auto-detect if None)
|
|
128
|
+
mode: Project mode (personal/team) - Default: personal (configurable in /alfred:0-project)
|
|
129
|
+
locale: Locale (ko/en/ja/zh) - Default: en (configurable in /alfred:0-project)
|
|
130
|
+
language: Force language specification (auto-detect if None) - Will be detected in /alfred:0-project
|
|
75
131
|
backup_enabled: Whether to enable backup
|
|
76
132
|
progress_callback: Progress callback
|
|
77
133
|
reinit: Reinitialization mode (v0.3.0, SPEC-INIT-003)
|
|
@@ -92,8 +148,9 @@ class ProjectInitializer:
|
|
|
92
148
|
f"Use 'python -m moai_adk status' to check the current configuration."
|
|
93
149
|
)
|
|
94
150
|
|
|
95
|
-
#
|
|
96
|
-
|
|
151
|
+
# Use provided language or default to generic
|
|
152
|
+
# Language detection now happens in /alfred:0-project via project-manager
|
|
153
|
+
detected_language = language or "generic"
|
|
97
154
|
|
|
98
155
|
# Phase 1: Preparation (backup and validation)
|
|
99
156
|
self.executor.execute_preparation_phase(
|
|
@@ -120,11 +177,21 @@ class ProjectInitializer:
|
|
|
120
177
|
)
|
|
121
178
|
|
|
122
179
|
# Phase 4: Configuration (generate config.json)
|
|
123
|
-
config_data: dict[str, str | bool] = {
|
|
124
|
-
"
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
180
|
+
config_data: dict[str, str | bool | dict] = {
|
|
181
|
+
"project": {
|
|
182
|
+
"name": self.path.name,
|
|
183
|
+
"mode": mode,
|
|
184
|
+
"locale": locale,
|
|
185
|
+
"language": detected_language,
|
|
186
|
+
# Language detection metadata (will be updated by project-manager via /alfred:0-project)
|
|
187
|
+
"language_detection": {
|
|
188
|
+
"detected_language": detected_language,
|
|
189
|
+
"detection_method": "cli_default", # Will be "context_aware" after /alfred:0-project
|
|
190
|
+
"confidence": None, # Will be calculated by project-manager
|
|
191
|
+
"markers": [], # Will be populated by project-manager
|
|
192
|
+
"confirmed_by": None, # Will be "user" after project-manager confirmation
|
|
193
|
+
}
|
|
194
|
+
}
|
|
128
195
|
}
|
|
129
196
|
config_files = self.executor.execute_configuration_phase(
|
|
130
197
|
self.path, config_data, progress_callback
|
|
@@ -135,6 +202,9 @@ class ProjectInitializer:
|
|
|
135
202
|
self.path, mode, progress_callback
|
|
136
203
|
)
|
|
137
204
|
|
|
205
|
+
# Phase 6: Create runtime memory files (auto-generated per user/session)
|
|
206
|
+
memory_files = self._create_memory_files()
|
|
207
|
+
|
|
138
208
|
# Generate result
|
|
139
209
|
duration = int((time.time() - start_time) * 1000) # ms
|
|
140
210
|
return InstallationResult(
|
|
@@ -144,7 +214,7 @@ class ProjectInitializer:
|
|
|
144
214
|
mode=mode,
|
|
145
215
|
locale=locale,
|
|
146
216
|
duration=duration,
|
|
147
|
-
created_files=resource_files + config_files,
|
|
217
|
+
created_files=resource_files + config_files + memory_files,
|
|
148
218
|
)
|
|
149
219
|
|
|
150
220
|
except Exception as e:
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
# @CODE:INIT-
|
|
1
|
+
# @CODE:INIT-005:PHASE | SPEC: .moai/specs/SPEC-INIT-003/spec.md | TEST: tests/unit/test_init_reinit.py
|
|
2
|
+
# @CODE:TEST-COVERAGE-001 | SPEC: SPEC-TEST-COVERAGE-001.md | TEST: tests/unit/test_phase_executor.py
|
|
2
3
|
"""Phase-based installation executor (SPEC-INIT-003 v0.4.2)
|
|
3
4
|
|
|
4
5
|
Runs the project initialization across five phases:
|
|
@@ -7,14 +8,18 @@ Runs the project initialization across five phases:
|
|
|
7
8
|
- Phase 3: Resource (copy templates while preserving user content)
|
|
8
9
|
- Phase 4: Configuration (generate configuration files)
|
|
9
10
|
- Phase 5: Validation (verify and finalize)
|
|
11
|
+
|
|
12
|
+
Test coverage includes 5-phase integration tests with backup, configuration, and validation
|
|
10
13
|
"""
|
|
11
14
|
|
|
12
15
|
import json
|
|
16
|
+
import platform
|
|
13
17
|
import shutil
|
|
14
18
|
import subprocess
|
|
15
19
|
from collections.abc import Callable
|
|
16
20
|
from datetime import datetime
|
|
17
21
|
from pathlib import Path
|
|
22
|
+
from typing import Any
|
|
18
23
|
|
|
19
24
|
from rich.console import Console
|
|
20
25
|
|
|
@@ -25,6 +30,7 @@ from moai_adk.core.project.backup_utils import (
|
|
|
25
30
|
is_protected_path,
|
|
26
31
|
)
|
|
27
32
|
from moai_adk.core.project.validator import ProjectValidator
|
|
33
|
+
from moai_adk.core.template.processor import TemplateProcessor
|
|
28
34
|
|
|
29
35
|
console = Console()
|
|
30
36
|
|
|
@@ -135,12 +141,21 @@ class PhaseExecutor:
|
|
|
135
141
|
)
|
|
136
142
|
|
|
137
143
|
# Copy resources via TemplateProcessor in silent mode
|
|
138
|
-
from moai_adk.core.template import TemplateProcessor
|
|
139
|
-
|
|
140
144
|
processor = TemplateProcessor(project_path)
|
|
141
145
|
|
|
142
146
|
# Set template variable context (if provided)
|
|
143
147
|
if config:
|
|
148
|
+
# @TAG:LANG-FIX-001:PY-CONFIG | Read language from nested config structure
|
|
149
|
+
language_config: dict[str, Any] = config.get("language", {})
|
|
150
|
+
if not isinstance(language_config, dict):
|
|
151
|
+
language_config = {}
|
|
152
|
+
|
|
153
|
+
# Detect OS for cross-platform Hook path configuration
|
|
154
|
+
hook_project_dir = (
|
|
155
|
+
"%CLAUDE_PROJECT_DIR%" if platform.system() == "Windows"
|
|
156
|
+
else "$CLAUDE_PROJECT_DIR"
|
|
157
|
+
)
|
|
158
|
+
|
|
144
159
|
context = {
|
|
145
160
|
"MOAI_VERSION": __version__,
|
|
146
161
|
"CREATION_TIMESTAMP": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
|
@@ -148,7 +163,12 @@ class PhaseExecutor:
|
|
|
148
163
|
"PROJECT_DESCRIPTION": config.get("description", ""),
|
|
149
164
|
"PROJECT_MODE": config.get("mode", "personal"),
|
|
150
165
|
"PROJECT_VERSION": config.get("version", "0.1.0"),
|
|
166
|
+
"PROJECT_OWNER": config.get("author", "@user"),
|
|
151
167
|
"AUTHOR": config.get("author", "@user"),
|
|
168
|
+
"CONVERSATION_LANGUAGE": language_config.get("conversation_language", "en"),
|
|
169
|
+
"CONVERSATION_LANGUAGE_NAME": language_config.get("conversation_language_name", "English"),
|
|
170
|
+
"CODEBASE_LANGUAGE": config.get("language", "generic"),
|
|
171
|
+
"HOOK_PROJECT_DIR": hook_project_dir,
|
|
152
172
|
}
|
|
153
173
|
processor.set_context(context)
|
|
154
174
|
|
|
@@ -166,7 +186,7 @@ class PhaseExecutor:
|
|
|
166
186
|
def execute_configuration_phase(
|
|
167
187
|
self,
|
|
168
188
|
project_path: Path,
|
|
169
|
-
config: dict[str, str | bool],
|
|
189
|
+
config: dict[str, str | bool | dict[Any, Any]],
|
|
170
190
|
progress_callback: ProgressCallback | None = None,
|
|
171
191
|
) -> list[str]:
|
|
172
192
|
"""Phase 4: generate configuration.
|
|
@@ -184,12 +204,52 @@ class PhaseExecutor:
|
|
|
184
204
|
"Phase 4: Generating configurations...", progress_callback
|
|
185
205
|
)
|
|
186
206
|
|
|
187
|
-
#
|
|
188
|
-
|
|
189
|
-
|
|
207
|
+
# Read existing config to preserve user settings (Issue #165)
|
|
208
|
+
config_path = project_path / ".moai" / "config.json"
|
|
209
|
+
existing_config: dict[str, Any] = {}
|
|
210
|
+
if config_path.exists():
|
|
211
|
+
try:
|
|
212
|
+
with open(config_path, "r", encoding="utf-8") as f:
|
|
213
|
+
existing_config = json.load(f)
|
|
214
|
+
except (json.JSONDecodeError, OSError):
|
|
215
|
+
# If config reading fails, start fresh
|
|
216
|
+
existing_config = {}
|
|
217
|
+
|
|
218
|
+
# Merge user settings from existing config (preserve customization)
|
|
219
|
+
if existing_config:
|
|
220
|
+
# Preserve user.nickname if it exists
|
|
221
|
+
if "user" in existing_config and isinstance(existing_config.get("user"), dict):
|
|
222
|
+
if "user" not in config:
|
|
223
|
+
config["user"] = {}
|
|
224
|
+
user_config = config["user"]
|
|
225
|
+
if isinstance(user_config, dict):
|
|
226
|
+
existing_user = existing_config["user"]
|
|
227
|
+
if isinstance(existing_user, dict) and "nickname" in existing_user:
|
|
228
|
+
user_config["nickname"] = existing_user["nickname"]
|
|
229
|
+
|
|
230
|
+
# Preserve language settings if they exist
|
|
231
|
+
if "language" in existing_config and isinstance(existing_config.get("language"), dict):
|
|
232
|
+
if "language" not in config:
|
|
233
|
+
config["language"] = {}
|
|
234
|
+
lang_config = config["language"]
|
|
235
|
+
if isinstance(lang_config, dict):
|
|
236
|
+
existing_lang = existing_config["language"]
|
|
237
|
+
if isinstance(existing_lang, dict):
|
|
238
|
+
# Preserve conversation_language settings
|
|
239
|
+
if "conversation_language" in existing_lang:
|
|
240
|
+
lang_config["conversation_language"] = existing_lang["conversation_language"]
|
|
241
|
+
if "conversation_language_name" in existing_lang:
|
|
242
|
+
lang_config["conversation_language_name"] = existing_lang["conversation_language_name"]
|
|
243
|
+
|
|
244
|
+
# Ensure project section exists and set defaults
|
|
245
|
+
if "project" not in config:
|
|
246
|
+
config["project"] = {}
|
|
247
|
+
# Type guard for mypy
|
|
248
|
+
project_config = config["project"]
|
|
249
|
+
if isinstance(project_config, dict):
|
|
250
|
+
project_config["optimized"] = False # Default value
|
|
190
251
|
|
|
191
252
|
# Write config.json
|
|
192
|
-
config_path = project_path / ".moai" / "config.json"
|
|
193
253
|
with open(config_path, "w", encoding="utf-8") as f:
|
|
194
254
|
json.dump(config, f, indent=2, ensure_ascii=False)
|
|
195
255
|
|
|
@@ -203,9 +263,8 @@ class PhaseExecutor:
|
|
|
203
263
|
) -> None:
|
|
204
264
|
"""Phase 5: validation and wrap-up.
|
|
205
265
|
|
|
206
|
-
@CODE:INIT-
|
|
207
|
-
@REQ:VALIDATION-
|
|
208
|
-
@CODE:INIT-004:PHASE5-INTEGRATION | Integration of validation in Phase 5
|
|
266
|
+
@CODE:INIT-PHASE-001 | Phase 5 verification logic
|
|
267
|
+
@REQ:VALIDATION-002 | SPEC-INIT-004: Verify required files after initialization completion
|
|
209
268
|
|
|
210
269
|
Args:
|
|
211
270
|
project_path: Project path.
|
|
@@ -217,8 +276,8 @@ class PhaseExecutor:
|
|
|
217
276
|
"Phase 5: Validation and finalization...", progress_callback
|
|
218
277
|
)
|
|
219
278
|
|
|
220
|
-
#
|
|
221
|
-
#
|
|
279
|
+
# Validate installation results
|
|
280
|
+
# Comprehensive installation validation
|
|
222
281
|
# Verifies all required files including 4 Alfred command files:
|
|
223
282
|
# - 0-project.md, 1-plan.md, 2-run.md, 3-sync.md
|
|
224
283
|
self.validator.validate_installation(project_path)
|
|
@@ -299,8 +358,12 @@ class PhaseExecutor:
|
|
|
299
358
|
cwd=project_path,
|
|
300
359
|
check=True,
|
|
301
360
|
capture_output=True,
|
|
361
|
+
timeout=30, # Default timeout for git operations
|
|
302
362
|
)
|
|
303
363
|
# Intentionally avoid printing to keep progress output clean
|
|
364
|
+
except subprocess.TimeoutExpired:
|
|
365
|
+
# Timeout is non-fatal
|
|
366
|
+
pass
|
|
304
367
|
except subprocess.CalledProcessError:
|
|
305
368
|
# Only log on error; failures are non-fatal
|
|
306
369
|
pass
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @CODE:CORE-PROJECT-003 | SPEC: SPEC-CORE-PROJECT-001.md, SPEC-INIT-004.md
|
|
2
|
-
# @CODE:INIT-
|
|
3
|
-
# @REQ:VALIDATION-
|
|
4
|
-
# @SPEC:VERIFICATION-
|
|
2
|
+
# @CODE:INIT-VALIDATOR-001:VALIDATION | Chain: SPEC-INIT-004 -> CODE-INIT-004 -> TEST-INIT-004
|
|
3
|
+
# @REQ:VALIDATION-002 | SPEC-INIT-004: Initial verification after installation completion
|
|
4
|
+
# @SPEC:VERIFICATION-002 | SPEC-INIT-004: Verification logic implementation
|
|
5
5
|
"""Project initialization validation module.
|
|
6
6
|
|
|
7
7
|
Validates system requirements and installation results.
|
|
@@ -13,8 +13,8 @@ SPEC-INIT-004 Enhancement:
|
|
|
13
13
|
|
|
14
14
|
TAG Chain:
|
|
15
15
|
SPEC-INIT-004 (spec.md)
|
|
16
|
-
└─> @CODE:INIT-
|
|
17
|
-
└─> @TEST:INIT-
|
|
16
|
+
└─> @CODE:INIT-VALIDATOR-001:VALIDATION (this file)
|
|
17
|
+
└─> @TEST:INIT-005:VALIDATION (test_validator.py)
|
|
18
18
|
"""
|
|
19
19
|
|
|
20
20
|
import shutil
|
|
@@ -98,9 +98,9 @@ class ProjectValidator:
|
|
|
98
98
|
def validate_installation(self, project_path: Path) -> None:
|
|
99
99
|
"""Validate installation results.
|
|
100
100
|
|
|
101
|
-
@CODE:INIT-
|
|
102
|
-
@SPEC:VERIFICATION-
|
|
103
|
-
@REQ:VALIDATION-
|
|
101
|
+
@CODE:INIT-VALIDATOR-001:VERIFY-001 | Verification of all required files upon successful completion
|
|
102
|
+
@SPEC:VERIFICATION-002 | SPEC-INIT-004: Verification checklist implementation
|
|
103
|
+
@REQ:VALIDATION-002 | UR-003: All required files verified after init completes
|
|
104
104
|
|
|
105
105
|
Args:
|
|
106
106
|
project_path: Project path.
|
|
@@ -109,22 +109,22 @@ class ProjectValidator:
|
|
|
109
109
|
ValidationError: Raised when installation was incomplete.
|
|
110
110
|
"""
|
|
111
111
|
# Verify required directories
|
|
112
|
-
# @CODE:INIT-
|
|
112
|
+
# @CODE:INIT-VALIDATOR-001:VALIDATION-001 | Core project structure validation
|
|
113
113
|
for directory in self.REQUIRED_DIRECTORIES:
|
|
114
114
|
dir_path = project_path / directory
|
|
115
115
|
if not dir_path.exists():
|
|
116
116
|
raise ValidationError(f"Required directory not found: {directory}")
|
|
117
117
|
|
|
118
118
|
# Verify required files
|
|
119
|
-
# @CODE:INIT-
|
|
119
|
+
# @CODE:INIT-VALIDATOR-001:VALIDATION-002 | Required configuration files validation
|
|
120
120
|
for file in self.REQUIRED_FILES:
|
|
121
121
|
file_path = project_path / file
|
|
122
122
|
if not file_path.exists():
|
|
123
123
|
raise ValidationError(f"Required file not found: {file}")
|
|
124
124
|
|
|
125
|
-
# @CODE:INIT-
|
|
125
|
+
# @CODE:INIT-VALIDATOR-001:VERIFY-002 | Verify required Alfred command files (SPEC-INIT-004)
|
|
126
126
|
# @REQ:COMMAND-GENERATION-001 | All 4 Alfred command files must be created
|
|
127
|
-
# @CODE:INIT-
|
|
127
|
+
# @CODE:INIT-VALIDATOR-001:ALFRED-VALIDATION | Alfred command file integrity check
|
|
128
128
|
alfred_dir = project_path / ".claude" / "commands" / "alfred"
|
|
129
129
|
missing_commands = []
|
|
130
130
|
for cmd in self.REQUIRED_ALFRED_COMMANDS:
|
|
@@ -135,7 +135,7 @@ class ProjectValidator:
|
|
|
135
135
|
if missing_commands:
|
|
136
136
|
missing_list = ", ".join(missing_commands)
|
|
137
137
|
# @SPEC:ERROR-HANDLING-001 | Clear error messages upon missing files
|
|
138
|
-
# @CODE:INIT-
|
|
138
|
+
# @CODE:INIT-VALIDATOR-001:ERROR-MESSAGE | Clear reporting of missing Alfred command files
|
|
139
139
|
raise ValidationError(
|
|
140
140
|
f"Required Alfred command files not found: {missing_list}"
|
|
141
141
|
)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @CODE:TRUST-
|
|
1
|
+
# @CODE:TRUST-002 | SPEC: SPEC-TRUST-001/spec.md | TEST: tests/unit/core/quality/
|
|
2
2
|
"""TRUST principle automated validation system"""
|
|
3
3
|
|
|
4
4
|
from moai_adk.core.quality.trust_checker import TrustChecker
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# @CODE:DOC-TAG-004 | TAG validation core module (Components 1, 2, 3 & 4)
|
|
3
|
+
"""TAG validation and management for MoAI-ADK
|
|
4
|
+
|
|
5
|
+
This module provides TAG validation functionality for:
|
|
6
|
+
- Pre-commit hook validation (Component 1)
|
|
7
|
+
- CI/CD pipeline validation (Component 2)
|
|
8
|
+
- Central validation system (Component 3)
|
|
9
|
+
- Documentation & Reporting (Component 4)
|
|
10
|
+
- TAG format checking
|
|
11
|
+
- Duplicate detection
|
|
12
|
+
- Orphan detection
|
|
13
|
+
- Chain integrity validation
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
# Component 1: Pre-commit validator
|
|
17
|
+
# Component 2: CI/CD validator
|
|
18
|
+
from .ci_validator import CIValidator
|
|
19
|
+
from .pre_commit_validator import (
|
|
20
|
+
PreCommitValidator,
|
|
21
|
+
ValidationError,
|
|
22
|
+
ValidationResult,
|
|
23
|
+
ValidationWarning,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
# Component 4: Documentation & Reporting
|
|
27
|
+
from .reporter import (
|
|
28
|
+
CoverageAnalyzer,
|
|
29
|
+
CoverageMetrics,
|
|
30
|
+
InventoryGenerator,
|
|
31
|
+
MatrixGenerator,
|
|
32
|
+
ReportFormatter,
|
|
33
|
+
ReportGenerator,
|
|
34
|
+
ReportResult,
|
|
35
|
+
StatisticsGenerator,
|
|
36
|
+
StatisticsReport,
|
|
37
|
+
TagInventory,
|
|
38
|
+
TagMatrix,
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
# Component 3: Central validation system
|
|
42
|
+
from .validator import (
|
|
43
|
+
CentralValidationResult,
|
|
44
|
+
CentralValidator,
|
|
45
|
+
ChainValidator,
|
|
46
|
+
DuplicateValidator,
|
|
47
|
+
FormatValidator,
|
|
48
|
+
OrphanValidator,
|
|
49
|
+
TagValidator,
|
|
50
|
+
ValidationConfig,
|
|
51
|
+
ValidationIssue,
|
|
52
|
+
ValidationStatistics,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
__all__ = [
|
|
56
|
+
# Component 1
|
|
57
|
+
"PreCommitValidator",
|
|
58
|
+
"ValidationResult",
|
|
59
|
+
"ValidationError",
|
|
60
|
+
"ValidationWarning",
|
|
61
|
+
# Component 2
|
|
62
|
+
"CIValidator",
|
|
63
|
+
# Component 3
|
|
64
|
+
"ValidationConfig",
|
|
65
|
+
"TagValidator",
|
|
66
|
+
"DuplicateValidator",
|
|
67
|
+
"OrphanValidator",
|
|
68
|
+
"ChainValidator",
|
|
69
|
+
"FormatValidator",
|
|
70
|
+
"CentralValidator",
|
|
71
|
+
"CentralValidationResult",
|
|
72
|
+
"ValidationIssue",
|
|
73
|
+
"ValidationStatistics",
|
|
74
|
+
# Component 4
|
|
75
|
+
"TagInventory",
|
|
76
|
+
"TagMatrix",
|
|
77
|
+
"InventoryGenerator",
|
|
78
|
+
"MatrixGenerator",
|
|
79
|
+
"CoverageAnalyzer",
|
|
80
|
+
"StatisticsGenerator",
|
|
81
|
+
"ReportFormatter",
|
|
82
|
+
"ReportGenerator",
|
|
83
|
+
"CoverageMetrics",
|
|
84
|
+
"StatisticsReport",
|
|
85
|
+
"ReportResult",
|
|
86
|
+
]
|