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.

Files changed (229) hide show
  1. moai_adk/__init__.py +1 -1
  2. moai_adk/core/project/initializer.py +12 -5
  3. moai_adk/templates/.claude/agents/alfred/cc-manager.md +188 -954
  4. moai_adk/templates/.claude/agents/alfred/debug-helper.md +4 -5
  5. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +2 -2
  6. moai_adk/templates/.claude/agents/alfred/git-manager.md +2 -2
  7. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +3 -3
  8. moai_adk/templates/.claude/agents/alfred/project-manager.md +6 -6
  9. moai_adk/templates/.claude/agents/alfred/quality-gate.md +4 -6
  10. moai_adk/templates/.claude/agents/alfred/skill-factory.md +829 -0
  11. moai_adk/templates/.claude/agents/alfred/spec-builder.md +2 -2
  12. moai_adk/templates/.claude/agents/alfred/tag-agent.md +2 -2
  13. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +3 -3
  14. moai_adk/templates/.claude/agents/alfred/trust-checker.md +5 -5
  15. moai_adk/templates/.claude/commands/alfred/0-project.md +98 -42
  16. moai_adk/templates/.claude/commands/alfred/1-plan.md +7 -7
  17. moai_adk/templates/.claude/commands/alfred/2-run.md +36 -36
  18. moai_adk/templates/.claude/commands/alfred/3-sync.md +10 -10
  19. moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +14 -1
  20. moai_adk/templates/.claude/hooks/alfred/core/__init__.py +115 -33
  21. moai_adk/templates/.claude/hooks/alfred/handlers/session.py +8 -9
  22. moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +6 -6
  23. moai_adk/templates/.claude/hooks/alfred/handlers/user.py +5 -4
  24. moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +1 -1
  25. moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +1 -1
  26. moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +1 -1
  27. moai_adk/templates/.claude/settings.json +42 -2
  28. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +76 -66
  29. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +29 -0
  30. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +28 -0
  31. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +86 -59
  32. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +29 -0
  33. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +29 -0
  34. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +480 -0
  35. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +257 -0
  36. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +120 -0
  37. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +87 -73
  38. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
  39. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
  40. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +78 -62
  41. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +29 -0
  42. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +28 -0
  43. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +78 -55
  44. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +29 -0
  45. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +28 -0
  46. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +78 -64
  47. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +29 -0
  48. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +28 -0
  49. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +249 -0
  50. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
  51. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +278 -0
  52. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
  53. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +287 -0
  54. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
  55. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +232 -0
  56. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
  57. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
  58. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
  59. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +179 -0
  60. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
  61. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +296 -0
  62. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
  63. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +243 -0
  64. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
  65. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +271 -0
  66. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
  67. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +234 -43
  68. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
  69. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
  70. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +97 -69
  71. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
  72. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
  73. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +97 -72
  74. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
  75. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
  76. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +97 -74
  77. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
  78. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
  79. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +98 -74
  80. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
  81. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
  82. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +98 -73
  83. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
  84. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
  85. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +97 -73
  86. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
  87. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
  88. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +97 -67
  89. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
  90. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
  91. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +97 -79
  92. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
  93. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
  94. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +97 -71
  95. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
  96. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
  97. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +656 -60
  98. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1107 -0
  99. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1533 -0
  100. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +87 -78
  101. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
  102. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
  103. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +87 -70
  104. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
  105. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
  106. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +87 -86
  107. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
  108. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
  109. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +77 -62
  110. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
  111. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
  112. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +88 -56
  113. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
  114. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
  115. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +90 -71
  116. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
  117. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
  118. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +78 -58
  119. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
  120. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
  121. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +78 -51
  122. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
  123. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
  124. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +253 -32
  125. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  126. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
  127. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +98 -74
  128. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
  129. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
  130. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +98 -76
  131. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
  132. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
  133. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +97 -74
  134. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
  135. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
  136. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +86 -61
  137. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
  138. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
  139. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +98 -74
  140. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
  141. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
  142. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +87 -61
  143. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
  144. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
  145. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +88 -59
  146. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
  147. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
  148. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +98 -73
  149. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
  150. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
  151. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +86 -61
  152. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
  153. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
  154. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +388 -53
  155. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
  156. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
  157. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +97 -73
  158. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
  159. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
  160. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +98 -73
  161. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
  162. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
  163. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +98 -74
  164. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
  165. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
  166. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +97 -74
  167. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
  168. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
  169. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +97 -74
  170. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
  171. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
  172. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +98 -74
  173. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
  174. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
  175. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +97 -73
  176. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
  177. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
  178. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +90 -59
  179. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
  180. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
  181. moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +482 -0
  182. moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +278 -0
  183. moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
  184. moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +477 -0
  185. moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
  186. moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
  187. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
  188. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
  189. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +560 -0
  190. moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
  191. moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +583 -0
  192. moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +526 -0
  193. moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +465 -0
  194. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +328 -0
  195. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +312 -0
  196. moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
  197. moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +285 -0
  198. moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +278 -0
  199. moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +303 -0
  200. moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +129 -0
  201. moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +1300 -0
  202. moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +161 -0
  203. moai_adk/templates/CLAUDE.md +121 -81
  204. moai_adk-0.4.8.dist-info/METADATA +1553 -0
  205. moai_adk-0.4.8.dist-info/RECORD +265 -0
  206. moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/SKILL.md +0 -112
  207. moai_adk/templates/.claude/skills/moai-alfred-debugger-pro/SKILL.md +0 -103
  208. moai_adk/templates/.claude/skills/moai-alfred-performance-optimizer/SKILL.md +0 -105
  209. moai_adk/templates/.claude/skills/moai-alfred-refactoring-coach/SKILL.md +0 -97
  210. moai_adk/templates/.claude/skills/moai-alfred-tui-survey/SKILL.md +0 -87
  211. moai_adk/templates/.claude/skills/moai-alfred-tui-survey/examples.md +0 -62
  212. moai_adk/templates/.claude/skills/moai-claude-code/SKILL.md +0 -94
  213. moai_adk/templates/.claude/skills/moai-claude-code/examples.md +0 -513
  214. moai_adk/templates/.claude/skills/moai-claude-code/reference.md +0 -433
  215. moai_adk/templates/.claude/skills/moai-claude-code/templates/agent-full.md +0 -332
  216. moai_adk/templates/.claude/skills/moai-claude-code/templates/command-full.md +0 -384
  217. moai_adk/templates/.claude/skills/moai-claude-code/templates/plugin-full.json +0 -363
  218. moai_adk/templates/.claude/skills/moai-claude-code/templates/settings-full.json +0 -595
  219. moai_adk/templates/.claude/skills/moai-claude-code/templates/skill-full.md +0 -496
  220. moai_adk/templates/.claude/skills/moai-lang-clojure/SKILL.md +0 -100
  221. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +0 -99
  222. moai_adk/templates/.claude/skills/moai-lang-haskell/SKILL.md +0 -100
  223. moai_adk/templates/.claude/skills/moai-lang-julia/SKILL.md +0 -98
  224. moai_adk/templates/.claude/skills/moai-lang-lua/SKILL.md +0 -98
  225. moai_adk-0.4.5.dist-info/METADATA +0 -369
  226. moai_adk-0.4.5.dist-info/RECORD +0 -152
  227. {moai_adk-0.4.5.dist-info → moai_adk-0.4.8.dist-info}/WHEEL +0 -0
  228. {moai_adk-0.4.5.dist-info → moai_adk-0.4.8.dist-info}/entry_points.txt +0 -0
  229. {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 asdict, dataclass, field
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] # Includes only UserPromptSubmit events
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
- message: str | None = None
29
- systemMessage: str | None = None # Message displayed directly to the user # noqa: N815
30
- blocked: bool = False
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
- exitCode: int = 0 # noqa: N815
56
+ exit_code: int = 0
34
57
 
