moai-adk 0.4.8__tar.gz → 0.4.10__tar.gz

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 (267) hide show
  1. {moai_adk-0.4.8 → moai_adk-0.4.10}/PKG-INFO +10 -9
  2. {moai_adk-0.4.8 → moai_adk-0.4.10}/README.md +9 -8
  3. {moai_adk-0.4.8 → moai_adk-0.4.10}/pyproject.toml +1 -1
  4. moai_adk-0.4.10/src/moai_adk/templates/.claude/hooks/alfred/HOOK_SCHEMA_VALIDATION.md +313 -0
  5. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/hooks/alfred/core/__init__.py +30 -28
  6. moai_adk-0.4.10/src/moai_adk/templates/.claude/hooks/alfred/test_hook_output.py +175 -0
  7. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/CLAUDE.md +30 -19
  8. {moai_adk-0.4.8 → moai_adk-0.4.10}/.gitignore +0 -0
  9. {moai_adk-0.4.8 → moai_adk-0.4.10}/LICENSE +0 -0
  10. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/__init__.py +0 -0
  11. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/__main__.py +0 -0
  12. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/cli/__init__.py +0 -0
  13. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/cli/commands/__init__.py +0 -0
  14. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/cli/commands/backup.py +0 -0
  15. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/cli/commands/doctor.py +0 -0
  16. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/cli/commands/init.py +0 -0
  17. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/cli/commands/status.py +0 -0
  18. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/cli/commands/update.py +0 -0
  19. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/cli/main.py +0 -0
  20. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/cli/prompts/__init__.py +0 -0
  21. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/cli/prompts/init_prompts.py +0 -0
  22. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/__init__.py +0 -0
  23. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/diagnostics/__init__.py +0 -0
  24. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/diagnostics/slash_commands.py +0 -0
  25. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/git/__init__.py +0 -0
  26. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/git/branch.py +0 -0
  27. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/git/branch_manager.py +0 -0
  28. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/git/checkpoint.py +0 -0
  29. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/git/commit.py +0 -0
  30. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/git/event_detector.py +0 -0
  31. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/git/manager.py +0 -0
  32. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/project/__init__.py +0 -0
  33. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/project/backup_utils.py +0 -0
  34. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/project/checker.py +0 -0
  35. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/project/detector.py +0 -0
  36. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/project/initializer.py +0 -0
  37. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/project/phase_executor.py +0 -0
  38. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/project/validator.py +0 -0
  39. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/quality/__init__.py +0 -0
  40. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/quality/trust_checker.py +0 -0
  41. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/quality/validators/__init__.py +0 -0
  42. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/quality/validators/base_validator.py +0 -0
  43. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/template/__init__.py +0 -0
  44. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/template/backup.py +0 -0
  45. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/template/config.py +0 -0
  46. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/template/languages.py +0 -0
  47. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/template/merger.py +0 -0
  48. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/core/template/processor.py +0 -0
  49. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -0
  50. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -0
  51. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -0
  52. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -0
  53. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -0
  54. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -0
  55. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -0
  56. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -0
  57. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -0
  58. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -0
  59. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -0
  60. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -0
  61. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/commands/alfred/0-project.md +0 -0
  62. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -0
  63. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/commands/alfred/2-run.md +0 -0
  64. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -0
  65. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/hooks/alfred/README.md +0 -0
  66. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -0
  67. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/hooks/alfred/core/checkpoint.py +0 -0
  68. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/hooks/alfred/core/context.py +0 -0
  69. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -0
  70. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -0
  71. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +0 -0
  72. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/hooks/alfred/handlers/session.py +0 -0
  73. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +0 -0
  74. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/hooks/alfred/handlers/user.py +0 -0
  75. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +0 -0
  76. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +0 -0
  77. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +0 -0
  78. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/settings.json +0 -0
  79. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -0
  80. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -0
  81. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -0
  82. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -0
  83. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -0
  84. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -0
  85. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -0
  86. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -0
  87. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -0
  88. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -0
  89. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -0
  90. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -0
  91. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -0
  92. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -0
  93. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -0
  94. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -0
  95. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -0
  96. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -0
  97. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -0
  98. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -0
  99. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -0
  100. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -0
  101. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -0
  102. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -0
  103. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -0
  104. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -0
  105. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -0
  106. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -0
  107. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -0
  108. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -0
  109. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -0
  110. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -0
  111. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -0
  112. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -0
  113. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -0
  114. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -0
  115. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -0
  116. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -0
  117. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -0
  118. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +0 -0
  119. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +0 -0
  120. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +0 -0
  121. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -0
  122. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -0
  123. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -0
  124. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -0
  125. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -0
  126. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -0
  127. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +0 -0
  128. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-database/examples.md +0 -0
  129. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-database/reference.md +0 -0
  130. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -0
  131. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -0
  132. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -0
  133. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +0 -0
  134. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +0 -0
  135. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +0 -0
  136. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -0
  137. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -0
  138. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -0
  139. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -0
  140. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -0
  141. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -0
  142. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -0
  143. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -0
  144. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -0
  145. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -0
  146. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -0
  147. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -0
  148. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -0
  149. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -0
  150. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -0
  151. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -0
  152. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -0
  153. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -0
  154. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -0
  155. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -0
  156. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -0
  157. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -0
  158. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -0
  159. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -0
  160. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -0
  161. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -0
  162. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -0
  163. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -0
  164. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -0
  165. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -0
  166. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -0
  167. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -0
  168. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -0
  169. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -0
  170. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -0
  171. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -0
  172. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -0
  173. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -0
  174. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -0
  175. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -0
  176. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  177. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -0
  178. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -0
  179. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -0
  180. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -0
  181. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +0 -0
  182. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -0
  183. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -0
  184. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +0 -0
  185. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -0
  186. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -0
  187. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -0
  188. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -0
  189. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -0
  190. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +0 -0
  191. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-go/examples.md +0 -0
  192. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-go/reference.md +0 -0
  193. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +0 -0
  194. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-java/examples.md +0 -0
  195. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-java/reference.md +0 -0
  196. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -0
  197. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -0
  198. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -0
  199. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +0 -0
  200. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +0 -0
  201. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +0 -0
  202. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +0 -0
  203. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -0
  204. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -0
  205. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +0 -0
  206. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-python/examples.md +0 -0
  207. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-python/reference.md +0 -0
  208. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +0 -0
  209. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -0
  210. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -0
  211. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +0 -0
  212. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -0
  213. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -0
  214. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +0 -0
  215. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +0 -0
  216. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +0 -0
  217. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +0 -0
  218. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +0 -0
  219. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +0 -0
  220. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -0
  221. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -0
  222. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -0
  223. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -0
  224. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -0
  225. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -0
  226. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +0 -0
  227. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +0 -0
  228. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +0 -0
  229. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +0 -0
  230. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +0 -0
  231. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +0 -0
  232. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +0 -0
  233. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +0 -0
  234. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +0 -0
  235. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +0 -0
  236. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -0
  237. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +0 -0
  238. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -0
  239. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -0
  240. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +0 -0
  241. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +0 -0
  242. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +0 -0
  243. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +0 -0
  244. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +0 -0
  245. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +0 -0
  246. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +0 -0
  247. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +0 -0
  248. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +0 -0
  249. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +0 -0
  250. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +0 -0
  251. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +0 -0
  252. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +0 -0
  253. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +0 -0
  254. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  255. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -0
  256. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.gitignore +0 -0
  257. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.moai/config.json +0 -0
  258. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.moai/memory/development-guide.md +0 -0
  259. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.moai/memory/gitflow-protection-policy.md +0 -0
  260. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.moai/memory/spec-metadata.md +0 -0
  261. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.moai/project/product.md +0 -0
  262. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.moai/project/structure.md +0 -0
  263. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/.moai/project/tech.md +0 -0
  264. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/templates/__init__.py +0 -0
  265. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/utils/__init__.py +0 -0
  266. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/utils/banner.py +0 -0
  267. {moai_adk-0.4.8 → moai_adk-0.4.10}/src/moai_adk/utils/logger.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: moai-adk
