moai-adk 0.8.0__py3-none-any.whl → 0.15.0__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 (207) hide show
  1. moai_adk/cli/commands/init.py +14 -2
  2. moai_adk/cli/commands/update.py +229 -60
  3. moai_adk/core/config/migration.py +1 -1
  4. moai_adk/core/issue_creator.py +313 -0
  5. moai_adk/core/project/detector.py +201 -12
  6. moai_adk/core/project/initializer.py +62 -1
  7. moai_adk/core/project/phase_executor.py +48 -6
  8. moai_adk/core/tags/__init__.py +86 -0
  9. moai_adk/core/tags/ci_validator.py +463 -0
  10. moai_adk/core/tags/cli.py +283 -0
  11. moai_adk/core/tags/generator.py +109 -0
  12. moai_adk/core/tags/inserter.py +99 -0
  13. moai_adk/core/tags/mapper.py +126 -0
  14. moai_adk/core/tags/parser.py +76 -0
  15. moai_adk/core/tags/pre_commit_validator.py +393 -0
  16. moai_adk/core/tags/reporter.py +956 -0
  17. moai_adk/core/tags/tags.py +149 -0
  18. moai_adk/core/tags/validator.py +897 -0
  19. moai_adk/core/template_engine.py +268 -0
  20. moai_adk/templates/.claude/agents/alfred/backend-expert.md +319 -0
  21. moai_adk/templates/.claude/agents/alfred/cc-manager.md +25 -2
  22. moai_adk/templates/.claude/agents/alfred/debug-helper.md +24 -12
  23. moai_adk/templates/.claude/agents/alfred/devops-expert.md +464 -0
  24. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +20 -13
  25. moai_adk/templates/.claude/agents/alfred/frontend-expert.md +357 -0
  26. moai_adk/templates/.claude/agents/alfred/git-manager.md +47 -16
  27. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +95 -15
  28. moai_adk/templates/.claude/agents/alfred/project-manager.md +78 -12
  29. moai_adk/templates/.claude/agents/alfred/quality-gate.md +28 -5
  30. moai_adk/templates/.claude/agents/alfred/skill-factory.md +30 -2
  31. moai_adk/templates/.claude/agents/alfred/spec-builder.md +133 -13
  32. moai_adk/templates/.claude/agents/alfred/tag-agent.md +104 -8
  33. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +133 -16
  34. moai_adk/templates/.claude/agents/alfred/trust-checker.md +27 -4
  35. moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +571 -0
  36. moai_adk/templates/.claude/commands/alfred/0-project.md +466 -125
  37. moai_adk/templates/.claude/commands/alfred/1-plan.md +208 -71
  38. moai_adk/templates/.claude/commands/alfred/2-run.md +276 -55
  39. moai_adk/templates/.claude/commands/alfred/3-sync.md +439 -53
  40. moai_adk/templates/.claude/commands/alfred/9-feedback.md +149 -0
  41. moai_adk/templates/.claude/hooks/alfred/core/project.py +361 -29
  42. moai_adk/templates/.claude/hooks/alfred/core/timeout.py +136 -0
  43. moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +108 -0
  44. moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +198 -0
  45. moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +14 -6
  46. moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +94 -0
  47. moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +100 -0
  48. moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +94 -0
  49. moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +94 -0
  50. moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/__init__.py +2 -2
  51. moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/checkpoint.py +3 -3
  52. moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/context.py +5 -5
  53. moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +749 -0
  54. moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/tags.py +55 -23
  55. moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +198 -0
  56. moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +21 -0
  57. moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +154 -0
  58. moai_adk/templates/.claude/hooks/alfred/{handlers → shared/handlers}/session.py +28 -15
  59. moai_adk/templates/.claude/hooks/alfred/{handlers → shared/handlers}/tool.py +3 -6
  60. moai_adk/templates/.claude/hooks/alfred/{handlers → shared/handlers}/user.py +19 -0
  61. moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +112 -0
  62. moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +1 -0
  63. moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +161 -0
  64. moai_adk/templates/.claude/settings.json +5 -5
  65. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +70 -0
  66. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +62 -0
  67. moai_adk/templates/{.moai/memory/CLAUDE-AGENTS-GUIDE.md → .claude/skills/moai-alfred-agent-guide/reference.md} +34 -0
  68. moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +56 -0
  69. moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +28 -0
  70. moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +62 -0
  71. moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +28 -0
  72. moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +405 -0
  73. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +51 -0
  74. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +355 -0
  75. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +239 -0
  76. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +323 -0
  77. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +286 -0
  78. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +126 -0
  79. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/SKILL.md +74 -0
  80. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/examples.md +4 -0
  81. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/reference.md +269 -0
  82. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +19 -0
  83. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +4 -0
  84. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +150 -0
  85. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/SKILL.md +198 -0
  86. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/examples.md +431 -0
  87. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/reference.md +141 -0
  88. moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +89 -0
  89. moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +122 -0
  90. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +508 -0
  91. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +481 -0
  92. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +100 -0
  93. moai_adk/templates/.claude/skills/moai-alfred-reporting/SKILL.md +273 -0
  94. moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +77 -0
  95. moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +265 -0
  96. moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +19 -0
  97. moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +4 -0
  98. moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +84 -0
  99. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +137 -0
  100. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +219 -0
  101. moai_adk/templates/.claude/skills/{moai-spec-authoring → moai-alfred-spec-authoring}/examples/validate-spec.sh +3 -3
  102. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +541 -0
  103. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +622 -0
  104. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/SKILL.md +115 -0
  105. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/examples.md +4 -0
  106. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/reference.md +348 -0
  107. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +19 -0
  108. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +4 -0
  109. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +211 -0
  110. moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +288 -0
  111. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/SKILL.md +19 -0
  112. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/examples.md +4 -0
  113. moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/SKILL.md +3 -3
  114. moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +802 -0
  115. moai_adk/templates/.claude/skills/moai-design-systems/examples.md +1238 -0
  116. moai_adk/templates/.claude/skills/moai-design-systems/reference.md +673 -0
  117. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +17 -13
  118. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +9 -6
  119. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +15 -12
  120. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +14 -12
  121. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +14 -11
  122. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +10 -8
  123. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +15 -12
  124. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +13 -11
  125. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +16 -10
  126. moai_adk/templates/.claude/skills/moai-project-documentation.md +622 -0
  127. moai_adk/templates/.git-hooks/pre-push +143 -0
  128. moai_adk/templates/.github/workflows/c-tag-validation.yml +11 -0
  129. moai_adk/templates/.github/workflows/cpp-tag-validation.yml +11 -0
  130. moai_adk/templates/.github/workflows/csharp-tag-validation.yml +11 -0
  131. moai_adk/templates/.github/workflows/dart-tag-validation.yml +11 -0
  132. moai_adk/templates/.github/workflows/go-tag-validation.yml +130 -0
  133. moai_adk/templates/.github/workflows/java-tag-validation.yml +11 -0
  134. moai_adk/templates/.github/workflows/javascript-tag-validation.yml +135 -0
  135. moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +11 -0
  136. moai_adk/templates/.github/workflows/moai-gitflow.yml +166 -3
  137. moai_adk/templates/.github/workflows/moai-release-create.yml +100 -0
  138. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +188 -0
  139. moai_adk/templates/.github/workflows/php-tag-validation.yml +11 -0
  140. moai_adk/templates/.github/workflows/python-tag-validation.yml +118 -0
  141. moai_adk/templates/.github/workflows/release.yml +118 -0
  142. moai_adk/templates/.github/workflows/ruby-tag-validation.yml +11 -0
  143. moai_adk/templates/.github/workflows/rust-tag-validation.yml +11 -0
  144. moai_adk/templates/.github/workflows/shell-tag-validation.yml +11 -0
  145. moai_adk/templates/.github/workflows/spec-issue-sync.yml +206 -35
  146. moai_adk/templates/.github/workflows/swift-tag-validation.yml +11 -0
  147. moai_adk/templates/.github/workflows/tag-report.yml +269 -0
  148. moai_adk/templates/.github/workflows/tag-validation.yml +186 -0
  149. moai_adk/templates/.github/workflows/typescript-tag-validation.yml +154 -0
  150. moai_adk/templates/.moai/config.json +21 -2
  151. moai_adk/templates/CLAUDE.md +972 -78
  152. moai_adk/templates/workflows/go-tag-validation.yml +30 -0
  153. moai_adk/templates/workflows/javascript-tag-validation.yml +41 -0
  154. moai_adk/templates/workflows/python-tag-validation.yml +42 -0
  155. moai_adk/templates/workflows/typescript-tag-validation.yml +31 -0
  156. moai_adk/utils/banner.py +5 -5
  157. {moai_adk-0.8.0.dist-info → moai_adk-0.15.0.dist-info}/METADATA +1518 -161
  158. {moai_adk-0.8.0.dist-info → moai_adk-0.15.0.dist-info}/RECORD +183 -100
  159. moai_adk/templates/.claude/hooks/alfred/HOOK_SCHEMA_VALIDATION.md +0 -313
  160. moai_adk/templates/.claude/hooks/alfred/README.md +0 -230
  161. moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -174
  162. moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +0 -25
  163. moai_adk/templates/.claude/hooks/alfred/test_hook_output.py +0 -175
  164. moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +0 -640
  165. moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +0 -696
  166. moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +0 -474
  167. moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +0 -137
  168. moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +0 -218
  169. moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +0 -541
  170. moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +0 -622
  171. moai_adk/templates/.github/ISSUE_TEMPLATE/spec.yml +0 -176
  172. moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -69
  173. moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +0 -344
  174. moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +0 -220
  175. moai_adk/templates/.moai/memory/SPEC-METADATA.md +0 -356
  176. moai_adk/templates/.moai/memory/config-schema.md +0 -444
  177. moai_adk/templates/.moai/memory/gitflow-protection-policy.md +0 -220
  178. moai_adk/templates/.moai/memory/spec-metadata.md +0 -356
  179. moai_adk/templates/.moai/project/product.md +0 -161
  180. moai_adk/templates/.moai/project/structure.md +0 -156
  181. moai_adk/templates/.moai/project/tech.md +0 -227
  182. moai_adk/templates/__init__.py +0 -2
  183. /moai_adk/templates/{.moai/memory/CONFIG-SCHEMA.md → .claude/skills/moai-alfred-config-schema/reference.md} +0 -0
  184. /moai_adk/templates/{.moai/memory/CLAUDE-PRACTICES.md → .claude/skills/moai-alfred-practices/reference.md} +0 -0
  185. /moai_adk/templates/{.moai/memory/CLAUDE-RULES.md → .claude/skills/moai-alfred-rules/reference.md} +0 -0
  186. /moai_adk/templates/{.moai/memory/SKILLS-DESCRIPTION-POLICY.md → .claude/skills/moai-cc-skill-descriptions/reference.md} +0 -0
  187. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/CHECKLIST.md +0 -0
  188. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/EXAMPLES.md +0 -0
  189. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/INTERACTIVE-DISCOVERY.md +0 -0
  190. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/METADATA.md +0 -0
  191. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/PARALLEL-ANALYSIS-REPORT.md +0 -0
  192. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/PYTHON-VERSION-MATRIX.md +0 -0
  193. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/SKILL-FACTORY-WORKFLOW.md +0 -0
  194. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/SKILL-UPDATE-ADVISOR.md +0 -0
  195. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/STEP-BY-STEP-GUIDE.md +0 -0
  196. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/STRUCTURE.md +0 -0
  197. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/WEB-RESEARCH.md +0 -0
  198. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/reference.md +0 -0
  199. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/scripts/generate-structure.sh +0 -0
  200. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/scripts/validate-skill.sh +0 -0
  201. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/templates/SKILL_TEMPLATE.md +0 -0
  202. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/templates/examples-template.md +0 -0
  203. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/templates/reference-template.md +0 -0
  204. /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/templates/scripts-template.sh +0 -0
  205. {moai_adk-0.8.0.dist-info → moai_adk-0.15.0.dist-info}/WHEEL +0 -0
  206. {moai_adk-0.8.0.dist-info → moai_adk-0.15.0.dist-info}/entry_points.txt +0 -0
  207. {moai_adk-0.8.0.dist-info → moai_adk-0.15.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: "Writing SPEC Documents with Metadata"
3
+ description: "Standards for SPEC authoring including YAML metadata, EARS syntax, HISTORY section, and validation. Guides spec-builder agent through SPEC creation in .moai/specs/SPEC-{ID}/ directory. Covers 7 required metadata fields, 5 EARS patterns, version tracking, changelog format, and @SPEC:ID TAG placement. Essential for /alfred:1-plan command and duplicate detection."
4
+ allowed-tools: "Read, Write, Bash(rg:*), Bash(mkdir:*)"
5
+ ---
6
+
7
+ # SPEC Metadata Standard Skill
8
+
9
+ ## SPEC Directory Structure
10
+
11
+ ```
12
+ .moai/specs/SPEC-{DOMAIN}-{NUMBER}/
13
+ ├── spec.md # Requirements (EARS format) + metadata
14
+ ├── plan.md # Implementation plan
15
+ └── acceptance.md # Test scenarios, acceptance criteria
16
+ ```
17
+
18
+ ## YAML Metadata (7 Fields)
19
+
20
+ Every SPEC starts with frontmatter:
21
+
22
+ ```yaml
23
+ ---
24
+ id: AUTH-001
25
+ title: "User Authentication System"
26
+ version: 0.1.0
27
+ status: active
28
+ created: 2025-11-03
29
+ updated: 2025-11-03
30
+ author: @GOOS🪿엉아
31
+ priority: high
32
+ ---
33
+ ```
34
+
35
+ ### Field Definitions
36
+
37
+ | Field | Type | Required | Notes |
38
+ |-------|------|----------|-------|
39
+ | `id` | string | ✅ | Domain-NUMBER (e.g., AUTH-001) |
40
+ | `title` | string | ✅ | User-facing description |
41
+ | `version` | semver | ✅ | Current status (0.x.x = draft) |
42
+ | `status` | enum | ✅ | active\|draft\|deprecated\|archived |
43
+ | `created` | ISO8601 | ✅ | YYYY-MM-DD |
44
+ | `updated` | ISO8601 | ✅ | Last modification date |
45
+ | `author` | string | ✅ | Creator identifier |
46
+ | `priority` | enum | ✅ | critical\|high\|medium\|low |
47
+
48
+ ## EARS Requirements (5 Patterns)
49
+
50
+ ### 1. Ubiquitous (Baseline)
51
+ ```
52
+ The system shall provide [capability].
53
+ The system shall validate [input] before [action].
54
+ ```
55
+
56
+ ### 2. Event-driven
57
+ ```
58
+ WHEN [condition], the system shall [behavior].
59
+ WHEN a user logs in, the system shall verify credentials.
60
+ ```
61
+
62
+ ### 3. State-driven
63
+ ```
64
+ WHILE [state], the system shall [behavior].
65
+ WHILE authenticated, the system shall allow access.
66
+ ```
67
+
68
+ ### 4. Optional Features
69
+ ```
70
+ WHERE [condition], the system may [behavior].
71
+ WHERE API key present, the system may enable caching.
72
+ ```
73
+
74
+ ### 5. Constraints
75
+ ```
76
+ IF [condition], the system shall [constraint].
77
+ IF password invalid, the system shall deny access.
78
+ ```
79
+
80
+ ## HISTORY Section
81
+
82
+ Track all changes:
83
+
84
+ ```markdown
85
+ ## HISTORY
86
+
87
+ ### v0.2.0 (2025-11-03)
88
+ - Added email verification requirement
89
+ - Updated password complexity rules
90
+
91
+ ### v0.1.0 (2025-11-01)
92
+ - Initial draft of AUTH-001
93
+ ```
94
+
95
+ ## Validation Checklist
96
+
97
+ - [ ] ID: Domain-NUMBER format (e.g., AUTH-001)
98
+ - [ ] No duplicate @SPEC:ID (`rg "@SPEC:{ID}" .moai/specs/`)
99
+ - [ ] All 7 metadata fields present
100
+ - [ ] version follows semver (0.x.x for draft)
101
+ - [ ] 5+ EARS requirements with different patterns
102
+ - [ ] HISTORY section with at least v0.1.0
103
+ - [ ] Directory: `.moai/specs/SPEC-{ID}/`
104
+ - [ ] @SPEC:ID placed in first 50 lines of spec.md
105
+
106
+ ## Common Patterns
107
+
108
+ | Scenario | Action |
109
+ |----------|--------|
110
+ | Start new SPEC | Create .moai/specs/SPEC-{DOMAIN}-{NUMBER}/ |
111
+ | Check duplicate | rg "@SPEC:{ID}" .moai/specs/ (should be 0) |
112
+ | Write requirement | Use one of 5 EARS patterns |
113
+ | Update version | Change version field, update HISTORY |
114
+ | Mark deprecated | Set status: deprecated, add note |
115
+ | Link to @CODE | In code comment: @CODE:SPEC-AUTH-001 |
@@ -0,0 +1,4 @@
1
+ # Examples
2
+
3
+ See `reference.md` for practical examples and usage patterns.
4
+
@@ -0,0 +1,348 @@
1
+ # SPEC Metadata Extended - Reference
2
+
3
+ ## YAML Frontmatter Fields
4
+
5
+ ### Field: `id`
6
+
7
+ **Type**: `string`
8
+ **Required**: ✅ Yes
9
+ **Format**: `{DOMAIN}-{NUMBER}` (e.g., `AUTH-001`, `CACHE-FIX-002`)
10
+ **Rules**:
11
+ - Domain: 2-8 characters, UPPERCASE
12
+ - Number: 3 digits, zero-padded (001, 002, 100)
13
+ - No duplicates allowed across project
14
+
15
+ **Validation**:
16
+ ```bash
17
+ # Check for duplicates
18
+ rg "@SPEC:AUTH-001" .moai/specs/ # Should return exactly 1 hit
19
+
20
+ # Check format
21
+ rg "^id: [A-Z]+-\d{3}$" .moai/specs/SPEC-*/spec.md
22
+ ```
23
+
24
+ ### Field: `title`
25
+
26
+ **Type**: `string`
27
+ **Required**: ✅ Yes
28
+ **Max Length**: 128 characters
29
+ **Style**: User-facing, descriptive noun phrase
30
+
31
+ **Examples**:
32
+ - ✅ "User Authentication System"
33
+ - ✅ "Redis Cache Optimization"
34
+ - ❌ "Implement auth" (too vague)
35
+ - ❌ "User Authentication System for Multi-tenant Applications with Role-Based Access Control" (too long)
36
+
37
+ ### Field: `version`
38
+
39
+ **Type**: `semver` (X.Y.Z)
40
+ **Required**: ✅ Yes
41
+ **Format**: `major.minor.patch`
42
+ **Rules**:
43
+ - Draft: `0.x.x` (no implementation yet)
44
+ - Alpha: `1.0.0-alpha` (partial implementation)
45
+ - Beta: `1.0.0-beta` (mostly done, testing)
46
+ - Release: `1.0.0+` (fully implemented)
47
+
48
+ **Examples**:
49
+ ```yaml
50
+ version: 0.1.0 # Initial draft
51
+ version: 0.2.0 # Requirements refined
52
+ version: 1.0.0 # First implementation
53
+ version: 1.1.0 # Bug fixes + features
54
+ version: 2.0.0 # Major refactor
55
+ ```
56
+
57
+ ### Field: `status`
58
+
59
+ **Type**: `enum`
60
+ **Required**: ✅ Yes
61
+ **Allowed Values**:
62
+ - `draft` – Not ready for implementation
63
+ - `active` – Current work item
64
+ - `in-progress` – Being implemented
65
+ - `completed` – Implemented + tested
66
+ - `deprecated` – No longer used
67
+ - `archived` – Historical reference
68
+
69
+ **State Transitions**:
70
+ ```
71
+ draft → active → in-progress → completed
72
+
73
+ deprecated
74
+
75
+ archived
76
+ ```
77
+
78
+ ### Field: `created`
79
+
80
+ **Type**: `ISO8601` (YYYY-MM-DD)
81
+ **Required**: ✅ Yes
82
+ **Example**: `2025-11-03`
83
+ **Rule**: Never change after creation
84
+
85
+ ### Field: `updated`
86
+
87
+ **Type**: `ISO8601` (YYYY-MM-DD)
88
+ **Required**: ✅ Yes
89
+ **Example**: `2025-11-03`
90
+ **Rule**: Update whenever spec changes
91
+
92
+ ### Field: `author`
93
+
94
+ **Type**: `string`
95
+ **Required**: ✅ Yes
96
+ **Format**: `@USERNAME` or `@NICKNAME`
97
+ **Examples**:
98
+ - `@GOOS🪿엉아`
99
+ - `@alice.smith`
100
+ - `@team-backend`
101
+
102
+ ### Field: `priority`
103
+
104
+ **Type**: `enum`
105
+ **Required**: ✅ Yes
106
+ **Allowed Values**:
107
+ - `critical` – Blocking other work (P0)
108
+ - `high` – Important feature (P1)
109
+ - `medium` – Nice to have (P2)
110
+ - `low` – Backlog (P3)
111
+
112
+ ## HISTORY Section Format
113
+
114
+ ### Structure
115
+
116
+ ```markdown
117
+ ## HISTORY
118
+
119
+ ### v1.1.0 (2025-11-05)
120
+ - Fixed race condition in verification
121
+ - Added timeout handling
122
+ - Updated error messages
123
+
124
+ ### v1.0.0 (2025-11-03)
125
+ - Initial implementation complete
126
+ - All tests passing
127
+ - Documentation updated
128
+
129
+ ### v0.2.0 (2025-11-02)
130
+ - Refined email requirements
131
+ - Added rate limiting constraints
132
+ - Extended EARS patterns
133
+
134
+ ### v0.1.0 (2025-11-01)
135
+ - Initial draft with basic auth
136
+ - Ubiquitous requirements defined
137
+ ```
138
+
139
+ ### Rules
140
+
141
+ - Start with most recent version
142
+ - One entry per version change
143
+ - Bullet points, not paragraphs
144
+ - Link to commits if available
145
+ - Update `updated` field when modifying
146
+
147
+ ## EARS Requirements Format
148
+
149
+ ### Pattern 1: Ubiquitous
150
+
151
+ ```markdown
152
+ - The system shall provide [capability].
153
+ - The system shall validate [input] before [action].
154
+ - The system shall [behavior] within [time] of [trigger].
155
+
156
+ Examples:
157
+ - The system shall provide user authentication via email.
158
+ - The system shall validate email format (RFC 5322) before storage.
159
+ - The system shall send verification email within 10 seconds of signup.
160
+ ```
161
+
162
+ ### Pattern 2: Event-driven
163
+
164
+ ```markdown
165
+ - WHEN [condition], the system shall [behavior].
166
+ - Upon [event], the system shall [action] and [action].
167
+
168
+ Examples:
169
+ - WHEN a user clicks 'Sign Up', the system shall display signup form.
170
+ - Upon verification link click, the system shall activate user account.
171
+ - WHEN 3 failed attempts occur, the system shall lock the account.
172
+ ```
173
+
174
+ ### Pattern 3: State-driven
175
+
176
+ ```markdown
177
+ - WHILE [state], the system shall [behavior].
178
+ - WHILE not [condition], the system shall [action].
179
+
180
+ Examples:
181
+ - WHILE the user is unauthenticated, the system shall deny access.
182
+ - WHILE session is active, the system shall refresh token automatically.
183
+ - WHILE rate limit not exceeded, the system shall process requests.
184
+ ```
185
+
186
+ ### Pattern 4: Optional Features
187
+
188
+ ```markdown
189
+ - WHERE [condition], the system may [behavior].
190
+ - If [feature] enabled, the system may [action].
191
+
192
+ Examples:
193
+ - WHERE 2FA is enabled, the system may require additional verification.
194
+ - If API quota available, the system may allow batch operations.
195
+ - WHERE user preference set, the system may send notifications.
196
+ ```
197
+
198
+ ### Pattern 5: Constraints (Unwanted Behaviors)
199
+
200
+ ```markdown
201
+ - IF [condition], the system shall [constraint].
202
+ - The system shall NOT [unwanted behavior].
203
+
204
+ Examples:
205
+ - IF password invalid 3x, the system shall lock account.
206
+ - The system shall NOT store plaintext passwords.
207
+ - IF token expired, the system shall return 401 error.
208
+ - The system shall NOT process requests exceeding rate limit.
209
+ ```
210
+
211
+ ## TAG Placement
212
+
213
+ ### Location
214
+
215
+ Place `@SPEC:ID` in first 50 lines of spec.md:
216
+
217
+ ```markdown
218
+ # User Authentication SPEC
219
+
220
+ @SPEC:AUTH-001
221
+
222
+ ## Overview
223
+ ...
224
+ ```
225
+
226
+ ### Usage in Code
227
+
228
+ Link implementation to spec:
229
+
230
+ ```python
231
+ # src/auth.py
232
+ # @CODE:AUTH-001
233
+
234
+ def verify_email(email: str, token: str) -> bool:
235
+ """Verify email with token. Requirement: AUTH-001"""
236
+ # Implementation here
237
+ pass
238
+ ```
239
+
240
+ ## Duplicate Detection
241
+
242
+ ### Before Creating SPEC
243
+
244
+ ```bash
245
+ # Check if ID already exists
246
+ rg "@SPEC:AUTH-001" .moai/specs/
247
+
248
+ # Expected: 0 hits (if new) or 1 hit (if existing)
249
+ # If >1 hit: ERROR – duplicate detected
250
+ ```
251
+
252
+ ### Duplicate Resolution
253
+
254
+ If duplicate found:
255
+ 1. Use different number: AUTH-001 → AUTH-002
256
+ 2. Or use different domain: AUTH-001 → SECURITY-001
257
+ 3. Recheck with `rg "@SPEC:{NEW-ID}" .moai/specs/`
258
+
259
+ ## Validation Checklist
260
+
261
+ ```bash
262
+ #!/bin/bash
263
+ # validate-spec.sh - Verify SPEC completeness
264
+
265
+ SPEC_DIR=".moai/specs/SPEC-$1"
266
+
267
+ if [ ! -d "$SPEC_DIR" ]; then
268
+ echo "❌ Directory not found: $SPEC_DIR"
269
+ exit 1
270
+ fi
271
+
272
+ # Check metadata fields
273
+ for field in "id" "title" "version" "status" "created" "updated" "author" "priority"; do
274
+ if ! grep "^$field:" "$SPEC_DIR/spec.md" > /dev/null; then
275
+ echo "❌ Missing field: $field"
276
+ fi
277
+ done
278
+
279
+ # Check SPEC ID in file
280
+ SPEC_ID=$(grep "^id:" "$SPEC_DIR/spec.md" | cut -d' ' -f2)
281
+ if ! grep "@SPEC:$SPEC_ID" "$SPEC_DIR/spec.md" > /dev/null; then
282
+ echo "❌ Missing @SPEC:$SPEC_ID tag in spec.md"
283
+ fi
284
+
285
+ # Check for EARS patterns (at least 3)
286
+ EARS_COUNT=$(grep -E "^- (The system shall|WHEN|WHILE|WHERE|IF)" "$SPEC_DIR/spec.md" | wc -l)
287
+ if [ "$EARS_COUNT" -lt 5 ]; then
288
+ echo "⚠️ Only $EARS_COUNT EARS requirements (recommend ≥5)"
289
+ fi
290
+
291
+ # Check HISTORY section
292
+ if ! grep "^## HISTORY" "$SPEC_DIR/spec.md" > /dev/null; then
293
+ echo "❌ Missing HISTORY section"
294
+ fi
295
+
296
+ echo "✅ SPEC validation complete"
297
+ ```
298
+
299
+ ## File Structure
300
+
301
+ ```
302
+ .moai/specs/SPEC-AUTH-001/
303
+ ├── spec.md # Requirements + metadata
304
+ ├── plan.md # Implementation plan (phase 2)
305
+ └── acceptance.md # Test scenarios (phase 2)
306
+ ```
307
+
308
+ ### spec.md Contents (Phase 1)
309
+
310
+ ```markdown
311
+ ---
312
+ id: AUTH-001
313
+ title: "User Authentication System"
314
+ version: 0.1.0
315
+ status: active
316
+ created: 2025-11-03
317
+ updated: 2025-11-03
318
+ author: @USERNAME
319
+ priority: high
320
+ ---
321
+
322
+ # User Authentication SPEC
323
+
324
+ @SPEC:AUTH-001
325
+
326
+ ## Overview
327
+ [System description]
328
+
329
+ ## Ubiquitous Requirements
330
+ [The system shall...]
331
+
332
+ ## Event-driven Requirements
333
+ [WHEN... the system shall...]
334
+
335
+ ## State-driven Requirements
336
+ [WHILE... the system shall...]
337
+
338
+ ## Optional Features
339
+ [WHERE... the system may...]
340
+
341
+ ## Constraints
342
+ [IF... the system shall...]
343
+
344
+ ## HISTORY
345
+
346
+ ### v0.1.0 (2025-11-03)
347
+ - Initial draft
348
+ ```
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: moai-alfred-todowrite-pattern
3
+ description: "TodoWrite auto-initialization patterns from Plan agent, task tracking best practices, status management."
4
+ tier: Alfred
5
+ allowed-tools: "Read"
6
+ ---
7
+
8
+ ## What It Does
9
+
10
+ TodoWrite 자동 초기화, task 상태 관리, phase 구분 규칙을 정의합니다.
11
+
12
+ ## When to Use
13
+
14
+ - ✅ Task tracking 설정
15
+ - ✅ TodoWrite 상태 관리
16
+
17
+ ---
18
+
19
+ Learn more in `reference.md`.
@@ -0,0 +1,4 @@
1
+ # Examples
2
+
3
+ See `reference.md` for practical examples and usage patterns.
4
+
@@ -0,0 +1,211 @@
1
+ # TodoWrite Auto-Initialization Pattern
2
+
3
+ > **Version**: 0.8.0+
4
+ > **Status**: Active
5
+ > **Updated**: 2025-11-02
6
+
7
+ ## Overview
8
+
9
+ **OLD Pattern** (manual initialization):
10
+ ```python
11
+ # User had to manually initialize TodoWrite
12
+ TodoWrite([
13
+ {"content": "Analyze project", "status": "pending"},
14
+ {"content": "Create SPEC", "status": "pending"}
15
+ ])
16
+ ```
17
+
18
+ **NEW Pattern** (auto-initialization from Plan agent):
19
+ ```python
20
+ # Plan agent generates task list
21
+ plan = Task(
22
+ subagent_type="Plan",
23
+ prompt="Create structured plan for: {request}"
24
+ )
25
+
26
+ # Alfred auto-initializes TodoWrite from plan
27
+ TodoWrite(plan.tasks) # Automatic from Plan agent output
28
+ ```
29
+
30
+ ## Integration with Alfred 4-Step Workflow
31
+
32
+ ### Step 1: Intent Understanding
33
+ - **Goal**: Clarify user intent before any action
34
+ - **TodoWrite**: NO initialization
35
+ - **Output**: Clear understanding of requirements
36
+
37
+ ### Step 2: Plan Creation (NEW: AUTO-INIT)
38
+ - **Goal**: Analyze tasks and initialize progress tracking
39
+ - **Action**: Invoke Plan Agent to decompose tasks
40
+ - **NEW**: **AUTO-INITIALIZE TodoWrite from Plan output**
41
+ - **Output**: Structured task breakdown + initialized TodoWrite
42
+
43
+ ### Step 3: Task Execution
44
+ - **Goal**: Execute tasks with transparent progress tracking
45
+ - **Action**: Execute tasks in order, updating TodoWrite status
46
+ - **TodoWrite**: Update: pending → in_progress → completed
47
+ - **Output**: Completed work, all todos marked done
48
+
49
+ ### Step 4: Report & Commit
50
+ - **Goal**: Document work and create git history
51
+ - **Action**: Generate report (if requested) and commit
52
+ - **TodoWrite**: All tasks should be "completed"
53
+ - **Output**: Git history, documentation
54
+
55
+ ## Plan Agent Output Format
56
+
57
+ Plan agent should return tasks in TodoWrite-compatible format:
58
+
59
+ ```json
60
+ {
61
+ "tasks": [
62
+ {
63
+ "content": "Analyze SPEC requirements",
64
+ "activeForm": "Analyzing SPEC requirements",
65
+ "status": "pending"
66
+ },
67
+ {
68
+ "content": "Write test cases",
69
+ "activeForm": "Writing test cases",
70
+ "status": "pending"
71
+ },
72
+ {
73
+ "content": "Implement feature",
74
+ "activeForm": "Implementing feature",
75
+ "status": "pending"
76
+ }
77
+ ]
78
+ }
79
+ ```
80
+
81
+ ## Implementation Pattern
82
+
83
+ ### In /alfred:1-plan Command
84
+
85
+ ```python
86
+ # STEP 2: Plan Creation (with AUTO-INIT)
87
+ plan_result = Task(
88
+ subagent_type="Plan",
89
+ prompt=f"""Create structured plan for: {user_request}
90
+
91
+ Return tasks in this format:
92
+ {{
93
+ "tasks": [
94
+ {{"content": "[imperative verb] [object]", "activeForm": "[present continuous]"}},
95
+ ...
96
+ ]
97
+ }}
98
+ """
99
+ )
100
+
101
+ # AUTO-INIT TodoWrite from Plan output
102
+ tasks = [
103
+ {
104
+ "content": task["content"],
105
+ "activeForm": task["activeForm"],
106
+ "status": "pending"
107
+ }
108
+ for task in plan_result.tasks
109
+ ]
110
+
111
+ TodoWrite(tasks)
112
+
113
+ # STEP 3: Execute tasks
114
+ for task in plan_result.tasks:
115
+ TodoWrite([{"content": task["content"], "status": "in_progress"}])
116
+ execute_task(task)
117
+ TodoWrite([{"content": task["content"], "status": "completed"}])
118
+ ```
119
+
120
+ ## Real-World Example
121
+
122
+ ### User Request
123
+ ```
124
+ /alfred:1-plan "Create user authentication feature"
125
+ ```
126
+
127
+ ### Step 1: Intent Understanding
128
+ - Clarify: Is JWT or OAuth preferred?
129
+ - Ask for scope: Frontend, backend, or both?
130
+
131
+ ### Step 2: Plan Creation
132
+ Plan agent returns:
133
+ ```json
134
+ {
135
+ "tasks": [
136
+ {"content": "Design authentication architecture", "activeForm": "Designing authentication architecture"},
137
+ {"content": "Create database schema", "activeForm": "Creating database schema"},
138
+ {"content": "Write API endpoints", "activeForm": "Writing API endpoints"},
139
+ {"content": "Build frontend login form", "activeForm": "Building frontend login form"},
140
+ {"content": "Write integration tests", "activeForm": "Writing integration tests"}
141
+ ]
142
+ }
143
+ ```
144
+
145
+ Alfred AUTO-INITIALIZES:
146
+ ```
147
+ ☑ Design authentication architecture [pending]
148
+ ☑ Create database schema [pending]
149
+ ☑ Write API endpoints [pending]
150
+ ☑ Build frontend login form [pending]
151
+ ☑ Write integration tests [pending]
152
+ ```
153
+
154
+ ### Step 3: Task Execution
155
+ ```
156
+ ☑ Design authentication architecture [completed]
157
+ ☑ Create database schema [completed]
158
+ ☑ Write API endpoints [in_progress]
159
+ ...
160
+ ```
161
+
162
+ ## Benefits
163
+
164
+ 1. **Consistency**: All workflows start with same TodoWrite structure
165
+ 2. **Visibility**: Users see full task list upfront
166
+ 3. **Progress tracking**: Clear pending → in_progress → completed flow
167
+ 4. **Resumability**: Saved TodoWrite state enables resume feature (Feature 6)
168
+ 5. **No manual work**: Plan agent output directly initializes todos
169
+
170
+ ## Backward Compatibility
171
+
172
+ **Existing workflows** that manually call TodoWrite still work:
173
+ ```python
174
+ # Old style still works
175
+ TodoWrite([
176
+ {"content": "Task 1", "status": "pending"},
177
+ {"content": "Task 2", "status": "pending"}
178
+ ])
179
+ ```
180
+
181
+ **Transition strategy**:
182
+ 1. New commands use AUTO-INIT pattern (Week 1)
183
+ 2. Existing commands continue supporting manual TodoWrite
184
+ 3. Deprecation notice added in v0.9.0
185
+ 4. Full migration in v1.0.0
186
+
187
+ ## Testing Checklist
188
+
189
+ - [ ] Plan agent returns well-formed task list
190
+ - [ ] TodoWrite initializes with all tasks as "pending"
191
+ - [ ] Task execution updates status correctly
192
+ - [ ] Resume feature works with auto-initialized todos
193
+ - [ ] Backward compatibility maintained for manual TodoWrite calls
194
+
195
+ ## Migration Guide for Users
196
+
197
+ **Before (v0.7.0)**:
198
+ - Manual TodoWrite initialization
199
+ - Inconsistent task structures
200
+ - No automatic initialization
201
+
202
+ **After (v0.8.0+)**:
203
+ - Automatic TodoWrite from Plan agent
204
+ - Consistent structure across all commands
205
+ - Better progress visibility
206
+ - Supports resume feature
207
+
208
+ **How to upgrade**:
209
+ 1. No action required (automatic)
210
+ 2. All 3 commands (`/alfred:1-plan`, `/alfred:2-run`, `/alfred:3-sync`) now support auto-init
211
+ 3. Manual TodoWrite calls still work (backward compatible)