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
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# moai-project-config-manager
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The `moai-project-config-manager` skill provides comprehensive configuration management for MoAI projects, handling all `.moai/config.json` CRUD operations with robust validation, error handling, and intelligent merge strategies.
|
|
6
|
+
|
|
7
|
+
## Key Features
|
|
8
|
+
|
|
9
|
+
- **Complete CRUD Operations**: Create, Read, Update, Delete configuration sections
|
|
10
|
+
- **Validation Engine**: Pre-save validation for all configuration changes
|
|
11
|
+
- **Merge Strategy**: Preserve unmodified sections while updating selected ones
|
|
12
|
+
- **Error Recovery**: Handle missing files, invalid JSON, permission issues
|
|
13
|
+
- **Batch Updates**: Handle multiple setting changes in single operation
|
|
14
|
+
- **Backup & Restore**: Automatic backup before major changes
|
|
15
|
+
- **Interactive Workflows**: User-friendly setting modification with TUI surveys
|
|
16
|
+
|
|
17
|
+
## Quick Start
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
# Interactive configuration management
|
|
21
|
+
Skill("moai-project-config-manager")
|
|
22
|
+
|
|
23
|
+
# Programmatic update
|
|
24
|
+
Skill("moai-project-config-manager", action="update", changes={
|
|
25
|
+
"language": {
|
|
26
|
+
"conversation_language": "en",
|
|
27
|
+
"conversation_language_name": "English"
|
|
28
|
+
}
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
# Validate configuration
|
|
32
|
+
Skill("moai-project-config-manager", action="validate")
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Configuration Sections Managed
|
|
36
|
+
|
|
37
|
+
1. **Language Settings**: Conversation language and agent prompt language
|
|
38
|
+
2. **User Settings**: User nickname and preferences
|
|
39
|
+
3. **GitHub Settings**: Auto-delete branches and SPEC git workflow
|
|
40
|
+
4. **Report Generation**: Enable/Minimal/Disable with token optimization
|
|
41
|
+
5. **Project Domains**: Multi-select domain configuration
|
|
42
|
+
|
|
43
|
+
## Files
|
|
44
|
+
|
|
45
|
+
- `SKILL.md` - Main skill documentation and workflow guide
|
|
46
|
+
- `reference.md` - Complete API reference and schema documentation
|
|
47
|
+
- `examples.md` - Comprehensive usage examples and integration patterns
|
|
48
|
+
- `validate.py` - Skill structure validation script
|
|
49
|
+
|
|
50
|
+
## Integration
|
|
51
|
+
|
|
52
|
+
This skill integrates seamlessly with Alfred commands:
|
|
53
|
+
- `/alfred:0-project` - Project initialization and setting updates
|
|
54
|
+
- `/alfred:1-plan` - Configuration-aware planning
|
|
55
|
+
- `/alfred:2-run` - Configuration-guided execution
|
|
56
|
+
- `/alfred:3-sync` - Configuration synchronization
|
|
57
|
+
|
|
58
|
+
## Validation
|
|
59
|
+
|
|
60
|
+
Run the included validation script to verify skill structure:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
python3 validate.py
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Size and Complexity
|
|
67
|
+
|
|
68
|
+
- **Total Documentation**: ~62KB (vs 600+ lines of original command)
|
|
69
|
+
- **Structured Approach**: Modular, reusable, maintainable
|
|
70
|
+
- **Comprehensive Coverage**: All configuration management workflows
|
|
71
|
+
- **Error Handling**: Robust error recovery and validation
|
|
72
|
+
- **Performance**: Optimized for fast operations and minimal resource usage
|
|
73
|
+
|
|
74
|
+
## Benefits
|
|
75
|
+
|
|
76
|
+
1. **Reduced Complexity**: Extracted 600+ line command into focused skill
|
|
77
|
+
2. **Reusability**: Can be used across different Alfred commands
|
|
78
|
+
3. **Maintainability**: Clear separation of concerns and documentation
|
|
79
|
+
4. **Reliability**: Comprehensive validation and error handling
|
|
80
|
+
5. **User Experience**: Interactive workflows with clear feedback
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
**Generated by**: skill-factory agent
|
|
85
|
+
**Created**: 2025-11-05
|
|
86
|
+
**Version**: 1.0.0
|
|
87
|
+
**Status**: Production Ready
|
|
@@ -0,0 +1,552 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moai-project-config-manager
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
created: 2025-11-05
|
|
5
|
+
updated: 2025-11-05
|
|
6
|
+
status: active
|
|
7
|
+
description: Complete config.json CRUD operations with validation, merge strategy, and error recovery
|
|
8
|
+
freedom: medium
|
|
9
|
+
type: project
|
|
10
|
+
tags: [project, configuration, management, validation, crud]
|
|
11
|
+
allowed-tools:
|
|
12
|
+
- Read
|
|
13
|
+
- Write
|
|
14
|
+
- Edit
|
|
15
|
+
- AskUserQuestion
|
|
16
|
+
- Bash
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Project Configuration Manager - Skill Guide
|
|
20
|
+
|
|
21
|
+
## Skill Metadata
|
|
22
|
+
|
|
23
|
+
| Field | Value |
|
|
24
|
+
| ----- | ----- |
|
|
25
|
+
| **Skill Name** | moai-project-config-manager |
|
|
26
|
+
| **Version** | 1.0.0 (2025-11-05) |
|
|
27
|
+
| **Core Function** | Configuration file lifecycle management |
|
|
28
|
+
| **Scope** | All `.moai/config.json` operations |
|
|
29
|
+
| **Freedom** | Medium (guided automation) |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## What It Does
|
|
34
|
+
|
|
35
|
+
**Purpose**: Centralized management of all MoAI project configuration operations with robust validation, error handling, and intelligent merge strategies.
|
|
36
|
+
|
|
37
|
+
**Key capabilities**:
|
|
38
|
+
- ✅ **Complete CRUD**: Create, Read, Update, Delete configuration sections
|
|
39
|
+
- ✅ **Validation Engine**: Pre-save validation for all configuration changes
|
|
40
|
+
- ✅ **Merge Strategy**: Preserve unmodified sections while updating selected ones
|
|
41
|
+
- ✅ **Error Recovery**: Handle missing files, invalid JSON, permission issues
|
|
42
|
+
- ✅ **Batch Updates**: Handle multiple setting changes in single operation
|
|
43
|
+
- ✅ **Backup & Restore**: Automatic backup before major changes
|
|
44
|
+
- ✅ **Interactive Workflows**: User-friendly setting modification with TUI surveys
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Core Configuration Structure
|
|
49
|
+
|
|
50
|
+
The skill manages these main configuration sections:
|
|
51
|
+
|
|
52
|
+
### 1. Language Settings
|
|
53
|
+
```json
|
|
54
|
+
"language": {
|
|
55
|
+
"conversation_language": "ko|en|ja|zh",
|
|
56
|
+
"conversation_language_name": "한국어|English|日本語|中文",
|
|
57
|
+
"agent_prompt_language": "english|localized"
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 2. User Settings
|
|
62
|
+
```json
|
|
63
|
+
"user": {
|
|
64
|
+
"nickname": "string (max 20 chars)"
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 3. GitHub Settings
|
|
69
|
+
```json
|
|
70
|
+
"github": {
|
|
71
|
+
"auto_delete_branches": true|false,
|
|
72
|
+
"spec_git_workflow": "feature_branch|develop_direct|per_spec"
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 4. Report Generation
|
|
77
|
+
```json
|
|
78
|
+
"report_generation": {
|
|
79
|
+
"enabled": true|false,
|
|
80
|
+
"auto_create": true|false,
|
|
81
|
+
"user_choice": "Enable|Minimal|Disable"
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 5. Project Domains
|
|
86
|
+
```json
|
|
87
|
+
"stack": {
|
|
88
|
+
"selected_domains": ["frontend", "backend", "data", "devops", "security"]
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Workflow: Configuration Management Operations
|
|
95
|
+
|
|
96
|
+
### Phase 1: Load & Validate
|
|
97
|
+
|
|
98
|
+
**Always validate before operations**:
|
|
99
|
+
|
|
100
|
+
```python
|
|
101
|
+
# 1. Check file existence
|
|
102
|
+
if not Path(".moai/config.json").exists():
|
|
103
|
+
raise ConfigError("Configuration file not found")
|
|
104
|
+
|
|
105
|
+
# 2. Validate JSON structure
|
|
106
|
+
try:
|
|
107
|
+
config = json.loads(Path(".moai/config.json").read_text())
|
|
108
|
+
except json.JSONDecodeError as e:
|
|
109
|
+
raise ConfigError(f"Invalid JSON in config.json: {e}")
|
|
110
|
+
|
|
111
|
+
# 3. Validate required sections
|
|
112
|
+
required_sections = ["language", "github", "report_generation"]
|
|
113
|
+
for section in required_sections:
|
|
114
|
+
if section not in config:
|
|
115
|
+
raise ConfigError(f"Missing required section: {section}")
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Phase 2: Interactive Setting Selection
|
|
119
|
+
|
|
120
|
+
**Present setting modification options**:
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
## Current Project Settings
|
|
124
|
+
|
|
125
|
+
✅ **Language**: [current value]
|
|
126
|
+
✅ **Nickname**: [current value]
|
|
127
|
+
✅ **Agent Prompt Language**: [current value]
|
|
128
|
+
✅ **GitHub Auto-delete Branches**: [current value]
|
|
129
|
+
✅ **SPEC Git Workflow**: [current value]
|
|
130
|
+
✅ **Report Generation**: [current value]
|
|
131
|
+
✅ **Selected Domains**: [current values]
|
|
132
|
+
|
|
133
|
+
Which settings would you like to modify?
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Multi-select options** (AskUserQuestion):
|
|
137
|
+
1. "🌍 Language & Agent Prompt Language"
|
|
138
|
+
2. "👤 Nickname"
|
|
139
|
+
3. "🔧 GitHub Settings"
|
|
140
|
+
4. "📊 Report Generation"
|
|
141
|
+
5. "🎯 Project Domains"
|
|
142
|
+
|
|
143
|
+
### Phase 3: Collect New Values (Batched Questions)
|
|
144
|
+
|
|
145
|
+
**Language Section** (if selected):
|
|
146
|
+
```python
|
|
147
|
+
Question 1: "Which conversation language do you prefer?"
|
|
148
|
+
Options: ["English", "한국어", "日本語", "中文"]
|
|
149
|
+
|
|
150
|
+
Question 2: "Which agent prompt language should Alfred use?"
|
|
151
|
+
Options: ["English (Global Standard)", "Selected Language (Localized)"]
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**Nickname Section** (if selected):
|
|
155
|
+
```python
|
|
156
|
+
Question: "What would you like your nickname to be?"
|
|
157
|
+
Type: text_input (max 20 characters)
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**GitHub Section** (if selected):
|
|
161
|
+
```python
|
|
162
|
+
Question 1: "Auto-delete branches after merge?"
|
|
163
|
+
Options: ["Yes, enable", "No, disable", "Keep current"]
|
|
164
|
+
|
|
165
|
+
Question 2: "SPEC git workflow preference?"
|
|
166
|
+
Options: ["Feature Branch + PR", "Direct Commit to Develop", "Decide per SPEC", "Keep current"]
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**Report Generation Section** (if selected):
|
|
170
|
+
```python
|
|
171
|
+
Question: "Report generation preference?"
|
|
172
|
+
Options: [
|
|
173
|
+
"📊 Enable (Full reports with 50-60 tokens)",
|
|
174
|
+
"⚡ Minimal (Essential reports with 20-30 tokens)",
|
|
175
|
+
"🚫 Disable (No automatic reports, 0 tokens)"
|
|
176
|
+
]
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**Project Domains Section** (if selected):
|
|
180
|
+
```python
|
|
181
|
+
Question: "Select project domains?"
|
|
182
|
+
Options: ["frontend", "backend", "data", "devops", "security", "Clear all", "Keep current"]
|
|
183
|
+
Multi-select: true
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Phase 4: Intelligent Merge & Update
|
|
187
|
+
|
|
188
|
+
**Update strategy - preserve unmodified sections**:
|
|
189
|
+
|
|
190
|
+
```python
|
|
191
|
+
def merge_config_updates(config, updates):
|
|
192
|
+
"""Merge user updates into existing config"""
|
|
193
|
+
new_config = copy.deepcopy(config)
|
|
194
|
+
|
|
195
|
+
for section, changes in updates.items():
|
|
196
|
+
if section in new_config:
|
|
197
|
+
new_config[section].update(changes)
|
|
198
|
+
else:
|
|
199
|
+
new_config[section] = changes
|
|
200
|
+
|
|
201
|
+
return new_config
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**Update mappings**:
|
|
205
|
+
|
|
206
|
+
**Language Updates**:
|
|
207
|
+
```python
|
|
208
|
+
language_code_map = {
|
|
209
|
+
"English": "en", "한국어": "ko", "日本語": "ja", "中文": "zh"
|
|
210
|
+
}
|
|
211
|
+
agent_language_map = {
|
|
212
|
+
"English (Global Standard)": "english",
|
|
213
|
+
"Selected Language (Localized)": "localized"
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**GitHub Updates**:
|
|
218
|
+
```python
|
|
219
|
+
workflow_map = {
|
|
220
|
+
"Feature Branch + PR": "feature_branch",
|
|
221
|
+
"Direct Commit to Develop": "develop_direct",
|
|
222
|
+
"Decide per SPEC": "per_spec"
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**Report Updates**:
|
|
227
|
+
```python
|
|
228
|
+
report_map = {
|
|
229
|
+
"📊 Enable": {"enabled": True, "auto_create": True, "user_choice": "Enable"},
|
|
230
|
+
"⚡ Minimal": {"enabled": True, "auto_create": False, "user_choice": "Minimal"},
|
|
231
|
+
"🚫 Disable": {"enabled": False, "auto_create": False, "user_choice": "Disable"}
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Phase 5: Validation & Save
|
|
236
|
+
|
|
237
|
+
**Pre-save validation**:
|
|
238
|
+
```python
|
|
239
|
+
def validate_config(config):
|
|
240
|
+
"""Validate configuration before saving"""
|
|
241
|
+
errors = []
|
|
242
|
+
|
|
243
|
+
# Validate language codes
|
|
244
|
+
valid_languages = ["en", "ko", "ja", "zh"]
|
|
245
|
+
if config.get("language", {}).get("conversation_language") not in valid_languages:
|
|
246
|
+
errors.append("Invalid conversation language")
|
|
247
|
+
|
|
248
|
+
# Validate nickname length
|
|
249
|
+
nickname = config.get("user", {}).get("nickname", "")
|
|
250
|
+
if len(nickname) > 20:
|
|
251
|
+
errors.append("Nickname exceeds 20 characters")
|
|
252
|
+
|
|
253
|
+
# Validate GitHub workflow
|
|
254
|
+
valid_workflows = ["feature_branch", "develop_direct", "per_spec"]
|
|
255
|
+
if config.get("github", {}).get("spec_git_workflow") not in valid_workflows:
|
|
256
|
+
errors.append("Invalid SPEC git workflow")
|
|
257
|
+
|
|
258
|
+
return errors
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
**Atomic save with backup**:
|
|
262
|
+
```python
|
|
263
|
+
def save_config_safely(config):
|
|
264
|
+
"""Save configuration with automatic backup"""
|
|
265
|
+
# Create backup
|
|
266
|
+
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
267
|
+
backup_path = f".moai/config.backup.{timestamp}.json"
|
|
268
|
+
shutil.copy2(".moai/config.json", backup_path)
|
|
269
|
+
|
|
270
|
+
try:
|
|
271
|
+
# Validate before save
|
|
272
|
+
errors = validate_config(config)
|
|
273
|
+
if errors:
|
|
274
|
+
raise ConfigError(f"Validation failed: {errors}")
|
|
275
|
+
|
|
276
|
+
# Atomic write
|
|
277
|
+
with open(".moai/config.json.tmp", "w") as f:
|
|
278
|
+
json.dump(config, f, indent=2, ensure_ascii=False)
|
|
279
|
+
|
|
280
|
+
os.replace(".moai/config.json.tmp", ".moai/config.json")
|
|
281
|
+
|
|
282
|
+
except Exception as e:
|
|
283
|
+
# Restore from backup on error
|
|
284
|
+
shutil.copy2(backup_path, ".moai/config.json")
|
|
285
|
+
raise ConfigError(f"Save failed, restored backup: {e}")
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## Error Handling & Recovery
|
|
291
|
+
|
|
292
|
+
### Common Error Scenarios
|
|
293
|
+
|
|
294
|
+
**1. Missing Configuration File**
|
|
295
|
+
```python
|
|
296
|
+
if not Path(".moai/config.json").exists():
|
|
297
|
+
# Create default configuration
|
|
298
|
+
default_config = create_default_config()
|
|
299
|
+
save_config_safely(default_config)
|
|
300
|
+
return "Created new configuration file with defaults"
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**2. Invalid JSON**
|
|
304
|
+
```python
|
|
305
|
+
try:
|
|
306
|
+
config = json.loads(config_content)
|
|
307
|
+
except json.JSONDecodeError:
|
|
308
|
+
# Try to repair common JSON issues
|
|
309
|
+
repaired = attempt_json_repair(config_content)
|
|
310
|
+
if repaired:
|
|
311
|
+
config = json.loads(repaired)
|
|
312
|
+
save_config_safely(config)
|
|
313
|
+
else:
|
|
314
|
+
raise ConfigError("Cannot repair invalid JSON")
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
**3. Permission Issues**
|
|
318
|
+
```python
|
|
319
|
+
try:
|
|
320
|
+
save_config_safely(config)
|
|
321
|
+
except PermissionError:
|
|
322
|
+
# Try to fix permissions
|
|
323
|
+
os.chmod(".moai", 0o755)
|
|
324
|
+
os.chmod(".moai/config.json", 0o644)
|
|
325
|
+
save_config_safely(config)
|
|
326
|
+
except Exception as e:
|
|
327
|
+
raise ConfigError(f"Permission denied: {e}")
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### Validation Rules
|
|
331
|
+
|
|
332
|
+
**Language Settings**:
|
|
333
|
+
- `conversation_language`: Must be one of ["en", "ko", "ja", "zh"]
|
|
334
|
+
- `conversation_language_name`: Must match language code
|
|
335
|
+
- `agent_prompt_language`: Must be "english" or "localized"
|
|
336
|
+
|
|
337
|
+
**User Settings**:
|
|
338
|
+
- `nickname`: Max 20 characters, no special chars
|
|
339
|
+
|
|
340
|
+
**GitHub Settings**:
|
|
341
|
+
- `auto_delete_branches`: Must be boolean
|
|
342
|
+
- `spec_git_workflow`: Must be one of ["feature_branch", "develop_direct", "per_spec"]
|
|
343
|
+
|
|
344
|
+
**Report Settings**:
|
|
345
|
+
- `enabled`: Must be boolean
|
|
346
|
+
- `auto_create`: Must be boolean
|
|
347
|
+
- `user_choice`: Must be one of ["Enable", "Minimal", "Disable"]
|
|
348
|
+
|
|
349
|
+
**Domain Settings**:
|
|
350
|
+
- `selected_domains`: Must be array of valid domain strings
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## Usage Examples
|
|
355
|
+
|
|
356
|
+
### Basic Configuration Update
|
|
357
|
+
```python
|
|
358
|
+
# Load current configuration
|
|
359
|
+
Skill("moai-project-config-manager")
|
|
360
|
+
|
|
361
|
+
# Interactive workflow:
|
|
362
|
+
# 1. Display current settings
|
|
363
|
+
# 2. User selects sections to modify
|
|
364
|
+
# 3. Collect new values
|
|
365
|
+
# 4. Validate and merge changes
|
|
366
|
+
# 5. Save with backup
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### Programmatic Updates
|
|
370
|
+
```python
|
|
371
|
+
# Direct configuration update (non-interactive)
|
|
372
|
+
updates = {
|
|
373
|
+
"language": {
|
|
374
|
+
"conversation_language": "en",
|
|
375
|
+
"conversation_language_name": "English"
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
Skill("moai-project-config-manager", action="update", changes=updates)
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
### Configuration Validation
|
|
383
|
+
```python
|
|
384
|
+
# Validate existing configuration
|
|
385
|
+
result = Skill("moai-project-config-manager", action="validate")
|
|
386
|
+
if result.errors:
|
|
387
|
+
print(f"Configuration errors: {result.errors}")
|
|
388
|
+
else:
|
|
389
|
+
print("Configuration is valid")
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
### Configuration Backup
|
|
393
|
+
```python
|
|
394
|
+
# Create manual backup
|
|
395
|
+
backup_path = Skill("moai-project-config-manager", action="backup")
|
|
396
|
+
print(f"Configuration backed up to: {backup_path}")
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
---
|
|
400
|
+
|
|
401
|
+
## Best Practices
|
|
402
|
+
|
|
403
|
+
### 1. Always Validate
|
|
404
|
+
- Validate before every save operation
|
|
405
|
+
- Check JSON structure, required fields, and value constraints
|
|
406
|
+
- Provide clear error messages for validation failures
|
|
407
|
+
|
|
408
|
+
### 2. Preserve Data
|
|
409
|
+
- Always use merge strategy, never overwrite entire config
|
|
410
|
+
- Create backups before major changes
|
|
411
|
+
- Maintain backward compatibility
|
|
412
|
+
|
|
413
|
+
### 3. User Experience
|
|
414
|
+
- Show current values before asking for changes
|
|
415
|
+
- Group related settings together
|
|
416
|
+
- Use clear, descriptive option labels
|
|
417
|
+
- Provide progress feedback during operations
|
|
418
|
+
|
|
419
|
+
### 4. Error Recovery
|
|
420
|
+
- Automatic backup creation
|
|
421
|
+
- Graceful degradation on errors
|
|
422
|
+
- Clear error messages with recovery suggestions
|
|
423
|
+
- Rollback capability for failed operations
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## Integration Points
|
|
428
|
+
|
|
429
|
+
### With Alfred Commands
|
|
430
|
+
- **`/alfred:0-project`**: Use for project initialization and setting updates
|
|
431
|
+
- **`/alfred:1-plan`**: Access configuration for planning decisions
|
|
432
|
+
- **`/alfred:2-run`**: Use configuration during execution
|
|
433
|
+
- **`/alfred:3-sync`**: Update configuration based on project changes
|
|
434
|
+
|
|
435
|
+
### With Other Skills
|
|
436
|
+
- **`moai-alfred-ask-user-questions`**: Use for interactive setting collection
|
|
437
|
+
- **`moai-skill-factory`**: Integrate with skill configuration management
|
|
438
|
+
- **Domain-specific skills**: Respect configuration settings for behavior
|
|
439
|
+
|
|
440
|
+
---
|
|
441
|
+
|
|
442
|
+
## Configuration Schema Reference
|
|
443
|
+
|
|
444
|
+
Complete configuration schema with validation rules:
|
|
445
|
+
|
|
446
|
+
```json
|
|
447
|
+
{
|
|
448
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
449
|
+
"type": "object",
|
|
450
|
+
"properties": {
|
|
451
|
+
"language": {
|
|
452
|
+
"type": "object",
|
|
453
|
+
"properties": {
|
|
454
|
+
"conversation_language": {
|
|
455
|
+
"type": "string",
|
|
456
|
+
"enum": ["en", "ko", "ja", "zh"]
|
|
457
|
+
},
|
|
458
|
+
"conversation_language_name": {
|
|
459
|
+
"type": "string",
|
|
460
|
+
"enum": ["English", "한국어", "日本語", "中文"]
|
|
461
|
+
},
|
|
462
|
+
"agent_prompt_language": {
|
|
463
|
+
"type": "string",
|
|
464
|
+
"enum": ["english", "localized"]
|
|
465
|
+
}
|
|
466
|
+
},
|
|
467
|
+
"required": ["conversation_language", "conversation_language_name", "agent_prompt_language"]
|
|
468
|
+
},
|
|
469
|
+
"user": {
|
|
470
|
+
"type": "object",
|
|
471
|
+
"properties": {
|
|
472
|
+
"nickname": {
|
|
473
|
+
"type": "string",
|
|
474
|
+
"maxLength": 20,
|
|
475
|
+
"pattern": "^[a-zA-Z0-9가-힣ぁ-ゔ一-龯\\s]+$"
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
},
|
|
479
|
+
"github": {
|
|
480
|
+
"type": "object",
|
|
481
|
+
"properties": {
|
|
482
|
+
"auto_delete_branches": {"type": "boolean"},
|
|
483
|
+
"spec_git_workflow": {
|
|
484
|
+
"type": "string",
|
|
485
|
+
"enum": ["feature_branch", "develop_direct", "per_spec"]
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
"report_generation": {
|
|
490
|
+
"type": "object",
|
|
491
|
+
"properties": {
|
|
492
|
+
"enabled": {"type": "boolean"},
|
|
493
|
+
"auto_create": {"type": "boolean"},
|
|
494
|
+
"user_choice": {
|
|
495
|
+
"type": "string",
|
|
496
|
+
"enum": ["Enable", "Minimal", "Disable"]
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
},
|
|
500
|
+
"stack": {
|
|
501
|
+
"type": "object",
|
|
502
|
+
"properties": {
|
|
503
|
+
"selected_domains": {
|
|
504
|
+
"type": "array",
|
|
505
|
+
"items": {
|
|
506
|
+
"type": "string",
|
|
507
|
+
"enum": ["frontend", "backend", "data", "devops", "security"]
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
"required": ["language", "github", "report_generation"]
|
|
514
|
+
}
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
## Troubleshooting
|
|
520
|
+
|
|
521
|
+
### Common Issues
|
|
522
|
+
|
|
523
|
+
**Configuration not saving**:
|
|
524
|
+
1. Check file permissions on `.moai/` directory
|
|
525
|
+
2. Verify JSON syntax with online validator
|
|
526
|
+
3. Check for disk space availability
|
|
527
|
+
4. Look for backup files in `.moai/`
|
|
528
|
+
|
|
529
|
+
**Validation errors**:
|
|
530
|
+
1. Review error messages for specific constraint violations
|
|
531
|
+
2. Check configuration schema reference
|
|
532
|
+
3. Verify all required fields are present
|
|
533
|
+
4. Ensure data types match schema
|
|
534
|
+
|
|
535
|
+
**Merge conflicts**:
|
|
536
|
+
1. Recent changes may overwrite manual edits
|
|
537
|
+
2. Check backup files for previous versions
|
|
538
|
+
3. Use `action="diff"` to see changes before applying
|
|
539
|
+
4. Manual edit may be required for complex conflicts
|
|
540
|
+
|
|
541
|
+
### Debug Mode
|
|
542
|
+
|
|
543
|
+
Enable debug logging:
|
|
544
|
+
```python
|
|
545
|
+
Skill("moai-project-config-manager", debug=True)
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
This provides detailed output for:
|
|
549
|
+
- Configuration loading steps
|
|
550
|
+
- Validation process details
|
|
551
|
+
- Merge operation results
|
|
552
|
+
- Save operation status
|