3
- Version: 0.4.8
3
+ Version: 0.4.10
4
4
  Summary: MoAI Agentic Development Kit - SPEC-First TDD with Alfred SuperAgent & Complete Skills v2.0
5
5
  Project-URL: Homepage, https://github.com/modu-ai/moai-adk
6
6
  Project-URL: Repository, https://github.com/modu-ai/moai-adk
@@ -190,7 +190,7 @@ uv tool install moai-adk
190
190
 
191
191
  # Verify installation
192
192
  moai-adk --version
193
- # Output: MoAI-ADK v0.4.6
193
+ # Output: MoAI-ADK v0.4.10
194
194
  ```
195
195
 
196
196
  Once installed, you can use the `moai-adk` command anywhere.
@@ -1223,14 +1223,14 @@ If you need to temporarily disable hooks, edit `.claude/settings.json`:
1223
1223
 
1224
1224
  | Version | Key Features | Date |
1225
1225
  | ---------- | ------------------------------------------------------------------------------------ | ---------- |
1226
+ | **v0.4.10** | 🔧 Hook robustness improvements + Bilingual documentation + Template language config | 2025-10-23 |
1227
+ | **v0.4.9** | 🎯 Hook JSON schema validation fixes + Comprehensive tests (468/468 passing) | 2025-10-23 |
1228
+ | **v0.4.8** | 🚀 Release automation + PyPI deployment + Skills refinement | 2025-10-23 |
1229
+ | **v0.4.7** | 📖 Korean language optimization + SPEC-First principle documentation | 2025-10-22 |
1226
1230
  | **v0.4.6** | 🎉 Complete Skills v2.0 (100% Production-Ready) + 85,000 lines official docs + 300+ TDD examples | 2025-10-22 |
1227
1231
  | **v0.4.5** | ✅ CI/CD fixes + Multi-language README + Deployment cleanup | 2025-10-22 |
1228
- | **v0.4.4** | Korean language support | 2025-10-21 |
1229
- | **v0.4.3** | Interactive question tool (TUI menu) | 2025-10-21 |
1230
- | **v0.4.1** | Skills localization | 2025-10-21 |
1231
- | **v0.4.0** | Claude Skills + AI team + 4-stage workflow | 2025-10-21 |
1232
1232
 
1233
- > 📦 **Install Now**: `pip install moai-adk==0.4.6` or `uv tool install moai-adk==0.4.6`
1233
+ > 📦 **Install Now**: `pip install moai-adk==0.4.10` or `uv tool install moai-adk==0.4.10`
1234
1234
 
1235
1235
  ---
1236
1236
 
@@ -1544,10 +1544,11 @@ Start a new experience of **trustworthy AI development** with Alfred! 🤖
1544
1544
 
1545
1545
  ---
1546
1546
 
1547
- **MoAI-ADK v0.4.6** — SPEC-First TDD with AI SuperAgent & Complete Skills v2.0
1547
+ **MoAI-ADK v0.4.10** — SPEC-First TDD with AI SuperAgent & Complete Skills v2.0
1548
1548
  - 📦 PyPI: https://pypi.org/project/moai-adk/
1549
1549
  - 🏠 GitHub: https://github.com/modu-ai/moai-adk
1550
1550
  - 📝 License: MIT
1551
- - ⭐ Skills: 56/56 Complete (100% Production-Ready)
1551
+ - ⭐ Skills: 55+ Production-Ready Guides
1552
+ - ✅ Tests: 468/468 Passing (86% coverage)
1552
1553
 
1553
1554
  ---
@@ -151,7 +151,7 @@ uv tool install moai-adk
151
151
 
152
152
  # Verify installation
153
153
  moai-adk --version
154
- # Output: MoAI-ADK v0.4.6
154
+ # Output: MoAI-ADK v0.4.10
155
155
  ```
