moai-adk 0.5.2__py3-none-any.whl → 0.5.6__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.

Files changed (63) hide show
  1. moai_adk/__init__.py +1 -1
  2. moai_adk/cli/commands/backup.py +25 -1
  3. moai_adk/cli/commands/doctor.py +30 -4
  4. moai_adk/cli/commands/init.py +23 -2
  5. moai_adk/cli/commands/status.py +32 -2
  6. moai_adk/cli/commands/update.py +47 -8
  7. moai_adk/core/project/initializer.py +13 -11
  8. moai_adk/core/project/phase_executor.py +9 -4
  9. moai_adk/core/template/processor.py +60 -1
  10. moai_adk/templates/.claude/agents/alfred/cc-manager.md +8 -0
  11. moai_adk/templates/.claude/agents/alfred/debug-helper.md +18 -0
  12. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +18 -0
  13. moai_adk/templates/.claude/agents/alfred/git-manager.md +38 -2
  14. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +18 -0
  15. moai_adk/templates/.claude/agents/alfred/project-manager.md +6 -0
  16. moai_adk/templates/.claude/agents/alfred/quality-gate.md +6 -0
  17. moai_adk/templates/.claude/agents/alfred/skill-factory.md +8 -0
  18. moai_adk/templates/.claude/agents/alfred/spec-builder.md +17 -0
  19. moai_adk/templates/.claude/agents/alfred/tag-agent.md +7 -1
  20. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +18 -0
  21. moai_adk/templates/.claude/agents/alfred/trust-checker.md +6 -0
  22. moai_adk/templates/.claude/commands/alfred/0-project.md +5 -1
  23. moai_adk/templates/.claude/commands/alfred/1-plan.md +5 -1
  24. moai_adk/templates/.claude/commands/alfred/2-run.md +6 -2
  25. moai_adk/templates/.claude/commands/alfred/3-sync.md +28 -7
  26. moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +5 -1
  27. moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +5 -1
  28. moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +5 -1
  29. moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +5 -1
  30. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +30 -273
  31. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +487 -129
  32. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +603 -70
  33. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +22 -2
  34. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +22 -2
  35. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +22 -2
  36. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +22 -2
  37. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +22 -2
  38. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +22 -2
  39. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +22 -2
  40. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +25 -5
  41. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +152 -547
  42. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +835 -878
  43. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +665 -1151
  44. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +138 -427
  45. moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +61 -53
  46. moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +99 -1181
  47. moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +541 -0
  48. moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +622 -0
  49. moai_adk/templates/.moai/config.json +5 -5
  50. moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +208 -0
  51. moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +369 -0
  52. moai_adk/templates/.moai/memory/CLAUDE-RULES.md +539 -0
  53. moai_adk/templates/.moai/memory/{development-guide.md → DEVELOPMENT-GUIDE.md} +3 -3
  54. moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +218 -0
  55. moai_adk/templates/.moai/memory/config-schema.md +444 -0
  56. moai_adk/templates/CLAUDE.md +142 -702
  57. {moai_adk-0.5.2.dist-info → moai_adk-0.5.6.dist-info}/METADATA +294 -336
  58. {moai_adk-0.5.2.dist-info → moai_adk-0.5.6.dist-info}/RECORD +63 -56
  59. /moai_adk/templates/.moai/memory/{gitflow-protection-policy.md → GITFLOW-PROTECTION-POLICY.md} +0 -0
  60. /moai_adk/templates/.moai/memory/{spec-metadata.md → SPEC-METADATA.md} +0 -0
  61. {moai_adk-0.5.2.dist-info → moai_adk-0.5.6.dist-info}/WHEEL +0 -0
  62. {moai_adk-0.5.2.dist-info → moai_adk-0.5.6.dist-info}/entry_points.txt +0 -0
  63. {moai_adk-0.5.2.dist-info → moai_adk-0.5.6.dist-info}/licenses/LICENSE +0 -0
moai_adk/__init__.py CHANGED
@@ -9,6 +9,6 @@ from importlib.metadata import PackageNotFoundError, version
9
9
  try:
10
10
  __version__ = version("moai-adk")
11
11
  except PackageNotFoundError:
12
- __version__ = "0.4.6-dev"
12
+ __version__ = "0.5.6-dev"
13
13
 
14
14
  __all__ = ["__version__"]
