moai-adk 0.6.3__py3-none-any.whl → 0.7.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of moai-adk might be problematic. Click here for more details.

@@ -0,0 +1,13 @@
1
+ """Configuration management for MoAI-ADK."""
2
+
3
+ from moai_adk.core.config.migration import (
4
+ get_conversation_language,
5
+ get_conversation_language_name,
6
+ migrate_config_to_nested_structure,
7
+ )
8
+
9
+ __all__ = [
10
+ "migrate_config_to_nested_structure",
11
+ "get_conversation_language",
12
+ "get_conversation_language_name",
13
+ ]
@@ -0,0 +1,113 @@
1
+ # @CODE:LANG-FIX-001:MIGRATION | SPEC: .moai/specs/SPEC-LANG-FIX-001/spec.md
2
+ """Configuration migration utilities for legacy flat config structure.
3
+
4
+ Supports migration from legacy flat config.json structure to new nested language structure.
5
+ """
6
+
7
+ from typing import Any
8
+
9
+
10
+ def migrate_config_to_nested_structure(config: dict[str, Any]) -> dict[str, Any]:
11
+ """Migrate legacy flat config to nested language structure.
12
+
13
+ This function handles the transition from legacy flat config:
14
+ "conversation_language": "ko"
15
+ "locale": "ko"
16
+
17
+ To new nested structure:
18
+ "language": {
19
+ "conversation_language": "ko",
20
+ "conversation_language_name": "한국어"
21
+ }
22
+
23
+ Args:
24
+ config: Configuration dictionary that may have legacy structure.
25
+
26
+ Returns:
27
+ Configuration dictionary with nested language structure.
28
+ """
29
+ # If config already has nested language structure, return as-is
30
+ if "language" in config and isinstance(config["language"], dict):
31
+ return config
32
+
33
+ # If config has legacy flat structure, migrate it
34
+ if "conversation_language" in config and "language" not in config:
35
+ # Extract conversation language from legacy location
36
+ conversation_language = config.pop("conversation_language", "en")
37
+ locale = config.pop("locale", None)
38
+
39
+ # Map language codes to language names
40
+ language_names = {
41
+ "en": "English",
42
+ "ko": "한국어",
43
+ "ja": "日本語",
44
+ "zh": "中文",
45
+ "es": "Español",
46
+ }
47
+
48
+ language_name = language_names.get(conversation_language, "English")
49
+
50
+ # Create new nested language structure
51
+ config["language"] = {
52
+ "conversation_language": conversation_language,
53
+ "conversation_language_name": language_name,
54
+ }
55
+
56
+ return config
57
+
58
+
59
+ def get_conversation_language(config: dict[str, Any]) -> str:
60
+ """Get conversation language from config with fallback handling.
61
+
62
+ Handles both legacy flat and new nested config structures.
63
+
64
+ Args:
65
+ config: Configuration dictionary.
66
+
67
+ Returns:
68
+ Language code (e.g., "ko", "en", "ja").
69
+ """
70
+ # First, try to get from nested structure (new format)
71
+ language_config = config.get("language", {})
72
+ if isinstance(language_config, dict):
73
+ result = language_config.get("conversation_language")
74
+ if result:
75
+ return result
76
+
77
+ # Fall back to legacy flat structure
78
+ result = config.get("conversation_language")
79
+ if result:
80
+ return result
81
+
82
+ # Default to English
83
+ return "en"
84
+
85
+
86
+ def get_conversation_language_name(config: dict[str, Any]) -> str:
87
+ """Get conversation language name from config with fallback handling.
88
+
89
+ Handles both legacy flat and new nested config structures.
90
+
91
+ Args:
92
+ config: Configuration dictionary.
93
+
94
+ Returns:
95
+ Language name (e.g., "한국어", "English").
96
+ """
97
+ # First, try to get from nested structure (new format)
98
+ language_config = config.get("language", {})
99
+ if isinstance(language_config, dict):
100
+ result = language_config.get("conversation_language_name")
101
+ if result:
102
+ return result
103
+
104
+ # If we have the language code, try to map it
105
+ language_code = get_conversation_language(config)
106
+ language_names = {
107
+ "en": "English",
108
+ "ko": "한국어",
109
+ "ja": "日本語",
110
+ "zh": "中文",
111
+ "es": "Español",
112
+ }
113
+ return language_names.get(language_code, "English")
@@ -142,6 +142,11 @@ class PhaseExecutor:
142
142
 
143
143
  # Set template variable context (if provided)
144
144
  if config:
145
+ # @TAG:LANG-FIX-001:PY-CONFIG | Read language from nested config structure
146
+ language_config = config.get("language", {})
147
+ if not isinstance(language_config, dict):
148
+ language_config = {}
149
+
145
150
  context = {
146
151
  "MOAI_VERSION": __version__,
147
152
  "CREATION_TIMESTAMP": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
@@ -151,7 +156,8 @@ class PhaseExecutor:
151
156
  "PROJECT_VERSION": config.get("version", "0.1.0"),
152
157
  "PROJECT_OWNER": config.get("author", "@user"),
153
158
  "AUTHOR": config.get("author", "@user"),
154
- "CONVERSATION_LANGUAGE": config.get("conversation_language", config.get("locale", "en")),
159
+ "CONVERSATION_LANGUAGE": language_config.get("conversation_language", "en"),
160
+ "CONVERSATION_LANGUAGE_NAME": language_config.get("conversation_language_name", "English"),
155
161
  "CODEBASE_LANGUAGE": config.get("language", "generic"),
156
162
  }