156
156
 
157
157
  Once installed, you can use the `moai-adk` command anywhere.
@@ -1184,14 +1184,14 @@ If you need to temporarily disable hooks, edit `.claude/settings.json`:
1184
1184
 
1185
1185
  | Version | Key Features | Date |
1186
1186
  | ---------- | ------------------------------------------------------------------------------------ | ---------- |
1187
+ | **v0.4.10** | 🔧 Hook robustness improvements + Bilingual documentation + Template language config | 2025-10-23 |
1188
+ | **v0.4.9** | 🎯 Hook JSON schema validation fixes + Comprehensive tests (468/468 passing) | 2025-10-23 |
1189
+ | **v0.4.8** | 🚀 Release automation + PyPI deployment + Skills refinement | 2025-10-23 |
1190
+ | **v0.4.7** | 📖 Korean language optimization + SPEC-First principle documentation | 2025-10-22 |
1187
1191
  | **v0.4.6** | 🎉 Complete Skills v2.0 (100% Production-Ready) + 85,000 lines official docs + 300+ TDD examples | 2025-10-22 |
1188
1192
  | **v0.4.5** | ✅ CI/CD fixes + Multi-language README + Deployment cleanup | 2025-10-22 |
1189
- | **v0.4.4** | Korean language support | 2025-10-21 |
1190
- | **v0.4.3** | Interactive question tool (TUI menu) | 2025-10-21 |
1191
- | **v0.4.1** | Skills localization | 2025-10-21 |
1192
- | **v0.4.0** | Claude Skills + AI team + 4-stage workflow | 2025-10-21 |
1193
1193
 