@@ -1,4 +1,28 @@
1
- """Backup command"""
1
+ """Backup command
2
+
3
+ Create a backup of the current project including:
4
+ - .claude/ (entire directory)
5
+ - .moai/ (excluding specs and reports)
6
+ - CLAUDE.md
7
+
8
+ Backup location: .moai-backups/YYYYMMDD-HHMMSS/
9
+
10
+ ## Skill Invocation Guide (English-Only)
11
+
12
+ ### Related Skills
13
+ - **moai-foundation-git**: For Git workflow and backup management
14
+ - Trigger: Before creating critical backups, review Git state
15
+ - Invocation: `Skill("moai-foundation-git")` for backup naming conventions
16
+
17
+ ### When to Invoke Skills in Related Workflows
18
+ 1. **Before backup creation**:
19
+ - Run `Skill("moai-foundation-git")` to document current Git branch state
20
+ - Tag backup with feature branch name for easier recovery
21
+
22
+ 2. **After restoration from backup**:
23
+ - Verify with `Skill("moai-foundation-tags")` that TAGs are intact
24
+ - Run `Skill("moai-foundation-trust")` to validate toolchain
25
+ """
2
26
  from pathlib import Path
3
27
 
4
28
  import click
@@ -8,6 +8,30 @@ System diagnostics command:
8
8
  - Validate project structure
9
9
  - Inspect language-specific tool chains
10
10
  - Diagnose slash command loading issues (--check-commands)
11
+
12
+ ## Skill Invocation Guide (English-Only)
13
+
14
+ ### Related Skills
15
+ - **moai-foundation-langs**: For language toolchain verification and detection
16
+ - Trigger: Use `--verbose` or `--fix` flag to inspect language-specific tools
17
+ - Invocation: `Skill("moai-foundation-langs")` for detailed language stack analysis
18
+
19
+ - **moai-foundation-trust**: For TRUST 5-principles verification after fixing tools
20
+ - Trigger: After running doctor with `--fix` to validate improvements
21
+ - Invocation: `Skill("moai-foundation-trust")` to verify code quality toolchain
22
+
23
+ ### When to Invoke Skills in Related Workflows
24
+ 1. **After doctor diagnosis**:
25
+ - Run `Skill("moai-foundation-trust")` to validate that all TRUST tools are properly configured
26
+ - Run `Skill("moai-foundation-langs")` to confirm language-specific toolchains
27
+
28
+ 2. **When tools are missing** (`--fix` flag):
29
+ - Use suggested fixes from doctor command
30
+ - Follow up with `Skill("moai-foundation-langs")` to validate corrections
31
+
32
+ 3. **Debugging slash command issues** (`--check-commands`):
33
+ - Run `Skill("moai-cc-commands")` if commands fail to load
34
+ - Check `.claude/commands/` directory structure and permissions
11
35
  """
12
36
 
13
37
  import json
@@ -168,11 +192,13 @@ def _suggest_fixes(tools: dict[str, bool], language: str | None) -> None:
168
192
 
169
193
  def _get_install_command(tool: str, language: str | None) -> str:
170
194
  """Return the install command for a given tool (helper)"""
171
- # Common tools
195
+ # Common tools with preferred package managers
172
196
  install_commands = {
173
- "pytest": "pip install pytest",
174
- "mypy": "pip install mypy",
175
- "ruff": "pip install ruff",
197
+ # Python tools (prefer uv)
198
+ "pytest": "uv pip install pytest",
199
+ "mypy": "uv pip install mypy",
200
+ "ruff": "uv pip install ruff",
201
+ # JavaScript tools
176
202
  "vitest": "npm install -D vitest",
177
203
  "biome": "npm install -D @biomejs/biome",
178
204
  "eslint": "npm install -D eslint",
@@ -6,6 +6,25 @@
6
6
  Project initialization command (interactive/non-interactive):
7
7
  - Interactive Mode: Ask user for project settings
8
8
  - Non-Interactive Mode: Use defaults or CLI options
9
+
10
+ ## Skill Invocation Guide (English-Only)
11
+
12
+ ### Related Skills
13
+ - **moai-foundation-langs**: For language detection and stack configuration
14
+ - Trigger: When language parameter is not specified (auto-detection)
15
+ - Invocation: Called implicitly during project initialization for language matrix detection
16
+
17
+ ### When to Invoke Skills in Related Workflows
18
+ 1. **After project initialization**:
19
+ - Run `Skill("moai-foundation-trust")` to verify project structure and toolchain
20
+ - Run `Skill("moai-foundation-langs")` to validate detected language stack
21
+
22
+ 2. **Before first SPEC creation**:
23
+ - Use `Skill("moai-alfred-language-detection")` to confirm language selection
24
+
25
+ 3. **Project reinitialization** (`--force`):
26
+ - Skills automatically adapt to new project structure
27
+ - No manual intervention required
9
28
  """