35
58
  def to_dict(self) -> dict[str, Any]:
36
- """Dictionary conversion for general Hook"""
37
- return asdict(self)
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(contextFiles=["tests/"])
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 contextFiles to additionalContext string
57
- if self.contextFiles:
58
- context_str = "\n".join([f"📎 Context: {f}" for f in self.contextFiles])
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 message if there is one
63
- if self.message:
145
+ # Add system_message if there is one
146
+ if self.system_message:
64
147
  if context_str:
65
- context_str = f"{self.message}\n\n{context_str}"
148
+ context_str = f"{self.system_message}\n\n{context_str}"
66
149
  else:
67
- context_str = self.message
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
- "hookEventName": "UserPromptSubmit",
75
- "additionalContext": context_str
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(message=project status summary message, systemMessage=for user display)
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 compact stage to prevent duplicate output
35
- - "clear" step returns empty result (invisible to user)
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
- return HookResult() # returns an empty result (prevents duplicate output)
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
- # systemMessage: displayed directly to the user
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
- message=checkpoint creation notification (when danger is detected);
24
- blocked=False (always continue operation)
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 blocked=False even after detection of danger (continue operation)
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
- message = (
55
+ system_message = (
56
56
  f"🛡️ Checkpoint created: {checkpoint_branch}\n"
57
57
  f" Operation: {operation_type}"
58
58
  )
59
59
 
60
- return HookResult(message=message, blocked=False)
60
+ return HookResult(system_message=system_message, continue_execution=True)
61
61
 
62
- return HookResult(blocked=False)
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
- message=Number of Files loaded (or None),
24
- contextFiles=Recommended document path list
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
- message = f"📎 Loaded {len(context_files)} context file(s)" if context_files else None
37
+ system_message = f"📎 Loaded {len(context_files)} context file(s)" if context_files else None
37
38
 
38
- return HookResult(message=message, contextFiles=context_files)
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-tui-survey")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
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-tui-survey")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
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-tui-survey")` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
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 .claude/hooks/alfred/alfred_hooks.py PreToolUse",
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
- "PostToolUse": []
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
- description: EARS (Easy Approach to Requirements Syntax) authoring guide with 5 statement patterns for clear, testable requirements. Use when generating EARS-style requirement sentences.
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 EARS Authoring Guide
14
+ # Alfred Ears Authoring Skill
14
15
 
15
16
  ## Skill Metadata
17
+
16
18
  | Field | Value |
17
19
  | ----- | ----- |
18
- | Allowed tools | Read (read_file), Write (write_file), Edit (edit_file), Bash (terminal), TodoWrite (todo_write) |
19
- | Auto-load | /alfred:1-plan requirements phase |
20
- | Trigger cues | Plan board EARS drafting, requirement interviews, structured SPEC authoring. |
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
- ## What it does
26
+ ---
23
27
 
24
- EARS (Easy Approach to Requirements Syntax) authoring guide for writing clear, testable requirements using 5 statement patterns.
28
+ ## What It Does
25
29
 
26
- ## When to use
30
+ EARS (Easy Approach to Requirements Syntax) authoring with 5 statement patterns for clear requirements.
27
31
 
28
- - Activates when Alfred is asked to capture requirements using the EARS patterns.
29
- - “Writing SPEC”, “Requirements summary”, “EARS syntax”
30
- - Automatically invoked by `/alfred:1-plan`
31
- - When writing or refining SPEC documents
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
- ## How it works
38
+ ---
34
39
 
35
- EARS provides 5 statement patterns for structured requirements:
40
+ ## When to Use
36
41
 
37
- ### 1. Ubiquitous (Basic Requirements)
38
- **Format**: The system must provide [function]
39
- **Example**: The system must provide user authentication function
42
+ **Automatic triggers**:
43
+ - Related code discussions and file patterns
44
+ - SPEC implementation (`/alfred:2-run`)
45
+ - Code review requests
40
46
 
41
- ### 2. Event-driven (event-based)
42
- **Format**: WHEN If [condition], the system must [operate]
43
- **Example**: WHEN When the user logs in, the system must issue a JWT token
47
+ **Manual invocation**:
48
+ - Review code for TRUST 5 compliance
49
+ - Design new features
50
+ - Troubleshoot issues
44
51
 
45
- ### 3. State-driven
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
- ### 4. Optional (Optional function)
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
- ### 5. Constraints
54
- **Format**: IF [condition], the system SHOULD [constrain]
55
- **Example**: IF an invalid token is provided, the system SHOULD deny access
56
+ - Language-specific source directories
57
+ - Configuration files
58
+ - Test suites and sample data
56
59
 
57
- ## Writing Tips
60
+ ## Outputs
58
61
 
59
- Be specific and measurable
60
- Avoid vague terms (“adequate”, “sufficient”, “fast”)
61
- One requirement per statement
62
- ✅ Make it testable
62
+ - Test/lint execution plan
63
+ - TRUST 5 review checkpoints
64
+ - Migration guidance
63
65
 
64
- ## Best Practices
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
- ## Examples
69
- ```markdown
70
- - Call this skill inside the /alfred command to generate a report.
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
- ## Inputs
75
- - MoAI-ADK project context (`.moai/project/`, `.claude/` templates, etc.).
76
- - Parameters passed from user commands or higher commands.
72
+ ## Dependencies
77
73
 
78
- ## Outputs
79
- - Reports, checklists or recommendations for your Alfred workflow.
80
- - Structured data for subsequent subagent calls.
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
- ## Failure Modes
83
- - When required input documents are missing or permissions are limited.
84
- - When disruptive changes are required without user approval.
78
+ ---
85
79
 
86
- ## Dependencies
87
- - Cooperation with higher-level agents such as cc-manager and project-manager is required.
80
+ ## References (Latest Documentation)
88
81
 
89
- ## References
90
- - Mavin, A., et al. "Easy Approach to Requirements Syntax (EARS)." IEEE RE, 2009.
91
- - INCOSE. "Guide for Writing Requirements." INCOSE-TP-2010-006-02 (accessed 2025-03-29).
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
- ## Works well with
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
- - alfred-spec-metadata-validation
99
- - alfred-trust-validation
91
+ ---
100
92
 
101
- ## Reference
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
- `.moai/memory/development-guide.md#ears-requirements-how-to`
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_