1194
- > 📦 **Install Now**: `pip install moai-adk==0.4.6` or `uv tool install moai-adk==0.4.6`
1194
+ > 📦 **Install Now**: `pip install moai-adk==0.4.10` or `uv tool install moai-adk==0.4.10`
1195
1195
 
1196
1196
  ---
1197
1197
 
@@ -1505,10 +1505,11 @@ Start a new experience of **trustworthy AI development** with Alfred! 🤖
1505
1505
 
1506
1506
  ---
1507
1507
 
1508
- **MoAI-ADK v0.4.6** — SPEC-First TDD with AI SuperAgent & Complete Skills v2.0
1508
+ **MoAI-ADK v0.4.10** — SPEC-First TDD with AI SuperAgent & Complete Skills v2.0
1509
1509
  - 📦 PyPI: https://pypi.org/project/moai-adk/
1510
1510
  - 🏠 GitHub: https://github.com/modu-ai/moai-adk
1511
1511
  - 📝 License: MIT
1512
- - ⭐ Skills: 56/56 Complete (100% Production-Ready)
1512
+ - ⭐ Skills: 55+ Production-Ready Guides
1513
+ - ✅ Tests: 468/468 Passing (86% coverage)
1513
1514
 
1514
1515
  ---
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "moai-adk"
3
- version = "0.4.8"
3
+ version = "0.4.10"
4
4
  description = "MoAI Agentic Development Kit - SPEC-First TDD with Alfred SuperAgent & Complete Skills v2.0"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -0,0 +1,313 @@