10
29
 
11
30
  import json
@@ -163,10 +182,12 @@ def init(
163
182
  config_data = json.load(f)
164
183
 
165
184
  # Update version and optimization flags
185
+ if "moai" not in config_data:
186
+ config_data["moai"] = {}
187
+ config_data["moai"]["version"] = __version__
188
+
166
189
  if "project" not in config_data:
167
190
  config_data["project"] = {}
168
-
169
- config_data["project"]["moai_adk_version"] = __version__
170
191
  config_data["project"]["optimized"] = False
171
192
 
172
193
  with open(config_path, "w", encoding="utf-8") as f:
@@ -5,6 +5,34 @@ Project status display:
5
5
  - Read project information from config.json
6
6
  - Show the number of SPEC documents
7
7
  - Summarize the Git status
8
+
9
+ ## Skill Invocation Guide (English-Only)
10
+
11
+ ### Related Skills
12
+ - **moai-foundation-tags**: For detailed TAG inventory and orphan detection
13
+ - Trigger: When you need to verify TAG chain integrity beyond what status shows
14
+ - Invocation: `Skill("moai-foundation-tags")` to scan full project for orphan TAGs
15
+
16
+ - **moai-foundation-trust**: For comprehensive TRUST 5-principles verification
17
+ - Trigger: After status shows SPECs exist, to validate code quality
18
+ - Invocation: `Skill("moai-foundation-trust")` to verify all quality gates
19
+
20
+ - **moai-foundation-git**: For detailed Git workflow information
21
+ - Trigger: When Git status shows "Modified" and you need workflow guidance
22
+ - Invocation: `Skill("moai-foundation-git")` for GitFlow automation details
23
+
24
+ ### When to Invoke Skills in Related Workflows
25
+ 1. **Before starting new SPEC creation**:
26
+ - Run `Skill("moai-foundation-tags")` to verify no orphan TAGs exist from previous work
27
+ - Check the SPEC count from status command
28
+
29
+ 2. **After modifications to code/docs**:
30
+ - If status shows "Modified", run `Skill("moai-foundation-git")` for commit strategy
31
+ - Follow up with `Skill("moai-foundation-trust")` to validate code quality
32
+
33
+ 3. **Periodic health checks**:
34
+ - Run status command regularly
35
+ - When SPEC count grows, verify with `Skill("moai-foundation-tags")` and `Skill("moai-foundation-trust")`
8
36
  """
9
37
 
10
38
  import json
@@ -48,8 +76,10 @@ def status() -> None:
48
76
  table.add_column("Key", style="cyan")
49
77
  table.add_column("Value", style="bold")
50
78
 
51
- table.add_row("Mode", config.get("mode", "unknown"))
52
- table.add_row("Locale", config.get("locale", "unknown"))
79
+ # Read from project section (with legacy fallback)
80
+ project = config.get("project", {})
81
+ table.add_row("Mode", project.get("mode") or config.get("mode", "unknown"))
82
+ table.add_row("Locale", project.get("locale") or config.get("locale", "unknown"))
53
83
  table.add_row("SPECs", str(spec_count))
54
84
 
55
85
  # Optionally include Git information
@@ -1,4 +1,36 @@
1
- """Update command"""
1
+ """Update command
2
+
3
+ Update MoAI-ADK to the latest version available on PyPI.
4
+ Includes:
5
+ - Version checking from PyPI
6
+ - Template and configuration updates
7
+ - Backward compatibility validation
8
+
9
+ ## Skill Invocation Guide (English-Only)
10
+
11
+ ### Related Skills
12
+ - **moai-foundation-trust**: For post-update validation
13
+ - Trigger: After updating MoAI-ADK version
14
+ - Invocation: `Skill("moai-foundation-trust")` to verify all toolchains still work
15
+
16
+ - **moai-foundation-langs**: For language detection after update
17
+ - Trigger: After updating, confirm language stack is intact
18
+ - Invocation: `Skill("moai-foundation-langs")` to re-detect and validate language configuration
19
+
20
+ ### When to Invoke Skills in Related Workflows
21
+ 1. **After successful update**:
22
+ - Run `Skill("moai-foundation-trust")` to validate all TRUST 5 gates
23
+ - Run `Skill("moai-foundation-langs")` to confirm language toolchain still works
24
+ - Run project doctor command for full system validation
25
+
26
+ 2. **Before updating**:
27
+ - Create backup with `python -m moai_adk backup`
28
+ - Run `Skill("moai-foundation-tags")` to document current TAG state
29
+
30
+ 3. **If update fails**:
31
+ - Use backup to restore previous state
32
+ - Debug with `python -m moai_adk doctor --verbose`
33
+ """
2
34
  from __future__ import annotations
3
35
 
4
36
  import json
@@ -107,18 +139,18 @@ def _build_template_context(
107
139
 
108
140
  project_name = _coalesce(
109
141
  project_section.get("name"),
110
- existing_config.get("projectName"),
142
+ existing_config.get("projectName"), # Legacy fallback
111
143
  project_path.name,
112
144
  )
113
145
  project_mode = _coalesce(
114
146
  project_section.get("mode"),
115
- existing_config.get("mode"),
147
+ existing_config.get("mode"), # Legacy fallback
116
148
  default="personal",
117
149
  )
118
150
  project_description = _coalesce(
119
151
  project_section.get("description"),
120
- existing_config.get("projectDescription"),
121
- existing_config.get("description"),
152
+ existing_config.get("projectDescription"), # Legacy fallback
153
+ existing_config.get("description"), # Legacy fallback
122
154
  )
123
155
  project_version = _coalesce(
124
156
  project_section.get("version"),
@@ -164,7 +196,6 @@ def _preserve_project_metadata(
164
196
  project_data["mode"] = context["PROJECT_MODE"]
165
197
  project_data["description"] = context["PROJECT_DESCRIPTION"]
166
198
  project_data["created_at"] = context["CREATION_TIMESTAMP"]
167
- project_data["moai_adk_version"] = version_for_config
168
199
 
169
200
  if "optimized" not in project_data and isinstance(existing_config, dict):
170
201
  existing_project = _extract_project_section(existing_config)
@@ -344,8 +375,16 @@ def update(path: str, force: bool, check: bool) -> None:
344
375
  console.print("\n[green]✓ Update complete![/green]")
345
376
  if latest_version and version.parse(current_version) < version.parse(latest_version):
346
377
  console.print(
347
- "[yellow]⚠ Python package still on older version. "
348
- "Run 'pip install --upgrade moai-adk' to upgrade the CLI package.[/yellow]"
378
+ "[yellow]⚠ Python package still on older version.[/yellow]"
379
+ )
380
+ console.print(
381
+ "[cyan]Upgrade options:[/cyan]"
382
+ )
383
+ console.print(
384
+ " 1. uv tool (recommended): uv tool upgrade moai-adk"
385
+ )
386
+ console.print(
387
+ " 2. pip (legacy): pip install --upgrade moai-adk"
349
388
  )
350
389
  console.print("\n[cyan]ℹ️ Next step: Run /alfred:0-project update to optimize template changes[/cyan]")
351
390
 
@@ -120,17 +120,19 @@ class ProjectInitializer:
120
120
 
121
121
  # Phase 4: Configuration (generate config.json)
122
122
  config_data: dict[str, str | bool | dict] = {
123
- "projectName": self.path.name,
124
- "mode": mode,
125
- "locale": locale,
126
- "language": detected_language,
127
- # Language detection metadata (will be updated by project-manager via /alfred:0-project)
128
- "language_detection": {
129
- "detected_language": detected_language,
130
- "detection_method": "cli_default", # Will be "context_aware" after /alfred:0-project
131
- "confidence": None, # Will be calculated by project-manager
132
- "markers": [], # Will be populated by project-manager
133
- "confirmed_by": None, # Will be "user" after project-manager confirmation
123
+ "project": {
124
+ "name": self.path.name,
125
+ "mode": mode,
126
+ "locale": locale,
127
+ "language": detected_language,
128
+ # Language detection metadata (will be updated by project-manager via /alfred:0-project)
129
+ "language_detection": {
130
+ "detected_language": detected_language,
131
+ "detection_method": "cli_default", # Will be "context_aware" after /alfred:0-project
132
+ "confidence": None, # Will be calculated by project-manager
133
+ "markers": [], # Will be populated by project-manager
134
+ "confirmed_by": None, # Will be "user" after project-manager confirmation
135
+ }
134
136
  }
135
137
  }
136
138
  config_files = self.executor.execute_configuration_phase(
@@ -15,6 +15,7 @@ import subprocess
15
15
  from collections.abc import Callable
16
16
  from datetime import datetime
17
17
  from pathlib import Path
18
+ from typing import Any
18
19
 
19
20
  from rich.console import Console
20
21
 
@@ -148,7 +149,10 @@ class PhaseExecutor:
148
149
  "PROJECT_DESCRIPTION": config.get("description", ""),
149
150
  "PROJECT_MODE": config.get("mode", "personal"),
150
151
  "PROJECT_VERSION": config.get("version", "0.1.0"),
152
+ "PROJECT_OWNER": config.get("author", "@user"),
151
153
  "AUTHOR": config.get("author", "@user"),
154
+ "CONVERSATION_LANGUAGE": config.get("conversation_language", config.get("locale", "en")),
155
+ "CODEBASE_LANGUAGE": config.get("language", "generic"),
152
156
  }
153
157
  processor.set_context(context)
154
158
 
@@ -166,7 +170,7 @@ class PhaseExecutor:
166
170
  def execute_configuration_phase(
167
171
  self,
168
172
  project_path: Path,
169
- config: dict[str, str | bool],
173
+ config: dict[str, str | bool | dict[Any, Any]],
170
174
  progress_callback: ProgressCallback | None = None,
171
175
  ) -> list[str]:
172
176
  """Phase 4: generate configuration.
@@ -184,9 +188,10 @@ class PhaseExecutor:
184
188
  "Phase 4: Generating configurations...", progress_callback
185
189
  )
