moai-adk 0.15.1__py3-none-any.whl → 0.25.4__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 -2
- moai_adk/__main__.py +85 -2
- moai_adk/cli/__init__.py +0 -1
- moai_adk/cli/commands/__init__.py +0 -1
- moai_adk/cli/commands/analyze.py +127 -0
- moai_adk/cli/commands/backup.py +5 -3
- moai_adk/cli/commands/doctor.py +35 -11
- moai_adk/cli/commands/improve_user_experience.py +348 -0
- moai_adk/cli/commands/init.py +150 -23
- moai_adk/cli/commands/language.py +269 -0
- moai_adk/cli/commands/migrate.py +158 -0
- moai_adk/cli/commands/status.py +13 -12
- moai_adk/cli/commands/update.py +364 -60
- moai_adk/cli/commands/validate_links.py +118 -0
- moai_adk/cli/main.py +3 -2
- moai_adk/cli/prompts/init_prompts.py +79 -82
- moai_adk/core/__init__.py +0 -1
- moai_adk/core/analysis/__init__.py +9 -0
- moai_adk/core/analysis/session_analyzer.py +439 -0
- moai_adk/core/claude_integration.py +421 -0
- moai_adk/core/command_helpers.py +270 -0
- moai_adk/core/config/__init__.py +6 -0
- moai_adk/core/config/auto_spec_config.py +346 -0
- moai_adk/core/config/migration.py +133 -12
- moai_adk/core/context_manager.py +279 -0
- moai_adk/core/diagnostics/slash_commands.py +0 -1
- moai_adk/core/error_recovery_system.py +1289 -0
- moai_adk/core/git/__init__.py +0 -1
- moai_adk/core/git/branch.py +0 -1
- moai_adk/core/git/branch_manager.py +4 -4
- moai_adk/core/git/checkpoint.py +1 -5
- moai_adk/core/git/commit.py +0 -1
- moai_adk/core/git/event_detector.py +3 -5
- moai_adk/core/git/manager.py +0 -1
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +925 -0
- moai_adk/core/integration/__init__.py +22 -0
- moai_adk/core/integration/engine.py +169 -0
- moai_adk/core/integration/integration_tester.py +225 -0
- moai_adk/core/integration/models.py +88 -0
- moai_adk/core/integration/utils.py +211 -0
- moai_adk/core/issue_creator.py +28 -18
- moai_adk/core/language_config.py +202 -0
- moai_adk/core/language_validator.py +556 -0
- moai_adk/core/mcp/setup.py +113 -0
- moai_adk/core/migration/__init__.py +18 -0
- moai_adk/core/migration/backup_manager.py +208 -0
- moai_adk/core/migration/file_migrator.py +218 -0
- moai_adk/core/migration/version_detector.py +143 -0
- moai_adk/core/migration/version_migrator.py +228 -0
- moai_adk/core/performance/__init__.py +6 -0
- moai_adk/core/performance/cache_system.py +318 -0
- moai_adk/core/performance/parallel_processor.py +116 -0
- moai_adk/core/project/__init__.py +0 -1
- moai_adk/core/project/backup_utils.py +2 -7
- moai_adk/core/project/checker.py +3 -3
- moai_adk/core/project/detector.py +20 -40
- moai_adk/core/project/initializer.py +42 -17
- moai_adk/core/project/phase_executor.py +415 -58
- moai_adk/core/project/validator.py +6 -25
- moai_adk/core/quality/__init__.py +1 -1
- moai_adk/core/quality/trust_checker.py +64 -110
- moai_adk/core/quality/validators/__init__.py +1 -1
- moai_adk/core/quality/validators/base_validator.py +1 -1
- moai_adk/core/rollback_manager.py +993 -0
- moai_adk/core/session_manager.py +667 -0
- moai_adk/core/spec/confidence_scoring.py +749 -0
- moai_adk/core/spec/ears_template_engine.py +1182 -0
- moai_adk/core/spec/quality_validator.py +721 -0
- moai_adk/core/spec_status_manager.py +488 -0
- moai_adk/core/template/__init__.py +0 -1
- moai_adk/core/template/backup.py +41 -1
- moai_adk/core/template/config.py +11 -12
- moai_adk/core/template/languages.py +0 -1
- moai_adk/core/template/merger.py +79 -22
- moai_adk/core/template/processor.py +614 -40
- moai_adk/core/template_engine.py +36 -27
- moai_adk/foundation/git/commit_templates.py +565 -0
- moai_adk/foundation/trust/trust_principles.py +725 -0
- moai_adk/foundation/trust/validation_checklist.py +1678 -0
- moai_adk/statusline/__init__.py +38 -0
- moai_adk/statusline/alfred_detector.py +107 -0
- moai_adk/statusline/config.py +364 -0
- moai_adk/statusline/enhanced_output_style_detector.py +364 -0
- moai_adk/statusline/git_collector.py +190 -0
- moai_adk/statusline/main.py +228 -0
- moai_adk/statusline/metrics_tracker.py +78 -0
- moai_adk/statusline/renderer.py +327 -0
- moai_adk/statusline/update_checker.py +135 -0
- moai_adk/statusline/version_reader.py +647 -0
- moai_adk/templates/.git-hooks/pre-commit +66 -0
- moai_adk/templates/.git-hooks/pre-push +116 -4
- moai_adk/templates/.github/workflows/moai-gitflow.yml +1 -7
- moai_adk/templates/.github/workflows/spec-issue-sync.yml +0 -1
- moai_adk/templates/.gitignore +44 -0
- moai_adk/templates/.mcp.json +22 -0
- moai_adk/templates/CLAUDE.md +450 -1071
- moai_adk/utils/__init__.py +0 -1
- moai_adk/utils/banner.py +0 -1
- moai_adk/utils/common.py +308 -0
- moai_adk/utils/link_validator.py +249 -0
- moai_adk/utils/logger.py +4 -9
- moai_adk/utils/safe_file_reader.py +210 -0
- moai_adk/utils/user_experience.py +531 -0
- moai_adk-0.25.4.dist-info/METADATA +2279 -0
- moai_adk-0.25.4.dist-info/RECORD +112 -0
- moai_adk/core/tags/__init__.py +0 -86
- moai_adk/core/tags/ci_validator.py +0 -463
- moai_adk/core/tags/cli.py +0 -283
- moai_adk/core/tags/generator.py +0 -109
- moai_adk/core/tags/inserter.py +0 -99
- moai_adk/core/tags/mapper.py +0 -126
- moai_adk/core/tags/parser.py +0 -76
- moai_adk/core/tags/pre_commit_validator.py +0 -393
- moai_adk/core/tags/reporter.py +0 -956
- moai_adk/core/tags/tags.py +0 -149
- moai_adk/core/tags/validator.py +0 -897
- moai_adk/templates/.claude/agents/alfred/backend-expert.md +0 -319
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -316
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -208
- moai_adk/templates/.claude/agents/alfred/devops-expert.md +0 -464
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -214
- moai_adk/templates/.claude/agents/alfred/frontend-expert.md +0 -357
- moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -406
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -423
- moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -312
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -343
- moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -865
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -426
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -361
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -428
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -375
- moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +0 -571
- moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1854
- moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -880
- moai_adk/templates/.claude/commands/alfred/2-run.md +0 -793
- moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -1084
- moai_adk/templates/.claude/commands/alfred/9-feedback.md +0 -149
- moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -748
- moai_adk/templates/.claude/hooks/alfred/core/timeout.py +0 -136
- moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +0 -108
- moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +0 -198
- moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -29
- moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +0 -94
- moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +0 -100
- moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +0 -94
- moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +0 -94
- moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +0 -170
- moai_adk/templates/.claude/hooks/alfred/shared/core/checkpoint.py +0 -271
- moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +0 -67
- moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +0 -749
- moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +0 -230
- moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +0 -198
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +0 -21
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +0 -154
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +0 -174
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +0 -87
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +0 -61
- moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +0 -112
- moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +0 -1
- moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +0 -161
- moai_adk/templates/.claude/settings.json +0 -144
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +0 -70
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +0 -62
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/reference.md +0 -242
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +0 -56
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/reference.md +0 -444
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +0 -62
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +0 -405
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +0 -51
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +0 -355
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +0 -239
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +0 -323
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +0 -286
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +0 -126
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/SKILL.md +0 -74
- moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/examples.md +0 -4
- moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/reference.md +0 -269
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +0 -19
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +0 -4
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +0 -150
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-persona-roles/SKILL.md +0 -198
- moai_adk/templates/.claude/skills/moai-alfred-persona-roles/examples.md +0 -431
- moai_adk/templates/.claude/skills/moai-alfred-persona-roles/reference.md +0 -141
- moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +0 -89
- moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +0 -122
- moai_adk/templates/.claude/skills/moai-alfred-practices/reference.md +0 -369
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +0 -508
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +0 -481
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +0 -100
- moai_adk/templates/.claude/skills/moai-alfred-reporting/SKILL.md +0 -273
- moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +0 -77
- moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +0 -265
- moai_adk/templates/.claude/skills/moai-alfred-rules/reference.md +0 -539
- moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +0 -19
- moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +0 -4
- moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +0 -84
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +0 -137
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +0 -219
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples/validate-spec.sh +0 -161
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +0 -541
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +0 -622
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/SKILL.md +0 -115
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/examples.md +0 -4
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/reference.md +0 -348
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +0 -19
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +0 -4
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +0 -211
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +0 -288
- moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
- moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
- moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
- moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
- moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
- moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
- moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
- moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
- moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
- moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
- moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
- moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/SKILL.md +0 -19
- moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/examples.md +0 -4
- moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/reference.md +0 -218
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/CHECKLIST.md +0 -482
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/EXAMPLES.md +0 -278
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/METADATA.md +0 -477
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL.md +0 -271
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/STRUCTURE.md +0 -583
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/WEB-RESEARCH.md +0 -526
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/reference.md +0 -465
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/generate-structure.sh +0 -328
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/validate-skill.sh +0 -312
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/examples-template.md +0 -285
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/reference-template.md +0 -278
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/scripts-template.sh +0 -303
- moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
- moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
- moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +0 -802
- moai_adk/templates/.claude/skills/moai-design-systems/examples.md +0 -1238
- moai_adk/templates/.claude/skills/moai-design-systems/reference.md +0 -673
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +0 -290
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +0 -1633
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +0 -660
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +0 -128
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
- moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
- moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
- moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -116
- moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
- moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
- moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
- moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +0 -127
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +0 -126
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -125
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -32
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +0 -126
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +0 -433
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +0 -624
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +0 -316
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +0 -127
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +0 -125
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +0 -133
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +0 -34
- moai_adk/templates/.claude/skills/moai-project-documentation.md +0 -622
- moai_adk/templates/.github/workflows/c-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/cpp-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/csharp-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/dart-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/go-tag-validation.yml +0 -130
- moai_adk/templates/.github/workflows/java-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/javascript-tag-validation.yml +0 -135
- moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/php-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/python-tag-validation.yml +0 -118
- moai_adk/templates/.github/workflows/release.yml +0 -118
- moai_adk/templates/.github/workflows/ruby-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/rust-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/shell-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/swift-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/tag-report.yml +0 -269
- moai_adk/templates/.github/workflows/tag-validation.yml +0 -186
- moai_adk/templates/.github/workflows/typescript-tag-validation.yml +0 -154
- moai_adk/templates/.moai/config.json +0 -115
- moai_adk/templates/workflows/go-tag-validation.yml +0 -30
- moai_adk/templates/workflows/javascript-tag-validation.yml +0 -41
- moai_adk/templates/workflows/python-tag-validation.yml +0 -42
- moai_adk/templates/workflows/typescript-tag-validation.yml +0 -31
- moai_adk-0.15.1.dist-info/METADATA +0 -3094
- moai_adk-0.15.1.dist-info/RECORD +0 -365
- {moai_adk-0.15.1.dist-info → moai_adk-0.25.4.dist-info}/WHEEL +0 -0
- {moai_adk-0.15.1.dist-info → moai_adk-0.25.4.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.15.1.dist-info → moai_adk-0.25.4.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,1854 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: alfred:0-project
|
|
3
|
-
description: "Initialize project metadata and documentation"
|
|
4
|
-
allowed-tools:
|
|
5
|
-
- Read
|
|
6
|
-
- Write
|
|
7
|
-
- Edit
|
|
8
|
-
- MultiEdit
|
|
9
|
-
- Grep
|
|
10
|
-
- Glob
|
|
11
|
-
- TodoWrite
|
|
12
|
-
- Bash(ls:*)
|
|
13
|
-
- Bash(find:*)
|
|
14
|
-
- Bash(cat:*)
|
|
15
|
-
- Task
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
# 📋 MoAI-ADK Step 0: Initialize/Update Universal Language Support Project Documentation
|
|
19
|
-
|
|
20
|
-
> **Note**: Interactive prompts use `AskUserQuestion tool (documented in moai-alfred-interactive-questions skill)` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
|
|
21
|
-
|
|
22
|
-
## 🎯 Command Purpose
|
|
23
|
-
|
|
24
|
-
Automatically analyzes the project environment to create/update product/structure/tech.md documents and configure language-specific optimization settings.
|
|
25
|
-
|
|
26
|
-
## 📋 Execution flow
|
|
27
|
-
|
|
28
|
-
0. **Conversation Language Selection**: User selects the language for all dialogs and documentation
|
|
29
|
-
1. **Environment Analysis**: Automatically detect project type (new/legacy) and codebase language
|
|
30
|
-
2. **Establishment of interview strategy**: Select question tree suited to project characteristics
|
|
31
|
-
3. **User Verification**: Review and approve interview plan
|
|
32
|
-
4. **Create project documentation**: Create product/structure/tech.md in the selected language
|
|
33
|
-
5. **Create configuration file**: config.json auto-configuration
|
|
34
|
-
|
|
35
|
-
## 🧠 Associated Skills & Agents
|
|
36
|
-
|
|
37
|
-
| Agent | Core Skill | Purpose |
|
|
38
|
-
| --------------- | -------------------------------- | --------------------------------------------- |
|
|
39
|
-
| project-manager | `moai-alfred-language-detection` | Initialize project and interview requirements |
|
|
40
|
-
| trust-checker | `moai-alfred-trust-validation` | Verify initial project structure (optional) |
|
|
41
|
-
|
|
42
|
-
**Note**: TUI Survey Skill is used for user confirmations during project initialization and is shared across all interactive prompts.
|
|
43
|
-
|
|
44
|
-
## 🔗 Associated Agent
|
|
45
|
-
|
|
46
|
-
- **Primary**: project-manager (📋 planner) - Dedicated to project initialization
|
|
47
|
-
- **Quality Check**: trust-checker (✅ Quality assurance lead) - Initial structural verification (optional)
|
|
48
|
-
- **Secondary**: None (standalone execution)
|
|
49
|
-
|
|
50
|
-
## 💡 Example of use
|
|
51
|
-
|
|
52
|
-
The user executes the `/alfred:0-project` command to analyze the project and create/update documents.
|
|
53
|
-
|
|
54
|
-
## Command Overview
|
|
55
|
-
|
|
56
|
-
It is a systematic initialization system that analyzes the project environment and creates/updates product/structure/tech.md documents.
|
|
57
|
-
|
|
58
|
-
- **Automatically detect language**: Automatically recognize Python, TypeScript, Java, Go, Rust, etc.
|
|
59
|
-
- **Project type classification**: Automatically determine new vs. existing projects
|
|
60
|
-
- **High-performance initialization**: Achieve 0.18 second initialization with TypeScript-based CLI
|
|
61
|
-
- **2-step workflow**: 1) Analysis and planning → 2) Execution after user approval
|
|
62
|
-
|
|
63
|
-
## How to use
|
|
64
|
-
|
|
65
|
-
The user executes the `/alfred:0-project` command to start analyzing the project and creating/updating documents.
|
|
66
|
-
|
|
67
|
-
**Automatic processing**:
|
|
68
|
-
|
|
69
|
-
- Update mode if there is an existing `.moai/project/` document
|
|
70
|
-
- New creation mode if there is no document
|
|
71
|
-
- Automatic detection of language and project type
|
|
72
|
-
|
|
73
|
-
## ⚠️ Prohibitions
|
|
74
|
-
|
|
75
|
-
**What you should never do**:
|
|
76
|
-
|
|
77
|
-
- ❌ Create a file in the `.claude/memory/` directory
|
|
78
|
-
- ❌ Create a file `.claude/commands/alfred/*.json`
|
|
79
|
-
- ❌ Unnecessary overwriting of existing documents
|
|
80
|
-
- ❌ Date and numerical prediction ("within 3 months", "50% reduction") etc.)
|
|
81
|
-
- ❌ Hypothetical scenarios, expected market size, future technology trend predictions
|
|
82
|
-
|
|
83
|
-
**Expressions to use**:
|
|
84
|
-
|
|
85
|
-
- ✅ "High/medium/low priority"
|
|
86
|
-
- ✅ "Immediately needed", "step-by-step improvements"
|
|
87
|
-
- ✅ Current facts
|
|
88
|
-
- ✅ Existing technology stack
|
|
89
|
-
- ✅ Real problems
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
## 🚀 STEP 0: 초기 설정 - 언어 및 사용자 정보 선택
|
|
94
|
-
|
|
95
|
-
**목적**: 프로젝트 초기화 시작 전에 대화 언어를 설정하고 사용자 닉네임을 등록합니다. 이 설정은 모든 Alfred 프롬프트, 인터뷰 질문 및 생성된 문서에 적용됩니다.
|
|
96
|
-
|
|
97
|
-
**UX 개선**: 2개 질문을 **1회 배치 호출**로 통합 (50% 상호작용 감소: 2 turns → 1 turn)
|
|
98
|
-
|
|
99
|
-
### 0.0 Alfred 자기소개 및 환영 인사
|
|
100
|
-
|
|
101
|
-
Alfred가 첫 상호작용으로 다음과 같이 인사합니다:
|
|
102
|
-
|
|
103
|
-
```
|
|
104
|
-
안녕하세요! 👋 저는 Alfred입니다.
|
|
105
|
-
MoAI-ADK의 SuperAgent로서 당신의 프로젝트를 함께 만들어갈 준비가 되어 있습니다.
|
|
106
|
-
|
|
107
|
-
앞으로의 모든 대화에서 당신을 편하게 부르기 위해,
|
|
108
|
-
먼저 기본 설정을 진행하겠습니다.
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### 0.1 배치 설계: 언어 선택 + 사용자 닉네임 + GitHub 설정 확인 (1-3회 호출)
|
|
112
|
-
|
|
113
|
-
Alfred가 `AskUserQuestion tool (documented in moai-alfred-interactive-questions skill)` 를 사용하여 **배치 호출**로 필수 정보를 수집합니다:
|
|
114
|
-
|
|
115
|
-
**기본 배치 (항상 실행)**:
|
|
116
|
-
|
|
117
|
-
- 언어 선택
|
|
118
|
-
- 사용자 닉네임
|
|
119
|
-
|
|
120
|
-
**추가 배치 (팀 모드 감지 시)**:
|
|
121
|
-
|
|
122
|
-
- GitHub "Automatically delete head branches" 설정 확인
|
|
123
|
-
|
|
124
|
-
#### 0.1.1 팀 모드 감지
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
# config.json에서 mode 확인
|
|
128
|
-
grep "mode" .moai/config.json
|
|
129
|
-
|
|
130
|
-
# 결과: "mode": "team" → 추가 질문 포함
|
|
131
|
-
# "mode": "personal" → 기본 질문만 실행
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
#### 0.1.2 기본 배치: 언어 선택 + 에이전트 프롬프트 언어 + 닉네임 (3개 질문, 1회 배치 호출)
|
|
135
|
-
|
|
136
|
-
**배치 설계**: 3개 질문을 1회 호출로 통합 (UX 개선: 3 turns → 1 turn)
|
|
137
|
-
|
|
138
|
-
**Example AskUserQuestion Call**:
|
|
139
|
-
|
|
140
|
-
```python
|
|
141
|
-
AskUserQuestion(
|
|
142
|
-
questions=[
|
|
143
|
-
{
|
|
144
|
-
"question": "Which language would you like to use for the project initialization and documentation?",
|
|
145
|
-
"header": "Language",
|
|
146
|
-
"multiSelect": false,
|
|
147
|
-
"options": [
|
|
148
|
-
{
|
|
149
|
-
"label": "🌍 English",
|
|
150
|
-
"description": "All dialogs and documentation in English"
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
"label": "🇰🇷 한국어",
|
|
154
|
-
"description": "All dialogs and documentation in Korean"
|
|
155
|
-
},
|
|
156
|
-
{
|
|
157
|
-
"label": "🇯🇵 日本語",
|
|
158
|
-
"description": "All dialogs and documentation in Japanese"
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
"label": "🇨🇳 中文",
|
|
162
|
-
"description": "All dialogs and documentation in Chinese"
|
|
163
|
-
}
|
|
164
|
-
]
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
"question": "In which language should Alfred's sub-agent prompts be written?",
|
|
168
|
-
"header": "Agent Prompt Language",
|
|
169
|
-
"multiSelect": false,
|
|
170
|
-
"options": [
|
|
171
|
-
{
|
|
172
|
-
"label": "🌐 English (Global Standard)",
|
|
173
|
-
"description": "All sub-agent prompts in English for global consistency and team collaboration. Recommended for Claude Pro $20 users: reduces token usage by ~15-20%, lowering API costs"
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
"label": "🗣️ Selected Language (Localized)",
|
|
177
|
-
"description": "All sub-agent prompts in the language you selected above for local team efficiency"
|
|
178
|
-
}
|
|
179
|
-
]
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
"question": "How would you like to be called in our conversations? (e.g., GOOS, Team Lead, Developer, or custom name - max 20 chars)",
|
|
183
|
-
"header": "Nickname",
|
|
184
|
-
"multiSelect": false,
|
|
185
|
-
"options": [
|
|
186
|
-
{
|
|
187
|
-
"label": "Enter custom nickname",
|
|
188
|
-
"description": "Type your preferred name using the 'Other' option below"
|
|
189
|
-
}
|
|
190
|
-
]
|
|
191
|
-
}
|
|
192
|
-
]
|
|
193
|
-
)
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
**응답 처리**:
|
|
197
|
-
|
|
198
|
-
**Q1 (사용자 언어)**:
|
|
199
|
-
|
|
200
|
-
- Selected option stored as: `conversation_language: "ko"` (or "en", "ja", "zh", etc.)
|
|
201
|
-
|
|
202
|
-
**Q2 (에이전트 프롬프트 언어)** - **NEW**:
|
|
203
|
-
|
|
204
|
-
- **"English (Global Standard)"** → `agent_prompt_language: "english"`
|
|
205
|
-
- All sub-agent prompts written in English
|
|
206
|
-
- Recommended for global teams, code consistency, and international collaboration
|
|
207
|
-
- Project-manager, spec-builder, code-builder use English prompts internally
|
|
208
|
-
- **"Selected Language (Localized)"** → `agent_prompt_language: "localized"`
|
|
209
|
-
- All sub-agent prompts written in the user-selected language
|
|
210
|
-
- Recommended for local teams, local documentation, and native language efficiency
|
|
211
|
-
- Project-manager receives prompts in selected language (e.g., Korean, Japanese)
|
|
212
|
-
|
|
213
|
-
**Q3 (사용자 닉네임)**:
|
|
214
|
-
|
|
215
|
-
- Custom nickname stored as: `user.nickname: "GOOS"` (or custom input)
|
|
216
|
-
|
|
217
|
-
#### 0.1.3 팀 모드 추가 배치: GitHub 설정 & Git 워크플로우 선택 (팀 모드만)
|
|
218
|
-
|
|
219
|
-
**조건**: `config.json`에서 `"mode": "team"` 감지 시 실행
|
|
220
|
-
|
|
221
|
-
**배치 구성**: 2개 질문 (1회 호출로 통합)
|
|
222
|
-
|
|
223
|
-
**Example AskUserQuestion Call**:
|
|
224
|
-
|
|
225
|
-
```python
|
|
226
|
-
AskUserQuestion(
|
|
227
|
-
questions=[
|
|
228
|
-
{
|
|
229
|
-
"question": "[Team Mode] Is 'Automatically delete head branches' enabled in your GitHub repository settings?",
|
|
230
|
-
"header": "GitHub Branch Settings",
|
|
231
|
-
"multiSelect": false,
|
|
232
|
-
"options": [
|
|
233
|
-
{
|
|
234
|
-
"label": "✅ Yes, already enabled",
|
|
235
|
-
"description": "PR merge 후 자동으로 원격 브랜치 삭제됨"
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
"label": "❌ No, not enabled (Recommended: Enable)",
|
|
239
|
-
"description": "Settings → General → '자동 삭제' 체크박스 확인 필요"
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
"label": "🤔 Not sure / Need to check",
|
|
243
|
-
"description": "GitHub Settings → General 확인 후 다시 진행"
|
|
244
|
-
}
|
|
245
|
-
]
|
|
246
|
-
},
|
|
247
|
-
{
|
|
248
|
-
"question": "[Team Mode] Which Git workflow should we use when creating SPEC documents?",
|
|
249
|
-
"header": "SPEC Git Workflow",
|
|
250
|
-
"multiSelect": false,
|
|
251
|
-
"options": [
|
|
252
|
-
{
|
|
253
|
-
"label": "📋 Feature Branch + PR",
|
|
254
|
-
"description": "매 SPEC마다 feature 브랜치 생성 → PR 리뷰 → develop 병합. 팀 협업과 코드 리뷰에 최적"
|
|
255
|
-
},
|
|
256
|
-
{
|
|
257
|
-
"label": "🔄 Direct Commit to Develop",
|
|
258
|
-
"description": "브랜치 생성 없이 develop에 직접 커밋. 빠른 프로토타이핑과 단순 워크플로우에 최적"
|
|
259
|
-
},
|
|
260
|
-
{
|
|
261
|
-
"label": "🤔 Decide per SPEC",
|
|
262
|
-
"description": "SPEC 생성 시마다 매번 선택. 유연성이 높지만 매번 결정 필요"
|
|
263
|
-
}
|
|
264
|
-
]
|
|
265
|
-
}
|
|
266
|
-
]
|
|
267
|
-
)
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
**응답 처리**:
|
|
271
|
-
|
|
272
|
-
**Q1 (GitHub 설정)**:
|
|
273
|
-
|
|
274
|
-
- **"Yes, already enabled"** → `auto_delete_branches: true` 저장
|
|
275
|
-
- **"No, not enabled"** → `auto_delete_branches: false` + 권장사항 저장
|
|
276
|
-
- **"Not sure"** → `auto_delete_branches: null` + 경고 메시지
|
|
277
|
-
|
|
278
|
-
**Q2 (Git 워크플로우)**:
|
|
279
|
-
|
|
280
|
-
- **"Feature Branch + PR"** → `spec_git_workflow: "feature_branch"` 저장
|
|
281
|
-
- `/alfred:1-plan` 실행 시 자동으로 feature 브랜치 생성
|
|
282
|
-
- git-manager가 PR 기반 워크플로우 적용
|
|
283
|
-
- **"Direct Commit to Develop"** → `spec_git_workflow: "develop_direct"` 저장
|
|
284
|
-
- `/alfred:1-plan` 실행 시 develop 브랜치에 직접 커밋
|
|
285
|
-
- 브랜치 생성 과정 생략
|
|
286
|
-
- **"Decide per SPEC"** → `spec_git_workflow: "per_spec"` 저장
|
|
287
|
-
- `/alfred:1-plan` 실행 시마다 git-manager가 사용자에게 선택 요청
|
|
288
|
-
|
|
289
|
-
**User Response Example**:
|
|
290
|
-
|
|
291
|
-
```
|
|
292
|
-
Selected Language: 🇰🇷 한국어
|
|
293
|
-
Selected Nickname: GOOS (typed via "Other" option)
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
---
|
|
297
|
-
|
|
298
|
-
### 0.1.4 Domain Selection (Optional - All Modes)
|
|
299
|
-
|
|
300
|
-
**Purpose**: Identify project domains to activate domain-expert agents for specialized guidance.
|
|
301
|
-
|
|
302
|
-
**When to ask**: After language/nickname/GitHub settings complete
|
|
303
|
-
|
|
304
|
-
**Batched Design**: Domain selection integrated into initial batch OR asked separately based on user preference
|
|
305
|
-
|
|
306
|
-
**Example AskUserQuestion Call**:
|
|
307
|
-
|
|
308
|
-
```python
|
|
309
|
-
AskUserQuestion(
|
|
310
|
-
questions=[
|
|
311
|
-
{
|
|
312
|
-
"question": "Which domains does your project involve? (Select all that apply)",
|
|
313
|
-
"header": "Project Domains",
|
|
314
|
-
"multiSelect": true,
|
|
315
|
-
"options": [
|
|
316
|
-
{
|
|
317
|
-
"label": "🎨 Frontend",
|
|
318
|
-
"description": "React, Vue, Angular, Next.js, Nuxt, SvelteKit, Astro, Remix, SolidJS"
|
|
319
|
-
},
|
|
320
|
-
{
|
|
321
|
-
"label": "⚙️ Backend",
|
|
322
|
-
"description": "FastAPI, Flask, Django, Express, Fastify, NestJS, Spring Boot, Gin, Axum"
|
|
323
|
-
},
|
|
324
|
-
{
|
|
325
|
-
"label": "🚀 DevOps",
|
|
326
|
-
"description": "Railway, Vercel, Docker, Kubernetes, AWS, GCP, Azure, CI/CD"
|
|
327
|
-
},
|
|
328
|
-
{
|
|
329
|
-
"label": "🗄️ Database",
|
|
330
|
-
"description": "PostgreSQL, MySQL, MongoDB, Redis, database design and optimization"
|
|
331
|
-
},
|
|
332
|
-
{
|
|
333
|
-
"label": "📊 Data Science",
|
|
334
|
-
"description": "Data analysis, machine learning, data pipelines, notebooks"
|
|
335
|
-
},
|
|
336
|
-
{
|
|
337
|
-
"label": "📱 Mobile",
|
|
338
|
-
"description": "React Native, Flutter, iOS, Android app development"
|
|
339
|
-
},
|
|
340
|
-
{
|
|
341
|
-
"label": "⚡ Skip",
|
|
342
|
-
"description": "No domain selection (can add later via /alfred:1-plan)"
|
|
343
|
-
}
|
|
344
|
-
]
|
|
345
|
-
}
|
|
346
|
-
]
|
|
347
|
-
)
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
**Response Processing**:
|
|
351
|
-
|
|
352
|
-
When user selects domains, Alfred processes the response as follows:
|
|
353
|
-
|
|
354
|
-
**Selected Domain Processing** (`answers["0"]` contains selected domain labels):
|
|
355
|
-
|
|
356
|
-
- Extract selected domain codes from labels: "Frontend" → "frontend", "Backend" → "backend", etc.
|
|
357
|
-
- Store selected domains in `.moai/config.json`:
|
|
358
|
-
```json
|
|
359
|
-
{
|
|
360
|
-
"stack": {
|
|
361
|
-
"selected_domains": ["frontend", "backend"],
|
|
362
|
-
"domain_selection_date": "2025-10-23T12:34:56Z"
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
**Skip Domain Selection** (if user selects "⚡ Skip"):
|
|
368
|
-
|
|
369
|
-
- Store in config.json:
|
|
370
|
-
```json
|
|
371
|
-
{
|
|
372
|
-
"stack": {
|
|
373
|
-
"selected_domains": [],
|
|
374
|
-
"domain_selection_skipped": true,
|
|
375
|
-
"domain_selection_date": "2025-10-23T12:34:56Z"
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
```
|
|
379
|
-
- Display: "✅ Domain selection skipped. You can add domains later during `/alfred:1-plan`"
|
|
380
|
-
|
|
381
|
-
**Domain Expert Activation**:
|
|
382
|
-
|
|
383
|
-
- Selected domains stored in `.moai/config.json`
|
|
384
|
-
- Domain-expert agents activated during `/alfred:1-plan` (automatic keyword detection)
|
|
385
|
-
- Domain-expert agents available as advisors during `/alfred:2-run`
|
|
386
|
-
- Domain-specific sync routing enabled in `/alfred:3-sync`
|
|
387
|
-
- If domains skipped: Default agent lineup used (can be customized later in `/alfred:1-plan`)
|
|
388
|
-
|
|
389
|
-
---
|
|
390
|
-
|
|
391
|
-
### 0.2 사용자 정보 저장
|
|
392
|
-
|
|
393
|
-
Alfred가 선택된 언어, 닉네임, 그리고 팀 모드 설정을 다음과 같이 저장합니다:
|
|
394
|
-
|
|
395
|
-
#### 0.2.1 기본 정보 저장 (항상) - 에이전트 프롬프트 언어 추가
|
|
396
|
-
|
|
397
|
-
```json
|
|
398
|
-
{
|
|
399
|
-
"language": {
|
|
400
|
-
"conversation_language": "ko",
|
|
401
|
-
"conversation_language_name": "한국어",
|
|
402
|
-
"agent_prompt_language": "localized",
|
|
403
|
-
"agent_prompt_language_description": "All sub-agent prompts written in the selected language (localized)"
|
|
404
|
-
},
|
|
405
|
-
"user": {
|
|
406
|
-
"nickname": "GOOS",
|
|
407
|
-
"selected_at": "2025-10-23T12:34:56Z"
|
|
408
|
-
},
|
|
409
|
-
"stack": {
|
|
410
|
-
"selected_domains": ["frontend", "backend"],
|
|
411
|
-
"domain_selection_date": "2025-10-23T12:34:56Z"
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
**에이전트 프롬프트 언어 옵션**:
|
|
417
|
-
|
|
418
|
-
- **`"english"`** (Global Standard) - **💰 Claude Pro $20 사용자 추천**:
|
|
419
|
-
|
|
420
|
-
- All sub-agent prompts and internal communication in English
|
|
421
|
-
- Best for: International teams, global collaboration, code consistency
|
|
422
|
-
- Impact: Project-manager, spec-builder, code-builder all use English task prompts
|
|
423
|
-
- **Cost Benefit**: Reduces token usage by ~15-20% compared to non-English prompts
|
|
424
|
-
- English prompts are more efficient and use fewer tokens
|
|
425
|
-
- Significant cost savings for continuous API usage
|
|
426
|
-
- Example: 100,000 tokens in English ≈ 115,000-120,000 tokens in Korean/Japanese
|
|
427
|
-
|
|
428
|
-
- **`"localized"`** (Localized - Default for non-English):
|
|
429
|
-
- All sub-agent prompts and internal communication in selected language
|
|
430
|
-
- Best for: Local teams, native language efficiency, culturally-specific guidance
|
|
431
|
-
- Impact: Project-manager, spec-builder, code-builder all use localized task prompts
|
|
432
|
-
- Note: Uses ~15-20% more tokens due to language characteristics
|
|
433
|
-
|
|
434
|
-
#### 0.2.2 GitHub & Git 워크플로우 설정 저장 (팀 모드만)
|
|
435
|
-
|
|
436
|
-
**팀 모드 감지 시 추가 저장 - Feature Branch + PR 선택 시**:
|
|
437
|
-
|
|
438
|
-
```json
|
|
439
|
-
{
|
|
440
|
-
"github": {
|
|
441
|
-
"auto_delete_branches": true,
|
|
442
|
-
"spec_git_workflow": "feature_branch",
|
|
443
|
-
"checked_at": "2025-10-23T12:34:56Z",
|
|
444
|
-
"workflow_recommendation": "Feature branch를 사용한 PR 기반 협업 워크플로우. 매 SPEC마다 feature/spec-* 브랜치 생성, PR 리뷰 후 develop 병합"
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
```
|
|
448
|
-
|
|
449
|
-
**또는 - Direct Commit to Develop 선택 시**:
|
|
450
|
-
|
|
451
|
-
```json
|
|
452
|
-
{
|
|
453
|
-
"github": {
|
|
454
|
-
"auto_delete_branches": false,
|
|
455
|
-
"spec_git_workflow": "develop_direct",
|
|
456
|
-
"checked_at": "2025-10-23T12:34:56Z",
|
|
457
|
-
"workflow_recommendation": "develop 브랜치에 직접 커밋하는 단순 워크플로우. 브랜치 생성 과정 생략, 빠른 개발 속도"
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
```
|
|
461
|
-
|
|
462
|
-
**또는 - Decide per SPEC 선택 시**:
|
|
463
|
-
|
|
464
|
-
```json
|
|
465
|
-
{
|
|
466
|
-
"github": {
|
|
467
|
-
"auto_delete_branches": true,
|
|
468
|
-
"spec_git_workflow": "per_spec",
|
|
469
|
-
"checked_at": "2025-10-23T12:34:56Z",
|
|
470
|
-
"workflow_recommendation": "SPEC 생성 시마다 워크플로우 선택. /alfred:1-plan 실행 시 git-manager가 선택 요청"
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
```
|
|
474
|
-
|
|
475
|
-
#### 0.2.3 저장된 정보 활용
|
|
476
|
-
|
|
477
|
-
이 정보는:
|
|
478
|
-
|
|
479
|
-
- 모든 sub-agents 에게 컨텍스트 파라미터로 전달됨
|
|
480
|
-
- `.moai/config.json` 의 `language`, `user`, `github` 필드에 저장됨
|
|
481
|
-
- CLAUDE.md의 `{{CONVERSATION_LANGUAGE}}` 및 `{{USER_NICKNAME}}` 변수로 치환됨
|
|
482
|
-
- 모든 Alfred 대화에서 사용됨
|
|
483
|
-
- **팀 모드**: git-manager가 다음 워크플로우를 자동으로 적용:
|
|
484
|
-
- **`spec_git_workflow: "feature_branch"`**: `/alfred:1-plan` 실행 시 feature/spec-\* 브랜치 생성, PR 기반 리뷰 프로세스 적용
|
|
485
|
-
- **`spec_git_workflow: "develop_direct"`**: `/alfred:1-plan` 실행 시 develop 브랜치에 직접 커밋, 브랜치 생성 과정 생략
|
|
486
|
-
- **`spec_git_workflow: "per_spec"`**: `/alfred:1-plan` 실행 시마다 사용자에게 워크플로우 선택 요청
|
|
487
|
-
|
|
488
|
-
**설정 완료 출력 예시**:
|
|
489
|
-
|
|
490
|
-
```markdown
|
|
491
|
-
✅ 초기 설정 완료!
|
|
492
|
-
|
|
493
|
-
언어: 한국어 (ko)
|
|
494
|
-
닉네임: GOOS
|
|
495
|
-
|
|
496
|
-
이제 GOOS님의 프로젝트 환경 분석으로 진행하겠습니다...
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
### 0.3 STEP 1로 전환
|
|
500
|
-
|
|
501
|
-
언어 및 사용자 정보 설정 완료 후, 모든 후속 상호작용이 선택된 언어로 진행됩니다:
|
|
502
|
-
|
|
503
|
-
- Alfred의 모든 프롬프트가 선택된 언어로 번역됨
|
|
504
|
-
- project-manager sub-agent이 언어 및 사용자 정보 파라미터를 수신
|
|
505
|
-
- 인터뷰 질문이 선택된 언어로 진행됨
|
|
506
|
-
- 생성된 문서 (product.md, structure.md, tech.md)가 선택된 언어로 작성됨
|
|
507
|
-
- CLAUDE.md가 선택된 언어와 사용자 닉네임을 표시함
|
|
508
|
-
|
|
509
|
-
---
|
|
510
|
-
|
|
511
|
-
## 🚀 STEP 1: Environmental analysis and interview plan development
|
|
512
|
-
|
|
513
|
-
Analyze the project environment and develop a systematic interview plan.
|
|
514
|
-
|
|
515
|
-
### 1.0 Check backup directory (highest priority)
|
|
516
|
-
|
|
517
|
-
**Processing backup files after moai-adk init reinitialization**
|
|
518
|
-
|
|
519
|
-
Alfred first checks the `.moai-backups/` directory:
|
|
520
|
-
|
|
521
|
-
```bash
|
|
522
|
-
# Check latest backup timestamp
|
|
523
|
-
ls -t .moai-backups/ | head -1
|
|
524
|
-
|
|
525
|
-
# Check the optimized flag in config.json
|
|
526
|
-
grep "optimized" .moai/config.json
|
|
527
|
-
```
|
|
528
|
-
|
|
529
|
-
**Backup existence conditions**:
|
|
530
|
-
|
|
531
|
-
- `.moai-backups/` directory exists
|
|
532
|
-
- `.moai/project/*.md` file exists in the latest backup folder
|
|
533
|
-
- User's existing project files can be merged (regardless of optimized flag)
|
|
534
|
-
|
|
535
|
-
**Backup Detection Result**:
|
|
536
|
-
|
|
537
|
-
- **Backup Found**: Latest backup is `.moai-backups/[TIMESTAMP]/`
|
|
538
|
-
- **No Backup**: Proceed directly to Phase 1.2 (project environment analysis)
|
|
539
|
-
|
|
540
|
-
**Select user if backup exists**
|
|
541
|
-
|
|
542
|
-
When a backup is detected, call `AskUserQuestion tool (documented in moai-alfred-interactive-questions skill)` to present a TUI decision:
|
|
543
|
-
|
|
544
|
-
**Example AskUserQuestion Call**:
|
|
545
|
-
|
|
546
|
-
```python
|
|
547
|
-
AskUserQuestion(
|
|
548
|
-
questions=[
|
|
549
|
-
{
|
|
550
|
-
"question": "Previous project configuration found in backup. How would you like to proceed?",
|
|
551
|
-
"header": "Backup Merge Decision",
|
|
552
|
-
"multiSelect": false,
|
|
553
|
-
"options": [
|
|
554
|
-
{
|
|
555
|
-
"label": "🔄 Merge (Recommended)",
|
|
556
|
-
"description": "Restore your previous customizations with latest template structure"
|
|
557
|
-
},
|
|
558
|
-
{
|
|
559
|
-
"label": "📋 New Interview",
|
|
560
|
-
"description": "Start fresh interview, ignore previous configuration"
|
|
561
|
-
},
|
|
562
|
-
{
|
|
563
|
-
"label": "⏸️ Skip (Keep Current)",
|
|
564
|
-
"description": "Keep existing project files without changes"
|
|
565
|
-
}
|
|
566
|
-
]
|
|
567
|
-
}
|
|
568
|
-
]
|
|
569
|
-
)
|
|
570
|
-
```
|
|
571
|
-
|
|
572
|
-
**Response Processing**:
|
|
573
|
-
|
|
574
|
-
- **"Merge (Recommended)"** (`answers["0"] === "Merge"`) → Proceed to Phase 1.1 (backup merge workflow)
|
|
575
|
-
|
|
576
|
-
- Extract user customizations from backup
|
|
577
|
-
- Combine with latest template structure
|
|
578
|
-
- Update version in HISTORY section
|
|
579
|
-
- Set `optimized: true` in config.json
|
|
580
|
-
|
|
581
|
-
- **"New Interview"** (`answers["0"] === "New Interview"`) → Proceed to Phase 1.2 (Project environment analysis)
|
|
582
|
-
|
|
583
|
-
- Archive existing backup for reference
|
|
584
|
-
- Begin fresh interview without prior customizations
|
|
585
|
-
- Create new product/structure/tech.md from interview results
|
|
586
|
-
|
|
587
|
-
- **"Skip (Keep Current)"** (`answers["0"] === "Skip"`) → End task
|
|
588
|
-
- Terminate /alfred:0-project execution
|
|
589
|
-
- Preserve all existing files unchanged
|
|
590
|
-
- User must manually run if changes needed
|
|
591
|
-
|
|
592
|
-
**No backup found**:
|
|
593
|
-
|
|
594
|
-
- Display: "✅ No previous backup detected. Starting fresh interview..."
|
|
595
|
-
- Proceed directly to Phase 1.2 (project environment analysis)
|
|
596
|
-
|
|
597
|
-
---
|
|
598
|
-
|
|
599
|
-
### 1.1 Backup merge workflow (when user selects "Merge")
|
|
600
|
-
|
|
601
|
-
**Purpose**: Restore only user customizations while maintaining the latest template structure.
|
|
602
|
-
|
|
603
|
-
**STEP 1: Read backup file**
|
|
604
|
-
|
|
605
|
-
Alfred reads files from the latest backup directory:
|
|
606
|
-
|
|
607
|
-
```bash
|
|
608
|
-
# Latest backup directory path
|
|
609
|
-
BACKUP_DIR=.moai-backups/$(ls -t .moai-backups/ | head -1)
|
|
610
|
-
|
|
611
|
-
# Read backup file
|
|
612
|
-
Read $BACKUP_DIR/.moai/project/product.md
|
|
613
|
-
Read $BACKUP_DIR/.moai/project/structure.md
|
|
614
|
-
Read $BACKUP_DIR/.moai/project/tech.md
|
|
615
|
-
Read $BACKUP_DIR/CLAUDE.md
|
|
616
|
-
```
|
|
617
|
-
|
|
618
|
-
**STEP 2: Detect template defaults**
|
|
619
|
-
|
|
620
|
-
The following patterns are considered "template defaults" (not merged):
|
|
621
|
-
|
|
622
|
-
- "Define your key user base"
|
|
623
|
-
- "Describe the core problem you are trying to solve"
|
|
624
|
-
- "List the strengths and differences of your project"
|
|
625
|
-
- "MoAI-ADK", "MoAI-Agentic Development Kit", etc. Variable format
|
|
626
|
-
- Guide phrases such as "Example:", "Sample:", "Example:", etc.
|
|
627
|
-
|
|
628
|
-
**STEP 3: Extract user customization**
|
|
629
|
-
|
|
630
|
-
Extract only **non-template default content** from the backup file:
|
|
631
|
-
|
|
632
|
-
- `product.md`:
|
|
633
|
-
- Define your actual user base in the USER section
|
|
634
|
-
- Describe the actual problem in the PROBLEM section
|
|
635
|
-
- Real differences in the STRATEGY section
|
|
636
|
-
- Actual success metrics in the SUCCESS section
|
|
637
|
-
- `structure.md`:
|
|
638
|
-
- Actual design in the ARCHITECTURE section
|
|
639
|
-
- Actual module structure in the MODULES section
|
|
640
|
-
- Actual integration plan in the INTEGRATION section
|
|
641
|
-
- `tech.md`:
|
|
642
|
-
- The actual technology stack
|
|
643
|
-
in the STACK section - The actual framework
|
|
644
|
-
in the FRAMEWORK section - The actual quality policy
|
|
645
|
-
in the QUALITY section - `HISTORY` section: **Full Preservation** (all files)
|
|
646
|
-
|
|
647
|
-
**STEP 4: Merge Strategy**
|
|
648
|
-
|
|
649
|
-
```markdown
|
|
650
|
-
Latest template structure (v0.4.0+)
|
|
651
|
-
↓
|
|
652
|
-
Insert user customization (extracted from backup file)
|
|
653
|
-
↓
|
|
654
|
-
HISTORY section updates
|
|
655
|
-
↓
|
|
656
|
-
Version update (v0.1.x → v0.1.x+1)
|
|
657
|
-
```
|
|
658
|
-
|
|
659
|
-
**Merge Principle**:
|
|
660
|
-
|
|
661
|
-
- ✅ Maintain the latest version of the template structure (section order, header, @TAG format)
|
|
662
|
-
- ✅ Insert only user customization (actual content written)
|
|
663
|
-
- ✅ Cumulative preservation of the HISTORY section (existing history + merge history)
|
|
664
|
-
- ❌ Replace template default values with the latest version
|
|
665
|
-
|
|
666
|
-
**STEP 5: HISTORY Section Update**
|
|
667
|
-
|
|
668
|
-
After the merge is complete, add history to the HISTORY section of each file:
|
|
669
|
-
|
|
670
|
-
```yaml
|
|
671
|
-
### v0.1.x+1 (2025-10-19)
|
|
672
|
-
- **UPDATED**: Merge backup files (automatic optimization)
|
|
673
|
-
- AUTHOR: @Alfred
|
|
674
|
-
- BACKUP: .moai-backups/20251018-003638/
|
|
675
|
-
- REASON: Restoring user customization after moai-adk init reinitialization
|
|
676
|
-
```
|
|
677
|
-
|
|
678
|
-
**STEP 6: Update config.json**
|
|
679
|
-
|
|
680
|
-
Set optimization flags after the merge is complete:
|
|
681
|
-
|
|
682
|
-
```json
|
|
683
|
-
{
|
|
684
|
-
"project": {
|
|
685
|
-
"optimized": true,
|
|
686
|
-
"last_merge": "2025-10-19T12:34:56+09:00",
|
|
687
|
-
"backup_source": ".moai-backups/20251018-003638/"
|
|
688
|
-
}
|
|
689
|
-
}
|
|
690
|
-
```
|
|
691
|
-
|
|
692
|
-
**STEP 7: Completion Report**
|
|
693
|
-
|
|
694
|
-
```markdown
|
|
695
|
-
✅ Backup merge completed!
|
|
696
|
-
|
|
697
|
-
📁 Merged files:
|
|
698
|
-
|
|
699
|
-
- .moai/project/product.md (v0.1.4 → v0.1.5)
|
|
700
|
-
- .moai/project/structure.md (v0.1.1 → v0.1.2)
|
|
701
|
-
- .moai/project/tech.md (v0.1.1 → v0.1.2)
|
|
702
|
-
- .moai/config.json (optimized: false → true)
|
|
703
|
-
|
|
704
|
-
🔍 Merge history:
|
|
705
|
-
|
|
706
|
-
- USER section: Restore customized contents of backup file
|
|
707
|
-
- PROBLEM section: Restore problem description of backup file
|
|
708
|
-
- STRATEGY section: Restore differentials of backup file
|
|
709
|
-
- HISTORY section: Add merge history (cumulative retention)
|
|
710
|
-
|
|
711
|
-
💾 Backup file location:
|
|
712
|
-
|
|
713
|
-
- Original backup: .moai-backups/20251018-003638/
|
|
714
|
-
- Retention period: Permanent (until manual deletion)
|
|
715
|
-
|
|
716
|
-
📋 Next steps:
|
|
717
|
-
|
|
718
|
-
1. Review the merged document
|
|
719
|
-
2. Additional modifications if necessary
|
|
720
|
-
3. Create your first SPEC with /alfred:1-plan
|
|
721
|
-
|
|
722
|
-
---
|
|
723
|
-
|
|
724
|
-
**Task completed: /alfred:0-project terminated**
|
|
725
|
-
```
|
|
726
|
-
|
|
727
|
-
**Finish work after merge**: Complete immediately without interview
|
|
728
|
-
|
|
729
|
-
---
|
|
730
|
-
|
|
731
|
-
### 1.2 Run project environment analysis (when user selects "New" or no backup)
|
|
732
|
-
|
|
733
|
-
**Automatically analyzed items**:
|
|
734
|
-
|
|
735
|
-
1. **Project Type Detection**
|
|
736
|
-
Alfred classifies new vs existing projects by analyzing the directory structure:
|
|
737
|
-
|
|
738
|
-
- Empty directory → New project
|
|
739
|
-
- Code/documentation present → Existing project
|
|
740
|
-
|
|
741
|
-
2. **Auto-detect language/framework**: Detects the main language of your project based on file patterns
|
|
742
|
-
- pyproject.toml, requirements.txt → Python
|
|
743
|
-
- package.json, tsconfig.json → TypeScript/Node.js
|
|
744
|
-
- pom.xml, build.gradle → Java
|
|
745
|
-
- go.mod → Go
|
|
746
|
-
- Cargo.toml → Rust
|
|
747
|
-
|
|
748
|
-
- backend/ + frontend/ → full stack
|
|
749
|
-
|
|
750
|
-
3. **Document status analysis**
|
|
751
|
-
|
|
752
|
-
- Check the status of existing `.moai/project/*.md` files
|
|
753
|
-
- Identify areas of insufficient information
|
|
754
|
-
- Organize items that need supplementation
|
|
755
|
-
|
|
756
|
-
4. **Project structure evaluation**
|
|
757
|
-
|
|
758
|
-
- Directory structure complexity
|
|
759
|
-
- Monolingual vs. hybrid vs. microservice
|
|
760
|
-
- Code base size estimation
|
|
761
|
-
|
|
762
|
-
### 1.3 Establish interview strategy (when user selects "New")
|
|
763
|
-
|
|
764
|
-
**Select question tree by project type**:
|
|
765
|
-
|
|
766
|
-
| Project Type | Question Category | Focus Areas |
|
|
767
|
-
| ------------------------- | ------------------ | --------------------------------------------- |
|
|
768
|
-
| **New Project** | Product Discovery | Mission, Users, Problems Solved |
|
|
769
|
-
| **Existing Project** | Legacy Analysis | Code Base, Technical Debt, Integration Points |
|
|
770
|
-
| **TypeScript conversion** | Migration Strategy | TypeScript conversion for existing projects |
|
|
771
|
-
|
|
772
|
-
**Question Priority**:
|
|
773
|
-
|
|
774
|
-
- **Essential Questions**: Core Business Value, Key User Bases (all projects)
|
|
775
|
-
- **Technical Questions**: Language/Framework, Quality Policy, Deployment Strategy
|
|
776
|
-
- **Governance**: Security Requirements, Traceability Strategy (Optional)
|
|
777
|
-
|
|
778
|
-
### 1.4 Generate Interview Plan Report (when user selects "Create New")
|
|
779
|
-
|
|
780
|
-
**Purpose**: Present user with a clear interview plan before execution, allowing review and modification.
|
|
781
|
-
|
|
782
|
-
**Format of plan to be presented to users**:
|
|
783
|
-
|
|
784
|
-
```markdown
|
|
785
|
-
## 📊 Project Initialization Plan: [PROJECT-NAME]
|
|
786
|
-
|
|
787
|
-
### Environmental Analysis Results
|
|
788
|
-
|
|
789
|
-
- **Project Type**: [New/Existing/Hybrid]
|
|
790
|
-
- **Languages Detected**: [Language List]
|
|
791
|
-
- **Current Document Status**: [Completeness Rating 0-100%]
|
|
792
|
-
- **Structure Complexity**: [Simple/Medium/Complex]
|
|
793
|
-
|
|
794
|
-
### 🎯 Interview Strategy
|
|
795
|
-
|
|
796
|
-
- **Question Category**: Product Discovery / Structure / Tech
|
|
797
|
-
- **Expected Number of Questions**: [N questions (M required + K optional)]
|
|
798
|
-
- **Estimated Time Required**: [Time estimation, e.g., 15-20 minutes]
|
|
799
|
-
- **Priority Areas**: [Key focus areas to be covered]
|
|
800
|
-
|
|
801
|
-
### 📋 Interview Phases
|
|
802
|
-
|
|
803
|
-
1. **Product Discovery** (product.md)
|
|
804
|
-
|
|
805
|
-
- Core mission and value proposition
|
|
806
|
-
- Key user bases and success metrics
|
|
807
|
-
|
|
808
|
-
2. **Structure Blueprint** (structure.md)
|
|
809
|
-
|
|
810
|
-
- System architecture strategy
|
|
811
|
-
- Module boundaries and responsibility
|
|
812
|
-
|
|
813
|
-
3. **Tech Stack Mapping** (tech.md)
|
|
814
|
-
- Language/framework selection
|
|
815
|
-
- Quality and deployment policies
|
|
816
|
-
|
|
817
|
-
### ⚠️ Important Notes
|
|
818
|
-
|
|
819
|
-
- **Existing Document**: [Overwrite/Merge/Supplement strategy]
|
|
820
|
-
- **Language Settings**: [Conversation language: {{CONVERSATION_LANGUAGE_NAME}}]
|
|
821
|
-
- **Team Mode**: [Personal/Team workflow configured]
|
|
822
|
-
- **Configuration**: [Compatibility with existing config.json]
|
|
823
|
-
|
|
824
|
-
### ✅ Expected Deliverables
|
|
825
|
-
|
|
826
|
-
- **product.md**: Business requirements and strategy document
|
|
827
|
-
- **structure.md**: System architecture and design document
|
|
828
|
-
- **tech.md**: Technology stack and quality policy document
|
|
829
|
-
- **config.json**: Project settings and configurations
|
|
830
|
-
|
|
831
|
-
---
|
|
832
|
-
|
|
833
|
-
**Please review the plan above and confirm whether to proceed.**
|
|
834
|
-
```
|
|
835
|
-
|
|
836
|
-
### 1.5 User Approval with AskUserQuestion (when user selects "New")
|
|
837
|
-
|
|
838
|
-
After Alfred generates the interview plan report, call `AskUserQuestion` tool (documented in moai-alfred-interactive-questions skill) to get explicit user approval before starting the interview.
|
|
839
|
-
|
|
840
|
-
**Example AskUserQuestion Call**:
|
|
841
|
-
|
|
842
|
-
```python
|
|
843
|
-
AskUserQuestion(
|
|
844
|
-
questions=[
|
|
845
|
-
{
|
|
846
|
-
"question": "Please review the interview plan above. Would you like to proceed with this plan?",
|
|
847
|
-
"header": "Interview Plan Approval",
|
|
848
|
-
"multiSelect": false,
|
|
849
|
-
"options": [
|
|
850
|
-
{
|
|
851
|
-
"label": "✅ Proceed with Plan",
|
|
852
|
-
"description": "Start interview following the plan above (Phase 2)"
|
|
853
|
-
},
|
|
854
|
-
{
|
|
855
|
-
"label": "📋 Modify Plan",
|
|
856
|
-
"description": "Revise strategy and re-run analysis (back to Phase 1)"
|
|
857
|
-
},
|
|
858
|
-
{
|
|
859
|
-
"label": "⏹️ Cancel",
|
|
860
|
-
"description": "Exit initialization, keep existing files unchanged"
|
|
861
|
-
}
|
|
862
|
-
]
|
|
863
|
-
}
|
|
864
|
-
]
|
|
865
|
-
)
|
|
866
|
-
```
|
|
867
|
-
|
|
868
|
-
**Response Processing**:
|
|
869
|
-
|
|
870
|
-
- **"Proceed with Plan"** (`answers["0"] === "Proceed"`) → Execute Phase 2
|
|
871
|
-
|
|
872
|
-
- Call project-manager agent with approved plan parameters
|
|
873
|
-
- Conduct interview according to the plan
|
|
874
|
-
- Generate product/structure/tech.md documents
|
|
875
|
-
- Save config.json with all settings
|
|
876
|
-
|
|
877
|
-
- **"Modify Plan"** (`answers["0"] === "Modify"`) → Repeat Phase 1
|
|
878
|
-
|
|
879
|
-
- Return to environmental analysis
|
|
880
|
-
- Re-run project type detection
|
|
881
|
-
- Re-run language detection
|
|
882
|
-
- Generate new interview plan with user feedback
|
|
883
|
-
- Ask for approval again with modified plan
|
|
884
|
-
|
|
885
|
-
- **"Cancel"** (`answers["0"] === "Cancel"`) → End task
|
|
886
|
-
- Terminate /alfred:0-project execution
|
|
887
|
-
- Do not modify any existing files
|
|
888
|
-
- User can re-run command later
|
|
889
|
-
|
|
890
|
-
**Phase 2 Execution Condition**:
|
|
891
|
-
|
|
892
|
-
- Only proceed to Phase 2 (project initialization) if user confirms "Proceed with Plan"
|
|
893
|
-
- All other responses lead to re-planning or task termination
|
|
894
|
-
|
|
895
|
-
---
|
|
896
|
-
|
|
897
|
-
## 🚀 STEP 2: Execute project initialization (after user approves "New")
|
|
898
|
-
|
|
899
|
-
**Note**: This step will only be executed if the user selects **"New"**.
|
|
900
|
-
|
|
901
|
-
- When selecting "Merge": End the task in Phase 1.1 (Merge Backups)
|
|
902
|
-
- When selecting "Skip": End the task
|
|
903
|
-
- When selecting "New": Proceed with the process below
|
|
904
|
-
|
|
905
|
-
After user approval, the project-manager agent performs initialization.
|
|
906
|
-
|
|
907
|
-
### 2.1 Call project-manager agent (when user selects "New")
|
|
908
|
-
|
|
909
|
-
Alfred starts project initialization by calling the project-manager agent with the following parameters:
|
|
910
|
-
|
|
911
|
-
**Parameters passed to project-manager**:
|
|
912
|
-
|
|
913
|
-
- **conversation_language** (from STEP 0): Language code selected by user (e.g., "ko", "en", "ja", "zh")
|
|
914
|
-
- **language_name** (from STEP 0): Display name of selected language (e.g., "Korean", "English")
|
|
915
|
-
- **agent_prompt_language** (from STEP 0.1.2) - **NEW**:
|
|
916
|
-
- `"english"` = All sub-agent prompts in English (Global Standard)
|
|
917
|
-
- `"localized"` = All sub-agent prompts in selected conversation_language (Localized)
|
|
918
|
-
- Detected Languages: [Language List from codebase detection]
|
|
919
|
-
- Project Type: [New/Existing]
|
|
920
|
-
- Existing Document Status: [Existence/Absence]
|
|
921
|
-
- Approved Interview Plan: [Plan Summary]
|
|
922
|
-
- **Team Mode Git Workflow** (from STEP 0.1.3):
|
|
923
|
-
- `spec_git_workflow: "feature_branch" | "develop_direct" | "per_spec"` (팀 모드만)
|
|
924
|
-
|
|
925
|
-
**Execution**:
|
|
926
|
-
|
|
927
|
-
```
|
|
928
|
-
Call the Task tool:
|
|
929
|
-
- subagent_type: "project-manager"
|
|
930
|
-
- description: "Initialize project with conversation language support"
|
|
931
|
-
- prompt: """당신은 project-manager 에이전트입니다.
|
|
932
|
-
|
|
933
|
-
언어 설정:
|
|
934
|
-
- 대화_언어: {{CONVERSATION_LANGUAGE}} (모든 대화, 문서에 사용)
|
|
935
|
-
- 언어명: {{CONVERSATION_LANGUAGE_NAME}}
|
|
936
|
-
- 에이전트_프롬프트_언어: {{AGENT_PROMPT_LANGUAGE}} (내부 sub-agent 통신 언어)
|
|
937
|
-
|
|
938
|
-
에이전트 프롬프트 언어에 따른 작업 방식:
|
|
939
|
-
|
|
940
|
-
1. **agent_prompt_language = "english"** (Global Standard):
|
|
941
|
-
- 당신(project-manager)은 **영어**로 사고하고 작업합니다
|
|
942
|
-
- 모든 내부 분석과 계획을 영어로 진행합니다
|
|
943
|
-
- 생성된 product.md, structure.md, tech.md는 **{{CONVERSATION_LANGUAGE}}**로 작성합니다
|
|
944
|
-
- Sub-agent들(spec-builder 등)에게 전달하는 프롬프트는 **영어**입니다
|
|
945
|
-
|
|
946
|
-
2. **agent_prompt_language = "localized"** (Localized):
|
|
947
|
-
- 당신(project-manager)은 **{{CONVERSATION_LANGUAGE}}**로 사고하고 작업합니다
|
|
948
|
-
- 모든 내부 분석과 계획을 {{CONVERSATION_LANGUAGE}}로 진행합니다
|
|
949
|
-
- 생성된 product.md, structure.md, tech.md는 **{{CONVERSATION_LANGUAGE}}**로 작성합니다
|
|
950
|
-
- Sub-agent들(spec-builder 등)에게 전달하는 프롬프트도 **{{CONVERSATION_LANGUAGE}}**입니다
|
|
951
|
-
|
|
952
|
-
중요: 대화_언어(conversation_language)와 에이전트_프롬프트_언어(agent_prompt_language)는 다를 수 있습니다!
|
|
953
|
-
- 대화_언어는 **사용자와의 대화**, **생성 문서**에 사용
|
|
954
|
-
- 에이전트_프롬프트_언어는 **sub-agents 통신**, **내부 prompt**에 사용
|
|
955
|
-
|
|
956
|
-
GIT 워크플로우 설정 (팀 모드):
|
|
957
|
-
- spec_git_workflow: [feature_branch | develop_direct | per_spec]
|
|
958
|
-
- "feature_branch": feature/spec-* 브랜치 생성, PR 기반 리뷰, develop 병합
|
|
959
|
-
- "develop_direct": develop에 직접 커밋, 브랜치 생성 안 함
|
|
960
|
-
- "per_spec": SPEC별로 사용자에게 물어봄 (/alfred:1-plan 실행 중)
|
|
961
|
-
- 참고: 이 값을 .moai/config.json github.spec_git_workflow에 저장하여 git-manager가 참조하도록
|
|
962
|
-
|
|
963
|
-
프로젝트_타입: [new|existing]
|
|
964
|
-
감지된_언어들: [감지된 코드베이스 언어들]
|
|
965
|
-
|
|
966
|
-
중요 지시사항:
|
|
967
|
-
모든 인터뷰와 생성된 문서는 대화_언어(conversation_language)로 작성되어야 합니다:
|
|
968
|
-
- product.md: {{CONVERSATION_LANGUAGE}}로 생성
|
|
969
|
-
- structure.md: {{CONVERSATION_LANGUAGE}}로 생성
|
|
970
|
-
- tech.md: {{CONVERSATION_LANGUAGE}}로 생성
|
|
971
|
-
|
|
972
|
-
conversation_language가 'ko'인 경우: 모든 설명 내용을 한국어로
|
|
973
|
-
conversation_language가 'ja'인 경우: 모든 설명 내용을 일본어로
|
|
974
|
-
다른 언어인 경우: 지정된 언어를 따릅니다
|
|
975
|
-
|
|
976
|
-
프로젝트 초기화 후, 다음과 같이 .moai/config.json 업데이트:
|
|
977
|
-
{
|
|
978
|
-
"language": {
|
|
979
|
-
"conversation_language": "{{CONVERSATION_LANGUAGE}}",
|
|
980
|
-
"conversation_language_name": "{{CONVERSATION_LANGUAGE_NAME}}",
|
|
981
|
-
"agent_prompt_language": "{{AGENT_PROMPT_LANGUAGE}}"
|
|
982
|
-
},
|
|
983
|
-
"github": {
|
|
984
|
-
"spec_git_workflow": "[feature_branch|develop_direct|per_spec]"
|
|
985
|
-
}
|
|
986
|
-
}
|
|
987
|
-
|
|
988
|
-
스킬 호출:
|
|
989
|
-
필요 시 명시적 Skill() 호출 사용:
|
|
990
|
-
- Skill("moai-alfred-language-detection") - 코드베이스 언어 감지
|
|
991
|
-
- Skill("moai-foundation-langs") - 다국어 프로젝트 설정
|
|
992
|
-
|
|
993
|
-
작업: 프로젝트 인터뷰를 진행하고 product/structure/tech.md 문서를 생성/업데이트합니다.
|
|
994
|
-
에이전트_프롬프트_언어 설정에 따라 sub-agent들과의 통신 언어를 결정합니다."""
|
|
995
|
-
```
|
|
996
|
-
|
|
997
|
-
**Outcome**: The project-manager agent conducts structured interviews entirely in the selected language and creates/updates product/structure/tech.md documents in that language.
|
|
998
|
-
|
|
999
|
-
### 2.2 Automatic activation of Alfred Skills (optional)
|
|
1000
|
-
|
|
1001
|
-
After the project-manager has finished creating the document, **Alfred can optionally call Skills** (upon user request).
|
|
1002
|
-
|
|
1003
|
-
**Automatic activation conditions** (optional):
|
|
1004
|
-
|
|
1005
|
-
| Conditions | Automatic selection Skill | Purpose |
|
|
1006
|
-
| ------------------------------------ | ---------------------------- | -------------------------------------- |
|
|
1007
|
-
| User Requests "Quality Verification" | moai-alfred-trust-validation | Initial project structure verification |
|
|
1008
|
-
|
|
1009
|
-
**Execution flow** (optional):
|
|
1010
|
-
|
|
1011
|
-
```
|
|
1012
|
-
1. project-manager completion
|
|
1013
|
-
↓
|
|
1014
|
-
2. User selection:
|
|
1015
|
-
- "Quality verification required" → moai-alfred-trust-validation (Level 1 quick scan)
|
|
1016
|
-
- "Skip" → Complete immediately
|
|
1017
|
-
```
|
|
1018
|
-
|
|
1019
|
-
**Note**: Quality verification is optional during the project initialization phase.
|
|
1020
|
-
|
|
1021
|
-
### 2.3 Sub-agent moai-alfred-interactive-questions (Nested)
|
|
1022
|
-
|
|
1023
|
-
**The project-manager agent can internally call the TUI survey skill** to check the details of the task.
|
|
1024
|
-
|
|
1025
|
-
**When to call**:
|
|
1026
|
-
|
|
1027
|
-
- Before overwriting existing project documents
|
|
1028
|
-
- When selecting language/framework
|
|
1029
|
-
- When changing important settings
|
|
1030
|
-
|
|
1031
|
-
**Example** (inside project-manager): Ask whether to "overwrite file" with `AskUserQuestion tool (documented in moai-alfred-interactive-questions skill)`,
|
|
1032
|
-
|
|
1033
|
-
- Allows you to choose between **Overwrite** / **Merge** / **Skip**.
|
|
1034
|
-
|
|
1035
|
-
**Nested pattern**:
|
|
1036
|
-
|
|
1037
|
-
- **Command level** (Phase approval): Called by Alfred → "Shall we proceed with Phase 2?"
|
|
1038
|
-
- **Sub-agent level** (Detailed confirmation): Called by project-manager → "Shall we overwrite the file?"
|
|
1039
|
-
|
|
1040
|
-
### 2.4 Processing method by project type
|
|
1041
|
-
|
|
1042
|
-
#### A. New project (Greenfield)
|
|
1043
|
-
|
|
1044
|
-
**Interview Flow**:
|
|
1045
|
-
|
|
1046
|
-
1. **Product Discovery** (create product.md)
|
|
1047
|
-
|
|
1048
|
-
- Define core mission (DOC:MISSION-001)
|
|
1049
|
-
- Identify key user base (SPEC:USER-001)
|
|
1050
|
-
- Identify key problems to solve (SPEC:PROBLEM-001)
|
|
1051
|
-
- Summary of differences and strengths (DOC:STRATEGY-001)
|
|
1052
|
-
- Setting success indicators (SPEC:SUCCESS-001)
|
|
1053
|
-
|
|
1054
|
-
2. **Structure Blueprint** (create structure.md)
|
|
1055
|
-
|
|
1056
|
-
- Selection of architecture strategy (DOC:ARCHITECTURE-001)
|
|
1057
|
-
- Division of responsibilities by module (DOC:MODULES-001)
|
|
1058
|
-
- External system integration plan (DOC:INTEGRATION-001)
|
|
1059
|
-
- Define traceability strategy (DOC:TRACEABILITY-001)
|
|
1060
|
-
|
|
1061
|
-
3. **Tech Stack Mapping** (written by tech.md)
|
|
1062
|
-
|
|
1063
|
-
- Select language & runtime (DOC:STACK-001)
|
|
1064
|
-
- Determine core framework (DOC:FRAMEWORK-001)
|
|
1065
|
-
- Set quality gate (DOC:QUALITY-001)
|
|
1066
|
-
- Define security policy (DOC:SECURITY-001)
|
|
1067
|
-
- Plan distribution channels (DOC:DEPLOY-001)
|
|
1068
|
-
|
|
1069
|
-
**Automatically generate config.json**:
|
|
1070
|
-
|
|
1071
|
-
```json
|
|
1072
|
-
{
|
|
1073
|
-
"project_name": "detected-name",
|
|
1074
|
-
"project_type": "single|fullstack|microservice",
|
|
1075
|
-
"project_language": "python|typescript|java|go|rust",
|
|
1076
|
-
"test_framework": "pytest|vitest|junit|go test|cargo test",
|
|
1077
|
-
"linter": "ruff|biome|eslint|golint|clippy",
|
|
1078
|
-
"formatter": "black|biome|prettier|gofmt|rustfmt",
|
|
1079
|
-
"coverage_target": 85,
|
|
1080
|
-
"mode": "personal"
|
|
1081
|
-
}
|
|
1082
|
-
```
|
|
1083
|
-
|
|
1084
|
-
#### B. Existing project (legacy introduction)
|
|
1085
|
-
|
|
1086
|
-
**Legacy Snapshot & Alignment**:
|
|
1087
|
-
|
|
1088
|
-
**STEP 1: Identify the overall project structure**
|
|
1089
|
-
|
|
1090
|
-
Alfred identifies the entire project structure:
|
|
1091
|
-
|
|
1092
|
-
- Visualize the directory structure using the tree or find commands
|
|
1093
|
-
- Exclude build artifacts such as node_modules, .git, dist, build, **pycache**, etc.
|
|
1094
|
-
- Identify key source directories and configuration files.
|
|
1095
|
-
|
|
1096
|
-
**Output**:
|
|
1097
|
-
|
|
1098
|
-
- Visualize the entire folder/file hierarchy of the project
|
|
1099
|
-
- Identify major directories (src/, tests/, docs/, config/, etc.)
|
|
1100
|
-
- Check language/framework hint files (package.json, pyproject.toml, go.mod, etc.)
|
|
1101
|
-
|
|
1102
|
-
**STEP 2: Establish parallel analysis strategy**
|
|
1103
|
-
|
|
1104
|
-
Alfred identifies groups of files by the Glob pattern:
|
|
1105
|
-
|
|
1106
|
-
1. **Configuration files**: _.json, _.toml, _.yaml, _.yml, \*.config.js
|
|
1107
|
-
2. **Source code files**: src/\*_/_.{ts,js,py,go,rs,java}
|
|
1108
|
-
3. **Test files**: tests/**/\*.{ts,js,py,go,rs,java}, **/_.test._, \*_/_.spec.\*
|
|
1109
|
-
4. **Documentation files**: _.md, docs/\*\*/_.md, README*, CHANGELOG*
|
|
1110
|
-
|
|
1111
|
-
**Parallel Read Strategy**:
|
|
1112
|
-
|
|
1113
|
-
- Speed up analysis by reading multiple files simultaneously with the Read tool
|
|
1114
|
-
- Batch processing for each file group
|
|
1115
|
-
- Priority: Configuration file → Core source → Test → Document
|
|
1116
|
-
|
|
1117
|
-
**STEP 3: Analysis and reporting of characteristics for each file**
|
|
1118
|
-
|
|
1119
|
-
As each file is read, the following information is collected:
|
|
1120
|
-
|
|
1121
|
-
1. **Configuration file analysis**
|
|
1122
|
-
|
|
1123
|
-
- Project metadata (name, version, description)
|
|
1124
|
-
- Dependency list and versions
|
|
1125
|
-
- Build/test script
|
|
1126
|
-
- Confirm language/framework
|
|
1127
|
-
|
|
1128
|
-
2. **Source code analysis**
|
|
1129
|
-
|
|
1130
|
-
- Identify major modules and classes
|
|
1131
|
-
- Architectural pattern inference (MVC, clean architecture, microservice, etc.)
|
|
1132
|
-
- Identify external API calls and integration points
|
|
1133
|
-
- Key areas of domain logic
|
|
1134
|
-
|
|
1135
|
-
3. **Test code analysis**
|
|
1136
|
-
|
|
1137
|
-
- Check test framework
|
|
1138
|
-
- Identify coverage settings
|
|
1139
|
-
- Identify key test scenarios
|
|
1140
|
-
- Evaluate TDD compliance
|
|
1141
|
-
|
|
1142
|
-
4. **Document analysis**
|
|
1143
|
-
|
|
1144
|
-
- Existing README contents
|
|
1145
|
-
- Existence of architecture document
|
|
1146
|
-
- API document status
|
|
1147
|
-
- Installation/deployment guide completeness
|
|
1148
|
-
|
|
1149
|
-
**Report Format**:
|
|
1150
|
-
|
|
1151
|
-
```markdown
|
|
1152
|
-
## Analysis results for each file
|
|
1153
|
-
|
|
1154
|
-
### Configuration file
|
|
1155
|
-
|
|
1156
|
-
- package.json: Node.js 18+, TypeScript 5.x, Vitest test
|
|
1157
|
-
- tsconfig.json: strict mode, ESNext target
|
|
1158
|
-
- biome.json: Linter/formatter settings exist
|
|
1159
|
-
|
|
1160
|
-
### Source code (src/)
|
|
1161
|
-
|
|
1162
|
-
- src/core/: Core business logic (3 modules)
|
|
1163
|
-
- src/api/: REST API endpoints (5 routers)
|
|
1164
|
-
- src/utils/: Utility functions (logging, verification, etc.)
|
|
1165
|
-
- Architecture: Hierarchical (controller) → service → repository)
|
|
1166
|
-
|
|
1167
|
-
### Tests (tests/)
|
|
1168
|
-
|
|
1169
|
-
- Vitest + @testing-library used
|
|
1170
|
-
- Unit test coverage estimated at about 60%
|
|
1171
|
-
- E2E testing lacking
|
|
1172
|
-
|
|
1173
|
-
### Documentation
|
|
1174
|
-
|
|
1175
|
-
- README.md: Only installation guide
|
|
1176
|
-
- Absence of API documentation
|
|
1177
|
-
- Absence of architecture document
|
|
1178
|
-
```
|
|
1179
|
-
|
|
1180
|
-
**STEP 4: Comprehensive analysis and product/structure/tech reflection**
|
|
1181
|
-
|
|
1182
|
-
Based on the collected information, it is reflected in three major documents:
|
|
1183
|
-
|
|
1184
|
-
1. Contents reflected in **product.md**
|
|
1185
|
-
|
|
1186
|
-
- Project mission extracted from existing README/document
|
|
1187
|
-
- Main user base and scenario inferred from code
|
|
1188
|
-
- Backtracking of core problem to be solved
|
|
1189
|
-
- Preservation of existing assets in "Legacy Context"
|
|
1190
|
-
|
|
1191
|
-
2. Contents reflected in **structure.md**
|
|
1192
|
-
|
|
1193
|
-
- Identified actual directory structure
|
|
1194
|
-
- Responsibility analysis results for each module
|
|
1195
|
-
- External system integration points (API calls, DB connections, etc.)
|
|
1196
|
-
- Technical debt items (marked with @CODE tag)
|
|
1197
|
-
|
|
1198
|
-
3. **tech.md reflection content**
|
|
1199
|
-
|
|
1200
|
-
- Languages/frameworks/libraries actually in use
|
|
1201
|
-
- Existing build/test pipeline
|
|
1202
|
-
- Status of quality gates (linter, formatter, test coverage)
|
|
1203
|
-
- Identification of security/distribution policy
|
|
1204
|
-
- Items requiring improvement (marked with TODO tags)
|
|
1205
|
-
|
|
1206
|
-
**Preservation Policy**:
|
|
1207
|
-
|
|
1208
|
-
- Supplement only the missing parts without overwriting existing documents
|
|
1209
|
-
- Preserve conflicting content in the "Legacy Context" section
|
|
1210
|
-
- Mark items needing improvement with @CODE and TODO tags
|
|
1211
|
-
|
|
1212
|
-
**Example Final Report**:
|
|
1213
|
-
|
|
1214
|
-
```markdown
|
|
1215
|
-
## Complete analysis of existing project
|
|
1216
|
-
|
|
1217
|
-
### Environment Information
|
|
1218
|
-
|
|
1219
|
-
- **Language**: TypeScript 5.x (Node.js 18+)
|
|
1220
|
-
- **Framework**: Express.js
|
|
1221
|
-
- **Test**: Vitest (coverage ~60%)
|
|
1222
|
-
- **Linter/Formatter**: Biome
|
|
1223
|
-
|
|
1224
|
-
### Main findings
|
|
1225
|
-
|
|
1226
|
-
1. **Strengths**:
|
|
1227
|
-
|
|
1228
|
-
- High type safety (strict mode)
|
|
1229
|
-
- Clear module structure (separation of core/api/utils)
|
|
1230
|
-
|
|
1231
|
-
2. **Needs improvement**:
|
|
1232
|
-
|
|
1233
|
-
- Test coverage below 85% (TODO:TEST-COVERAGE-001)
|
|
1234
|
-
- Absence of API documentation (TODO:DOCS-API-001)
|
|
1235
|
-
- Insufficient E2E testing (@CODE:TEST-E2E-001)
|
|
1236
|
-
|
|
1237
|
-
### Next step
|
|
1238
|
-
|
|
1239
|
-
1. product/structure/tech.md creation completed
|
|
1240
|
-
2. @CODE/TODO item priority confirmation
|
|
1241
|
-
3. /alfred:Start writing an improvement SPEC with 1-spec
|
|
1242
|
-
```
|
|
1243
|
-
|
|
1244
|
-
### 2.3 Document creation and verification
|
|
1245
|
-
|
|
1246
|
-
**Output**:
|
|
1247
|
-
|
|
1248
|
-
- `.moai/project/product.md` (Business Requirements)
|
|
1249
|
-
- `.moai/project/structure.md` (System Architecture)
|
|
1250
|
-
- `.moai/project/tech.md` (Technology Stack and policy)
|
|
1251
|
-
- `.moai/config.json` (project settings)
|
|
1252
|
-
|
|
1253
|
-
**Quality Verification**:
|
|
1254
|
-
|
|
1255
|
-
- [ ] Verify existence of all required @TAG sections
|
|
1256
|
-
- [ ] Verify compliance with EARS syntax format
|
|
1257
|
-
- [ ] Verify config.json syntax validity
|
|
1258
|
-
- [ ] Verify cross-document consistency
|
|
1259
|
-
|
|
1260
|
-
### 2.4 Completion Report
|
|
1261
|
-
|
|
1262
|
-
```markdown
|
|
1263
|
-
✅ Project initialization complete!
|
|
1264
|
-
|
|
1265
|
-
📁 Documents generated:
|
|
1266
|
-
|
|
1267
|
-
- .moai/project/product.md (Business Definition)
|
|
1268
|
-
- .moai/project/structure.md (Architecture Design)
|
|
1269
|
-
- .moai/project/tech.md (Technology Stack)
|
|
1270
|
-
- .moai/config.json (project settings)
|
|
1271
|
-
|
|
1272
|
-
🔍 Detected environments:
|
|
1273
|
-
|
|
1274
|
-
- Language: [List of languages]
|
|
1275
|
-
- Frameworks: [List of frameworks]
|
|
1276
|
-
- Test tools: [List of tools]
|
|
1277
|
-
|
|
1278
|
-
📋 Next steps:
|
|
1279
|
-
|
|
1280
|
-
1. Review the generated document
|
|
1281
|
-
2. Create your first SPEC with /alfred:1-plan
|
|
1282
|
-
3. If necessary, readjust with /alfred:0-project update
|
|
1283
|
-
```
|
|
1284
|
-
|
|
1285
|
-
### 2.5: Initial structural verification (optional)
|
|
1286
|
-
|
|
1287
|
-
After project initialization is complete, you can optionally run quality verification.
|
|
1288
|
-
|
|
1289
|
-
**Execution Conditions**: Only when explicitly requested by the user.
|
|
1290
|
-
|
|
1291
|
-
**Verification Purpose**:
|
|
1292
|
-
|
|
1293
|
-
- Basic verification of project documentation and configuration files
|
|
1294
|
-
- Verification of compliance with the TRUST principles of the initial structure
|
|
1295
|
-
- Validation of configuration files
|
|
1296
|
-
|
|
1297
|
-
**How it works**:
|
|
1298
|
-
Alfred only calls the trust-checker agent to perform project initial structural verification if explicitly requested by the user.
|
|
1299
|
-
|
|
1300
|
-
**Verification items**:
|
|
1301
|
-
|
|
1302
|
-
- **Document completeness**: Check existence of required sections in product/structure/tech.md
|
|
1303
|
-
- **Settings validity**: Verify config.json JSON syntax and required fields
|
|
1304
|
-
- **TAG scheme**: Check compliance with @TAG format in document
|
|
1305
|
-
- **EARS syntax**: Validation of the EARS template to be used when writing SPECs
|
|
1306
|
-
|
|
1307
|
-
**Run Verification**: Level 1 quick scan (3-5 seconds)
|
|
1308
|
-
|
|
1309
|
-
**Handling verification results**:
|
|
1310
|
-
|
|
1311
|
-
✅ **Pass**: Can proceed to next step
|
|
1312
|
-
|
|
1313
|
-
- Documents and settings are all normal
|
|
1314
|
-
|
|
1315
|
-
⚠️ **Warning**: Proceed after warning
|
|
1316
|
-
|
|
1317
|
-
- Some optional sections are missing
|
|
1318
|
-
- Recommendations not applied
|
|
1319
|
-
|
|
1320
|
-
❌ **Critical**: Needs fix
|
|
1321
|
-
|
|
1322
|
-
- Required section missing
|
|
1323
|
-
- config.json syntax error
|
|
1324
|
-
- User choice: "Revalidate after fix" or "Skip"
|
|
1325
|
-
|
|
1326
|
-
**Skip verification**:
|
|
1327
|
-
|
|
1328
|
-
- Verification is not run by default
|
|
1329
|
-
- Run only when explicitly requested by the user
|
|
1330
|
-
|
|
1331
|
-
### 2.6: Agent & Skill Tailoring (Project Optimization)
|
|
1332
|
-
|
|
1333
|
-
Based on the results of the interviews and initial analysis, we recommend and activate sub-agents and skills that should be immediately utilized in the project.
|
|
1334
|
-
Before actual application, user confirmation is received with `AskUserQuestion tool (documented in moai-alfred-interactive-questions skill)`, and selected items are recorded in `CLAUDE.md` and `.moai/config.json`.
|
|
1335
|
-
|
|
1336
|
-
#### 2.6.0 Create cc-manager briefing
|
|
1337
|
-
|
|
1338
|
-
Once the document creation is complete, **read all three documents (product/structure/tech.md)** and summarize the following information to create a text called `cc_manager_briefing`.
|
|
1339
|
-
|
|
1340
|
-
- `product.md`: Organize the mission, key users, problems to be solved, success indicators, and backlog (TODO) with a quotation from the original text or a one-line summary.
|
|
1341
|
-
- `structure.md`: Records architecture type, module boundaries and scope of responsibility, external integration, traceability strategy, and TODO contents.
|
|
1342
|
-
- `tech.md`: Organizes language/framework version, build/test/deployment procedures, quality/security policy, operation/monitoring method, and TODO items.
|
|
1343
|
-
|
|
1344
|
-
Be sure to include the source (e.g. `product.md@SPEC:SUCCESS-001`) for each item so that cc-manager can understand the basis.
|
|
1345
|
-
|
|
1346
|
-
#### 2.6.1 cc-manager judgment guide
|
|
1347
|
-
|
|
1348
|
-
cc-manager selects the required sub-agents and skills based on the briefing.The table below is a reference guide to help you make a decision, and when making an actual call, the supporting sentences from the relevant document are also delivered.
|
|
1349
|
-
|
|
1350
|
-
| Project requirements (document basis) | Recommended sub-agent/skill | Purpose |
|
|
1351
|
-
| ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
|
1352
|
-
| High quality and coverage goals (product.md:SPEC:SUCCESS-001) | `tdd-implementer`, `moai-essentials-debug`, `moai-essentials-review` | Establishment of RED·GREEN·REFACTOR workflow |
|
|
1353
|
-
| Traceability/TAG improvement request (structure.md:DOC:TRACEABILITY-001) | `doc-syncer`, `moai-alfred-tag-scanning`, `moai-alfred-trust-validation` | Enhanced TAG traceability and document/code synchronization |
|
|
1354
|
-
| Deployment automation/branch strategy required (`structure.md` Architecture/TODO) | `git-manager`, `moai-alfred-git-workflow`, `moai-foundation-git` | Branch Strategy·Commit Policy·PR Automation |
|
|
1355
|
-
| Refactoring legacy modules (`product.md` BACKLOG, `tech.md` TODO) | `implementation-planner`, `moai-essentials-refactor` | Technical Debt Diagnosis and Refactoring Roadmap |
|
|
1356
|
-
| Strengthening regulatory/security compliance (tech.md:DOC:SECURITY-001) | `quality-gate`, `moai-alfred-trust-validation`, `moai-foundation-trust`, `moai-domain-security` | TRUST S (Secured) and Trackable Compliance, Security Consulting |
|
|
1357
|
-
| CLI Automation/Tooling Requirements (`tech.md` BUILD/CLI section) | `implementation-planner`, `moai-domain-cli-tool`, detected language skills (e.g. `moai-lang-python`) | CLI command design, input/output standardization |
|
|
1358
|
-
| Data analysis/reporting needs (`product.md` DATA, `tech.md` ANALYTICS) | `implementation-planner`, `moai-domain-data-science`, detected language skills | Data Pipeline·Notebook Job Definition |
|
|
1359
|
-
| Improved database structure (`structure.md` DB, `tech.md` STORAGE) | `doc-syncer`, `moai-domain-database`, `moai-alfred-tag-scanning` | Strengthening schema documentation and TAG-DB mapping |
|
|
1360
|
-
| DevOps/Infrastructure automation required (`tech.md` DEVOPS, `structure.md` CI/CD) | `implementation-planner`, `moai-domain-devops`, `moai-alfred-git-workflow` | Establishing a deployment pipeline and IaC strategy |
|
|
1361
|
-
| Introduction of ML/AI functions (`product.md` AI, `tech.md` MODEL) | `implementation-planner`, `moai-domain-ml`, detected language skills | Model training/inference pipeline definition |
|
|
1362
|
-
| Mobile app strategy (`product.md` MOBILE, `structure.md` CLIENT) | `implementation-planner`, `moai-domain-mobile-app`, detected language skills (e.g. `moai-lang-dart`, `moai-lang-swift`) | Mobile client structure design |
|
|
1363
|
-
| Strengthening coding standards/review process (`tech.md` REVIEW) | `quality-gate`, `moai-essentials-review` | Strengthening review checklist and quality reporting |
|
|
1364
|
-
| Requires onboarding/training mode (`tech.md` STACK description, etc.) | `moai-alfred-interactive-questions`, `moai-adk-learning`, `agentic-coding` Output style | Enhanced interview TUI and automatically provided onboarding materials |
|
|
1365
|
-
|
|
1366
|
-
> **Language/Domain Skill Selection Rules**
|
|
1367
|
-
>
|
|
1368
|
-
> - Select and add one relevant language skill (`moai-lang-python`, `moai-lang-java`, …) based on the `moai-alfred-language-detection` results or the stack recorded in the Tech section of the briefing.
|
|
1369
|
-
> - Skills listed in the domain row are automatically included by cc-manager in the `selected_skills` list when the conditions are met.
|
|
1370
|
-
> - The skill directory is always copied in its entirety, and only actual activation is recorded in `skill_pack` and `CLAUDE.md`.
|
|
1371
|
-
|
|
1372
|
-
If multiple conditions are met, the candidates are merged without duplicates and organized into sets of `candidate_agents`, `candidate_skills`, and `candidate_styles`.
|
|
1373
|
-
|
|
1374
|
-
#### 2.6.2 User confirmation flow
|
|
1375
|
-
|
|
1376
|
-
`AskUserQuestion tool (documented in moai-alfred-interactive-questions skill)` asks "whether to enable recommended items."
|
|
1377
|
-
|
|
1378
|
-
- Provides three options: **Install all** / **Install selectively** / **Do not install**.
|
|
1379
|
-
Selecting "Selective Install" presents the list of candidates again as multiple choices, allowing the user to select only the items they need.
|
|
1380
|
-
|
|
1381
|
-
#### 2.6.3 Activation and Recording Steps
|
|
1382
|
-
|
|
1383
|
-
1. **Preparing briefing**: Organize the results of user selection (install all/install selectively) and the full text of `cc_manager_briefing`.
|
|
1384
|
-
2. **Call the cc-manager agent**:
|
|
1385
|
-
|
|
1386
|
-
- Call `subagent_type: "cc-manager"` with the `Task` tool and include a briefing and user selections in the prompt.
|
|
1387
|
-
- cc-manager determines the necessary sub-agents and skills based on the briefing, and copies and updates `CLAUDE.md`, `.claude/agents/alfred/*.md`, and `.claude/skills/*.md` as customized for the project.
|
|
1388
|
-
|
|
1389
|
-
3. **Check for configuration updates**: Review the results reflected by cc-manager.
|
|
1390
|
-
|
|
1391
|
-
- Sub-Agents: Keep the `.claude/agents/alfred/` template active and list it in the `CLAUDE.md` "Agents" section.
|
|
1392
|
-
- Skills: Check the `.claude/skills/` document and add it to the `CLAUDE.md` "Skills" section.
|
|
1393
|
-
- Output style: Apply `.claude/output-styles/alfred/` and record the activation in `CLAUDE.md` "Output Styles".
|
|
1394
|
-
|
|
1395
|
-
4. **Update config.json**
|
|
1396
|
-
```json
|
|
1397
|
-
{
|
|
1398
|
-
"project": {
|
|
1399
|
-
"optimized": true,
|
|
1400
|
-
"agent_pack": ["tdd-implementer", "doc-syncer"],
|
|
1401
|
-
"skill_pack": ["moai-alfred-git-workflow", "moai-alfred-tag-scanning"],
|
|
1402
|
-
"output_styles": ["moai-adk-learning"]
|
|
1403
|
-
}
|
|
1404
|
-
}
|
|
1405
|
-
```
|
|
1406
|
-
Merge existing properties, if any.
|
|
1407
|
-
5. **Final Report**: Add a list of "Activated Sub-Agents/Skills/Style" and a `cc_manager_briefing` summary at the top of the Completion Report, and reflect the same contents in the `CLAUDE.md` table so that they are automatically searched in subsequent commands.
|
|
1408
|
-
|
|
1409
|
-
## Interview guide by project type
|
|
1410
|
-
|
|
1411
|
-
### New project interview area
|
|
1412
|
-
|
|
1413
|
-
**Product Discovery** (product.md)
|
|
1414
|
-
|
|
1415
|
-
- Core mission and value proposition
|
|
1416
|
-
- Key user bases and needs
|
|
1417
|
-
- 3 key problems to solve
|
|
1418
|
-
- Differentiation compared to competing solutions
|
|
1419
|
-
- Measurable indicators of success
|
|
1420
|
-
|
|
1421
|
-
**Structure Blueprint** (structure.md)
|
|
1422
|
-
|
|
1423
|
-
- System architecture strategy
|
|
1424
|
-
- Separation of modules and division of responsibilities
|
|
1425
|
-
- External system integration plan
|
|
1426
|
-
- @TAG-based traceability strategy
|
|
1427
|
-
|
|
1428
|
-
**Tech Stack Mapping** (tech.md)
|
|
1429
|
-
|
|
1430
|
-
- Language/runtime selection and version
|
|
1431
|
-
- Framework and libraries
|
|
1432
|
-
- Quality gate policy (coverage, linter)
|
|
1433
|
-
- Security policy and distribution channel
|
|
1434
|
-
|
|
1435
|
-
### Existing project interview area
|
|
1436
|
-
|
|
1437
|
-
**Legacy Analysis**
|
|
1438
|
-
|
|
1439
|
-
- Identify current code structure and modules
|
|
1440
|
-
- Status of build/test pipeline
|
|
1441
|
-
- Identify technical debt and constraints
|
|
1442
|
-
- External integration and authentication methods
|
|
1443
|
-
- MoAI-ADK transition priority plan
|
|
1444
|
-
|
|
1445
|
-
**Retention Policy**: Preserve existing documents in the "Legacy Context" section and mark items needing improvement with @CODE/TODO tags
|
|
1446
|
-
|
|
1447
|
-
## 🏷️ TAG system application rules
|
|
1448
|
-
|
|
1449
|
-
**Automatically create @TAGs per section**:
|
|
1450
|
-
|
|
1451
|
-
- Mission/Vision → @DOC:MISSION-XXX, @DOC:STRATEGY-XXX
|
|
1452
|
-
- Customization → @SPEC:USER-XXX, @SPEC:PERSONA-XXX
|
|
1453
|
-
- Problem analysis → @SPEC:PROBLEM-XXX, @SPEC:SOLUTION-XXX
|
|
1454
|
-
- Architecture → @DOC:ARCHITECTURE-XXX, @SPEC:PATTERN-XXX
|
|
1455
|
-
- Technology Stack → @DOC:STACK-XXX, @DOC:FRAMEWORK-XXX
|
|
1456
|
-
|
|
1457
|
-
**Legacy Project Tags**:
|
|
1458
|
-
|
|
1459
|
-
- Technical debt → @CODE:REFACTOR-XXX, @CODE:TEST-XXX, @CODE:MIGRATION-XXX
|
|
1460
|
-
- Resolution plan → @CODE:MIGRATION-XXX, TODO:SPEC-BACKLOG-XXX
|
|
1461
|
-
- Quality improvement → TODO:TEST-COVERAGE-XXX, TODO:DOCS-SYNC-XXX
|
|
1462
|
-
|
|
1463
|
-
## Error handling
|
|
1464
|
-
|
|
1465
|
-
### Common errors and solutions
|
|
1466
|
-
|
|
1467
|
-
**Error 1**: Project language detection failed
|
|
1468
|
-
|
|
1469
|
-
```
|
|
1470
|
-
Symptom: "Language not detected" message
|
|
1471
|
-
Solution: Specify language manually or create language-specific settings file
|
|
1472
|
-
```
|
|
1473
|
-
|
|
1474
|
-
**Error 2**: Conflict with existing document
|
|
1475
|
-
|
|
1476
|
-
```
|
|
1477
|
-
Symptom: product.md already exists and has different contents
|
|
1478
|
-
Solution: Preserve existing contents and add new contents in "Legacy Context" section
|
|
1479
|
-
```
|
|
1480
|
-
|
|
1481
|
-
**Error 3**: Failed to create config.json
|
|
1482
|
-
|
|
1483
|
-
```
|
|
1484
|
-
Symptom: JSON syntax error or permission denied
|
|
1485
|
-
Solution: Check file permissions (chmod 644) or create config.json manually
|
|
1486
|
-
```
|
|
1487
|
-
|
|
1488
|
-
---
|
|
1489
|
-
|
|
1490
|
-
## /alfred:0-project update: Template optimization (subcommand)
|
|
1491
|
-
|
|
1492
|
-
> **Purpose**: After running moai-adk update, compare the backup and new template to optimize the template while preserving user customization.
|
|
1493
|
-
|
|
1494
|
-
### Execution conditions
|
|
1495
|
-
|
|
1496
|
-
This subcommand is executed under the following conditions:
|
|
1497
|
-
|
|
1498
|
-
1. **After executing moai-adk update**: `optimized=false` status in `config.json`
|
|
1499
|
-
2. **Template update required**: When there is a difference between the backup and the new template
|
|
1500
|
-
3. **User explicit request**: User directly executes `/alfred:0-project update`
|
|
1501
|
-
|
|
1502
|
-
### Execution flow
|
|
1503
|
-
|
|
1504
|
-
#### Phase 1: Backup analysis and comparison
|
|
1505
|
-
|
|
1506
|
-
1. **Make sure you have the latest backup**:
|
|
1507
|
-
|
|
1508
|
-
```bash
|
|
1509
|
-
|
|
1510
|
-
```
|
|
1511
|
-
|
|
1512
|
-
# Browse the latest backups in the .moai-backups/ directory
|
|
1513
|
-
|
|
1514
|
-
ls -lt .moai-backups/ | head -1
|
|
1515
|
-
|
|
1516
|
-
````
|
|
1517
|
-
|
|
1518
|
-
2. **Change Analysis**:
|
|
1519
|
-
- Compare `.claude/` directory from backup with current template
|
|
1520
|
-
- Compare `.moai/project/` document from backup with current document
|
|
1521
|
-
- Identify user customization items
|
|
1522
|
-
|
|
1523
|
-
3. **Create Comparison Report**:
|
|
1524
|
-
```markdown
|
|
1525
|
-
## 📊 Template optimization analysis
|
|
1526
|
-
|
|
1527
|
-
### Changed items
|
|
1528
|
-
- CLAUDE.md: "## Project Information" section needs to be preserved
|
|
1529
|
-
- settings.json: 3 env variables need to be preserved
|
|
1530
|
-
- product.md: Has user-written content
|
|
1531
|
-
|
|
1532
|
-
### Recommended Action
|
|
1533
|
-
- Run Smart Merge
|
|
1534
|
-
- Preserve User Customizations
|
|
1535
|
-
- Set optimized=true
|
|
1536
|
-
````
|
|
1537
|
-
|
|
1538
|
-
4. **Waiting for user approval**
|
|
1539
|
-
|
|
1540
|
-
Call `AskUserQuestion` tool (documented in moai-alfred-interactive-questions skill) to obtain user approval for template optimization.
|
|
1541
|
-
|
|
1542
|
-
**Example AskUserQuestion Call**:
|
|
1543
|
-
|
|
1544
|
-
```python
|
|
1545
|
-
AskUserQuestion(
|
|
1546
|
-
questions=[
|
|
1547
|
-
{
|
|
1548
|
-
"question": "Template optimization analysis complete. Changes detected in backup vs current template. How would you like to proceed?",
|
|
1549
|
-
"header": "Template Optimization",
|
|
1550
|
-
"multiSelect": false,
|
|
1551
|
-
"options": [
|
|
1552
|
-
{
|
|
1553
|
-
"label": "✅ Proceed",
|
|
1554
|
-
"description": "Run smart merge: preserve customizations with latest template (Phase 2)"
|
|
1555
|
-
},
|
|
1556
|
-
{
|
|
1557
|
-
"label": "👀 Preview",
|
|
1558
|
-
"description": "Show detailed change list before proceeding"
|
|
1559
|
-
},
|
|
1560
|
-
{
|
|
1561
|
-
"label": "⏸️ Skip",
|
|
1562
|
-
"description": "Keep current template unchanged (optimized: false)"
|
|
1563
|
-
}
|
|
1564
|
-
]
|
|
1565
|
-
}
|
|
1566
|
-
]
|
|
1567
|
-
)
|
|
1568
|
-
```
|
|
1569
|
-
|
|
1570
|
-
**Response Processing**:
|
|
1571
|
-
|
|
1572
|
-
- **"Proceed"** (`answers["0"] === "Proceed"`) → Execute Phase 2
|
|
1573
|
-
|
|
1574
|
-
- Run smart merge logic
|
|
1575
|
-
- Preserve user customizations from backup
|
|
1576
|
-
- Combine with latest template structure
|
|
1577
|
-
- Set `optimized: true` in config.json
|
|
1578
|
-
|
|
1579
|
-
- **"Preview"** (`answers["0"] === "Preview"`) → Display detailed changes
|
|
1580
|
-
|
|
1581
|
-
- Show file-by-file comparison
|
|
1582
|
-
- Highlight customization sections
|
|
1583
|
-
- Ask approval again with "Proceed" or "Skip" only
|
|
1584
|
-
|
|
1585
|
-
- **"Skip"** (`answers["0"] === "Skip"`) → Keep current state
|
|
1586
|
-
- Do not modify any files
|
|
1587
|
-
- Keep `optimized: false` in config.json
|
|
1588
|
-
- User can run again with `moai-adk update` later
|
|
1589
|
-
|
|
1590
|
-
#### Phase 2: Run smart merge (after user approval)
|
|
1591
|
-
|
|
1592
|
-
1. **Execute smart merge logic**:
|
|
1593
|
-
|
|
1594
|
-
- Run `TemplateProcessor.copy_templates()`
|
|
1595
|
-
- CLAUDE.md: Preserve "## Project Information" section
|
|
1596
|
-
- settings.json: env variables and permissions.allow merge
|
|
1597
|
-
|
|
1598
|
-
2. Set **optimized=true**:
|
|
1599
|
-
|
|
1600
|
-
```python
|
|
1601
|
-
# update config.json
|
|
1602
|
-
config_data["project"]["optimized"] = True
|
|
1603
|
-
```
|
|
1604
|
-
|
|
1605
|
-
3. **Optimization completion report**:
|
|
1606
|
-
```markdown
|
|
1607
|
-
✅ Template optimization completed!
|
|
1608
|
-
```
|
|
1609
|
-
|
|
1610
|
-
📄 Merged files:
|
|
1611
|
-
|
|
1612
|
-
- CLAUDE.md (preserves project information)
|
|
1613
|
-
- settings.json (preserves env variables)
|
|
1614
|
-
|
|
1615
|
-
⚙️ config.json: optimized=true Configuration complete
|
|
1616
|
-
|
|
1617
|
-
````
|
|
1618
|
-
|
|
1619
|
-
### Alfred Automation Strategy
|
|
1620
|
-
|
|
1621
|
-
**Alfred automatic decision**:
|
|
1622
|
-
- Automatically call project-manager agent
|
|
1623
|
-
- Check backup freshness (within 24 hours)
|
|
1624
|
-
- Automatically analyze changes
|
|
1625
|
-
|
|
1626
|
-
**Auto-activation of Skills**:
|
|
1627
|
-
- moai-alfred-tag-scanning: TAG chain verification
|
|
1628
|
-
- moai-alfred-trust-validation: Verification of compliance with TRUST principles
|
|
1629
|
-
|
|
1630
|
-
### Running example
|
|
1631
|
-
|
|
1632
|
-
```bash
|
|
1633
|
-
# After running moai-adk update
|
|
1634
|
-
moai-adk update
|
|
1635
|
-
|
|
1636
|
-
# Output:
|
|
1637
|
-
# ✓ Update complete!
|
|
1638
|
-
# ℹ️ Next step: Run /alfred:0-project update to optimize template changes
|
|
1639
|
-
|
|
1640
|
-
# Run Alfred
|
|
1641
|
-
/alfred:0-project update
|
|
1642
|
-
|
|
1643
|
-
# → Phase 1: Generate backup analysis and comparison report
|
|
1644
|
-
# → Wait for user approval
|
|
1645
|
-
# → Phase 2: Run smart merge, set optimized=true
|
|
1646
|
-
````
|
|
1647
|
-
|
|
1648
|
-
### caution
|
|
1649
|
-
|
|
1650
|
-
- **Backup required**: Cannot run without backup in `.moai-backups/` directory
|
|
1651
|
-
- **Manual review recommended**: Preview is required if there are important customizations
|
|
1652
|
-
- **Conflict resolution**: Request user selection in case of merge conflict
|
|
1653
|
-
|
|
1654
|
-
---
|
|
1655
|
-
|
|
1656
|
-
## 🚀 STEP 3: Project Custom Optimization (Optional)
|
|
1657
|
-
|
|
1658
|
-
**Execution conditions**:
|
|
1659
|
-
|
|
1660
|
-
- After completion of Phase 2 (project initialization)
|
|
1661
|
-
- or after completion of Phase 1.1 (backup merge)
|
|
1662
|
-
- Explicitly requested by the user or automatically determined by Alfred
|
|
1663
|
-
|
|
1664
|
-
**Purpose**: Lightweight by selecting only Commands, Agents, and Skills that fit the project characteristics (37 skills → 3~5)
|
|
1665
|
-
|
|
1666
|
-
### 3.1 Automatic execution of Feature Selection
|
|
1667
|
-
|
|
1668
|
-
**Alfred automatically calls the moai-alfred-feature-selector skill**:
|
|
1669
|
-
|
|
1670
|
-
**Skill Entry**:
|
|
1671
|
-
|
|
1672
|
-
- `.moai/project/product.md` (project category hint)
|
|
1673
|
-
- `.moai/project/tech.md` (main language, framework)
|
|
1674
|
-
- `.moai/config.json` (project settings)
|
|
1675
|
-
|
|
1676
|
-
**Skill Output**:
|
|
1677
|
-
|
|
1678
|
-
```json
|
|
1679
|
-
{
|
|
1680
|
-
"category": "web-api",
|
|
1681
|
-
"language": "python",
|
|
1682
|
-
"framework": "fastapi",
|
|
1683
|
-
"commands": ["1-spec", "2-build", "3-sync"],
|
|
1684
|
-
"agents": [
|
|
1685
|
-
"spec-builder",
|
|
1686
|
-
"code-builder",
|
|
1687
|
-
"doc-syncer",
|
|
1688
|
-
"git-manager",
|
|
1689
|
-
"debug-helper"
|
|
1690
|
-
],
|
|
1691
|
-
"skills": ["moai-lang-python", "moai-domain-web-api", "moai-domain-backend"],
|
|
1692
|
-
"excluded_skills_count": 34,
|
|
1693
|
-
"optimization_rate": "87%"
|
|
1694
|
-
}
|
|
1695
|
-
```
|
|
1696
|
-
|
|
1697
|
-
**How to Run**:
|
|
1698
|
-
|
|
1699
|
-
```
|
|
1700
|
-
Alfred: Skill("moai-alfred-feature-selector")
|
|
1701
|
-
```
|
|
1702
|
-
|
|
1703
|
-
---
|
|
1704
|
-
|
|
1705
|
-
### 3.2 Automatic execution of Template Generation
|
|
1706
|
-
|
|
1707
|
-
**Alfred automatically calls the moai-alfred-template-generator skill**:
|
|
1708
|
-
|
|
1709
|
-
**Skill input**:
|
|
1710
|
-
|
|
1711
|
-
- `.moai/.feature-selection.json` (feature-selector output)
|
|
1712
|
-
- `CLAUDE.md` template
|
|
1713
|
-
- Entire commands/agents/skills file
|
|
1714
|
-
|
|
1715
|
-
**Skill Output**:
|
|
1716
|
-
|
|
1717
|
-
- `CLAUDE.md` (custom agent table - selected agents only)
|
|
1718
|
-
- `.claude/commands/` (selected commands only)
|
|
1719
|
-
- `.claude/agents/` (selected agents only)
|
|
1720
|
-
- `.claude/skills/` (selected skills only)
|
|
1721
|
-
- `.moai/config.json` (updates `optimized: true`)
|
|
1722
|
-
|
|
1723
|
-
**How to Run**:
|
|
1724
|
-
|
|
1725
|
-
```
|
|
1726
|
-
Alfred: Skill("moai-alfred-template-generator")
|
|
1727
|
-
```
|
|
1728
|
-
|
|
1729
|
-
---
|
|
1730
|
-
|
|
1731
|
-
### 3.3 Optimization completion report
|
|
1732
|
-
|
|
1733
|
-
**Report Format**:
|
|
1734
|
-
|
|
1735
|
-
```markdown
|
|
1736
|
-
✅ Project customized optimization completed!
|
|
1737
|
-
|
|
1738
|
-
📊 Optimization results:
|
|
1739
|
-
|
|
1740
|
-
- **Project**: MoAI-ADK
|
|
1741
|
-
- **Category**: web-api
|
|
1742
|
-
- **Main language**: python
|
|
1743
|
-
- **Framework**: fastapi
|
|
1744
|
-
|
|
1745
|
-
🎯 Selected capabilities:
|
|
1746
|
-
|
|
1747
|
-
- Commands: 4 items (0-project, 1-spec, 2-build, 3-sync)
|
|
1748
|
-
- Agents: 5 items (spec-builder, code-builder, doc-syncer, git-manager, debug-helper)
|
|
1749
|
-
- Skills: 3 items (moai-lang-python, moai-domain-web-api, moai-domain-backend)
|
|
1750
|
-
|
|
1751
|
-
💡 Lightweight effect:
|
|
1752
|
-
|
|
1753
|
-
- Skills excluded: 34
|
|
1754
|
-
- Lightweight: 87%
|
|
1755
|
-
- CLAUDE.md: Create custom agent table
|
|
1756
|
-
|
|
1757
|
-
📋 Next steps:
|
|
1758
|
-
|
|
1759
|
-
1. Check the CLAUDE.md file (only 5 agents are displayed)
|
|
1760
|
-
2. Run /alfred:1-plan "first function"
|
|
1761
|
-
3. Start the MoAI-ADK workflow
|
|
1762
|
-
```
|
|
1763
|
-
|
|
1764
|
-
---
|
|
1765
|
-
|
|
1766
|
-
### 3.4 Skip Phase 3 (optional)
|
|
1767
|
-
|
|
1768
|
-
**Users can skip Phase 3**:
|
|
1769
|
-
|
|
1770
|
-
**Skip condition**:
|
|
1771
|
-
|
|
1772
|
-
- User explicitly selects "Skip"
|
|
1773
|
-
- "Simple project" when Alfred automatically determines (only basic features required)
|
|
1774
|
-
|
|
1775
|
-
**Skip effect**:
|
|
1776
|
-
|
|
1777
|
-
- Maintain all 37 skills (no lightweighting)
|
|
1778
|
-
- Maintain default 9 agents in CLAUDE.md template
|
|
1779
|
-
- Maintain `optimized: false` in config.json
|
|
1780
|
-
|
|
1781
|
-
---
|
|
1782
|
-
|
|
1783
|
-
## Next steps
|
|
1784
|
-
|
|
1785
|
-
**Recommendation**: For better performance and context management, start a new chat session with the `/clear` or `/new` command before proceeding to the next step.
|
|
1786
|
-
|
|
1787
|
-
After initialization is complete:
|
|
1788
|
-
|
|
1789
|
-
- **New project**: Run `/alfred:1-plan` to create design-based SPEC backlog
|
|
1790
|
-
- **Legacy project**: Review @CODE/@CODE/TODO items in product/structure/tech document and confirm priority
|
|
1791
|
-
- **Set Change**: Run `/alfred:0-project` again to update document
|
|
1792
|
-
- **Template optimization**: Run `/alfred:0-project update` after `moai-adk update`
|
|
1793
|
-
|
|
1794
|
-
## Final Step
|
|
1795
|
-
|
|
1796
|
-
After project initialization completes, Alfred automatically invokes AskUserQuestion to ask the user what to do next:
|
|
1797
|
-
|
|
1798
|
-
```python
|
|
1799
|
-
AskUserQuestion(
|
|
1800
|
-
questions=[
|
|
1801
|
-
{
|
|
1802
|
-
"question": "Project initialization complete. What would you like to do next?",
|
|
1803
|
-
"header": "Next Steps",
|
|
1804
|
-
"multiSelect": false,
|
|
1805
|
-
"options": [
|
|
1806
|
-
{
|
|
1807
|
-
"label": "📋 Start SPEC Creation",
|
|
1808
|
-
"description": "Begin first SPEC with /alfred:1-plan command"
|
|
1809
|
-
},
|
|
1810
|
-
{
|
|
1811
|
-
"label": "🔍 Review Project Structure",
|
|
1812
|
-
"description": "Review and edit generated project documents"
|
|
1813
|
-
},
|
|
1814
|
-
{
|
|
1815
|
-
"label": "🔄 Start New Session",
|
|
1816
|
-
"description": "Execute /clear for fresh session (recommended for performance)"
|
|
1817
|
-
}
|
|
1818
|
-
]
|
|
1819
|
-
}
|
|
1820
|
-
]
|
|
1821
|
-
)
|
|
1822
|
-
```
|
|
1823
|
-
|
|
1824
|
-
**Response Processing**:
|
|
1825
|
-
|
|
1826
|
-
- **"📋 Start SPEC Creation"** (`answers["0"] === "Start SPEC"`) → Proceed to `/alfred:1-plan`
|
|
1827
|
-
|
|
1828
|
-
- Display: "✅ Ready for SPEC creation workflow..."
|
|
1829
|
-
- User can immediately run: `/alfred:1-plan "first feature name"`
|
|
1830
|
-
- Continue to next phase without session break
|
|
1831
|
-
|
|
1832
|
-
- **"🔍 Review Project Structure"** (`answers["0"] === "Review"`) → Review generated documents
|
|
1833
|
-
|
|
1834
|
-
- Display: "📁 Open these files for review:"
|
|
1835
|
-
- `.moai/project/product.md` - Business requirements
|
|
1836
|
-
- `.moai/project/structure.md` - System architecture
|
|
1837
|
-
- `.moai/project/tech.md` - Technology stack
|
|
1838
|
-
- After review, user can run `/alfred:1-plan` or `/alfred:0-project` again for updates
|
|
1839
|
-
- Display: "💾 Save changes manually in editor or run `/alfred:0-project` again"
|
|
1840
|
-
|
|
1841
|
-
- **"🔄 Start New Session"** (`answers["0"] === "New Session"`) → Start fresh session
|
|
1842
|
-
- Display: "⏳ Preparing to clear session..."
|
|
1843
|
-
- Note: This improves context window management for large projects
|
|
1844
|
-
- Next session can start with: `/alfred:1-plan "next feature"`
|
|
1845
|
-
- Alternative: Type `/clear` in shell to restart manually
|
|
1846
|
-
|
|
1847
|
-
---
|
|
1848
|
-
|
|
1849
|
-
## Related commands
|
|
1850
|
-
|
|
1851
|
-
- `/alfred:1-plan` - Start writing SPEC
|
|
1852
|
-
- `/alfred:9-update` - MoAI-ADK update
|
|
1853
|
-
- `moai doctor` - System diagnosis
|
|
1854
|
-
- `moai status` - Check project status
|