1
+ # Hook JSON 스키마 검증 및 해결 보고서
2
+
3
+ **작성일**: 2025-10-23
4
+ **태그**: @CODE:HOOKS-REFACTOR-001
5
+ **상태**: ✅ 해결 완료
6
+
7
+ ---
8
+
9
+ ## 📋 문제 요약
10
+
11
+ ### 초기 오류
12
+ ```
13
+ SessionStart:startup hook error: JSON validation failed: Hook JSON output validation failed
14
+ Expected schema: { ... "systemMessage": ... }
15
+ ```
16
+
17
+ ### 근본 원인
18
+ Claude Code Hook 스키마에서 `systemMessage`가 **최상위 필드**여야 하지만, 일부 구현에서는 이를 `hookSpecificOutput` 내부에 중첩시키고 있었습니다.
19
+
20
+ ---
21
+
22
+ ## 🔍 분석 결과
23
+
24
+ ### Claude Code 공식 Hook 스키마
25
+
26
+ #### 1. 일반 Hook 이벤트 (SessionStart, PreToolUse, PostToolUse, SessionEnd 등)
27
+
28
+ ```json
29
+ {
30
+ "continue": true|false, // ✅ 기본 필드
31
+ "systemMessage": "string", // ✅ 최상위 필드 (NOT in hookSpecificOutput)
32
+ "decision": "approve"|"block"|undefined, // ✅ 선택적
33
+ "reason": "string", // ✅ 선택적
34
+ "permissionDecision": "allow"|"deny"|"ask"|undefined, // ✅ 선택적
35
+ "suppressOutput": true|false // ✅ 선택적
36
+ }
37
+ ```
38
+
39
+ #### 2. UserPromptSubmit 전용 스키마
40
+
41
+ ```json
42
+ {
43
+ "continue": true,
44
+ "hookSpecificOutput": { // ✅ UserPromptSubmit에만 사용
45
+ "hookEventName": "UserPromptSubmit",
46
+ "additionalContext": "string"
47
+ }
48
+ }
49
+ ```
50
+
51
+ ### 핵심 규칙
52
+
53
+ | 규칙 | 설명 |
54
+ |------|------|
55
+ | **systemMessage 위치** | 최상위 필드 (`output["systemMessage"]`) |
56
+ | **hookSpecificOutput** | UserPromptSubmit 전용 |
57
+ | **내부 필드** | `context_files`, `suggestions`, `exit_code`는 Python 로직용 (JSON 출력 제외) |
58
+ | **JSON 직렬화** | 모든 필드는 JSON 직렬화 가능해야 함 |
59
+
60
+ ---
61
+
62
+ ## ✅ 해결 방안
63
+
64
+ ### 1. 코드 수정
65
+
66
+ **파일**: `.claude/hooks/alfred/core/__init__.py`
67
+
68
+ #### `to_dict()` 메서드 (라인 63-118)
69
+ ```python
70
+ def to_dict(self) -> dict[str, Any]:
71
+ """Claude Code 표준 Hook 출력 스키마로 변환"""
72
+ output: dict[str, Any] = {}
73
+
74
+ # 1. decision 또는 continue 추가
75
+ if self.decision:
76
+ output["decision"] = self.decision
77
+ else:
78
+ output["continue"] = self.continue_execution
79
+
80
+ # 2. reason 추가 (decision 또는 permissionDecision과 함께)
81
+ if self.reason:
82
+ output["reason"] = self.reason
83
+
84
+ # 3. suppressOutput 추가 (True인 경우만)
85
+ if self.suppress_output:
86
+ output["suppressOutput"] = True
87
+
88
+ # 4. permissionDecision 추가
89
+ if self.permission_decision:
90
+ output["permissionDecision"] = self.permission_decision
91
+
92
+ # 5. ⭐ systemMessage를 최상위 필드로 추가 (NOT in hookSpecificOutput)
93
+ if self.system_message:
94
+ output["systemMessage"] = self.system_message
95
+
96
+ # 🚫 내부 필드는 JSON 출력에서 제외
97
+ # - context_files: JIT 문맥 로드 (내부용)
98
+ # - suggestions: 제안 (내부용)
99
+ # - exit_code: 진단 (내부용)
100
+
101
+ return output
102
+ ```
103
+
104
+ #### `to_user_prompt_submit_dict()` 메서드 (라인 120-160)
105
+ ```python
106
+ def to_user_prompt_submit_dict(self) -> dict[str, Any]:
107
+ """UserPromptSubmit Hook 전용 스키마"""
108
+ if self.context_files:
109
+ context_str = "\n".join([f"📎 Context: {f}" for f in self.context_files])
110
+ else:
111
+ context_str = ""
112
+
113
+ if self.system_message:
114
+ if context_str:
115
+ context_str = f"{self.system_message}\n\n{context_str}"
116
+ else:
117
+ context_str = self.system_message
118
+
119
+ return {
120
+ "continue": self.continue_execution,
121
+ "hookSpecificOutput": {
122
+ "hookEventName": "UserPromptSubmit",
123
+ "additionalContext": context_str
124
+ }
125
+ }
126
+ ```
127
+
128
+ ### 2. 설정 검증
129
+
130
+ **파일**: `.claude/settings.json` (라인 8-60)
131
+
132
+ ```json
133
+ {
134
+ "hooks": {
135
+ "SessionStart": [
136
+ {
137
+ "hooks": [
138
+ {
139
+ "command": "uv run \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/alfred/alfred_hooks.py SessionStart",
140
+ "type": "command"
141
+ }
142
+ ]
143
+ }
144
+ ],
145
+ "UserPromptSubmit": [
146
+ {
147
+ "hooks": [
148
+ {
149
+ "command": "uv run \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/alfred/alfred_hooks.py UserPromptSubmit",
150
+ "type": "command"
151
+ }
152
+ ]
153
+ }
154
+ ]
155
+ }
156
+ }
157
+ ```
158
+
159
+ ---
160
+
161
+ ## 🧪 검증 결과
162
+
163
+ ### 1. 자동 테스트 (8/8 통과)
164
+
165
+ **파일**: `.claude/hooks/alfred/test_hook_output.py`
166
+
167
+ ```bash
168
+ $ cd .claude/hooks/alfred && python test_hook_output.py
169
+
170
+ ✅ Test 1: Basic output - PASSED
171
+ ✅ Test 2: systemMessage (top-level) - PASSED
172
+ ✅ Test 3: decision + reason - PASSED
173
+ ✅ Test 4: UserPromptSubmit schema - PASSED
174
+ ✅ Test 5: permissionDecision - PASSED
175
+ ✅ Test 6: SessionStart typical output - PASSED
176
+ ✅ Test 7: JSON serializable - PASSED
177
+ ✅ Test 8: UserPromptSubmit with system_message - PASSED
178
+
179
+ ✅ ALL 8 TESTS PASSED
180
+ ```
181
+
182
+ ### 2. 실제 Hook 실행 검증
183
+
184
+ #### SessionStart (compact phase)
185
+ ```bash
186
+ $ echo '{"cwd": ".", "phase": "compact"}' | uv run .claude/hooks/alfred/alfred_hooks.py SessionStart
187
+
188
+ {
189
+ "continue": true,
190
+ "systemMessage": "🚀 MoAI-ADK Session Started\n Language: python\n Branch: develop (d905363)\n Changes: 215\n SPEC Progress: 30/31 (96%)\n Checkpoints: 2 available\n - delete-20251022-134841\n - critical-file-20251019-230247\n Restore: /alfred:0-project restore"
191
+ }
192
+ ```
193
+
194
+ ✅ **검증**:
195
+ - `systemMessage`가 최상위 필드
196
+ - JSON 유효성 확인
197
+ - `hookSpecificOutput` 없음 (올바름)
198
+
199
+ #### SessionStart (clear phase)
200
+ ```bash
201
+ $ echo '{"cwd": ".", "phase": "clear"}' | uv run .claude/hooks/alfred/alfred_hooks.py SessionStart
202
+
203
+ {"continue": true}
204
+ ```
205
+
206
+ ✅ **검증**:
207
+ - 최소 스키마 (continue만)
208
+ - clear 단계에서 중복 출력 방지
209
+
210
+ #### UserPromptSubmit
211
+ ```bash
212
+ $ echo '{"cwd": ".", "userPrompt": "test"}' | uv run .claude/hooks/alfred/alfred_hooks.py UserPromptSubmit
213
+
214
+ {
215
+ "continue": true,
216
+ "hookSpecificOutput": {
217
+ "hookEventName": "UserPromptSubmit",
218
+ "additionalContext": "📎 Loaded 1 context file(s)\n\n📎 Context: tests/"
219
+ }
220
+ }
221
+ ```
222
+
223
+ ✅ **검증**:
224
+ - UserPromptSubmit 특수 스키마
225
+ - `hookSpecificOutput` 사용 (올바름)
226
+
227
+ ---
228
+
229
+ ## 📚 각 Hook 이벤트별 스키마 가이드
230
+
231
+ | 이벤트 | 최소 JSON | 예시 | 차단 가능 |
232
+ |--------|-----------|------|----------|
233
+ | **SessionStart** | `{"continue": true}` | 프로젝트 상태 표시 | ❌ No |
234
+ | **SessionEnd** | `{"continue": true}` | 정리 작업 | ❌ No |
235
+ | **PreToolUse** | `{"continue": true}` | 도구 실행 승인/차단 | ✅ Yes |
236
+ | **PostToolUse** | `{"continue": true}` | 도구 실행 후 피드백 | ❌ No* |
237
+ | **UserPromptSubmit** | 특수 스키마 | 프롬프트 문맥 추가 | ✅ Yes |
238
+ | **Notification** | `{"continue": true}` | 알림 처리 | ❌ No |
239
+ | **Stop** | `{"continue": true}` | 종료 차단 | ✅ Yes |
240
+ | **SubagentStop** | `{"continue": true}` | 서브에이전트 종료 차단 | ✅ Yes |
241
+
242
+ *: PostToolUse는 도구가 이미 실행되었으므로 차단 불가능하지만, 피드백 제공 가능
243
+
244
+ ---
245
+
246
+ ## 🔧 구현 세부사항
247
+
248
+ ### HookResult 클래스 필드
249
+
250
+ ```python
251
+ @dataclass
252
+ class HookResult:
253
+ # ✅ Claude Code 표준 필드 (JSON에 포함)
254
+ continue_execution: bool = True
255
+ suppress_output: bool = False
256
+ decision: Literal["approve", "block"] | None = None
257
+ reason: str | None = None
258
+ permission_decision: Literal["allow", "deny", "ask"] | None = None
259
+ system_message: str | None = None # ⭐ TOP-LEVEL in JSON
260
+
261
+ # 🚫 내부 필드 (JSON 출력 제외)
262
+ context_files: list[str] = field(default_factory=list)
263
+ suggestions: list[str] = field(default_factory=list)
264
+ exit_code: int = 0
265
+ ```
266
+
267
+ ### 메서드별 역할
268
+
269
+ | 메서드 | 사용 사건 | 반환 스키마 |
270
+ |--------|---------|----------|
271
+ | `to_dict()` | 일반 Hook 이벤트 | 표준 Claude Code 스키마 |
272
+ | `to_user_prompt_submit_dict()` | UserPromptSubmit 이벤트 | 특수 스키마 + hookSpecificOutput |
273
+
274
+ ---
275
+
276
+ ## 📖 참고 문서
277
+
278
+ ### 공식 Claude Code 문서
279
+ - **Claude Code Hooks**: https://docs.claude.com/en/docs/claude-code/hooks
280
+ - **Hook Output Schema**: https://docs.claude.com/en/docs/claude-code/hooks#output-schema
281
+
282
+ ### Context7 참고 자료
283
+ - **Claude Code Hooks Mastery** (Trust Score: 8.3, 100+ 코드 스니펫)
284
+ - **Claude Code Templates** (Trust Score: 10)
285
+
286
+ ### 프로젝트 문서
287
+ - **CLAUDE.md**: `Error Message Standard (Shared)` 섹션
288
+ - **Hook 구현**: `.claude/hooks/alfred/handlers/` 디렉토리
289
+
290
+ ---
291
+
292
+ ## 🎯 결론
293
+
294
+ ✅ **상태**: 해결 완료
295
+ ✅ **검증**: 8/8 자동 테스트 통과
296
+ ✅ **실제 실행**: 모든 Hook 이벤트 정상 작동
297
+
298
+ ### 핵심 수정사항
299
+ 1. `systemMessage`를 최상위 필드로 이동 (NOT in hookSpecificOutput)
300
+ 2. UserPromptSubmit 특수 스키마 분리
301
+ 3. 내부 필드 JSON 출력 제외
302
+ 4. 모든 Hook 이벤트 스키마 정규화
303
+
304
+ ### 다음 단계
305
+ - ✅ Hook 스키마 검증 자동화
306
+ - ✅ 테스트 스크립트 작성
307
+ - ⏭️ 현재 상태 유지 및 모니터링
308
+
309
+ ---
310
+
311
+ **검증 완료**: 2025-10-23
312
+ **담당자**: @agent-cc-manager
313
+ **참고**: @CODE:HOOKS-REFACTOR-001
@@ -28,18 +28,23 @@ class HookResult:
28
28
  Attributes conform to Claude Code Hook output specification:
29
29
  https://docs.claude.com/en/docs/claude-code/hooks
30
30
 
31
- Standard Fields (Claude Code schema):
31
+ Standard Fields (Claude Code schema - included in JSON output):
32
32
  continue_execution: Allow execution to continue (default True)
33
33
  suppress_output: Suppress hook output display (default False)
34
34
  decision: "approve" or "block" operation (optional)
35
35
  reason: Explanation for decision (optional)
36
36
  permission_decision: "allow", "deny", or "ask" (optional)
37
+ system_message: Message displayed to user (top-level field)
37
38
 
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)
39
+ Internal Fields (MoAI-ADK only - NOT in JSON output):
40
+ context_files: List of context files to load (internal use only)
41
+ suggestions: Suggestions for user (internal use only)
42
+ exit_code: Exit code for diagnostics (internal use only)
43
+
44
+ Note:
45
+ - systemMessage appears at TOP LEVEL in JSON output
46
+ - hookSpecificOutput is ONLY used for UserPromptSubmit events
47
+ - Internal fields are used for Python logic but not serialized to JSON
43
48
  """
44
49
 
45
50
  # Claude Code standard fields
@@ -60,8 +65,10 @@ class HookResult:
60
65
 
61
66
  Returns:
62
67
  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
68
+ - Top-level fields: continue, suppressOutput, decision, reason,
69
+ permissionDecision, systemMessage
70
+ - MoAI-ADK internal fields (context_files, suggestions, exit_code)
71
+ are NOT included in JSON output (used for internal logic only)
65
72
 
66
73
  Examples:
67
74
  >>> result = HookResult(continue_execution=True)
@@ -72,20 +79,27 @@ class HookResult:
72
79
  >>> result.to_dict()
73
80
  {'decision': 'block', 'reason': 'Dangerous'}
74
81
 
75
- >>> result = HookResult(system_message="Test", context_files=["a.txt"])
82
+ >>> result = HookResult(system_message="Test")
76
83
  >>> result.to_dict()
77
- {'continue': True, 'hookSpecificOutput': {'systemMessage': 'Test', 'contextFiles': ['a.txt']}}
84
+ {'continue': True, 'systemMessage': 'Test'}
85
+
86
+ Note:
87
+ - systemMessage is a TOP-LEVEL field (not nested in hookSpecificOutput)
88
+ - hookSpecificOutput is ONLY used for UserPromptSubmit events
89
+ - context_files, suggestions, exit_code are internal-only fields
78
90
  """