186
190
 
187
- # Attach version metadata (v0.3.1+)
188
- config["moai_adk_version"] = __version__
189
- config["optimized"] = False # Default value
191
+ # Ensure project section exists and set defaults
192
+ if "project" not in config:
193
+ config["project"] = {}
194
+ config["project"]["optimized"] = False # Default value
190
195
 
191
196
  # Write config.json
192
197
  config_path = project_path / ".moai" / "config.json"
@@ -110,8 +110,59 @@ class TemplateProcessor:
110
110
  }
111
111
  return file_path.suffix.lower() in text_extensions
112
112
 
113
+ def _localize_yaml_description(self, content: str, language: str = "en") -> str:
114
+ """Localize multilingual YAML description field.
115
+
116
+ Converts multilingual description maps to single-language strings:
117
+ description:
118
+ en: "English text"
119
+ ko: "Korean text"
120
+
121
+ description: "Korean text" (if language="ko")
122
+
123
+ Args:
124
+ content: File content.
125
+ language: Target language code (en, ko, ja, zh).
126
+
127
+ Returns:
128
+ Content with localized descriptions.
129
+ """
130
+ import yaml
131
+
132
+ # Pattern to match YAML frontmatter
133
+ frontmatter_pattern = r'^---\n(.*?)\n---'
134
+ match = re.match(frontmatter_pattern, content, re.DOTALL)
135
+
136
+ if not match:
137
+ return content
138
+
139
+ try:
140
+ yaml_content = match.group(1)
141
+ yaml_data = yaml.safe_load(yaml_content)
142
+
143
+ # Check if description is a dict (multilingual)
144
+ if isinstance(yaml_data.get('description'), dict):
145
+ # Select language (fallback to English)
146
+ descriptions = yaml_data['description']
147
+ selected_desc = descriptions.get(language, descriptions.get('en', ''))
148
+
149
+ # Replace description with selected language
150
+ yaml_data['description'] = selected_desc
151
+
152
+ # Reconstruct frontmatter
153
+ new_yaml = yaml.dump(yaml_data, allow_unicode=True, sort_keys=False)
154
+ # Preserve the rest of the content
155
+ rest_content = content[match.end():]
156
+ return f"---\n{new_yaml}---{rest_content}"
157
+
158
+ except Exception:
159
+ # If YAML parsing fails, return original content
160
+ pass
161
+
162
+ return content
163
+
113
164
  def _copy_file_with_substitution(self, src: Path, dst: Path) -> list[str]:
