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,704 @@
|
|
|
1
|
+
# Project Batch Questions - API Reference
|
|
2
|
+
|
|
3
|
+
> **Main Skill**: [SKILL.md](SKILL.md)
|
|
4
|
+
> **Examples**: [examples.md](examples.md)
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Core API
|
|
9
|
+
|
|
10
|
+
### BatchTemplate Interface
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
interface BatchTemplate {
|
|
14
|
+
name: string;
|
|
15
|
+
description: string;
|
|
16
|
+
questions: Question[];
|
|
17
|
+
conditional?: ConditionalLogic;
|
|
18
|
+
validation?: ValidationRules;
|
|
19
|
+
mapping?: ResponseMapping;
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Question Interface (Extended)
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
interface Question {
|
|
27
|
+
question: string; // The question text
|
|
28
|
+
header: string; // Column header (max 12 chars)
|
|
29
|
+
multiSelect: boolean; // true = multiple selections
|
|
30
|
+
options: Option[]; // 2-4 options recommended
|
|
31
|
+
conditional?: QuestionCondition; // Show/hide logic
|
|
32
|
+
validation?: QuestionValidation; // Input validation rules
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Option Interface (Extended)
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
interface Option {
|
|
40
|
+
label: string; // 1-5 words, displayed in TUI
|
|
41
|
+
description: string; // Rationale and context
|
|
42
|
+
value?: string; // Internal value (optional)
|
|
43
|
+
icon?: string; // Icon for visual distinction
|
|
44
|
+
warning?: string; // Warning text for risky options
|
|
45
|
+
recommended?: boolean; // Mark as recommended choice
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Pre-built Batch Templates
|
|
52
|
+
|
|
53
|
+
### LANGUAGE_BATCH_TEMPLATE
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
export const LANGUAGE_BATCH_TEMPLATE: BatchTemplate = {
|
|
57
|
+
name: 'language-batch',
|
|
58
|
+
description: 'Set language preferences for project initialization',
|
|
59
|
+
questions: [
|
|
60
|
+
{
|
|
61
|
+
question: "Which language would you like to use for project initialization and documentation?",
|
|
62
|
+
header: "Language",
|
|
63
|
+
multiSelect: false,
|
|
64
|
+
options: [
|
|
65
|
+
{
|
|
66
|
+
label: "English",
|
|
67
|
+
description: "All dialogs and documentation in English",
|
|
68
|
+
value: "en"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
label: "한국어",
|
|
72
|
+
description: "All dialogs and documentation in Korean",
|
|
73
|
+
value: "ko"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
label: "日本語",
|
|
77
|
+
description: "All dialogs and documentation in Japanese",
|
|
78
|
+
value: "ja"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
label: "中文",
|
|
82
|
+
description: "All dialogs and documentation in Chinese",
|
|
83
|
+
value: "zh"
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
question: "In which language should Alfred's sub-agent prompts be written?",
|
|
89
|
+
header: "Agent Prompt",
|
|
90
|
+
multiSelect: false,
|
|
91
|
+
options: [
|
|
92
|
+
{
|
|
93
|
+
label: "English (Global Standard)",
|
|
94
|
+
description: "All sub-agent prompts in English. Reduces token usage by 15-20%",
|
|
95
|
+
value: "english",
|
|
96
|
+
recommended: true
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
label: "Selected Language (Localized)",
|
|
100
|
+
description: "All sub-agent prompts in your selected language for local efficiency",
|
|
101
|
+
value: "localized"
|
|
102
|
+
}
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
question: "How would you like to be called in our conversations? (max 20 chars)",
|
|
107
|
+
header: "Nickname",
|
|
108
|
+
multiSelect: false,
|
|
109
|
+
options: [
|
|
110
|
+
{
|
|
111
|
+
label: "Enter custom nickname",
|
|
112
|
+
description: "Type your preferred name using the 'Other' option below",
|
|
113
|
+
value: "custom"
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
validation: {
|
|
117
|
+
maxLength: 20,
|
|
118
|
+
required: true,
|
|
119
|
+
pattern: /^[a-zA-Z0-9가-힣ぁ-ゟ一-龯\s]{1,20}$/
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
mapping: {
|
|
124
|
+
'Language': 'language.conversation_language',
|
|
125
|
+
'Agent Prompt': 'language.agent_prompt_language',
|
|
126
|
+
'Nickname': 'user.nickname'
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### TEAM_MODE_BATCH_TEMPLATE
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
export const TEAM_MODE_BATCH_TEMPLATE: BatchTemplate = {
|
|
135
|
+
name: 'team-mode-batch',
|
|
136
|
+
description: 'Configure team-specific GitHub and Git settings',
|
|
137
|
+
conditional: {
|
|
138
|
+
field: 'mode',
|
|
139
|
+
operator: 'equals',
|
|
140
|
+
value: 'team'
|
|
141
|
+
},
|
|
142
|
+
questions: [
|
|
143
|
+
{
|
|
144
|
+
question: "[Team Mode] Is 'Automatically delete head branches' enabled in your GitHub repository settings?",
|
|
145
|
+
header: "GitHub Settings",
|
|
146
|
+
multiSelect: false,
|
|
147
|
+
options: [
|
|
148
|
+
{
|
|
149
|
+
label: "Yes, already enabled",
|
|
150
|
+
description: "PR merge 후 자동으로 원격 브랜치 삭제됨",
|
|
151
|
+
value: "true"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
label: "No, not enabled (Recommended: Enable)",
|
|
155
|
+
description: "Settings → General → '자동 삭제' 체크박스 확인 필요",
|
|
156
|
+
value: "false",
|
|
157
|
+
warning: "Recommended to enable for better repository hygiene"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
label: "Not sure / Need to check",
|
|
161
|
+
description: "GitHub Settings → General 확인 후 다시 진행",
|
|
162
|
+
value: "null"
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
question: "[Team Mode] Which Git workflow should we use when creating SPEC documents?",
|
|
168
|
+
header: "Git Workflow",
|
|
169
|
+
multiSelect: false,
|
|
170
|
+
options: [
|
|
171
|
+
{
|
|
172
|
+
label: "Feature Branch + PR",
|
|
173
|
+
description: "매 SPEC마다 feature 브랜치 생성 → PR 리뷰 → develop 병합",
|
|
174
|
+
value: "feature_branch",
|
|
175
|
+
recommended: true
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
label: "Direct Commit to Develop",
|
|
179
|
+
description: "브랜치 생성 없이 develop에 직접 커밋. 빠른 프로토타이핑에 최적",
|
|
180
|
+
value: "develop_direct"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
label: "Decide per SPEC",
|
|
184
|
+
description: "SPEC 생성 시마다 매번 선택. 유연성이 높지만 결정 필요",
|
|
185
|
+
value: "per_spec"
|
|
186
|
+
}
|
|
187
|
+
]
|
|
188
|
+
}
|
|
189
|
+
],
|
|
190
|
+
mapping: {
|
|
191
|
+
'GitHub Settings': 'github.auto_delete_branches',
|
|
192
|
+
'Git Workflow': 'github.spec_git_workflow'
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### REPORT_GENERATION_BATCH_TEMPLATE
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
export const REPORT_GENERATION_BATCH_TEMPLATE: BatchTemplate = {
|
|
201
|
+
name: 'report-generation-batch',
|
|
202
|
+
description: 'Configure report generation with token cost awareness',
|
|
203
|
+
questions: [
|
|
204
|
+
{
|
|
205
|
+
question: `Configure report generation for better performance and cost management:
|
|
206
|
+
|
|
207
|
+
⚡ **Minimal (Recommended)**: Essential reports only (20-30 tokens/report)
|
|
208
|
+
📊 **Enable**: Full analysis reports (50-60 tokens/report)
|
|
209
|
+
🚫 **Disable**: No automatic reports (0 tokens)
|
|
210
|
+
|
|
211
|
+
Choice affects future /alfred:3-sync execution time and costs.`,
|
|
212
|
+
header: "Report Generation",
|
|
213
|
+
multiSelect: false,
|
|
214
|
+
options: [
|
|
215
|
+
{
|
|
216
|
+
label: "Minimal (Recommended)",
|
|
217
|
+
description: "80% token reduction, faster sync times",
|
|
218
|
+
value: "minimal",
|
|
219
|
+
recommended: true
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
label: "Enable",
|
|
223
|
+
description: "Complete analysis reports, higher token usage",
|
|
224
|
+
value: "enable"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
label: "Disable",
|
|
228
|
+
description: "No automatic reports, zero token cost",
|
|
229
|
+
value: "disable",
|
|
230
|
+
warning: "You'll miss important project insights and metrics"
|
|
231
|
+
}
|
|
232
|
+
]
|
|
233
|
+
}
|
|
234
|
+
],
|
|
235
|
+
mapping: {
|
|
236
|
+
'Report Generation': 'report_generation.enabled'
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### DOMAIN_SELECTION_BATCH_TEMPLATE
|
|
242
|
+
|
|
243
|
+
```typescript
|
|
244
|
+
export const DOMAIN_SELECTION_BATCH_TEMPLATE: BatchTemplate = {
|
|
245
|
+
name: 'domain-selection-batch',
|
|
246
|
+
description: 'Select project domains and technology areas',
|
|
247
|
+
questions: [
|
|
248
|
+
{
|
|
249
|
+
question: "Which domains and technology areas should be included in this project?",
|
|
250
|
+
header: "Domains",
|
|
251
|
+
multiSelect: true,
|
|
252
|
+
options: [
|
|
253
|
+
{
|
|
254
|
+
label: "Backend API",
|
|
255
|
+
description: "REST/GraphQL APIs, server-side logic, databases",
|
|
256
|
+
value: "backend"
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
label: "Frontend Web",
|
|
260
|
+
description: "React/Vue/Angular, UI components, client-side logic",
|
|
261
|
+
value: "frontend"
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
label: "Mobile App",
|
|
265
|
+
description: "iOS/Android apps, React Native, Flutter",
|
|
266
|
+
value: "mobile"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
label: "DevOps/Infrastructure",
|
|
270
|
+
description: "CI/CD, Docker, Kubernetes, cloud deployment",
|
|
271
|
+
value: "devops"
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
label: "Data/Analytics",
|
|
275
|
+
description: "Data processing, ML pipelines, analytics dashboards",
|
|
276
|
+
value: "data"
|
|
277
|
+
}
|
|
278
|
+
]
|
|
279
|
+
}
|
|
280
|
+
],
|
|
281
|
+
mapping: {
|
|
282
|
+
'Domains': 'project.domains'
|
|
283
|
+
},
|
|
284
|
+
validation: {
|
|
285
|
+
minSelections: 1,
|
|
286
|
+
maxSelections: 5
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## Template Execution API
|
|
294
|
+
|
|
295
|
+
### executeBatchTemplate()
|
|
296
|
+
|
|
297
|
+
```typescript
|
|
298
|
+
async function executeBatchTemplate(
|
|
299
|
+
template: BatchTemplate,
|
|
300
|
+
context?: ExecutionContext
|
|
301
|
+
): Promise<BatchResult>
|
|
302
|
+
|
|
303
|
+
interface ExecutionContext {
|
|
304
|
+
currentConfig?: Partial<Config>;
|
|
305
|
+
language?: string;
|
|
306
|
+
mode?: string;
|
|
307
|
+
skipValidation?: boolean;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
interface BatchResult {
|
|
311
|
+
success: boolean;
|
|
312
|
+
responses: Record<string, string | string[]>;
|
|
313
|
+
config: Partial<Config>;
|
|
314
|
+
errors?: string[];
|
|
315
|
+
warnings?: string[];
|
|
316
|
+
metrics?: {
|
|
317
|
+
executionTime: number;
|
|
318
|
+
questionCount: number;
|
|
319
|
+
tokenUsage: number;
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### Usage Example
|
|
325
|
+
|
|
326
|
+
```typescript
|
|
327
|
+
// Execute language batch with context
|
|
328
|
+
const result = await executeBatchTemplate(LANGUAGE_BATCH_TEMPLATE, {
|
|
329
|
+
language: 'ko', // Show questions in Korean
|
|
330
|
+
currentConfig: existingConfig
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
if (result.success) {
|
|
334
|
+
// Merge into existing config
|
|
335
|
+
const updatedConfig = { ...existingConfig, ...result.config };
|
|
336
|
+
await saveConfig('.moai/config.json', updatedConfig);
|
|
337
|
+
|
|
338
|
+
console.log(`✅ Batch completed in ${result.metrics.executionTime}ms`);
|
|
339
|
+
} else {
|
|
340
|
+
console.error('❌ Batch failed:', result.errors);
|
|
341
|
+
}
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
## Template Builder API
|
|
347
|
+
|
|
348
|
+
### createCustomBatch()
|
|
349
|
+
|
|
350
|
+
```typescript
|
|
351
|
+
function createCustomBatch(config: CustomBatchConfig): BatchTemplate
|
|
352
|
+
|
|
353
|
+
interface CustomBatchConfig {
|
|
354
|
+
name: string;
|
|
355
|
+
description: string;
|
|
356
|
+
questions: QuestionConfig[];
|
|
357
|
+
conditional?: ConditionalConfig;
|
|
358
|
+
validation?: ValidationConfig;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
interface QuestionConfig {
|
|
362
|
+
question: string;
|
|
363
|
+
header: string;
|
|
364
|
+
multiSelect: boolean;
|
|
365
|
+
options: OptionConfig[];
|
|
366
|
+
conditional?: string;
|
|
367
|
+
validation?: ValidationRuleConfig;
|
|
368
|
+
}
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
### Example
|
|
372
|
+
|
|
373
|
+
```typescript
|
|
374
|
+
const customBatch = createCustomBatch({
|
|
375
|
+
name: 'database-selection',
|
|
376
|
+
description: 'Select database and migration strategy',
|
|
377
|
+
questions: [
|
|
378
|
+
{
|
|
379
|
+
question: "Which database should we use for this project?",
|
|
380
|
+
header: "Database",
|
|
381
|
+
multiSelect: false,
|
|
382
|
+
options: [
|
|
383
|
+
{ label: "PostgreSQL", description: "Relational, ACID-compliant" },
|
|
384
|
+
{ label: "MongoDB", description: "Document store, flexible schema" },
|
|
385
|
+
{ label: "SQLite", description: "File-based, simple setup" }
|
|
386
|
+
]
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
question: "How should we handle database migrations?",
|
|
390
|
+
header: "Migrations",
|
|
391
|
+
multiSelect: false,
|
|
392
|
+
conditional: "Database !== SQLite", // Only show if not SQLite
|
|
393
|
+
options: [
|
|
394
|
+
{ label: "Alembic (Python)", description: "Version control for schema" },
|
|
395
|
+
{ label: "Prisma Migrate", description: "Type-safe migrations" },
|
|
396
|
+
{ label: "Manual SQL", description: "Custom migration scripts" }
|
|
397
|
+
]
|
|
398
|
+
}
|
|
399
|
+
]
|
|
400
|
+
});
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
|
|
405
|
+
## Validation API
|
|
406
|
+
|
|
407
|
+
### validateBatchResponses()
|
|
408
|
+
|
|
409
|
+
```typescript
|
|
410
|
+
function validateBatchResponses(
|
|
411
|
+
responses: Record<string, string | string[]>,
|
|
412
|
+
template: BatchTemplate
|
|
413
|
+
): ValidationResult
|
|
414
|
+
|
|
415
|
+
interface ValidationResult {
|
|
416
|
+
isValid: boolean;
|
|
417
|
+
errors: ValidationError[];
|
|
418
|
+
warnings: ValidationWarning[];
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
interface ValidationError {
|
|
422
|
+
field: string;
|
|
423
|
+
message: string;
|
|
424
|
+
code: string;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
interface ValidationWarning {
|
|
428
|
+
field: string;
|
|
429
|
+
message: string;
|
|
430
|
+
code: string;
|
|
431
|
+
}
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
### Built-in Validation Rules
|
|
435
|
+
|
|
436
|
+
```typescript
|
|
437
|
+
export const VALIDATION_RULES = {
|
|
438
|
+
REQUIRED: 'required',
|
|
439
|
+
MAX_LENGTH: 'max_length',
|
|
440
|
+
MIN_LENGTH: 'min_length',
|
|
441
|
+
PATTERN: 'pattern',
|
|
442
|
+
MIN_SELECTIONS: 'min_selections',
|
|
443
|
+
MAX_SELECTIONS: 'max_selections',
|
|
444
|
+
UNIQUE_VALUES: 'unique_values'
|
|
445
|
+
};
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
### Custom Validation Example
|
|
449
|
+
|
|
450
|
+
```typescript
|
|
451
|
+
const templateWithValidation: BatchTemplate = {
|
|
452
|
+
name: 'project-settings',
|
|
453
|
+
questions: [
|
|
454
|
+
{
|
|
455
|
+
question: "Enter project name (3-50 chars, alphanumeric + spaces)",
|
|
456
|
+
header: "Project Name",
|
|
457
|
+
multiSelect: false,
|
|
458
|
+
options: [{ label: "Enter name", description: "Use 'Other' option" }],
|
|
459
|
+
validation: {
|
|
460
|
+
required: true,
|
|
461
|
+
minLength: 3,
|
|
462
|
+
maxLength: 50,
|
|
463
|
+
pattern: /^[a-zA-Z0-9\s]{3,50}$/,
|
|
464
|
+
errorMessage: "Project name must be 3-50 characters, alphanumeric and spaces only"
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
]
|
|
468
|
+
};
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
---
|
|
472
|
+
|
|
473
|
+
## Configuration Mapping API
|
|
474
|
+
|
|
475
|
+
### mapResponsesToConfig()
|
|
476
|
+
|
|
477
|
+
```typescript
|
|
478
|
+
function mapResponsesToConfig(
|
|
479
|
+
responses: Record<string, string | string[]>,
|
|
480
|
+
template: BatchTemplate
|
|
481
|
+
): Partial<Config>
|
|
482
|
+
|
|
483
|
+
interface ConfigMapping {
|
|
484
|
+
[header: string]: string; // Maps question header to config path
|
|
485
|
+
}
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
### Advanced Mapping Example
|
|
489
|
+
|
|
490
|
+
```typescript
|
|
491
|
+
const advancedTemplate: BatchTemplate = {
|
|
492
|
+
name: 'advanced-setup',
|
|
493
|
+
questions: [
|
|
494
|
+
{
|
|
495
|
+
question: "Select project deployment environments",
|
|
496
|
+
header: "Environments",
|
|
497
|
+
multiSelect: true,
|
|
498
|
+
options: [
|
|
499
|
+
{ label: "Development", value: "dev" },
|
|
500
|
+
{ label: "Staging", value: "staging" },
|
|
501
|
+
{ label: "Production", value: "prod" }
|
|
502
|
+
]
|
|
503
|
+
}
|
|
504
|
+
],
|
|
505
|
+
mapping: {
|
|
506
|
+
'Environments': 'deployment.environments'
|
|
507
|
+
},
|
|
508
|
+
postProcessors: {
|
|
509
|
+
'Environments': (value: string[]) => ({
|
|
510
|
+
enabled: value,
|
|
511
|
+
default: value.includes('prod') ? 'staging' : value[0]
|
|
512
|
+
})
|
|
513
|
+
}
|
|
514
|
+
};
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
## Multi-Language Support API
|
|
520
|
+
|
|
521
|
+
### getLocalizedTemplate()
|
|
522
|
+
|
|
523
|
+
```typescript
|
|
524
|
+
function getLocalizedTemplate(
|
|
525
|
+
templateName: string,
|
|
526
|
+
language: string
|
|
527
|
+
): BatchTemplate
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
### Supported Languages
|
|
531
|
+
|
|
532
|
+
```typescript
|
|
533
|
+
export const SUPPORTED_LANGUAGES = {
|
|
534
|
+
KO: 'ko', // Korean
|
|
535
|
+
EN: 'en', // English
|
|
536
|
+
JA: 'ja', // Japanese
|
|
537
|
+
ZH: 'zh' // Chinese
|
|
538
|
+
};
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
### Example
|
|
542
|
+
|
|
543
|
+
```typescript
|
|
544
|
+
// Get Korean version of language batch
|
|
545
|
+
const koreanTemplate = getLocalizedTemplate('language-batch', 'ko');
|
|
546
|
+
|
|
547
|
+
// The template will have:
|
|
548
|
+
// - Korean question text
|
|
549
|
+
// - Korean option labels
|
|
550
|
+
// - Korean descriptions
|
|
551
|
+
// - Same validation rules
|
|
552
|
+
// - Same mapping logic
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
---
|
|
556
|
+
|
|
557
|
+
## Error Handling API
|
|
558
|
+
|
|
559
|
+
### BatchError Classes
|
|
560
|
+
|
|
561
|
+
```typescript
|
|
562
|
+
class BatchValidationError extends Error {
|
|
563
|
+
constructor(
|
|
564
|
+
public validationErrors: ValidationError[],
|
|
565
|
+
message?: string
|
|
566
|
+
) {
|
|
567
|
+
super(message || 'Batch validation failed');
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
class BatchExecutionError extends Error {
|
|
572
|
+
constructor(
|
|
573
|
+
public originalError: Error,
|
|
574
|
+
public templateName: string,
|
|
575
|
+
message?: string
|
|
576
|
+
) {
|
|
577
|
+
super(message || `Batch execution failed: ${templateName}`);
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
class UserCancelledError extends Error {
|
|
582
|
+
constructor(public templateName: string) {
|
|
583
|
+
super(`User cancelled batch: ${templateName}`);
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
### Error Handling Pattern
|
|
589
|
+
|
|
590
|
+
```typescript
|
|
591
|
+
try {
|
|
592
|
+
const result = await executeBatchTemplate(template, context);
|
|
593
|
+
// Process result...
|
|
594
|
+
} catch (error) {
|
|
595
|
+
if (error instanceof BatchValidationError) {
|
|
596
|
+
// Handle validation errors
|
|
597
|
+
console.error('Validation failed:', error.validationErrors);
|
|
598
|
+
await retryWithCorrections(error.validationErrors);
|
|
599
|
+
} else if (error instanceof UserCancelledError) {
|
|
600
|
+
// Handle user cancellation
|
|
601
|
+
console.log('User cancelled:', error.templateName);
|
|
602
|
+
await offerPartialSave();
|
|
603
|
+
} else {
|
|
604
|
+
// Handle other errors
|
|
605
|
+
console.error('Unexpected error:', error);
|
|
606
|
+
await fallbackToManualInput();
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
---
|
|
612
|
+
|
|
613
|
+
## Performance Monitoring API
|
|
614
|
+
|
|
615
|
+
### BatchMetrics Class
|
|
616
|
+
|
|
617
|
+
```typescript
|
|
618
|
+
class BatchMetrics {
|
|
619
|
+
private metrics: MetricEntry[] = [];
|
|
620
|
+
|
|
621
|
+
recordExecution(entry: MetricEntry): void;
|
|
622
|
+
getMetrics(templateName?: string): MetricEntry[];
|
|
623
|
+
generateReport(): PerformanceReport;
|
|
624
|
+
exportMetrics(): string; // JSON export
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
interface MetricEntry {
|
|
628
|
+
templateName: string;
|
|
629
|
+
timestamp: Date;
|
|
630
|
+
executionTime: number;
|
|
631
|
+
questionCount: number;
|
|
632
|
+
interactionCount: number;
|
|
633
|
+
tokenUsage: number;
|
|
634
|
+
success: boolean;
|
|
635
|
+
errorType?: string;
|
|
636
|
+
}
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
### Usage Example
|
|
640
|
+
|
|
641
|
+
```typescript
|
|
642
|
+
const metrics = new BatchMetrics();
|
|
643
|
+
|
|
644
|
+
// Track execution
|
|
645
|
+
const result = await metrics.trackExecution('language-batch', async () => {
|
|
646
|
+
return await executeBatchTemplate(LANGUAGE_BATCH_TEMPLATE);
|
|
647
|
+
});
|
|
648
|
+
|
|
649
|
+
// Generate report
|
|
650
|
+
const report = metrics.generateReport();
|
|
651
|
+
console.log(`Total interactions saved: ${report.interactionsSaved}`);
|
|
652
|
+
console.log(`Average execution time: ${report.avgExecutionTime}ms`);
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
---
|
|
656
|
+
|
|
657
|
+
## Integration Points
|
|
658
|
+
|
|
659
|
+
### Alfred Command Integration
|
|
660
|
+
|
|
661
|
+
```typescript
|
|
662
|
+
// In 0-project.md
|
|
663
|
+
async function handleProjectInitialization() {
|
|
664
|
+
const context = {
|
|
665
|
+
language: detectUserLanguage(),
|
|
666
|
+
mode: detectProjectMode()
|
|
667
|
+
};
|
|
668
|
+
|
|
669
|
+
// Execute language batch
|
|
670
|
+
const langResult = await executeBatchTemplate(LANGUAGE_BATCH_TEMPLATE, context);
|
|
671
|
+
|
|
672
|
+
// Conditionally execute team batch
|
|
673
|
+
if (context.mode === 'team') {
|
|
674
|
+
const teamResult = await executeBatchTemplate(TEAM_MODE_BATCH_TEMPLATE, context);
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
// Continue with initialization...
|
|
678
|
+
}
|
|
679
|
+
```
|
|
680
|
+
|
|
681
|
+
### Sub-agent Integration
|
|
682
|
+
|
|
683
|
+
```typescript
|
|
684
|
+
// In project-manager agent
|
|
685
|
+
async function conductProjectInterview() {
|
|
686
|
+
const batches = [
|
|
687
|
+
DOMAIN_SELECTION_BATCH_TEMPLATE,
|
|
688
|
+
LANGUAGE_BATCH_TEMPLATE,
|
|
689
|
+
REPORT_GENERATION_BATCH_TEMPLATE
|
|
690
|
+
];
|
|
691
|
+
|
|
692
|
+
const results = {};
|
|
693
|
+
for (const batch of batches) {
|
|
694
|
+
const result = await executeBatchTemplate(batch);
|
|
695
|
+
Object.assign(results, result.config);
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
return results;
|
|
699
|
+
}
|
|
700
|
+
```
|
|
701
|
+
|
|
702
|
+
---
|
|
703
|
+
|
|
704
|
+
**End of Reference** | Created 2025-11-05 | Complete API documentation
|