157
163
  processor.set_context(context)
@@ -6,7 +6,7 @@ model: sonnet
6
6
  ---
7
7
 
8
8
  # Debug Helper - Integrated debugging expert
9
- > Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
9
+ > **Note**: Interactive prompts use `Skill("moai-alfred-interactive-questions")` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
10
10
 
11
11
  You are the integrated debugging expert responsible for **all errors**.
12
12
 
@@ -6,7 +6,7 @@ model: haiku
6
6
  ---
7
7
 
8
8
  # Doc Syncer - Document Management/Synchronization Expert
9
- > Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
9
+ > **Note**: Interactive prompts use `Skill("moai-alfred-interactive-questions")` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
10
10
 
11
11
  All Git tasks are handled by the git-manager agent, including managing PRs, committing, and assigning reviewers. doc-syncer is only responsible for document synchronization.
12
12
 
@@ -6,7 +6,7 @@ model: haiku
6
6
  ---
7
7
 
8
8
  # Git Manager - Agent dedicated to Git tasks
9
- > Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
9
+ > **Note**: Interactive prompts use `Skill("moai-alfred-interactive-questions")` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
10
10
 
11
11
  This is a dedicated agent that optimizes and processes all Git operations in MoAI-ADK for each mode.
12
12
 
@@ -6,7 +6,7 @@ model: sonnet
6
6
  ---
7
7
 
8
8
  # Implementation Planner - Implementation Strategist
9
- > Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
9
+ > **Note**: Interactive prompts use `Skill("moai-alfred-interactive-questions")` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
10
10
 
11
11
  You are an expert in analyzing SPECs to determine the optimal implementation strategy and library version.
12
12
 
@@ -6,7 +6,7 @@ model: sonnet
6
6
  ---
7
7
 
8
8
  # Project Manager - Project Manager Agent
9
- > Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
9
+ > **Note**: Interactive prompts use `Skill("moai-alfred-interactive-questions")` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
10
10
 
11
11
  You are a Senior Project Manager Agent managing successful projects.
12
12
 
@@ -6,7 +6,7 @@ model: haiku
6
6
  ---
7
7
 
8
8
  # Quality Gate - Quality Verification Gate
9
- > Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
9
+ > **Note**: Interactive prompts use `Skill("moai-alfred-interactive-questions")` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
10
10
 
11
11
  You are a quality gate that automatically verifies TRUST principles and project standards.
12
12
 
@@ -8,7 +8,7 @@ model: sonnet
8
8
  **Priority:** This guideline is **subordinate to the command guideline (`/alfred:1-plan`). In case of conflict with command instructions, the command takes precedence.
9
9
 
10
10
  # SPEC Builder - SPEC Creation Expert
11
- > Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
11
+ > **Note**: Interactive prompts use `Skill("moai-alfred-interactive-questions")` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
12
12
 
13
13
  You are a SPEC expert agent responsible for SPEC document creation and intelligent verification.
14
14
 
@@ -6,7 +6,7 @@ model: haiku
6
6
  ---
7
7
 
8
8
  # TAG System Agent - sole TAG management authority
9
- > Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
9
+ > **Note**: Interactive prompts use `Skill("moai-alfred-interactive-questions")` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
10
10
 
11
11
  You are a professional agent responsible for all TAG operations in MoAI-ADK.
12
12
 
@@ -6,7 +6,7 @@ model: sonnet
6
6
  ---
7
7
 
8
8
  # TDD Implementer - TDD implementation expert
9
- > Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
9
+ > **Note**: Interactive prompts use `Skill("moai-alfred-interactive-questions")` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
10
10
 
11
11
  You are a TDD expert who strictly adheres to the RED-GREEN-REFACTOR cycle and keeps track of the TAG chain.
12
12
 
@@ -6,7 +6,7 @@ model: haiku
6
6
  ---
7
7
 
8
8
  # Trust Checker - Integrated Quality Verification Expert
9
- > Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
9
+ > **Note**: Interactive prompts use `Skill("moai-alfred-interactive-questions")` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
10
10
 
11
11
  You are the agent responsible for the TRUST 5 principles, code standards, and security checks.
12
12
 
@@ -6,21 +6,21 @@ description: "Initialize project document - create product/structure/tech.md and
6
6
  # - ja: "プロジェクト文書の初期化 - product/structure/tech.mdの作成と言語別最適化設定"
7
7
  # - zh: "初始化项目文档 - 创建product/structure/tech.md并设置语言优化"
8
8
  allowed-tools:
9
- - Read
10
- - Write
11
- - Edit
12
- - MultiEdit
13
- - Grep
14
- - Glob
15
- - TodoWrite
16
- - Bash(ls:*)
17
- - Bash(find:*)
18
- - Bash(cat:*)
19
- - Task
9
+ - Read
10
+ - Write
11
+ - Edit
12
+ - MultiEdit
13
+ - Grep
14
+ - Glob
15
+ - TodoWrite
16
+ - Bash(ls:*)
17
+ - Bash(find:*)
18
+ - Bash(cat:*)
19
+ - Task
20
20
  ---
21
21
 
22
22
  # 📋 MoAI-ADK Step 0: Initialize/Update Universal Language Support Project Documentation
23
- > Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
23
+ > **Note**: Interactive prompts use `Skill("moai-alfred-interactive-questions")` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
24
24
 
25
25
  ## 🎯 Command Purpose
26
26
 
@@ -267,7 +267,7 @@ The following patterns are considered "template defaults" (not merged):
267
267
  - "Define your key user base"