114
- """Copy file with variable substitution for text files.
165
+ """Copy file with variable substitution and description localization for text files.
115
166
 
116
167
  Args:
117
168
  src: Source file path.
@@ -127,6 +178,14 @@ class TemplateProcessor:
127
178
  try:
128
179
  content = src.read_text(encoding='utf-8')
129
180
  content, file_warnings = self._substitute_variables(content)
181
+
182
+ # Apply description localization for command/output-style files
183
+ if src.suffix == '.md' and (
184
+ 'commands/alfred' in str(src) or 'output-styles/alfred' in str(src)
185
+ ):
186
+ lang = self.context.get('CONVERSATION_LANGUAGE', 'en')
187
+ content = self._localize_yaml_description(content, lang)
188
+
130
189
  dst.write_text(content, encoding='utf-8')
131
190
  warnings.extend(file_warnings)
132
191
  except UnicodeDecodeError:
@@ -32,6 +32,14 @@ model: sonnet
32
32
 
33
33
  ---
34
34
 
35
+ ## 🌍 Language Handling
36
+
37
+ **IMPORTANT**: You will ALWAYS receive prompts in **English**, regardless of user's original conversation language.
38
+
39
+ Alfred translates Claude Code configuration requirements to English before invoking you. All configuration documentation and validations use English.
40
+
41
+ ---
42
+
35
43
  ## 🧰 Skill Activation
