moai-adk 0.4.5__py3-none-any.whl → 0.4.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/core/project/initializer.py +12 -5
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +188 -954
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +4 -5
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +2 -2
- moai_adk/templates/.claude/agents/alfred/git-manager.md +2 -2
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +3 -3
- moai_adk/templates/.claude/agents/alfred/project-manager.md +6 -6
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +4 -6
- moai_adk/templates/.claude/agents/alfred/skill-factory.md +829 -0
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +2 -2
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +2 -2
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +3 -3
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +5 -5
- moai_adk/templates/.claude/commands/alfred/0-project.md +98 -42
- moai_adk/templates/.claude/commands/alfred/1-plan.md +7 -7
- moai_adk/templates/.claude/commands/alfred/2-run.md +36 -36
- moai_adk/templates/.claude/commands/alfred/3-sync.md +10 -10
- moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +14 -1
- moai_adk/templates/.claude/hooks/alfred/core/__init__.py +115 -33
- moai_adk/templates/.claude/hooks/alfred/handlers/session.py +8 -9
- moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +6 -6
- moai_adk/templates/.claude/hooks/alfred/handlers/user.py +5 -4
- moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +1 -1
- moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +1 -1
- moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +1 -1
- moai_adk/templates/.claude/settings.json +42 -2
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +76 -66
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +86 -59
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +480 -0
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +257 -0
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +120 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +87 -73
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +78 -62
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +78 -55
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +78 -64
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +249 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +278 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +287 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +232 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +179 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +296 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +243 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +271 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +234 -43
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +97 -69
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +97 -72
- moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +97 -74
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +98 -74
- moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +98 -73
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +97 -73
- moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +97 -67
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +97 -79
- moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +97 -71
- moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +656 -60
- moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1107 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1533 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +87 -78
- moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +87 -70
- moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +87 -86
- moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +77 -62
- moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +88 -56
- moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +90 -71
- moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +78 -58
- moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +78 -51
- moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +253 -32
- moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
- moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +98 -74
- moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +98 -76
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +97 -74
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +86 -61
- moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +98 -74
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +87 -61
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +88 -59
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +98 -73
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +86 -61
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +388 -53
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +97 -73
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +98 -73
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +98 -74
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +97 -74
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +97 -74
- moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +98 -74
- moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +97 -73
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +90 -59
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +482 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +278 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +477 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +560 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +583 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +526 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +465 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +328 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +312 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +285 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +278 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +303 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +129 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +1300 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +161 -0
- moai_adk/templates/CLAUDE.md +121 -81
- moai_adk-0.4.8.dist-info/METADATA +1553 -0
- moai_adk-0.4.8.dist-info/RECORD +265 -0
- moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/SKILL.md +0 -112
- moai_adk/templates/.claude/skills/moai-alfred-debugger-pro/SKILL.md +0 -103
- moai_adk/templates/.claude/skills/moai-alfred-performance-optimizer/SKILL.md +0 -105
- moai_adk/templates/.claude/skills/moai-alfred-refactoring-coach/SKILL.md +0 -97
- moai_adk/templates/.claude/skills/moai-alfred-tui-survey/SKILL.md +0 -87
- moai_adk/templates/.claude/skills/moai-alfred-tui-survey/examples.md +0 -62
- moai_adk/templates/.claude/skills/moai-claude-code/SKILL.md +0 -94
- moai_adk/templates/.claude/skills/moai-claude-code/examples.md +0 -513
- moai_adk/templates/.claude/skills/moai-claude-code/reference.md +0 -433
- moai_adk/templates/.claude/skills/moai-claude-code/templates/agent-full.md +0 -332
- moai_adk/templates/.claude/skills/moai-claude-code/templates/command-full.md +0 -384
- moai_adk/templates/.claude/skills/moai-claude-code/templates/plugin-full.json +0 -363
- moai_adk/templates/.claude/skills/moai-claude-code/templates/settings-full.json +0 -595
- moai_adk/templates/.claude/skills/moai-claude-code/templates/skill-full.md +0 -496
- moai_adk/templates/.claude/skills/moai-lang-clojure/SKILL.md +0 -100
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +0 -99
- moai_adk/templates/.claude/skills/moai-lang-haskell/SKILL.md +0 -100
- moai_adk/templates/.claude/skills/moai-lang-julia/SKILL.md +0 -98
- moai_adk/templates/.claude/skills/moai-lang-lua/SKILL.md +0 -98
- moai_adk-0.4.5.dist-info/METADATA +0 -369
- moai_adk-0.4.5.dist-info/RECORD +0 -152
- {moai_adk-0.4.5.dist-info → moai_adk-0.4.8.dist-info}/WHEEL +0 -0
- {moai_adk-0.4.5.dist-info → moai_adk-0.4.8.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.4.5.dist-info → moai_adk-0.4.8.dist-info}/licenses/LICENSE +0 -0
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
Common type definitions and utility functions
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
from dataclasses import
|
|
8
|
-
from typing import Any, NotRequired, TypedDict
|
|
7
|
+
from dataclasses import dataclass, field
|
|
8
|
+
from typing import Any, Literal, NotRequired, TypedDict
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class HookPayload(TypedDict):
|
|
@@ -16,63 +16,145 @@ class HookPayload(TypedDict):
|
|
|
16
16
|
"""
|
|
17
17
|
|
|
18
18
|
cwd: str
|
|
19
|
-
userPrompt: NotRequired[str]
|
|
19
|
+
userPrompt: NotRequired[str] # Includes only UserPromptSubmit events
|
|
20
20
|
tool: NotRequired[str] # PreToolUse/PostToolUse events
|
|
21
21
|
arguments: NotRequired[dict[str, Any]] # Tool arguments
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
@dataclass
|
|
25
25
|
class HookResult:
|
|
26
|
-
"""Hook execution result
|
|
26
|
+
"""Hook execution result following Claude Code standard schema.
|
|
27
|
+
|
|
28
|
+
Attributes conform to Claude Code Hook output specification:
|
|
29
|
+
https://docs.claude.com/en/docs/claude-code/hooks
|
|
30
|
+
|
|
31
|
+
Standard Fields (Claude Code schema):
|
|
32
|
+
continue_execution: Allow execution to continue (default True)
|
|
33
|
+
suppress_output: Suppress hook output display (default False)
|
|
34
|
+
decision: "approve" or "block" operation (optional)
|
|
35
|
+
reason: Explanation for decision (optional)
|
|
36
|
+
permission_decision: "allow", "deny", or "ask" (optional)
|
|
37
|
+
|
|
38
|
+
MoAI-ADK Fields (wrapped in hookSpecificOutput):
|
|
39
|
+
system_message: Message displayed to user
|
|
40
|
+
context_files: List of context files to load
|
|
41
|
+
suggestions: Suggestions for user
|
|
42
|
+
exit_code: Exit code (for diagnostics)
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
# Claude Code standard fields
|
|
46
|
+
continue_execution: bool = True
|
|
47
|
+
suppress_output: bool = False
|
|
48
|
+
decision: Literal["approve", "block"] | None = None
|
|
49
|
+
reason: str | None = None
|
|
50
|
+
permission_decision: Literal["allow", "deny", "ask"] | None = None
|
|
27
51
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
contextFiles: list[str] = field(default_factory=list) # noqa: N815
|
|
52
|
+
# MoAI-ADK custom fields (wrapped in hookSpecificOutput)
|
|
53
|
+
system_message: str | None = None
|
|
54
|
+
context_files: list[str] = field(default_factory=list)
|
|
32
55
|
suggestions: list[str] = field(default_factory=list)
|
|
33
|
-
|
|
56
|
+
exit_code: int = 0
|
|
34
57
|
|
|
35
58
|
def to_dict(self) -> dict[str, Any]:
|
|
36
|
-
"""
|
|
37
|
-
|
|
59
|
+
"""Convert to Claude Code standard Hook output schema.
|
|
60
|
+
|
|
61
|
+
Returns:
|
|
62
|
+
Dictionary conforming to Claude Code Hook specification with:
|
|
63
|
+
- Top-level fields: continue, suppressOutput, decision, reason, permissionDecision
|
|
64
|
+
- Nested field: hookSpecificOutput containing MoAI-ADK-specific data
|
|
65
|
+
|
|
66
|
+
Examples:
|
|
67
|
+
>>> result = HookResult(continue_execution=True)
|
|
68
|
+
>>> result.to_dict()
|
|
69
|
+
{'continue': True}
|
|
70
|
+
|
|
71
|
+
>>> result = HookResult(decision="block", reason="Dangerous")
|
|
72
|
+
>>> result.to_dict()
|
|
73
|
+
{'decision': 'block', 'reason': 'Dangerous'}
|
|
74
|
+
|
|
75
|
+
>>> result = HookResult(system_message="Test", context_files=["a.txt"])
|
|
76
|
+
>>> result.to_dict()
|
|
77
|
+
{'continue': True, 'hookSpecificOutput': {'systemMessage': 'Test', 'contextFiles': ['a.txt']}}
|
|
78
|
+
"""
|
|
79
|
+
output: dict[str, Any] = {}
|
|
80
|
+
|
|
81
|
+
# Add decision or continue flag
|
|
82
|
+
if self.decision:
|
|
83
|
+
output["decision"] = self.decision
|
|
84
|
+
if self.reason:
|
|
85
|
+
output["reason"] = self.reason
|
|
86
|
+
else:
|
|
87
|
+
output["continue"] = self.continue_execution
|
|
88
|
+
|
|
89
|
+
# Add suppressOutput if True
|
|
90
|
+
if self.suppress_output:
|
|
91
|
+
output["suppressOutput"] = True
|
|
92
|
+
|
|
93
|
+
# Add permissionDecision if set
|
|
94
|
+
if self.permission_decision:
|
|
95
|
+
output["permissionDecision"] = self.permission_decision
|
|
96
|
+
|
|
97
|
+
# Wrap MoAI-ADK custom fields in hookSpecificOutput
|
|
98
|
+
hook_output: dict[str, Any] = {}
|
|
99
|
+
|
|
100
|
+
if self.system_message:
|
|
101
|
+
hook_output["systemMessage"] = self.system_message
|
|
102
|
+
|
|
103
|
+
if self.context_files:
|
|
104
|
+
hook_output["contextFiles"] = self.context_files
|
|
105
|
+
|
|
106
|
+
if self.suggestions:
|
|
107
|
+
hook_output["suggestions"] = self.suggestions
|
|
108
|
+
|
|
109
|
+
if self.exit_code != 0:
|
|
110
|
+
hook_output["exitCode"] = self.exit_code
|
|
111
|
+
|
|
112
|
+
# Only add hookSpecificOutput if there's custom data
|
|
113
|
+
if hook_output:
|
|
114
|
+
output["hookSpecificOutput"] = hook_output
|
|
115
|
+
|
|
116
|
+
return output
|
|
38
117
|
|
|
39
118
|
def to_user_prompt_submit_dict(self) -> dict[str, Any]:
|
|
40
|
-
"""UserPromptSubmit Hook-specific output format
|
|
119
|
+
"""UserPromptSubmit Hook-specific output format.
|
|
41
120
|
|
|
42
|
-
Claude Code requires a special schema for UserPromptSubmit
|
|
43
|
-
|
|
44
|
-
"hookEventName": "UserPromptSubmit",
|
|
45
|
-
"additionalContext": "string (required)"
|
|
46
|
-
}
|
|
121
|
+
Claude Code requires a special schema for UserPromptSubmit events.
|
|
122
|
+
The result is wrapped in the standard Hook schema with hookSpecificOutput.
|
|
47
123
|
|
|
48
124
|
Returns:
|
|
49
|
-
Claude Code UserPromptSubmit Hook Dictionary matching schema
|
|
125
|
+
Claude Code UserPromptSubmit Hook Dictionary matching schema:
|
|
126
|
+
{
|
|
127
|
+
"continue": true,
|
|
128
|
+
"hookSpecificOutput": {
|
|
129
|
+
"hookEventName": "UserPromptSubmit",
|
|
130
|
+
"additionalContext": "string"
|
|
131
|
+
}
|
|
132
|
+
}
|
|
50
133
|
|
|
51
134
|
Examples:
|
|
52
|
-
>>> result = HookResult(
|
|
135
|
+
>>> result = HookResult(context_files=["tests/"])
|
|
53
136
|
>>> result.to_user_prompt_submit_dict()
|
|
54
|
-
{'hookEventName': 'UserPromptSubmit', 'additionalContext': '📎 Context: tests/'}
|
|
137
|
+
{'continue': True, 'hookSpecificOutput': {'hookEventName': 'UserPromptSubmit', 'additionalContext': '📎 Context: tests/'}}
|
|
55
138
|
"""
|
|
56
|
-
# Convert
|
|
57
|
-
if self.
|
|
58
|
-
context_str = "\n".join([f"📎 Context: {f}" for f in self.
|
|
139
|
+
# Convert context_files to additionalContext string
|
|
140
|
+
if self.context_files:
|
|
141
|
+
context_str = "\n".join([f"📎 Context: {f}" for f in self.context_files])
|
|
59
142
|
else:
|
|
60
143
|
context_str = ""
|
|
61
144
|
|
|
62
|
-
# Add
|
|
63
|
-
if self.
|
|
145
|
+
# Add system_message if there is one
|
|
146
|
+
if self.system_message:
|
|
64
147
|
if context_str:
|
|
65
|
-
context_str = f"{self.
|
|
148
|
+
context_str = f"{self.system_message}\n\n{context_str}"
|
|
66
149
|
else:
|
|
67
|
-
context_str = self.
|
|
68
|
-
|
|
69
|
-
# If the string is empty, use default
|
|
70
|
-
if not context_str:
|
|
71
|
-
context_str = ""
|
|
150
|
+
context_str = self.system_message
|
|
72
151
|
|
|
73
152
|
return {
|
|
74
|
-
"
|
|
75
|
-
"
|
|
153
|
+
"continue": self.continue_execution,
|
|
154
|
+
"hookSpecificOutput": {
|
|
155
|
+
"hookEventName": "UserPromptSubmit",
|
|
156
|
+
"additionalContext": context_str
|
|
157
|
+
}
|
|
76
158
|
}
|
|
77
159
|
|
|
78
160
|
|
|
@@ -19,7 +19,7 @@ def handle_session_start(payload: HookPayload) -> HookResult:
|
|
|
19
19
|
payload: Claude Code event payload (cwd key required)
|
|
20
20
|
|
|
21
21
|
Returns:
|
|
22
|
-
HookResult(
|
|
22
|
+
HookResult(system_message=project status summary message)
|
|
23
23
|
|
|
24
24
|
Message Format:
|
|
25
25
|
🚀 MoAI-ADK Session Started
|
|
@@ -31,14 +31,15 @@ def handle_session_start(payload: HookPayload) -> HookResult:
|
|
|
31
31
|
|
|
32
32
|
Note:
|
|
33
33
|
- Claude Code processes SessionStart in several stages (clear → compact)
|
|
34
|
-
- Display message only at
|
|
35
|
-
- "clear" step returns
|
|
34
|
+
- Display message only at "compact" stage to prevent duplicate output
|
|
35
|
+
- "clear" step returns minimal result (empty hookSpecificOutput)
|
|
36
36
|
|
|
37
37
|
TDD History:
|
|
38
38
|
- RED: Session startup message format test
|
|
39
39
|
- GREEN: Generate status message by combining helper functions
|
|
40
40
|
- REFACTOR: Improved message format, improved readability, added checkpoint list
|
|
41
41
|
- FIX: Prevent duplicate output of clear step (only compact step is displayed)
|
|
42
|
+
- UPDATE: Migrated to Claude Code standard Hook schema
|
|
42
43
|
|
|
43
44
|
@TAG:CHECKPOINT-EVENT-001
|
|
44
45
|
"""
|
|
@@ -46,7 +47,8 @@ def handle_session_start(payload: HookPayload) -> HookResult:
|
|
|
46
47
|
# Ignore the "clear" stage and output messages only at the "compact" stage
|
|
47
48
|
event_phase = payload.get("phase", "")
|
|
48
49
|
if event_phase == "clear":
|
|
49
|
-
|
|
50
|
+
# Return minimal valid Hook result for clear phase
|
|
51
|
+
return HookResult(continue_execution=True)
|
|
50
52
|
|
|
51
53
|
cwd = payload.get("cwd", ".")
|
|
52
54
|
language = detect_language(cwd)
|
|
@@ -59,7 +61,7 @@ def handle_session_start(payload: HookPayload) -> HookResult:
|
|
|
59
61
|
changes = git_info.get("changes", 0)
|
|
60
62
|
spec_progress = f"{specs['completed']}/{specs['total']}"
|
|
61
63
|
|
|
62
|
-
#
|
|
64
|
+
# system_message: displayed directly to the user
|
|
63
65
|
lines = [
|
|
64
66
|
"🚀 MoAI-ADK Session Started",
|
|
65
67
|
f" Language: {language}",
|
|
@@ -78,10 +80,7 @@ def handle_session_start(payload: HookPayload) -> HookResult:
|
|
|
78
80
|
|
|
79
81
|
system_message = "\n".join(lines)
|
|
80
82
|
|
|
81
|
-
return HookResult(
|
|
82
|
-
message=system_message, # for Claude context
|
|
83
|
-
systemMessage=system_message, # For user display
|
|
84
|
-
)
|
|
83
|
+
return HookResult(system_message=system_message)
|
|
85
84
|
|
|
86
85
|
|
|
87
86
|
def handle_session_end(payload: HookPayload) -> HookResult:
|
|
@@ -20,8 +20,8 @@ def handle_pre_tool_use(payload: HookPayload) -> HookResult:
|
|
|
20
20
|
|
|
21
21
|
Returns:
|
|
22
22
|
HookResult(
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
system_message=checkpoint creation notification (when danger is detected);
|
|
24
|
+
continue_execution=True (always continue operation)
|
|
25
25
|
)
|
|
26
26
|
|
|
27
27
|
Checkpoint Triggers:
|
|
@@ -34,7 +34,7 @@ def handle_pre_tool_use(payload: HookPayload) -> HookResult:
|
|
|
34
34
|
→ "🛡️ Checkpoint created: before-delete-20251015-143000"
|
|
35
35
|
|
|
36
36
|
Notes:
|
|
37
|
-
- Return
|
|
37
|
+
- Return continue_execution=True even after detection of danger (continue operation)
|
|
38
38
|
- Work continues even when checkpoint fails (ignores)
|
|
39
39
|
- Transparent background operation
|
|
40
40
|
|
|
@@ -52,14 +52,14 @@ def handle_pre_tool_use(payload: HookPayload) -> HookResult:
|
|
|
52
52
|
checkpoint_branch = create_checkpoint(cwd, operation_type)
|
|
53
53
|
|
|
54
54
|
if checkpoint_branch != "checkpoint-failed":
|
|
55
|
-
|
|
55
|
+
system_message = (
|
|
56
56
|
f"🛡️ Checkpoint created: {checkpoint_branch}\n"
|
|
57
57
|
f" Operation: {operation_type}"
|
|
58
58
|
)
|
|
59
59
|
|
|
60
|
-
return HookResult(
|
|
60
|
+
return HookResult(system_message=system_message, continue_execution=True)
|
|
61
61
|
|
|
62
|
-
return HookResult(
|
|
62
|
+
return HookResult(continue_execution=True)
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
def handle_post_tool_use(payload: HookPayload) -> HookResult:
|
|
@@ -20,22 +20,23 @@ def handle_user_prompt_submit(payload: HookPayload) -> HookResult:
|
|
|
20
20
|
|
|
21
21
|
Returns:
|
|
22
22
|
HookResult(
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
system_message=Number of Files loaded (or None),
|
|
24
|
+
context_files=Recommended document path list
|
|
25
25
|
)
|
|
26
26
|
|
|
27
27
|
TDD History:
|
|
28
28
|
- RED: JIT document loading scenario testing
|
|
29
29
|
- GREEN: Recommend documents by calling get_jit_context()
|
|
30
30
|
- REFACTOR: Message conditional display (only when there is a file)
|
|
31
|
+
- UPDATE: Migrated to Claude Code standard Hook schema with snake_case fields
|
|
31
32
|
"""
|
|
32
33
|
user_prompt = payload.get("userPrompt", "")
|
|
33
34
|
cwd = payload.get("cwd", ".")
|
|
34
35
|
context_files = get_jit_context(user_prompt, cwd)
|
|
35
36
|
|
|
36
|
-
|
|
37
|
+
system_message = f"📎 Loaded {len(context_files)} context file(s)" if context_files else None
|
|
37
38
|
|
|
38
|
-
return HookResult(
|
|
39
|
+
return HookResult(system_message=system_message, context_files=context_files)
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
__all__ = ["handle_user_prompt_submit"]
|
|
@@ -4,7 +4,7 @@ description: Agent-based coding mode that integrates hands-on development and co
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Agentic Coding
|
|
7
|
-
> Interactive prompts rely on `Skill("moai-alfred-
|
|
7
|
+
> Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
|
|
8
8
|
|
|
9
9
|
**Audience**: Professional developers, team leaders, architects
|
|
10
10
|
|
|
@@ -4,7 +4,7 @@ description: Learning mode to easily learn MoAI-ADK concepts and workflow
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# MoAI ADK Learning
|
|
7
|
-
> Interactive prompts rely on `Skill("moai-alfred-
|
|
7
|
+
> Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
|
|
8
8
|
|
|
9
9
|
**Audience**: Developers new to MoAI-ADK
|
|
10
10
|
|
|
@@ -4,7 +4,7 @@ description: Learning mode to easily learn new skills with Alfred
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Study with Alfred
|
|
7
|
-
> Interactive prompts rely on `Skill("moai-alfred-
|
|
7
|
+
> Interactive prompts rely on `Skill("moai-alfred-interactive-questions")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
|
|
8
8
|
|
|
9
9
|
**Audience**: Developers looking to learn new technologies/languages/frameworks
|
|
10
10
|
|
|
@@ -6,18 +6,58 @@
|
|
|
6
6
|
"PYTHON_ENV": "{{PROJECT_MODE}}"
|
|
7
7
|
},
|
|
8
8
|
"hooks": {
|
|
9
|
+
"SessionStart": [
|
|
10
|
+
{
|
|
11
|
+
"hooks": [
|
|
12
|
+
{
|
|
13
|
+
"command": "uv run \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/alfred/alfred_hooks.py SessionStart",
|
|
14
|
+
"type": "command"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
],
|
|
9
19
|
"PreToolUse": [
|
|
10
20
|
{
|
|
11
21
|
"hooks": [
|
|
12
22
|
{
|
|
13
|
-
"command": "uv run
|
|
23
|
+
"command": "uv run \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/alfred/alfred_hooks.py PreToolUse",
|
|
14
24
|
"type": "command"
|
|
15
25
|
}
|
|
16
26
|
],
|
|
17
27
|
"matcher": "Edit|Write|MultiEdit"
|
|
18
28
|
}
|
|
19
29
|
],
|
|
20
|
-
"
|
|
30
|
+
"UserPromptSubmit": [
|
|
31
|
+
{
|
|
32
|
+
"hooks": [
|
|
33
|
+
{
|
|
34
|
+
"command": "uv run \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/alfred/alfred_hooks.py UserPromptSubmit",
|
|
35
|
+
"type": "command"
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"SessionEnd": [
|
|
41
|
+
{
|
|
42
|
+
"hooks": [
|
|
43
|
+
{
|
|
44
|
+
"command": "uv run \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/alfred/alfred_hooks.py SessionEnd",
|
|
45
|
+
"type": "command"
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"PostToolUse": [
|
|
51
|
+
{
|
|
52
|
+
"hooks": [
|
|
53
|
+
{
|
|
54
|
+
"command": "uv run \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/alfred/alfred_hooks.py PostToolUse",
|
|
55
|
+
"type": "command"
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"matcher": "Edit|Write|MultiEdit"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
21
61
|
},
|
|
22
62
|
"permissions": {
|
|
23
63
|
"defaultMode": "default",
|
|
@@ -1,103 +1,113 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
2
|
name: moai-alfred-ears-authoring
|
|
4
|
-
|
|
3
|
+
version: 2.0.0
|
|
4
|
+
created: 2025-10-22
|
|
5
|
+
updated: 2025-10-22
|
|
6
|
+
status: active
|
|
7
|
+
description: EARS (Easy Approach to Requirements Syntax) authoring with 5 statement patterns for clear requirements.
|
|
8
|
+
keywords: ['ears', 'requirements', 'specs', 'authoring']
|
|
5
9
|
allowed-tools:
|
|
6
10
|
- Read
|
|
7
|
-
- Write
|
|
8
|
-
- Edit
|
|
9
11
|
- Bash
|
|
10
|
-
- TodoWrite
|
|
11
12
|
---
|
|
12
13
|
|
|
13
|
-
# Alfred
|
|
14
|
+
# Alfred Ears Authoring Skill
|
|
14
15
|
|
|
15
16
|
## Skill Metadata
|
|
17
|
+
|
|
16
18
|
| Field | Value |
|
|
17
19
|
| ----- | ----- |
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
20
|
+
| **Skill Name** | moai-alfred-ears-authoring |
|
|
21
|
+
| **Version** | 2.0.0 (2025-10-22) |
|
|
22
|
+
| **Allowed tools** | Read (read_file), Bash (terminal) |
|
|
23
|
+
| **Auto-load** | On demand when keywords detected |
|
|
24
|
+
| **Tier** | Alfred |
|
|
21
25
|
|
|
22
|
-
|
|
26
|
+
---
|
|
23
27
|
|
|
24
|
-
|
|
28
|
+
## What It Does
|
|
25
29
|
|
|
26
|
-
|
|
30
|
+
EARS (Easy Approach to Requirements Syntax) authoring with 5 statement patterns for clear requirements.
|
|
27
31
|
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
+
**Key capabilities**:
|
|
33
|
+
- ✅ Best practices enforcement for alfred domain
|
|
34
|
+
- ✅ TRUST 5 principles integration
|
|
35
|
+
- ✅ Latest tool versions (2025-10-22)
|
|
36
|
+
- ✅ TDD workflow support
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
---
|
|
34
39
|
|
|
35
|
-
|
|
40
|
+
## When to Use
|
|
36
41
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
**Automatic triggers**:
|
|
43
|
+
- Related code discussions and file patterns
|
|
44
|
+
- SPEC implementation (`/alfred:2-run`)
|
|
45
|
+
- Code review requests
|
|
40
46
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
47
|
+
**Manual invocation**:
|
|
48
|
+
- Review code for TRUST 5 compliance
|
|
49
|
+
- Design new features
|
|
50
|
+
- Troubleshoot issues
|
|
44
51
|
|
|
45
|
-
|
|
46
|
-
**Format**: WHILE When in [state], the system must [operate]
|
|
47
|
-
**Example**: WHILE When the user is authenticated, the system must allow access to protected resources
|
|
52
|
+
---
|
|
48
53
|
|
|
49
|
-
|
|
50
|
-
**Format**: If WHERE [condition], the system can [operate]
|
|
51
|
-
**Example**: If WHERE refresh token is provided, the system can issue a new access token
|
|
54
|
+
## Inputs
|
|
52
55
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
+
- Language-specific source directories
|
|
57
|
+
- Configuration files
|
|
58
|
+
- Test suites and sample data
|
|
56
59
|
|
|
57
|
-
##
|
|
60
|
+
## Outputs
|
|
58
61
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
✅ Make it testable
|
|
62
|
+
- Test/lint execution plan
|
|
63
|
+
- TRUST 5 review checkpoints
|
|
64
|
+
- Migration guidance
|
|
63
65
|
|
|
64
|
-
##
|
|
65
|
-
- The text shown to the user is written using TUI/report expressions.
|
|
66
|
-
- When running the tool, a summary of commands and results are recorded.
|
|
66
|
+
## Failure Modes
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
-
|
|
71
|
-
- Add summary to Completion Report.
|
|
72
|
-
```
|
|
68
|
+
- When required tools are not installed
|
|
69
|
+
- When dependencies are missing
|
|
70
|
+
- When test coverage falls below 85%
|
|
73
71
|
|
|
74
|
-
##
|
|
75
|
-
- MoAI-ADK project context (`.moai/project/`, `.claude/` templates, etc.).
|
|
76
|
-
- Parameters passed from user commands or higher commands.
|
|
72
|
+
## Dependencies
|
|
77
73
|
|
|
78
|
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
74
|
+
- Access to project files via Read/Bash tools
|
|
75
|
+
- Integration with `moai-foundation-langs` for language detection
|
|
76
|
+
- Integration with `moai-foundation-trust` for quality gates
|
|
81
77
|
|
|
82
|
-
|
|
83
|
-
- When required input documents are missing or permissions are limited.
|
|
84
|
-
- When disruptive changes are required without user approval.
|
|
78
|
+
---
|
|
85
79
|
|
|
86
|
-
##
|
|
87
|
-
- Cooperation with higher-level agents such as cc-manager and project-manager is required.
|
|
80
|
+
## References (Latest Documentation)
|
|
88
81
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
82
|
+
_Documentation links updated 2025-10-22_
|
|
83
|
+
|
|
84
|
+
---
|
|
92
85
|
|
|
93
86
|
## Changelog
|
|
94
|
-
- 2025-03-29: Added input/output/failure response to Alfred-specific skills.
|
|
95
87
|
|
|
96
|
-
|
|
88
|
+
- **v2.0.0** (2025-10-22): Major update with latest tool versions, comprehensive best practices, TRUST 5 integration
|
|
89
|
+
- **v1.0.0** (2025-03-29): Initial Skill release
|
|
97
90
|
|
|
98
|
-
|
|
99
|
-
- alfred-trust-validation
|
|
91
|
+
---
|
|
100
92
|
|
|
101
|
-
##
|
|
93
|
+
## Works Well With
|
|
94
|
+
|
|
95
|
+
- `moai-foundation-trust` (quality gates)
|
|
96
|
+
- `moai-alfred-code-reviewer` (code review)
|
|
97
|
+
- `moai-essentials-debug` (debugging support)
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Best Practices
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
✅ **DO**:
|
|
104
|
+
- Follow alfred best practices
|
|
105
|
+
- Use latest stable tool versions
|
|
106
|
+
- Maintain test coverage ≥85%
|
|
107
|
+
- Document all public APIs
|
|
108
|
+
|
|
109
|
+
❌ **DON'T**:
|
|
110
|
+
- Skip quality gates
|
|
111
|
+
- Use deprecated tools
|
|
112
|
+
- Ignore security warnings
|
|
113
|
+
- Mix testing frameworks
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# moai-alfred-ears-authoring - Working Examples
|
|
2
|
+
|
|
3
|
+
_Last updated: 2025-10-22_
|
|
4
|
+
|
|
5
|
+
## Example 1: Basic Setup
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Setup commands
|
|
9
|
+
# ...
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Example 2: TDD Workflow
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# RED: Write failing test
|
|
16
|
+
# GREEN: Implement feature
|
|
17
|
+
# REFACTOR: Improve code
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Example 3: Quality Gate
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Run quality checks
|
|
24
|
+
# Verify coverage ≥85%
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
_For more examples, see SKILL.md reference section_
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# moai-alfred-ears-authoring - CLI Reference
|
|
2
|
+
|
|
3
|
+
_Last updated: 2025-10-22_
|
|
4
|
+
|
|
5
|
+
## Quick Reference
|
|
6
|
+
|
|
7
|
+
### Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Installation commands
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### Common Commands
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Test
|
|
17
|
+
# Lint
|
|
18
|
+
# Format
|
|
19
|
+
# Build
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Tool Versions (2025-10-22)
|
|
23
|
+
|
|
24
|
+
_No specific tool versions (workflow/process Skill)_
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
_For detailed usage, see SKILL.md_
|