268
268
  - "Describe the core problem you are trying to solve"
269
269
  - "List the strengths and differences of your project"
270
- - "{{PROJECT_NAME}}", "{{PROJECT_DESCRIPTION}}", etc. Variable format
270
+ - "MoAI-ADK", "MoAI-Agentic Development Kit", etc. Variable format
271
271
  - Guide phrases such as "Example:", "Sample:", "Example:", etc.
272
272
 
273
273
  **STEP 3: Extract user customization**
@@ -477,21 +477,38 @@ Alfred starts project initialization by calling the project-manager agent with t
477
477
  - Approved Interview Plan: [Plan Summary]
478
478
 
479
479
  **Execution**:
480
- ```bash
481
- # Pseudo-code showing parameter flow
482
- Task(
483
- subagent_type="project-manager",
484
- description="Initialize project with conversation language support",
485
- prompt=f"""You are project-manager. Initialize project with these parameters:
486
- - conversation_language: "{conversation_language}" # e.g., "ko"
487
- - language_name: "{language_name}" # e.g., "Korean"
488
- - project_type: "{project_type}" # e.g., "new"
489
- - detected_languages: {detected_languages}
490
-
491
- All interviews and documentation must be generated in the conversation_language.
492
- Update .moai/config.json with these language parameters.
493
- """
494
- )
480
+ ```
481
+ Call the Task tool:
482
+ - subagent_type: "project-manager"
483
+ - description: "Initialize project with conversation language support"
484
+ - prompt: """You are project-manager agent.
485
+
486
+ LANGUAGE CONFIGURATION:
487
+ - conversation_language: {{CONVERSATION_LANGUAGE}}
488
+ - language_name: {{CONVERSATION_LANGUAGE_NAME}}
489
+
490
+ PROJECT_TYPE: [new|existing]
491
+ DETECTED_LANGUAGES: [detected codebase languages]
492
+
493
+ CRITICAL INSTRUCTION:
494
+ All interviews and generated documentation MUST be in conversation_language:
495
+ - product.md: Generate in {{CONVERSATION_LANGUAGE}}
496
+ - structure.md: Generate in {{CONVERSATION_LANGUAGE}}
497
+ - tech.md: Generate in {{CONVERSATION_LANGUAGE}}
498
+
499
+ If conversation_language is 'ko': All narrative content in Korean
500
+ If conversation_language is 'ja': All narrative content in Japanese
501
+ If conversation_language is other: Follow the specified language
502
+
503
+ After project initialization, update .moai/config.json with nested language structure:
504
+ {
505
+ "language": {
506
+ "conversation_language": "{{CONVERSATION_LANGUAGE}}",
507
+ "conversation_language_name": "{{CONVERSATION_LANGUAGE_NAME}}"
508
+ }
509
+ }
510
+
511
+ TASK: Conduct project interviews and create/update product/structure/tech.md documents."""
495
512
  ```
496
513
 
497
514
  **Outcome**: The project-manager agent conducts structured interviews entirely in the selected language and creates/updates product/structure/tech.md documents in that language.
@@ -1110,7 +1127,7 @@ Alfred: Skill("moai-alfred-template-generator")
1110
1127
  ✅ Project customized optimization completed!
1111
1128
 
1112
1129
  📊 Optimization results:
1113
- - **Project**: {{PROJECT_NAME}}
1130
+ - **Project**: MoAI-ADK
1114
1131
  - **Category**: web-api
1115
1132
  - **Main language**: python
1116
1133
  - **Framework**: fastapi
@@ -21,7 +21,7 @@ allowed-tools:
21
21
  ---
22
22
 
23
23
  # 🏗️ MoAI-ADK Step 1: Establish a plan (Plan) - Always make a plan first and then proceed.
24
- > Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
24
+ > **Note**: Interactive prompts use `Skill("moai-alfred-interactive-questions")` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
25
25
 
26
26
  ## 🎯 Command Purpose
27
27
 
@@ -29,6 +29,22 @@ allowed-tools:
29
29
 
30
30
  **Plan for**: $ARGUMENTS
31
31
 
32
+ ## 🤖 CodeRabbit AI Integration (Local Only)
33
+
34
+ This local environment includes CodeRabbit AI review integration for SPEC documents:
35
+
36
+ **Automatic workflows:**
37
+ - ✅ SPEC review: CodeRabbit analyzes SPEC metadata and EARS structure
38
+ - ✅ GitHub Issue sync: SPEC files automatically create/update GitHub Issues
39
+ - ✅ Auto-approval: Draft PRs are approved when quality meets standards (80%+)
40
+ - ✅ SPEC quality validation: Checklist for metadata, structure, and content
41
+
42
+ **Scope:**
43
+ - 🏠 **Local environment**: Full CodeRabbit integration with auto-approval
44
+ - 📦 **Published packages**: Users get GitHub Issue sync only (no CodeRabbit)
45
+
46
+ > See `.coderabbit.yaml` for detailed review rules and SPEC validation checklist
47
+
32
48
  ## 💡 Planning philosophy: "Always make a plan first and then proceed."
33
49
 
34
50
  `/alfred:1-plan` is a general-purpose command that **creates a plan**, rather than simply “creating” a SPEC document.
@@ -126,14 +142,28 @@ Invoking the Task tool (Explore agent):
126
142
  Call the Task tool:
127
143
  - subagent_type: "spec-builder"
128
144
  - description: "Analyze the plan and establish a plan"
129
- - prompt: "Please analyze the project document and suggest SPEC candidates.
130
- Run in analysis mode, and must include the following:
131
- 1. In-depth analysis of product/structure/tech.md
132
- 2. Identify SPEC candidates and Determine priorities
133
- 3. Design EARS structure
134
- 4. Wait for user approval
135
- User input: $ARGUMENTS
136
- (Optional) Explore results: $EXPLORE_RESULTS"
145
+ - prompt: """You are spec-builder agent.
146
+
147
+ LANGUAGE CONFIGURATION:
148
+ - conversation_language: {{CONVERSATION_LANGUAGE}}
149
+ - language_name: {{CONVERSATION_LANGUAGE_NAME}}
150
+
151
+ CRITICAL INSTRUCTION:
152
+ All SPEC documents and analysis must be generated in conversation_language.
153
+ - If conversation_language is 'ko' (Korean): Generate ALL analysis, plans, and SPEC documents in Korean
154
+ - If conversation_language is 'ja' (Japanese): Generate ALL analysis, plans, and SPEC documents in Japanese
155
+ - If conversation_language is other language: Follow the specified language
156
+
157
+ TASK:
158
+ Please analyze the project document and suggest SPEC candidates.
159
+ Run in analysis mode, and must include the following:
160
+ 1. In-depth analysis of product/structure/tech.md
161
+ 2. Identify SPEC candidates and Determine priorities
162
+ 3. Design EARS structure
163
+ 4. Wait for user approval
164
+
165
+ User input: $ARGUMENTS
166
+ (Optional) Explore results: $EXPLORE_RESULTS"""
137
167
  ```