79
91
  output: dict[str, Any] = {}
80
92
 
81
93
  # Add decision or continue flag
82
94
  if self.decision:
83
95
  output["decision"] = self.decision
84
- if self.reason:
85
- output["reason"] = self.reason
86
96
  else:
87
97
  output["continue"] = self.continue_execution
88
98
 
99
+ # Add reason if provided (works with both decision and permissionDecision)
100
+ if self.reason:
101
+ output["reason"] = self.reason
102
+
89
103
  # Add suppressOutput if True
90
104
  if self.suppress_output:
91
105
  output["suppressOutput"] = True
@@ -94,24 +108,12 @@ class HookResult:
94
108
  if self.permission_decision:
95
109
  output["permissionDecision"] = self.permission_decision
96
110
 
97
- # Wrap MoAI-ADK custom fields in hookSpecificOutput
98
- hook_output: dict[str, Any] = {}
99
-
111
+ # Add systemMessage at TOP LEVEL (required by Claude Code schema)
100
112
  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
113
+ output["systemMessage"] = self.system_message
111
114
 
112
- # Only add hookSpecificOutput if there's custom data
113
- if hook_output:
114
- output["hookSpecificOutput"] = hook_output
115
+ # Note: context_files, suggestions, exit_code are internal-only fields
116
+ # and are NOT included in the JSON output per Claude Code schema
115
117
 
116
118
  return output
117
119