36
44
 
37
45
  **Automatic** (always load):
@@ -18,6 +18,24 @@ You are the integrated debugging expert responsible for **all errors**.
18
18
  **Role**: Troubleshooting expert who systematically analyzes code/Git/configuration errors and suggests solutions
19
19
  **Goal**: Runtime Providing accurate diagnosis and resolution of errors
20
20
 
21
+ ## 🌍 Language Handling
22
+
23
+ **IMPORTANT**: You will ALWAYS receive prompts in **English**, regardless of user's original conversation language.
24
+
25
+ Alfred translates error reports and debugging requirements to English before invoking you. This ensures:
26
+ - ✅ Perfect skill trigger matching (English Skill descriptions match English error analysis 100%)
27
+ - ✅ Consistent error diagnosis across languages
28
+ - ✅ Global multilingual support
29
+
30
+ **Example**:
31
+ - User says (any language): Translated to "Analyze test failure in authentication module"
32
+ - You receive (English): "Diagnose test failure: 'AssertionError: token_expiry must be 30 minutes' in test_auth.py:127"
33
+ - You analyze the error entirely in English
34
+ - Your diagnostic report uses English technical terminology and stack traces
35
+ - Alfred translates your findings back to user's language for response
36
+
37
+ **Do not try to infer user's original language.** Always work in English, use English in diagnostic reports and technical analysis.
38
+
21
39
  ## 🧰 Required Skills
22
40
 
23
41
  **Automatic Core Skills**
@@ -18,6 +18,24 @@ All Git tasks are handled by the git-manager agent, including managing PRs, comm
18
18
  **Role**: Documentation Expert who ensures perfect consistency between code and documentation according to the Living Document philosophy
19
19
  **Goals**: Real-time document-to-code synchronization and @TAG-based fully traceable document management
20
20
 
21
+ ## 🌍 Language Handling
22
+
23
+ **IMPORTANT**: You will ALWAYS receive prompts in **English**, regardless of user's original conversation language.
24
+
25
+ Alfred translates document synchronization requirements to English before invoking you. This ensures:
26
+ - ✅ Perfect skill trigger matching (English Skill descriptions match English sync requirements 100%)
27
+ - ✅ Consistent document handling across languages
28
+ - ✅ Global multilingual support
29
+
30
+ **Example**:
31
+ - User says (any language): Translated to "Synchronize documents based on recent code changes"
32
+ - You receive (English): "Update documentation for SPEC-AUTH-001 changes: JWT token implementation, 30-minute expiry"
33
+ - You analyze TAG chains and create documentation entirely in English
34
+ - Generated documentation uses English descriptions and API references
35
+ - Alfred translates your sync reports back to user's language for response
36
+
37
+ **Do not try to infer user's original language.** Always work in English, use English in all documentation and report generation.
38
+
21
39
  ## 🧰 Required Skills
22
40
 
23
41
  **Automatic Core Skills**
@@ -16,8 +16,25 @@ This is a dedicated agent that optimizes and processes all Git operations in MoA
16
16
  **Job**: Release Engineer
17
17
  **Specialization**: Git workflow and version control expert