138
168
 
139
169
  ### Plan analysis progress
@@ -172,14 +202,30 @@ After user approval (collected via `Skill("moai-alfred-interactive-questions")`)
172
202
  ```
173
203
  1. Call spec-builder (create plan):
174
204
  - subagent_type: "spec-builder"
175
- - description: "Create SPEC document"
176
- - prompt: "Please fill out the SPEC document according to the plan approved in STEP 1.
177
- Create a specification for the EARS structure."
205
+ - description: "Create SPEC document"
206
+ - prompt: """You are spec-builder agent.
207
+
208
+ LANGUAGE CONFIGURATION:
209
+ - conversation_language: {{CONVERSATION_LANGUAGE}}
210
+ - language_name: {{CONVERSATION_LANGUAGE_NAME}}
211
+
212
+ CRITICAL INSTRUCTION:
213
+ ALL SPEC documents MUST be generated in conversation_language:
214
+ - spec.md: Full document in conversation_language
215
+ - plan.md: Full document in conversation_language
216
+ - acceptance.md: Full document in conversation_language
217
+
218
+ YAML frontmatter and @TAG identifiers MUST remain in English.
219
+ Code examples and technical keywords can be mixed (code in English, narrative in user language).
220
+
221
+ TASK:
222
+ Please fill out the SPEC document according to the plan approved in STEP 1.
223
+ Create a specification for the EARS structure."""
178
224
 
179
225
  2. Invoke git-manager (Git task):
180
226
  - subagent_type: "git-manager"
181
- - description: "Create Git branch/PR"
182
- - prompt: "After completing the plan, please create a branch and Draft PR."
227
+ - description: "Create Git branch/PR"
228
+ - prompt: "After completing the plan, please create a branch and Draft PR."
183
229
  ```
184
230
 
185
231
  ## function
@@ -549,6 +595,48 @@ The `git-manager` agent does **all at once** after the SPEC is complete:
549
595
  3. **Initial commit**: Commit SPEC document and create tags
550
596
  4. **Remote Sync**: Apply synchronization strategy for each mode
551
597
 
598
+ ### Phase 3.5: CodeRabbit SPEC Review (Local Only)
599
+
600
+ **After Draft PR is created, CodeRabbit automatically:**
601
+
602
+ ```bash
603
+ echo "🤖 Waiting for CodeRabbit SPEC review..."
604
+
605
+ # CodeRabbit triggers automatically on Draft PR creation
606
+ # Review includes:
607
+ # - SPEC metadata validation (YAML frontmatter)
608
+ # - EARS structure completeness check
609
+ # - Acceptance criteria quality (Given-When-Then)
610
+ # - @TAG system traceability
611
+ # - Documentation clarity
612
+
613
+ # Expected time: 1-2 minutes
614
+ for i in {1..12}; do
615
+ sleep 10
616
+
617
+ # Check PR review status
618
+ approval=$(gh pr view $pr_num --json reviewDecision --jq '.reviewDecision')
619
+
620
+ if [ "$approval" = "APPROVED" ]; then
621
+ echo "✅ CodeRabbit approved SPEC PR!"
622
+ echo "→ Ready for development with /alfred:2-run SPEC-$spec_id"
623
+ break
624
+ fi
625
+
626
+ echo "⏳ CodeRabbit reviewing... ($i/12)"
627
+ done
628
+ ```
629
+
630
+ **CodeRabbit review includes:**
631
+ - ✅ YAML frontmatter validation (7 required fields)
632
+ - ✅ HISTORY section structure and completeness
633
+ - ✅ EARS requirements clarity (Ubiquitous/Event/State/Optional/Constraints)
634
+ - ✅ Acceptance criteria quality (Given-When-Then scenarios)
635
+ - ✅ @TAG system compliance (SPEC/TEST/CODE/DOC traceability)
636
+ - ✅ Documentation and formatting
637
+
638
+ See `.coderabbit.yaml` for detailed SPEC review checklist.
639
+
552
640
  ## Writing Tips
