moai-adk 0.5.4__py3-none-any.whl → 0.5.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/__init__.py +1 -1
- moai_adk/cli/commands/init.py +4 -2
- moai_adk/cli/commands/status.py +4 -2
- moai_adk/cli/commands/update.py +4 -5
- moai_adk/core/project/initializer.py +13 -11
- moai_adk/core/project/phase_executor.py +10 -3
- moai_adk/core/template/processor.py +60 -1
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +8 -0
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +18 -0
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +18 -0
- moai_adk/templates/.claude/agents/alfred/git-manager.md +38 -2
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +18 -0
- moai_adk/templates/.claude/agents/alfred/project-manager.md +6 -0
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +6 -0
- moai_adk/templates/.claude/agents/alfred/skill-factory.md +8 -0
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +17 -0
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +7 -1
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +18 -0
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +6 -0
- moai_adk/templates/.claude/commands/alfred/0-project.md +5 -1
- moai_adk/templates/.claude/commands/alfred/1-plan.md +18 -14
- moai_adk/templates/.claude/commands/alfred/2-run.md +6 -2
- moai_adk/templates/.claude/commands/alfred/3-sync.md +5 -1
- moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +5 -1
- moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +5 -1
- moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +5 -1
- moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +5 -1
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +30 -273
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +487 -129
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +603 -70
- moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +22 -2
- moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +22 -2
- moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +22 -2
- moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +22 -2
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +22 -2
- moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +22 -2
- moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +22 -2
- moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +25 -5
- moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +152 -547
- moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +835 -878
- moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +665 -1151
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +138 -427
- moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +61 -53
- moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +99 -1181
- moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +541 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +622 -0
- moai_adk/templates/.github/ISSUE_TEMPLATE/spec.yml +176 -0
- moai_adk/templates/.github/workflows/spec-issue-sync.yml +167 -0
- moai_adk/templates/.moai/config.json +5 -5
- moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +208 -0
- moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +369 -0
- moai_adk/templates/.moai/memory/CLAUDE-RULES.md +539 -0
- moai_adk/templates/.moai/memory/{development-guide.md → DEVELOPMENT-GUIDE.md} +3 -3
- moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +218 -0
- moai_adk/templates/.moai/memory/config-schema.md +444 -0
- moai_adk/templates/CLAUDE.md +149 -845
- {moai_adk-0.5.4.dist-info → moai_adk-0.5.8.dist-info}/METADATA +407 -336
- {moai_adk-0.5.4.dist-info → moai_adk-0.5.8.dist-info}/RECORD +63 -54
- /moai_adk/templates/.moai/memory/{gitflow-protection-policy.md → GITFLOW-PROTECTION-POLICY.md} +0 -0
- /moai_adk/templates/.moai/memory/{spec-metadata.md → SPEC-METADATA.md} +0 -0
- {moai_adk-0.5.4.dist-info → moai_adk-0.5.8.dist-info}/WHEEL +0 -0
- {moai_adk-0.5.4.dist-info → moai_adk-0.5.8.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.5.4.dist-info → moai_adk-0.5.8.dist-info}/licenses/LICENSE +0 -0
moai_adk/__init__.py
CHANGED
moai_adk/cli/commands/init.py
CHANGED
|
@@ -182,10 +182,12 @@ def init(
|
|
|
182
182
|
config_data = json.load(f)
|
|
183
183
|
|
|
184
184
|
# Update version and optimization flags
|
|
185
|
+
if "moai" not in config_data:
|
|
186
|
+
config_data["moai"] = {}
|
|
187
|
+
config_data["moai"]["version"] = __version__
|
|
188
|
+
|
|
185
189
|
if "project" not in config_data:
|
|
186
190
|
config_data["project"] = {}
|
|
187
|
-
|
|
188
|
-
config_data["project"]["moai_adk_version"] = __version__
|
|
189
191
|
config_data["project"]["optimized"] = False
|
|
190
192
|
|
|
191
193
|
with open(config_path, "w", encoding="utf-8") as f:
|
moai_adk/cli/commands/status.py
CHANGED
|
@@ -76,8 +76,10 @@ def status() -> None:
|
|
|
76
76
|
table.add_column("Key", style="cyan")
|
|
77
77
|
table.add_column("Value", style="bold")
|
|
78
78
|
|
|
79
|
-
|
|
80
|
-
|
|
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"))
|
|
81
83
|
table.add_row("SPECs", str(spec_count))
|
|
82
84
|
|
|
83
85
|
# Optionally include Git information
|
moai_adk/cli/commands/update.py
CHANGED
|
@@ -139,18 +139,18 @@ def _build_template_context(
|
|
|
139
139
|
|
|
140
140
|
project_name = _coalesce(
|
|
141
141
|
project_section.get("name"),
|
|
142
|
-
existing_config.get("projectName"),
|
|
142
|
+
existing_config.get("projectName"), # Legacy fallback
|
|
143
143
|
project_path.name,
|
|
144
144
|
)
|
|
145
145
|
project_mode = _coalesce(
|
|
146
146
|
project_section.get("mode"),
|
|
147
|
-
existing_config.get("mode"),
|
|
147
|
+
existing_config.get("mode"), # Legacy fallback
|
|
148
148
|
default="personal",
|
|
149
149
|
)
|
|
150
150
|
project_description = _coalesce(
|
|
151
151
|
project_section.get("description"),
|
|
152
|
-
existing_config.get("projectDescription"),
|
|
153
|
-
existing_config.get("description"),
|
|
152
|
+
existing_config.get("projectDescription"), # Legacy fallback
|
|
153
|
+
existing_config.get("description"), # Legacy fallback
|
|
154
154
|
)
|
|
155
155
|
project_version = _coalesce(
|
|
156
156
|
project_section.get("version"),
|
|
@@ -196,7 +196,6 @@ def _preserve_project_metadata(
|
|
|
196
196
|
project_data["mode"] = context["PROJECT_MODE"]
|
|
197
197
|
project_data["description"] = context["PROJECT_DESCRIPTION"]
|
|
198
198
|
project_data["created_at"] = context["CREATION_TIMESTAMP"]
|
|
199
|
-
project_data["moai_adk_version"] = version_for_config
|
|
200
199
|
|
|
201
200
|
if "optimized" not in project_data and isinstance(existing_config, dict):
|
|
202
201
|
existing_project = _extract_project_section(existing_config)
|
|
@@ -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
|
-
"
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
"
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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(
|
|
@@ -149,7 +149,10 @@ class PhaseExecutor:
|
|
|
149
149
|
"PROJECT_DESCRIPTION": config.get("description", ""),
|
|
150
150
|
"PROJECT_MODE": config.get("mode", "personal"),
|
|
151
151
|
"PROJECT_VERSION": config.get("version", "0.1.0"),
|
|
152
|
+
"PROJECT_OWNER": config.get("author", "@user"),
|
|
152
153
|
"AUTHOR": config.get("author", "@user"),
|
|
154
|
+
"CONVERSATION_LANGUAGE": config.get("conversation_language", config.get("locale", "en")),
|
|
155
|
+
"CODEBASE_LANGUAGE": config.get("language", "generic"),
|
|
153
156
|
}
|
|
154
157
|
processor.set_context(context)
|
|
155
158
|
|
|
@@ -185,9 +188,13 @@ class PhaseExecutor:
|
|
|
185
188
|
"Phase 4: Generating configurations...", progress_callback
|
|
186
189
|
)
|
|
187
190
|
|
|
188
|
-
#
|
|
189
|
-
|
|
190
|
-
|
|
191
|
+
# Ensure project section exists and set defaults
|
|
192
|
+
if "project" not in config:
|
|
193
|
+
config["project"] = {}
|
|
194
|
+
# Type guard for mypy
|
|
195
|
+
project_config = config["project"]
|
|
196
|
+
if isinstance(project_config, dict):
|
|
197
|
+
project_config["optimized"] = False # Default value
|
|
191
198
|
|
|
192
199
|
# Write config.json
|
|
193
200
|
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
|
-
|
|
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.
|
|
@@ -18,6 +18,24 @@ You are a TDD expert who strictly adheres to the RED-GREEN-REFACTOR cycle and ke
|
|
|
18
18
|
**Role**: Executor who translates implementation plans into actual code
|
|
19
19
|
**Goal**: 100% test coverage and compliance with TRUST principles Code generation
|
|
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 references and implementation requirements to English before invoking you. This ensures:
|
|
26
|
+
- ✅ Perfect skill trigger matching (English Skill names match English requests 100%)
|
|
27
|
+
- ✅ Consistent TDD cycle communication
|
|
28
|
+
- ✅ Global multilingual support
|
|
29
|
+
|
|
30
|
+
**Example**:
|
|
31
|
+
- User says (any language): Translated to "Implement JWT-based authentication following SPEC-AUTH-001"
|
|
32
|
+
- You receive (English): "Implement user authentication with JWT tokens, 30-minute expiry, email+password login"
|
|
33
|
+
- You implement entirely in English-documented code
|
|
34
|
+
- Test cases use English variable names and descriptions
|
|
35
|
+
- Alfred translates status updates 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 code comments, test descriptions, and commit messages.
|
|
38
|
+
|
|
21
39
|
## 🧰 Required Skills
|
|
22
40
|
|
|
23
41
|
**Automatic Core Skills**
|
|
@@ -18,6 +18,12 @@ You are the agent responsible for the TRUST 5 principles, code standards, and se
|
|
|
18
18
|
**Role**: QA lead who comprehensively verifies code quality, security, performance, and traceability based on TRUST 5 principles
|
|
19
19
|
**Goal**: Differential scan Efficient and accurate quality assurance and improvement direction suggested through the system (Level 1→2→3)
|
|
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 verification requests to English before invoking you. Your reports use English terminology.
|
|
26
|
+
|
|
21
27
|
## 🧰 Required Skills
|
|
22
28
|
|
|
23
29
|
**Automatic Core Skills**
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: alfred:0-project
|
|
3
|
-
description: Initialize project document - create product/structure/tech.md and set optimization for each language
|
|
3
|
+
description: "Initialize project document - create product/structure/tech.md and set optimization for each language"
|
|
4
|
+
# Translations:
|
|
5
|
+
# - ko: "프로젝트 문서 초기화 - product/structure/tech.md 생성 및 언어별 최적화 설정"
|
|
6
|
+
# - ja: "プロジェクト文書の初期化 - product/structure/tech.mdの作成と言語別最適化設定"
|
|
7
|
+
# - zh: "初始化项目文档 - 创建product/structure/tech.md并设置语言优化"
|
|
4
8
|
allowed-tools:
|
|
5
9
|
- Read
|
|
6
10
|
- Write
|
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: alfred:1-plan
|
|
3
|
-
description: Planning (brainstorming, plan writing, design discussion) + Branch/PR creation
|
|
4
|
-
|
|
3
|
+
description: "Planning (brainstorming, plan writing, design discussion) + Branch/PR creation"
|
|
4
|
+
# Translations:
|
|
5
|
+
# - ko: "계획 수립 (브레인스토밍, 설계 논의) + 브랜치/PR 생성"
|
|
6
|
+
# - ja: "計画策定(ブレインストーミング、設計議論)+ ブランチ/PR作成"
|
|
7
|
+
# - zh: "规划(头脑风暴、设计讨论)+ 分支/PR创建"
|
|
8
|
+
argument-hint: Title 1 Title 2 ... | SPEC-ID modifications
|
|
5
9
|
allowed-tools:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
- Read
|
|
11
|
+
- Write
|
|
12
|
+
- Edit
|
|
13
|
+
- MultiEdit
|
|
14
|
+
- Grep
|
|
15
|
+
- Glob
|
|
16
|
+
- TodoWrite
|
|
17
|
+
- Bash(git:*)
|
|
18
|
+
- Bash(gh:*)
|
|
19
|
+
- Bash(rg:*)
|
|
20
|
+
- Bash(mkdir:*)
|
|
17
21
|
---
|
|
18
22
|
|
|
19
23
|
# 🏗️ MoAI-ADK Step 1: Establish a plan (Plan) - Always make a plan first and then proceed.
|
|
@@ -25,7 +29,7 @@ allowed-tools:
|
|
|
25
29
|
|
|
26
30
|
**Plan for**: $ARGUMENTS
|
|
27
31
|
|
|
28
|
-
## 💡 Planning philosophy:
|
|
32
|
+
## 💡 Planning philosophy: "Always make a plan first and then proceed."
|
|
29
33
|
|
|
30
34
|
`/alfred:1-plan` is a general-purpose command that **creates a plan**, rather than simply “creating” a SPEC document.
|
|
31
35
|
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: alfred:2-run
|
|
3
|
-
description: "
|
|
4
|
-
|
|
3
|
+
description: "Execute planned work (TDD implementation, prototyping, documentation, etc.)"
|
|
4
|
+
# Translations:
|
|
5
|
+
# - ko: "계획된 작업 실행 (TDD 구현, 프로토타이핑, 문서화 등)"
|
|
6
|
+
# - ja: "計画されたタスクの実行(TDD実装、プロトタイピング、ドキュメント作成など)"
|
|
7
|
+
# - zh: "执行计划任务(TDD实现、原型开发、文档编写等)"
|
|
8
|
+
argument-hint: "SPEC-ID - All with SPEC ID to implement (e.g. SPEC-001) or all \"SPEC Implementation\""
|
|
5
9
|
allowed-tools:
|
|
6
10
|
- Read
|
|
7
11
|
- Write
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: alfred:3-sync
|
|
3
|
-
description: Document synchronization + PR Ready conversion
|
|
3
|
+
description: "Document synchronization + PR Ready conversion"
|
|
4
|
+
# Translations:
|
|
5
|
+
# - ko: "문서 동기화 + PR Ready 전환"
|
|
6
|
+
# - ja: "ドキュメント同期 + PR Ready変換"
|
|
7
|
+
# - zh: "文档同步 + PR Ready转换"
|
|
4
8
|
argument-hint: "Mode target path - Mode: auto (default)|force|status|project, target path: Synchronization target path"
|
|
5
9
|
allowed-tools:
|
|
6
10
|
- Read
|
|
@@ -118,7 +118,11 @@ def main() -> None:
|
|
|
118
118
|
try:
|
|
119
119
|
# Read JSON from stdin
|
|
120
120
|
input_data = sys.stdin.read()
|
|
121
|
-
|
|
121
|
+
# Handle empty stdin gracefully (return empty dict)
|
|
122
|
+
if not input_data or not input_data.strip():
|
|
123
|
+
data = {}
|
|
124
|
+
else:
|
|
125
|
+
data = json.loads(input_data)
|
|
122
126
|
|
|
123
127
|
cwd = data.get("cwd", ".")
|
|
124
128
|
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Agentic Coding
|
|
3
|
-
description: Agent-based coding mode that integrates hands-on development and collaboration
|
|
3
|
+
description: "Agent-based coding mode that integrates hands-on development and collaboration"
|
|
4
|
+
# Translations:
|
|
5
|
+
# - ko: "실무 개발과 협업을 통합하는 에이전트 기반 코딩 모드"
|
|
6
|
+
# - ja: "実務開発とコラボレーションを統合するエージェントベースのコーディングモード"
|
|
7
|
+
# - zh: "集成实战开发和协作的基于代理的编码模式"
|
|
4
8
|
---
|
|
5
9
|
|
|
6
10
|
# Agentic Coding
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: MoAI ADK Learning
|
|
3
|
-
description: Learning mode to easily learn MoAI-ADK concepts and workflow
|
|
3
|
+
description: "Learning mode to easily learn MoAI-ADK concepts and workflow"
|
|
4
|
+
# Translations:
|
|
5
|
+
# - ko: "MoAI-ADK 개념과 워크플로우를 쉽게 학습하는 학습 모드"
|
|
6
|
+
# - ja: "MoAI-ADKの概念とワークフローを簡単に学習する学習モード"
|
|
7
|
+
# - zh: "轻松学习MoAI-ADK概念和工作流程的学习模式"
|
|
4
8
|
---
|
|
5
9
|
|
|
6
10
|
# MoAI ADK Learning
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Study with Alfred
|
|
3
|
-
description: Learning mode to easily learn new skills with Alfred
|
|
3
|
+
description: "Learning mode to easily learn new skills with Alfred"
|
|
4
|
+
# Translations:
|
|
5
|
+
# - ko: "Alfred와 함께 새로운 기술을 쉽게 학습하는 학습 모드"
|
|
6
|
+
# - ja: "Alfredと一緒に新しいスキルを簡単に学習する学習モード"
|
|
7
|
+
# - zh: "与Alfred一起轻松学习新技能的学习模式"
|
|
4
8
|
---
|
|
5
9
|
|
|
6
10
|
# Study with Alfred
|