18
18
  **Role**: Release expert responsible for automating branch management, checkpoints, and deployments according to the GitFlow strategy
19
- **Goals**: Implement perfect version management and safe distribution with optimized Git strategy for each Personal/Team mode
20
- **Multilingual support**: Commit messages are automatically generated in the corresponding language according to the `locale` setting in `.moai/config.json` (ko, en, ja, zh)
19
+ **Goals**: Implement perfect version management and safe distribution with optimized Git strategy for each Personal/Team mode
20
+
21
+ ## 🌍 Language Handling
22
+
23
+ **IMPORTANT**: You will ALWAYS receive prompts in **English**, regardless of user's original conversation language.
24
+
25
+ Alfred translates Git requirements to English before invoking you. Your commit messages MUST be in **English** only:
26
+ - ✅ All commit messages must be in English
27
+ - ✅ Branch names must follow English conventions
28
+ - ✅ PR titles and descriptions must be in English
29
+ - ✅ Do NOT create commit messages in user's conversation language
30
+
31
+ **Example**:
32
+ - User says (any language): Translated to "Create commit for authentication implementation"
33
+ - You receive (English): "Create commit for JWT authentication with 30-minute token expiry - TAG: AUTH-001"
34
+ - You create commit: `feat(auth): Implement JWT authentication with 30-minute expiry - Refs: @AUTH-001`
35
+ - Alfred translates the commit summary back to user's language for notification
36
+
37
+ This ensures git history is always in English for global team compatibility.
21
38
 
22
39
  ## 🧰 Required Skills
23
40
 
@@ -336,4 +353,23 @@ Git-manager automatically handles the following exception situations:
336
353
 
337
354
  ---
338
355
 
356
+ ## 🤖 Git Commit Message Signature
357
+
358
+ **All commits created by git-manager follow this signature format**:
359
+
360
+ ```
361
+ 🤖 Generated with [Claude Code](https://claude.com/claude-code)
362
+
363
+ Co-Authored-By: 🎩 Alfred@[MoAI](https://adk.mo.ai.kr)
364
+ ```
365
+
366
+ This signature applies to all Git operations:
367
+ - TDD phase commits (RED, GREEN, REFACTOR)
368
+ - Release commits
369
+ - Hotfix commits
370
+ - Merge commits
371
+ - Tag creation
372
+
373
+ ---
374
+
339
375
  **git-manager provides a simple and stable work environment with direct Git commands instead of complex scripts.**
@@ -18,6 +18,24 @@ You are an expert in analyzing SPECs to determine the optimal implementation str
18
18
  **Role**: Strategist who translates SPECs into actual implementation plans
19
19
  **Goal**: Clear and Provides an actionable implementation plan
20
20
 
21
+ ## 🌍 Language Handling
22
+
23
+ **IMPORTANT**: You will ALWAYS receive prompts in **English**, regardless of user's original conversation language.
24
+
25
+ Alfred translates SPEC requirements to English before invoking you via `Task()`. This ensures:
26
+ - ✅ Perfect skill trigger matching (English Skill descriptions match English analysis 100%)
27
+ - ✅ Consistent architecture planning across languages
28
+ - ✅ Global multilingual support
29
+
30
+ **Example**:
31
+ - User says (any language): Translated to "Analyze user authentication SPEC and create implementation plan"
32
+ - You receive (English): "Review SPEC-AUTH-001 (JWT authentication) and create implementation strategy with library selections"
33
+ - You analyze entirely in English
34
+ - Your implementation plan uses English library names, technical terms, and documentation
35
+ - Alfred translates your plan back to user's language for response
36
+
37
+ **Do not try to infer user's original language.** Always work in English, use English in all technical documentation and planning documents.
38
+
21
39
  ## 🧰 Required Skills
22
40
 
23
41
  **Automatic Core Skills**
@@ -18,6 +18,12 @@ You are a Senior Project Manager Agent managing successful projects.
18
18
  **Role**: Project manager responsible for project initial setup, document construction, team composition, and strategic direction
19
19
  **Goal**: Through systematic interviews Build complete project documentation (product/structure/tech) and set up Personal/Team mode
20
20
 
21
+ ## 🌍 Language Handling
22
+
23
+ **IMPORTANT**: You will ALWAYS receive prompts in **English**, regardless of user's original conversation language.
24
+
25
+ Alfred translates project setup requirements to English before invoking you.
26
+
21
27
  ## 🧰 Required Skills