553
641
 
554
642
  - Information that is not in the product/structure/tech document is supplemented by asking a new question.
@@ -24,7 +24,7 @@ allowed-tools:
24
24
  ---
25
25
 
26
26
  # ⚒️ MoAI-ADK Phase 2: Run the plan - Flexible implementation strategy
27
- > Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
27
+ > **Note**: Interactive prompts use `Skill("moai-alfred-interactive-questions")` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
28
28
 
29
29
  ## 🎯 Command Purpose
30
30
 
@@ -188,19 +188,31 @@ After user approval (gathered through `Skill("moai-alfred-interactive-questions"
188
188
  **STEP 2 calls tdd-implementer using the Task tool**:
189
189
 
190
190
  ```
191
- Task tool call example:
191
+ Call the Task tool:
192
192
  - subagent_type: "tdd-implementer"
193
- - description: "Execute task"
194
- - prompt: "Please execute the task according to the plan approved in STEP 1.
195
- For TDD scenario:
196
- - Perform RED → GREEN → REFACTOR cycle,
197
- Perform the following for each TAG:
198
- 1. RED Phase: Write a test that fails with the @TEST:ID tag
199
- 2. GREEN Phase: Minimal implementation with the @CODE:ID tag
200
- 3. REFACTOR Phase: Improve code quality
201
- 4. Verify TAG completion conditions and proceed to the next TAG
202
-
203
- Execute on: $ARGUMENTS"
193
+ - description: "Execute task with TDD implementation"
194
+ - prompt: """You are tdd-implementer agent.
195
+
196
+ LANGUAGE CONFIGURATION:
197
+ - conversation_language: {{CONVERSATION_LANGUAGE}}
198
+ - language_name: {{CONVERSATION_LANGUAGE_NAME}}
199
+
200
+ CRITICAL INSTRUCTION:
201
+ Code and technical output MUST be in English.
202
+ Code comments MAY be in {{CONVERSATION_LANGUAGE}} if appropriate.
203
+ Test descriptions and documentation can use {{CONVERSATION_LANGUAGE}}.
204
+
205
+ TASK: Execute the task according to the plan approved in STEP 1.
206
+
207
+ For TDD scenario:
208
+ - Perform RED → GREEN → REFACTOR cycle
209
+ - Perform the following for each TAG:
210
+ 1. RED Phase: Write a test that fails with the @TEST:ID tag
211
+ 2. GREEN Phase: Minimal implementation with the @CODE:ID tag
212
+ 3. REFACTOR Phase: Improve code quality
213
+ 4. Verify TAG completion conditions and proceed to the next TAG
214
+
215
+ Execute on: $ARGUMENTS"""
204
216
  ```
205
217
 
206
218
  ## 🔗 TDD optimization for each language
@@ -5,23 +5,24 @@ description: "Document synchronization + PR Ready conversion"
5
5
  # - ko: "문서 동기화 + PR Ready 전환"
6
6
  # - ja: "ドキュメント同期 + PR Ready変換"
7
7
  # - zh: "文档同步 + PR Ready转换"
8
- argument-hint: "Mode target path - Mode: auto (default)|force|status|project, target path: Synchronization target path"
8
+ argument-hint: 'Mode target path - Mode: auto (default)|force|status|project, target
9
+ path: Synchronization target path'
9
10
  allowed-tools:
10
- - Read
11
- - Write
12
- - Edit
13
- - MultiEdit
14
- - Bash(git:*)
15
- - Bash(gh:*)
16
- - Bash(python3:*)
17
- - Task
18
- - Grep
19
- - Glob
20
- - TodoWrite
11
+ - Read
12
+ - Write
13
+ - Edit
14
+ - MultiEdit
15
+ - Bash(git:*)
16
+ - Bash(gh:*)
17
+ - Bash(python3:*)
18
+ - Task
19
+ - Grep
20
+ - Glob
21
+ - TodoWrite
21
22
  ---
22
23
 
23
24
  # 📚 MoAI-ADK Step 3: Document Synchronization (+Optional PR Ready)
24
- > Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
25
+ > **Note**: Interactive prompts use `Skill("moai-alfred-interactive-questions")` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
25
26
 
26
27
  ## 🚀 START HERE
27
28
 
@@ -160,10 +161,26 @@ Invoking the Task tool (Explore agent):
160
161
 
161
162
  2. doc-syncer call (synchronization plan):
162
163
  - subagent_type: "doc-syncer"
163
- - description: "Establish a document synchronization plan"
164
- - prompt: "Please analyze Git changes and establish a document synchronization plan.
165
- $ARGUMENTS
166
- (Optional) TAG validation results: $TAG_VALIDATION_RESULTS"
164
+ - description: "Establish a document synchronization plan"
165
+ - prompt: """You are doc-syncer agent.
166
+
167
+ LANGUAGE CONFIGURATION:
168
+ - conversation_language: {{CONVERSATION_LANGUAGE}}
169
+ - language_name: {{CONVERSATION_LANGUAGE_NAME}}
170
+
171
+ CRITICAL INSTRUCTION:
172
+ Documentation updates MUST respect conversation_language:
173
+ - User-facing documentation (README, guides): {{CONVERSATION_LANGUAGE}}
174
+ - SPEC documents (spec.md, plan.md, acceptance.md): {{CONVERSATION_LANGUAGE}}
175
+ - Code comments: {{CONVERSATION_LANGUAGE}} (when not technical keywords)
176
+ - Technical documentation and YAML frontmatter: English
177
+
178
+ TASK:
179
+ Please analyze Git changes and establish a document synchronization plan.
180
+ Ensure all documentation updates align with the conversation_language setting.
181
+
182
+ $ARGUMENTS
183
+ (Optional) TAG validation results: $TAG_VALIDATION_RESULTS"""
167
184
  ```
168
185
 
169
186
  ### Synchronization analysis in progress
@@ -55,6 +55,10 @@
55
55
  ],