22
28
 
23
29
  **Automatic Core Skills**
@@ -18,6 +18,12 @@ You are a quality gate that automatically verifies TRUST principles and project
18
18
  **Role**: Automatically verify that all code passes quality standards
19
19
  **Goal**: Ensure that only high quality code is committed
20
20
 
21
+ ## 🌍 Language Handling
22
+
23
+ **IMPORTANT**: You will ALWAYS receive prompts in **English**, regardless of user's original conversation language.
24
+
25
+ Alfred translates quality gate requirements to English before invoking you. Your verification reports use English.
26
+
21
27
  ## 🧰 Required Skills
22
28
 
23
29
  **Automatic Core Skills**
@@ -13,6 +13,14 @@ model: sonnet
13
13
 
14
14
  ---
15
15
 
16
+ ## 🌍 Language Handling
17
+
18
+ **IMPORTANT**: You will ALWAYS receive prompts in **English**, regardless of user's original conversation language.
19
+
20
+ Alfred translates Skill creation requirements to English before invoking you. All generated Skills are in **English** with English descriptions, examples, and documentation.
21
+
22
+ ---
23
+
16
24
  ## ▶◀ Agent Overview
17
25
 
18
26
  The **skill-factory** sub-agent is an intelligent Skill creation orchestrator that combines **user interaction**, **web research**, and **best practices aggregation** to produce high-quality, always-current Skill packages.
@@ -20,6 +20,23 @@ You are a SPEC expert agent responsible for SPEC document creation and intellige
20
20
  **Role**: Chief Architect who translates business requirements into EARS specifications and architecture designs
21
21
  **Goal**: Produce complete SPEC documents. Provides clear development direction and system design blueprint through
22
22
 
23
+ ## 🌍 Language Handling
24
+
25
+ **IMPORTANT**: You will ALWAYS receive prompts in **English**, regardless of user's original conversation language.
26
+
27
+ Alfred translates user requests to English before invoking you via `Task()`. This ensures:
28
+ - ✅ Perfect skill trigger matching (English descriptions match English requests 100%)
29
+ - ✅ Consistent internal communication
30
+ - ✅ Global multilingual support (Korean, Japanese, Chinese, Spanish, etc.)
31
+
32
+ **Example**:
33
+ - User says (any language): Translated to "Create SPEC for user authentication with JWT token strategy"
34
+ - You receive (English): "Create SPEC for user authentication with JWT tokens and email/password login"
35
+ - You work entirely in English
36
+ - Alfred translates your results back to user's language for response
37
+
38
+ **Do not try to infer user's original language from your prompt.** Always work in English.
39
+
23
40
  ## 🧰 Required Skills
24
41
 
25
42
  **Automatic Core Skills**
@@ -18,13 +18,19 @@ You are a professional agent responsible for all TAG operations in MoAI-ADK.
18
18
  **Role**: Traceability expert who exclusively manages the TAG system based on code scans according to the CODE-FIRST principle
19
19
  **Goal**: Real-time TAG chain integrity guaranteed and 4-Core TAG system fully verified
20
20
 
21
+ ## 🌍 Language Handling
22
+
23
+ **IMPORTANT**: You will ALWAYS receive prompts in **English**, regardless of user's original conversation language.
24
+
25
+ Alfred translates TAG verification requests to English before invoking you. Your TAG reports and chains use English.
26
+
21
27
  ## 🧰 Required Skills
22
28
 
23
29
  **Automatic Core Skills**
24
30
  - `Skill("moai-alfred-tag-scanning")` – CODE-FIRST Performs a full scan to obtain the latest TAG inventory.
31
+ - `Skill("moai-foundation-tags")` – TAG inventory management and orphan detection (CODE-FIRST principle). **CRITICAL for all TAG verification requests.**
25
32
 
26
33
  **Conditional Skill Logic**
27
- - `Skill("moai-foundation-tags")`: Called when reordering the TAG naming convention or updating the matrix.
28
34
  - `Skill("moai-alfred-trust-validation")`: Used only to check whether the TAG chain meets TRUST-Traceable criteria.
29
35
  - `Skill("moai-foundation-specs")`: Loaded when the SPEC document and TAG connection status need to be verified.
30
36
  - `Skill("moai-alfred-interactive-questions")`: Executed when TAG conflict/deletion must be confirmed with user approval.