56
56
  "current_stage": "initialized"
57
57
  },
58
+ "language": {
59
+ "conversation_language": "{{CONVERSATION_LANGUAGE}}",
60
+ "conversation_language_name": "{{CONVERSATION_LANGUAGE_NAME}}"
61
+ },
58
62
  "project": {
59
63
  "name": "{{PROJECT_NAME}}",
60
64
  "description": "{{PROJECT_DESCRIPTION}}",
@@ -6,7 +6,7 @@
6
6
  > **Project Owner**: {{PROJECT_OWNER}}
7
7
  > **Config**: `.moai/config.json`
8
8
  >
9
- > All interactions with Alfred can use `Skill("moai-alfred-interactive-questions")` for TUI-based responses.
9
+ > **Note**: `Skill("moai-alfred-interactive-questions")` provides TUI-based responses when user interaction is needed. The skill loads on-demand.
10
10
 
11
11
  ---
12
12
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: moai-adk
3
- Version: 0.6.3
3
+ Version: 0.7.0
4
4
  Summary: MoAI Agentic Development Kit - SPEC-First TDD with Alfred SuperAgent & Complete Skills v2.0
5
5
  Project-URL: Homepage, https://github.com/modu-ai/moai-adk
6
6
  Project-URL: Repository, https://github.com/modu-ai/moai-adk
@@ -11,6 +11,8 @@ moai_adk/cli/commands/update.py,sha256=iwDDD_ozCfkGUk1ci2CPfybzRtNFPMi-680NxmKhD
11
11
  moai_adk/cli/prompts/__init__.py,sha256=a4_ctS4KEvGtmM9j7z8XIlMkpftohjVb9woUwZu38gE,136
12
12
  moai_adk/cli/prompts/init_prompts.py,sha256=OZ_T-b4XfkyXQsKXTwLcDYwmLbaf0k5oZfbi_asTH9M,5226
13
13
  moai_adk/core/__init__.py,sha256=1sJO-PHEKF1NmYjeOPPPzn_HRgYln3CKlCpUH4E2Jrs,129
14
+ moai_adk/core/config/__init__.py,sha256=30Qx-GSN1LLI_9ngNqQ6A6d40J92xK10AQxhKw1-MzU,328
15
+ moai_adk/core/config/migration.py,sha256=KzFGx3kPNoOaZCmAQvNpvlrQq48N3Gj6o2COVV7jciA,3541
14
16
  moai_adk/core/diagnostics/__init__.py,sha256=aF-qC2CW0wxZDpxnlh-TILYs3kqwOIj2EjXYEXY-2j8,387
15
17
  moai_adk/core/diagnostics/slash_commands.py,sha256=cEH96M5RLxa1JLyoeoRqziBMzAbnN30j04YjNjxM7Ro,4682
16
18
  moai_adk/core/git/__init__.py,sha256=Kpq2yU5X5bBBUV8ySYIB1_vMPvfdFS6hTYx2Ue-CoeQ,697
@@ -25,7 +27,7 @@ moai_adk/core/project/backup_utils.py,sha256=-zEXIhGsM-MdX1voUIpKxLlR57Y-lqLEZSi
25
27
  moai_adk/core/project/checker.py,sha256=B94mGLHDZkjQnFDgV8sknJDms5oIiHeyKcgxWI87-f8,9523
26
28
  moai_adk/core/project/detector.py,sha256=ADVg36yvyqJEPQVNc_x9iInF9dzi7YZqqXfDq2XL17Q,4230
27
29
  moai_adk/core/project/initializer.py,sha256=yqxePuCO2ednzCOpDZLczyCP079J6Io4pvtynTp4J6w,6724
28
- moai_adk/core/project/phase_executor.py,sha256=w3z8VRT9p9rcmMt2lWCHmH5rHSWmLMvbe1dHHMEu0KY,10666
30
+ moai_adk/core/project/phase_executor.py,sha256=MZXqzYZA4OrZT0xViplyOUVRchiSaEWeTEmyzkSHEQY,10997
29
31
  moai_adk/core/project/validator.py,sha256=gH9ywTMQTwqtqBVrMWj5_bPYFrVzjHuFoU4QdeVa1O4,5756
30
32
  moai_adk/core/quality/__init__.py,sha256=_uNsbThBLmVLWZCPmEgfFyQqJx3tdef9jhkP9QoHuJY,222
31
33
  moai_adk/core/quality/trust_checker.py,sha256=CN067AiublAH46IBAKEV_I-8Wc0bNaR2dMnMf9n5oBg,15198
@@ -38,25 +40,25 @@ moai_adk/core/template/languages.py,sha256=V0wLcxCIOve9Q_0_NhrHGQevSIN_MB612GwrO
38
40
  moai_adk/core/template/merger.py,sha256=ZV8_U1HZJ3bfAtgyNmSxgj8KdTMt4eUnUG6kVVRT7bE,6909
39
41
  moai_adk/core/template/processor.py,sha256=_nYHiuN9PGzC3iE4X5SpRMFW-OTkI2u1dOAjD98axAk,19190
40
42
  moai_adk/templates/.gitignore,sha256=6VNKResdDpyaii3cmJA4pOLwK2PhYARIWkUODYtKyxg,310
41
- moai_adk/templates/CLAUDE.md,sha256=uf6n3RKG0YdtWO26ZDfkE39jIYvXuRekgRFz2YflLLQ,11281
43
+ moai_adk/templates/CLAUDE.md,sha256=F1KjJb2HPT887aW9HBGezm2lh0wfNZcN5GLOF2aTo_k,11318
42
44
  moai_adk/templates/__init__.py,sha256=6MV1gCB7PLZMiL4gaD_dZSKxtcQyo45MMTuN8fVdchA,104
43
45
  moai_adk/templates/.claude/settings.json,sha256=SwjID_m0XWmHT12lqkhJXL1Sh30zAr9_tk4drQ9x9K8,3149
44
46
  moai_adk/templates/.claude/agents/alfred/cc-manager.md,sha256=63HRf8C7JNRApeOqGJi9Iwhcn5is9ImucsfRHhZ5zFU,8348
45
- moai_adk/templates/.claude/agents/alfred/debug-helper.md,sha256=X6dOEtT93h8RHwRhx-EFXtKAoXZebI0B14KYhLttDho,7204
46
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md,sha256=fFeUB81my-bTwJmLlBZIsANn1E6C8lEeq7swHI7g7vc,8619
47
- moai_adk/templates/.claude/agents/alfred/git-manager.md,sha256=jZUR-XrZ4McQCjGSt64Wb9pt5uNKwcV_n9xBxbR6iV4,14057
48
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md,sha256=wx71G8_YAqro77ecej7tkSPKHcCBU7yCClxqOhbgzXA,11528
49
- moai_adk/templates/.claude/agents/alfred/project-manager.md,sha256=rXTou0zOjJmBJUnkU9_5VZKNOffjxIhK3bYcAj-HuW4,14891
50
- moai_adk/templates/.claude/agents/alfred/quality-gate.md,sha256=x7OZmqTGgeJqtZ6vAKmVOWKwpdrEYMmcydcU7LGn5Tg,10694
47
+ moai_adk/templates/.claude/agents/alfred/debug-helper.md,sha256=vI0RaXhmEqpIHBHc3KYhCQsbOhF1Xy2yCJOyxfOQ9wQ,7221
48
+ moai_adk/templates/.claude/agents/alfred/doc-syncer.md,sha256=QUzfYwUnGm46ZgN067iS6yKayE3AAYM9QIcjAO8jv5A,8636
49
+ moai_adk/templates/.claude/agents/alfred/git-manager.md,sha256=yen1XeZJXEAE7e8JkE5lxNoLAlbm-1iPTyQMbY8yH9c,14074
50
+ moai_adk/templates/.claude/agents/alfred/implementation-planner.md,sha256=ZSR-OWii-5pH3qLjAid89OaC4JW2QnwZgN-s5vp32lA,11545
51
+ moai_adk/templates/.claude/agents/alfred/project-manager.md,sha256=xEU4OnEKiysH08ZWvK9KqJheoFYZXlZ9UmDDs2B80O0,14908
52
+ moai_adk/templates/.claude/agents/alfred/quality-gate.md,sha256=iAx3O2wOWP-mpYFEumJpdLDavyqQ5Yk0ILbcvZtw98k,10711
51
53
  moai_adk/templates/.claude/agents/alfred/skill-factory.md,sha256=PGnrkeT5630ELQ2vBwVGaJr3vzU6I-4LObiZrCCjGjw,26229
52
- moai_adk/templates/.claude/agents/alfred/spec-builder.md,sha256=yWtF_gALjHwirPvtkz9PQOfCbFZevH7WWFqjEaSiAEA,12490
53
- moai_adk/templates/.claude/agents/alfred/tag-agent.md,sha256=ocDVfqk1q7f8SH7As3X_hokiRfostCnLaJf37-7dw8Q,9594
54
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md,sha256=vCyJRZWdRXPk9qdra-QQtEf21ap28w8sx5VYPnWMHMA,10200
55
- moai_adk/templates/.claude/agents/alfred/trust-checker.md,sha256=oTQ6BvGYU_luJDNwqjNPIU9G5dKUWRV4wJpmgyqr4dk,13578
56
- moai_adk/templates/.claude/commands/alfred/0-project.md,sha256=-gyBdhT7dYIGMNYv91DF_1uepGW_B0lJMDV8nlrzuIE,45878
57
- moai_adk/templates/.claude/commands/alfred/1-plan.md,sha256=t_6ubTvlZsp8u1RIy5isJFlITH7tFp2UKiIg0NfJ4bU,22028
58
- moai_adk/templates/.claude/commands/alfred/2-run.md,sha256=m2WLbrR0Njky5SPMLTuvQPJBeSUcmlUXivr4IbvKUYA,20415
59
- moai_adk/templates/.claude/commands/alfred/3-sync.md,sha256=yhxi-V7NOkhRYcrNKQ4zYJGxHrtQTfRm_ejcExf-SsE,22402
54
+ moai_adk/templates/.claude/agents/alfred/spec-builder.md,sha256=xYzdnYbmozvSfHrkQKSfIgmlXYFGJ-tpPtubIyY0AM4,12507
55
+ moai_adk/templates/.claude/agents/alfred/tag-agent.md,sha256=6n8n93kho3XTONZ4At7VwuZR4QjF1KmNoIN5u_CdNcE,9611
56
+ moai_adk/templates/.claude/agents/alfred/tdd-implementer.md,sha256=p9e2PLSH5uUP3fXjaGGMzdm6-QZqDoMSUsCDzUtYQYk,10217
57
+ moai_adk/templates/.claude/agents/alfred/trust-checker.md,sha256=TK3rVt0UqgoT8p6ubm3TesbhG6nokmV9FqR4DfC_VjU,13595
58
+ moai_adk/templates/.claude/commands/alfred/0-project.md,sha256=sXEiAJX0L220K93drjttQGWLVDtYHS1pTzQDNToVIo0,46399
59
+ moai_adk/templates/.claude/commands/alfred/1-plan.md,sha256=xjPSZFVZ5FeLcC5nGfkLDc1xEeTzx4RwL5zHS2H1DSo,25170
60
+ moai_adk/templates/.claude/commands/alfred/2-run.md,sha256=xEteotB1u-j7HD0id1Sw4Uopdvv8XK51nnB4qjc3bM0,20820
61
+ moai_adk/templates/.claude/commands/alfred/3-sync.md,sha256=EZtQpqPwzVaOvW21kx9VKi7RHMpe8PIA72iTU_sLfMQ,22992
60
62
  moai_adk/templates/.claude/hooks/alfred/HOOK_SCHEMA_VALIDATION.md,sha256=5dd6KRFQXzp0L8lAWKRN7Momgg_8XNV1QZ6VGs03_pc,9064
61
63
  moai_adk/templates/.claude/hooks/alfred/README.md,sha256=8JirNg3Jn2OUFmHySYBd8QxQgPkG7kcev86Zkf80asY,6852
62
64
  moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py,sha256=PjdyJluyoQgaIpq3n9K9r-a3VeLMH1eWcXaAA6ohvrw,7723
@@ -255,7 +257,7 @@ moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md,sha256=q753rSPFZfylgwh6HkEP2
255
257
  moai_adk/templates/.github/ISSUE_TEMPLATE/spec.yml,sha256=c6WaTy7Vh6IsNsIJzSTGuGpaGhZAZ1prQXGIUM7P8PA,5212
256
258
  moai_adk/templates/.github/workflows/moai-gitflow.yml,sha256=D9ob1O7tzsUvk3WQPPaHFx1Oo6_RxnbCb5WHJ6DWyrI,8589
257
259
  moai_adk/templates/.github/workflows/spec-issue-sync.yml,sha256=VJ0IQcIEnlnZ-3jdvQNruhBxpygYRZAP2bkn35CCO-Q,6307
258
- moai_adk/templates/.moai/config.json,sha256=0DZ9zK3wUD2lRfeqX93tYJz5Pb_h7DV4k2wyB9RZ6HQ,2202
260
+ moai_adk/templates/.moai/config.json,sha256=oAL0Gb4jy-dEvhnPvitkc95dckzAU5w95mekV514YX0,2348
259
261
  moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md,sha256=37Qj5DYcyUniLM1g8IU7UWFI_16tutZrcAkJc4E5i20,15876
260
262
  moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md,sha256=Tf3q68X1DiA3MkIBYu7AMXoeparYrDRpyqVI5Nw92OY,12653
261
263
  moai_adk/templates/.moai/memory/CLAUDE-RULES.md,sha256=S9GODGRzwwleOmROVtBDa471Ok5NyQLWIkaO_4peHhU,19783
@@ -273,8 +275,8 @@ moai_adk/templates/.moai/project/tech.md,sha256=REecMv8wOvutt-pQZ5nlGk5YdReTan7A
273
275
  moai_adk/utils/__init__.py,sha256=VnVfQzzKHvKw4bNdEw5xdscnRQYFrnr-v_TOBr3naPs,225
274
276
  moai_adk/utils/banner.py,sha256=znppKd5yo-tTqgyhgPVJjstrTrfcy_v3X1_RFQxP4Fk,1878
275
277
  moai_adk/utils/logger.py,sha256=g-m07PGKjK2bKRIInfSn6m-024Bedai-pV_WjZKDeu8,5064
276
- moai_adk-0.6.3.dist-info/METADATA,sha256=4yC6rqxJJy_b_-4Kjffv4zhbJtUl_xrrfGBPxizHyIU,71251
277
- moai_adk-0.6.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
278
- moai_adk-0.6.3.dist-info/entry_points.txt,sha256=P9no1794UipqH72LP-ltdyfVd_MeB1WKJY_6-JQgV3U,52
279
- moai_adk-0.6.3.dist-info/licenses/LICENSE,sha256=M1M2b07fWcSWRM6_P3wbZKndZvyfHyYk_Wu9bS8F7o8,1069
280
- moai_adk-0.6.3.dist-info/RECORD,,
278
+ moai_adk-0.7.0.dist-info/METADATA,sha256=lhC1D05uXdGGdJ8PLMERCaBkxt7mfW8IyzInxMD0KCE,71251
279
+ moai_adk-0.7.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
280
+ moai_adk-0.7.0.dist-info/entry_points.txt,sha256=P9no1794UipqH72LP-ltdyfVd_MeB1WKJY_6-JQgV3U,52
281
+ moai_adk-0.7.0.dist-info/licenses/LICENSE,sha256=M1M2b07fWcSWRM6_P3wbZKndZvyfHyYk_Wu9bS8F7o8,1069
282
+ moai_adk-0.7.0.dist-info/RECORD,,