moai-adk 0.15.0__py3-none-any.whl → 0.25.4__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 (417) hide show
  1. moai_adk/__init__.py +1 -2
  2. moai_adk/__main__.py +85 -2
  3. moai_adk/cli/__init__.py +0 -1
  4. moai_adk/cli/commands/__init__.py +0 -1
  5. moai_adk/cli/commands/analyze.py +127 -0
  6. moai_adk/cli/commands/backup.py +5 -3
  7. moai_adk/cli/commands/doctor.py +35 -11
  8. moai_adk/cli/commands/improve_user_experience.py +348 -0
  9. moai_adk/cli/commands/init.py +150 -23
  10. moai_adk/cli/commands/language.py +269 -0
  11. moai_adk/cli/commands/migrate.py +158 -0
  12. moai_adk/cli/commands/status.py +13 -12
  13. moai_adk/cli/commands/update.py +364 -60
  14. moai_adk/cli/commands/validate_links.py +118 -0
  15. moai_adk/cli/main.py +3 -2
  16. moai_adk/cli/prompts/init_prompts.py +79 -82
  17. moai_adk/core/__init__.py +0 -1
  18. moai_adk/core/analysis/__init__.py +9 -0
  19. moai_adk/core/analysis/session_analyzer.py +439 -0
  20. moai_adk/core/claude_integration.py +421 -0
  21. moai_adk/core/command_helpers.py +270 -0
  22. moai_adk/core/config/__init__.py +6 -0
  23. moai_adk/core/config/auto_spec_config.py +346 -0
  24. moai_adk/core/config/migration.py +133 -12
  25. moai_adk/core/context_manager.py +279 -0
  26. moai_adk/core/diagnostics/slash_commands.py +0 -1
  27. moai_adk/core/error_recovery_system.py +1289 -0
  28. moai_adk/core/git/__init__.py +0 -1
  29. moai_adk/core/git/branch.py +0 -1
  30. moai_adk/core/git/branch_manager.py +4 -4
  31. moai_adk/core/git/checkpoint.py +1 -5
  32. moai_adk/core/git/commit.py +0 -1
  33. moai_adk/core/git/event_detector.py +3 -5
  34. moai_adk/core/git/manager.py +0 -1
  35. moai_adk/core/hooks/post_tool_auto_spec_completion.py +925 -0
  36. moai_adk/core/integration/__init__.py +22 -0
  37. moai_adk/core/integration/engine.py +169 -0
  38. moai_adk/core/integration/integration_tester.py +225 -0
  39. moai_adk/core/integration/models.py +88 -0
  40. moai_adk/core/integration/utils.py +211 -0
  41. moai_adk/core/issue_creator.py +28 -18
  42. moai_adk/core/language_config.py +202 -0
  43. moai_adk/core/language_validator.py +556 -0
  44. moai_adk/core/mcp/setup.py +113 -0
  45. moai_adk/core/migration/__init__.py +18 -0
  46. moai_adk/core/migration/backup_manager.py +208 -0
  47. moai_adk/core/migration/file_migrator.py +218 -0
  48. moai_adk/core/migration/version_detector.py +143 -0
  49. moai_adk/core/migration/version_migrator.py +228 -0
  50. moai_adk/core/performance/__init__.py +6 -0
  51. moai_adk/core/performance/cache_system.py +318 -0
  52. moai_adk/core/performance/parallel_processor.py +116 -0
  53. moai_adk/core/project/__init__.py +0 -1
  54. moai_adk/core/project/backup_utils.py +2 -7
  55. moai_adk/core/project/checker.py +3 -3
  56. moai_adk/core/project/detector.py +20 -40
  57. moai_adk/core/project/initializer.py +42 -17
  58. moai_adk/core/project/phase_executor.py +415 -58
  59. moai_adk/core/project/validator.py +6 -25
  60. moai_adk/core/quality/__init__.py +1 -1
  61. moai_adk/core/quality/trust_checker.py +64 -110
  62. moai_adk/core/quality/validators/__init__.py +1 -1
  63. moai_adk/core/quality/validators/base_validator.py +1 -1
  64. moai_adk/core/rollback_manager.py +993 -0
  65. moai_adk/core/session_manager.py +667 -0
  66. moai_adk/core/spec/confidence_scoring.py +749 -0
  67. moai_adk/core/spec/ears_template_engine.py +1182 -0
  68. moai_adk/core/spec/quality_validator.py +721 -0
  69. moai_adk/core/spec_status_manager.py +488 -0
  70. moai_adk/core/template/__init__.py +0 -1
  71. moai_adk/core/template/backup.py +41 -1
  72. moai_adk/core/template/config.py +11 -12
  73. moai_adk/core/template/languages.py +0 -1
  74. moai_adk/core/template/merger.py +79 -22
  75. moai_adk/core/template/processor.py +614 -40
  76. moai_adk/core/template_engine.py +36 -27
  77. moai_adk/foundation/git/commit_templates.py +565 -0
  78. moai_adk/foundation/trust/trust_principles.py +725 -0
  79. moai_adk/foundation/trust/validation_checklist.py +1678 -0
  80. moai_adk/statusline/__init__.py +38 -0
  81. moai_adk/statusline/alfred_detector.py +107 -0
  82. moai_adk/statusline/config.py +364 -0
  83. moai_adk/statusline/enhanced_output_style_detector.py +364 -0
  84. moai_adk/statusline/git_collector.py +190 -0
  85. moai_adk/statusline/main.py +228 -0
  86. moai_adk/statusline/metrics_tracker.py +78 -0
  87. moai_adk/statusline/renderer.py +327 -0
  88. moai_adk/statusline/update_checker.py +135 -0
  89. moai_adk/statusline/version_reader.py +647 -0
  90. moai_adk/templates/.git-hooks/pre-commit +66 -0
  91. moai_adk/templates/.git-hooks/pre-push +116 -4
  92. moai_adk/templates/.github/workflows/moai-gitflow.yml +1 -7
  93. moai_adk/templates/.github/workflows/spec-issue-sync.yml +0 -1
  94. moai_adk/templates/.gitignore +44 -0
  95. moai_adk/templates/.mcp.json +22 -0
  96. moai_adk/templates/CLAUDE.md +450 -1071
  97. moai_adk/utils/__init__.py +0 -1
  98. moai_adk/utils/banner.py +0 -1
  99. moai_adk/utils/common.py +308 -0
  100. moai_adk/utils/link_validator.py +249 -0
  101. moai_adk/utils/logger.py +4 -9
  102. moai_adk/utils/safe_file_reader.py +210 -0
  103. moai_adk/utils/user_experience.py +531 -0
  104. moai_adk-0.25.4.dist-info/METADATA +2279 -0
  105. moai_adk-0.25.4.dist-info/RECORD +112 -0
  106. moai_adk/core/tags/__init__.py +0 -86
  107. moai_adk/core/tags/ci_validator.py +0 -463
  108. moai_adk/core/tags/cli.py +0 -283
  109. moai_adk/core/tags/generator.py +0 -109
  110. moai_adk/core/tags/inserter.py +0 -99
  111. moai_adk/core/tags/mapper.py +0 -126
  112. moai_adk/core/tags/parser.py +0 -76
  113. moai_adk/core/tags/pre_commit_validator.py +0 -393
  114. moai_adk/core/tags/reporter.py +0 -956
  115. moai_adk/core/tags/tags.py +0 -149
  116. moai_adk/core/tags/validator.py +0 -897
  117. moai_adk/templates/.claude/agents/alfred/backend-expert.md +0 -319
  118. moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -316
  119. moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -208
  120. moai_adk/templates/.claude/agents/alfred/devops-expert.md +0 -464
  121. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -214
  122. moai_adk/templates/.claude/agents/alfred/frontend-expert.md +0 -357
  123. moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -406
  124. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -423
  125. moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -312
  126. moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -343
  127. moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -865
  128. moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -392
  129. moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -361
  130. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -428
  131. moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -375
  132. moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +0 -571
  133. moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1525
  134. moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -802
  135. moai_adk/templates/.claude/commands/alfred/2-run.md +0 -709
  136. moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -1009
  137. moai_adk/templates/.claude/commands/alfred/9-feedback.md +0 -149
  138. moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -748
  139. moai_adk/templates/.claude/hooks/alfred/core/timeout.py +0 -136
  140. moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +0 -108
  141. moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +0 -198
  142. moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -29
  143. moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +0 -94
  144. moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +0 -100
  145. moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +0 -94
  146. moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +0 -94
  147. moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +0 -170
  148. moai_adk/templates/.claude/hooks/alfred/shared/core/checkpoint.py +0 -271
  149. moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +0 -67
  150. moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +0 -749
  151. moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +0 -230
  152. moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +0 -198
  153. moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +0 -21
  154. moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +0 -154
  155. moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +0 -174
  156. moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +0 -87
  157. moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +0 -61
  158. moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +0 -112
  159. moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +0 -1
  160. moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +0 -161
  161. moai_adk/templates/.claude/settings.json +0 -144
  162. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +0 -70
  163. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +0 -62
  164. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/reference.md +0 -242
  165. moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +0 -56
  166. moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +0 -28
  167. moai_adk/templates/.claude/skills/moai-alfred-config-schema/reference.md +0 -444
  168. moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +0 -62
  169. moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +0 -28
  170. moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +0 -405
  171. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +0 -51
  172. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +0 -355
  173. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +0 -239
  174. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
  175. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
  176. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
  177. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +0 -323
  178. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +0 -286
  179. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +0 -126
  180. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
  181. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
  182. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
  183. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/SKILL.md +0 -74
  184. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/examples.md +0 -4
  185. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/reference.md +0 -269
  186. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
  187. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
  188. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
  189. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +0 -19
  190. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +0 -4
  191. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +0 -150
  192. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
  193. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
  194. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
  195. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/SKILL.md +0 -198
  196. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/examples.md +0 -431
  197. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/reference.md +0 -141
  198. moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +0 -89
  199. moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +0 -122
  200. moai_adk/templates/.claude/skills/moai-alfred-practices/reference.md +0 -369
  201. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +0 -508
  202. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +0 -481
  203. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +0 -100
  204. moai_adk/templates/.claude/skills/moai-alfred-reporting/SKILL.md +0 -273
  205. moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +0 -77
  206. moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +0 -265
  207. moai_adk/templates/.claude/skills/moai-alfred-rules/reference.md +0 -539
  208. moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +0 -19
  209. moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +0 -4
  210. moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +0 -84
  211. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +0 -137
  212. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +0 -219
  213. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples/validate-spec.sh +0 -161
  214. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +0 -541
  215. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +0 -622
  216. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/SKILL.md +0 -115
  217. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/examples.md +0 -4
  218. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/reference.md +0 -348
  219. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
  220. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
  221. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
  222. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
  223. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
  224. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
  225. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +0 -19
  226. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +0 -4
  227. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +0 -211
  228. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -113
  229. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -29
  230. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -28
  231. moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +0 -288
  232. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
  233. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
  234. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
  235. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
  236. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
  237. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
  238. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
  239. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
  240. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
  241. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
  242. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
  243. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
  244. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
  245. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
  246. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
  247. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
  248. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/SKILL.md +0 -19
  249. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/examples.md +0 -4
  250. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/reference.md +0 -218
  251. moai_adk/templates/.claude/skills/moai-cc-skill-factory/CHECKLIST.md +0 -482
  252. moai_adk/templates/.claude/skills/moai-cc-skill-factory/EXAMPLES.md +0 -278
  253. moai_adk/templates/.claude/skills/moai-cc-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
  254. moai_adk/templates/.claude/skills/moai-cc-skill-factory/METADATA.md +0 -477
  255. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
  256. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
  257. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
  258. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
  259. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL.md +0 -271
  260. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
  261. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STRUCTURE.md +0 -583
  262. moai_adk/templates/.claude/skills/moai-cc-skill-factory/WEB-RESEARCH.md +0 -526
  263. moai_adk/templates/.claude/skills/moai-cc-skill-factory/reference.md +0 -465
  264. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/generate-structure.sh +0 -328
  265. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/validate-skill.sh +0 -312
  266. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
  267. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/examples-template.md +0 -285
  268. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/reference-template.md +0 -278
  269. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/scripts-template.sh +0 -303
  270. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
  271. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
  272. moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +0 -802
  273. moai_adk/templates/.claude/skills/moai-design-systems/examples.md +0 -1238
  274. moai_adk/templates/.claude/skills/moai-design-systems/reference.md +0 -673
  275. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +0 -290
  276. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +0 -1633
  277. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +0 -660
  278. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
  279. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
  280. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
  281. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
  282. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
  283. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
  284. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +0 -123
  285. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +0 -29
  286. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +0 -30
  287. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
  288. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
  289. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
  290. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +0 -128
  291. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +0 -29
  292. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +0 -31
  293. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
  294. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
  295. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
  296. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
  297. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
  298. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
  299. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
  300. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
  301. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
  302. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
  303. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
  304. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
  305. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
  306. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
  307. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
  308. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
  309. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
  310. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
  311. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
  312. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
  313. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
  314. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
  315. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
  316. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
  317. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -116
  318. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
  319. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
  320. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
  321. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
  322. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
  323. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
  324. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
  325. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
  326. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
  327. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
  328. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
  329. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
  330. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
  331. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
  332. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
  333. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  334. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
  335. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
  336. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
  337. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
  338. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +0 -124
  339. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -29
  340. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -31
  341. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +0 -123
  342. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -29
  343. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -30
  344. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
  345. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
  346. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
  347. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +0 -127
  348. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +0 -29
  349. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +0 -31
  350. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +0 -126
  351. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +0 -29
  352. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +0 -31
  353. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -125
  354. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -29
  355. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -32
  356. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +0 -124
  357. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +0 -29
  358. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +0 -31
  359. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +0 -126
  360. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -29
  361. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -30
  362. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +0 -433
  363. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +0 -624
  364. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +0 -316
  365. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +0 -123
  366. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -29
  367. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -30
  368. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +0 -124
  369. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -29
  370. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -31
  371. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +0 -127
  372. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +0 -29
  373. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +0 -31
  374. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +0 -125
  375. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +0 -29
  376. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +0 -30
  377. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
  378. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
  379. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
  380. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
  381. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
  382. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
  383. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +0 -123
  384. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +0 -29
  385. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +0 -30
  386. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +0 -133
  387. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +0 -29
  388. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +0 -34
  389. moai_adk/templates/.claude/skills/moai-project-documentation.md +0 -622
  390. moai_adk/templates/.github/workflows/c-tag-validation.yml +0 -11
  391. moai_adk/templates/.github/workflows/cpp-tag-validation.yml +0 -11
  392. moai_adk/templates/.github/workflows/csharp-tag-validation.yml +0 -11
  393. moai_adk/templates/.github/workflows/dart-tag-validation.yml +0 -11
  394. moai_adk/templates/.github/workflows/go-tag-validation.yml +0 -130
  395. moai_adk/templates/.github/workflows/java-tag-validation.yml +0 -11
  396. moai_adk/templates/.github/workflows/javascript-tag-validation.yml +0 -135
  397. moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +0 -11
  398. moai_adk/templates/.github/workflows/php-tag-validation.yml +0 -11
  399. moai_adk/templates/.github/workflows/python-tag-validation.yml +0 -118
  400. moai_adk/templates/.github/workflows/release.yml +0 -118
  401. moai_adk/templates/.github/workflows/ruby-tag-validation.yml +0 -11
  402. moai_adk/templates/.github/workflows/rust-tag-validation.yml +0 -11
  403. moai_adk/templates/.github/workflows/shell-tag-validation.yml +0 -11
  404. moai_adk/templates/.github/workflows/swift-tag-validation.yml +0 -11
  405. moai_adk/templates/.github/workflows/tag-report.yml +0 -269
  406. moai_adk/templates/.github/workflows/tag-validation.yml +0 -186
  407. moai_adk/templates/.github/workflows/typescript-tag-validation.yml +0 -154
  408. moai_adk/templates/.moai/config.json +0 -115
  409. moai_adk/templates/workflows/go-tag-validation.yml +0 -30
  410. moai_adk/templates/workflows/javascript-tag-validation.yml +0 -41
  411. moai_adk/templates/workflows/python-tag-validation.yml +0 -42
  412. moai_adk/templates/workflows/typescript-tag-validation.yml +0 -31
  413. moai_adk-0.15.0.dist-info/METADATA +0 -3079
  414. moai_adk-0.15.0.dist-info/RECORD +0 -365
  415. {moai_adk-0.15.0.dist-info → moai_adk-0.25.4.dist-info}/WHEEL +0 -0
  416. {moai_adk-0.15.0.dist-info → moai_adk-0.25.4.dist-info}/entry_points.txt +0 -0
  417. {moai_adk-0.15.0.dist-info → moai_adk-0.25.4.dist-info}/licenses/LICENSE +0 -0
@@ -1,541 +0,0 @@
1
- # SPEC Authoring Examples
2
-
3
- ## Real-World EARS Examples
4
-
5
- ### Example 1: E-commerce Checkout
6
-
7
- ```markdown
8
- ### Ubiquitous Requirements
9
- **UR-001**: The system shall provide a shopping cart feature.
10
- **UR-002**: The system shall support credit card payment.
11
-
12
- ### Event-driven Requirements
13
- **ER-001**: WHEN the user adds an item to the cart, the system shall update the cart total.
14
- **ER-002**: WHEN payment succeeds, the system shall send a confirmation email.
15
- **ER-003**: WHEN inventory is insufficient, the system shall display an "Out of Stock" message.
16
-
17
- ### State-driven Requirements
18
- **SR-001**: WHILE items exist in the cart, the system shall reserve inventory for 30 minutes.
19
- **SR-002**: WHILE payment is being processed, the UI shall display a loading indicator.
20
-
21
- ### Optional Features
22
- **OF-001**: WHERE express shipping is selected, the system can calculate express shipping cost.
23
- **OF-002**: WHERE gift wrapping is available, the system can offer gift wrapping option.
24
-
25
- ### Unwanted Behaviors
26
- **UB-001**: IF cart total is less than $50, THEN the system shall add a $5 shipping fee.
27
- **UB-002**: IF 3 payment failures occur, THEN the system shall lock the order for 1 hour.
28
- **UB-003**: Order processing time shall not exceed 5 seconds.
29
- ```
30
-
31
- ### Example 2: Mobile App Push Notifications
32
-
33
- ```markdown
34
- ### Ubiquitous Requirements
35
- **UR-001**: The app shall support push notifications.
36
- **UR-002**: The app shall allow users to enable/disable notifications.
37
-
38
- ### Event-driven Requirements
39
- **ER-001**: WHEN a new message arrives, the app shall display a push notification.
40
- **ER-002**: WHEN the user taps a notification, the app shall navigate to the message screen.
41
- **ER-003**: WHEN notification permission is denied, the app shall display an in-app banner.
42
-
43
- ### State-driven Requirements
44
- **SR-001**: WHILE the app is in foreground state, the system shall display in-app banner instead of push notification.
45
- **SR-002**: WHILE Do Not Disturb mode is enabled, the system shall mute all notifications.
46
-
47
- ### Optional Features
48
- **OF-001**: WHERE notification sound is enabled, the system can play notification sound.
49
- **OF-002**: WHERE notification grouping is supported, the system can group notifications by conversation.
50
-
51
- ### Unwanted Behaviors
52
- **UB-001**: IF 10 or more notifications are pending, THEN the system shall consolidate them into a summary notification.
53
- **UB-002**: Notification delivery latency shall not exceed 5 seconds.
54
- ```
55
-
56
- ---
57
-
58
- ## Complete SPEC Examples
59
-
60
- ### Example 1: Minimal SPEC
61
-
62
- ```markdown
63
- ---
64
- id: HELLO-001
65
- version: 0.0.1
66
- status: draft
67
- created: 2025-10-29
68
- updated: 2025-10-29
69
- author: @Goos
70
- priority: low
71
- ---
72
-
73
- # @SPEC:HELLO-001: Hello World API
74
-
75
- ## HISTORY
76
-
77
- ### v0.0.1 (2025-10-29)
78
- - **INITIAL**: Hello World API SPEC draft created
79
- - **AUTHOR**: @Goos
80
-
81
- ## Environment
82
-
83
- **Runtime**: Node.js 20.x
84
- **Framework**: Express.js
85
-
86
- ## Assumptions
87
-
88
- 1. Single endpoint required
89
- 2. No authentication needed
90
- 3. JSON response format
91
-
92
- ## Requirements
93
-
94
- ### Ubiquitous Requirements
95
-
96
- **UR-001**: The system shall provide a GET /hello endpoint.
97
-
98
- ### Event-driven Requirements
99
-
100
- **ER-001**: WHEN a GET request is sent to /hello, the system shall return JSON `{"message": "Hello, World!"}`.
101
-
102
- ### Unwanted Behaviors
103
-
104
- **UB-001**: Response time shall not exceed 50ms.
105
- ```
106
-
107
- ### Example 2: Production-Grade SPEC
108
-
109
- ```markdown
110
- ---
111
- id: AUTH-001
112
- version: 0.1.0
113
- status: completed
114
- created: 2025-10-29
115
- updated: 2025-10-30
116
- author: @Goos
117
- priority: high
118
- category: feature
119
- labels:
120
- - authentication
121
- - jwt
122
- - security
123
- depends_on:
124
- - USER-001
125
- - TOKEN-001
126
- blocks:
127
- - AUTH-002
128
- - PAYMENT-001
129
- related_issue: "https://github.com/modu-ai/moai-adk/issues/42"
130
- scope:
131
- packages:
132
- - src/core/auth
133
- - src/core/token
134
- - src/api/routes/auth
135
- files:
136
- - auth-service.ts
137
- - token-manager.ts
138
- - auth.routes.ts
139
- ---
140
-
141
- # @SPEC:AUTH-001: JWT Authentication System
142
-
143
- ## HISTORY
144
-
145
- ### v0.1.0 (2025-10-30)
146
- - **COMPLETED**: TDD implementation finished
147
- - **AUTHOR**: @Goos
148
- - **EVIDENCE**: Commits 4c66076, 34e1bd9, 1dec08f
149
- - **TEST COVERAGE**: 89.13% (target: 85%)
150
- - **QUALITY METRICS**:
151
- - Test Pass Rate: 100% (42/42 tests)
152
- - Linting: ruff ✅
153
- - Type Checking: mypy ✅
154
- - **TAG CHAIN**:
155
- - @SPEC:AUTH-001: 1 occurrence
156
- - @TEST:AUTH-001: 8 occurrences
157
- - @CODE:AUTH-001: 12 occurrences
158
-
159
- ### v0.0.2 (2025-10-25)
160
- - **REFINED**: Added password reset flow requirements
161
- - **REFINED**: Clarified token lifetime constraints
162
- - **AUTHOR**: @Goos
163
-
164
- ### v0.0.1 (2025-10-29)
165
- - **INITIAL**: JWT authentication SPEC draft created
166
- - **AUTHOR**: @Goos
167
- - **SCOPE**: User authentication, token generation, token validation
168
- - **CONTEXT**: Q4 2025 product roadmap requirements
169
-
170
- ## Environment
171
-
172
- **Execution Context**:
173
- - Runtime: Node.js 20.x or later
174
- - Framework: Express.js
175
- - Database: PostgreSQL 15+
176
-
177
- **Technical Stack**:
178
- - JWT library: jsonwebtoken ^9.0.0
179
- - Hashing: bcrypt ^5.1.0
180
-
181
- **Constraints**:
182
- - Token lifetime: 15 minutes (access), 7 days (refresh)
183
- - Security: HTTPS required in production
184
-
185
- ## Assumptions
186
-
187
- 1. **User Storage**: User credentials are stored in PostgreSQL
188
- 2. **Secret Management**: JWT secrets are managed via environment variables
189
- 3. **Clock Sync**: Server clock is synchronized with NTP
190
- 4. **Password Policy**: Minimum 8 characters enforced during registration
191
-
192
- ## Requirements
193
-
194
- ### Ubiquitous Requirements
195
-
196
- **UR-001**: The system shall provide JWT-based authentication.
197
-
198
- **UR-002**: The system shall support user login with email and password.
199
-
200
- **UR-003**: The system shall issue both access and refresh tokens.
201
-
202
- ### Event-driven Requirements
203
-
204
- **ER-001**: WHEN the user submits valid credentials, the system shall issue a JWT access token with 15-minute expiration.
205
-
206
- **ER-002**: WHEN a token expires, the system shall return HTTP 401 Unauthorized.
207
-
208
- **ER-003**: WHEN a refresh token is presented, the system shall issue a new access token if the refresh token is valid.
209
-
210
- ### State-driven Requirements
211
-
212
- **SR-001**: WHILE the user is in an authenticated state, the system shall permit access to protected resources.
213
-
214
- **SR-002**: WHILE a token is valid, the system shall extract the user ID from token claims.
215
-
216
- ### Optional Features
217
-
218
- **OF-001**: WHERE multi-factor authentication is enabled, the system can require OTP verification after password confirmation.
219
-
220
- **OF-002**: WHERE session logging is enabled, the system can record login timestamp and IP address.
221
-
222
- ### Unwanted Behaviors
223
-
224
- **UB-001**: IF a token has expired, THEN the system shall deny access and return HTTP 401.
225
-
226
- **UB-002**: IF 5 or more login failures occur within 10 minutes, THEN the system shall temporarily lock the account.
227
-
228
- **UB-003**: Access token lifetime shall not exceed 15 minutes.
229
-
230
- **UB-004**: Refresh token lifetime shall not exceed 7 days.
231
-
232
- ## Traceability (@TAG Chain)
233
-
234
- ### TAG Chain Structure
235
- ```
236
- @SPEC:AUTH-001 (this document)
237
-
238
- @TEST:AUTH-001 (tests/auth/service.test.ts)
239
-
240
- @CODE:AUTH-001 (src/auth/service.ts, src/auth/token-manager.ts)
241
-
242
- @DOC:AUTH-001 (docs/api/authentication.md)
243
- ```
244
-
245
- ### Validation Commands
246
- ```bash
247
- # Validate SPEC TAG
248
- rg '@SPEC:AUTH-001' -n .moai/specs/
249
-
250
- # Check for duplicate IDs
251
- rg '@SPEC:AUTH' -n .moai/specs/
252
- rg 'AUTH-001' -n
253
-
254
- # Scan full TAG chain
255
- rg '@(SPEC|TEST|CODE|DOC):AUTH-001' -n
256
- ```
257
-
258
- ## Decision Log
259
-
260
- ### Decision 1: JWT vs Session Cookies (2025-10-29)
261
- **Context**: Need stateless authentication for microservices
262
- **Decision**: Use JWT tokens
263
- **Alternatives Considered**:
264
- - Session cookies (rejected: stateful, not scalable)
265
- - OAuth 2.0 (deferred: too complex for MVP)
266
- **Consequences**:
267
- - ✅ Stateless, scalable
268
- - ✅ Service-to-service authentication
269
- - ❌ Token revocation complexity
270
-
271
- ### Decision 2: Token Expiration 15 minutes (2025-10-30)
272
- **Context**: Balance between security and UX
273
- **Decision**: 15-minute access token, 7-day refresh token
274
- **Rationale**: Industry standard, OWASP best practices
275
- **References**: OWASP JWT best practices
276
-
277
- ## Requirements Traceability Matrix
278
-
279
- | Req ID | Description | Test Cases | Status |
280
- |--------|-------------|------------|--------|
281
- | UR-001 | JWT authentication | test_authenticate_valid_user | ✅ |
282
- | ER-001 | Token issuance | test_token_generation | ✅ |
283
- | ER-002 | Token expiration | test_expired_token_rejection | ✅ |
284
- | SR-001 | Authenticated access | test_protected_route_access | ✅ |
285
- | UB-001 | Token lifetime | test_token_expiry_constraint | ✅ |
286
- ```
287
-
288
- ---
289
-
290
- ## Advanced Patterns
291
-
292
- ### Pattern 1: Versioned Requirements
293
-
294
- Document requirement evolution across versions:
295
-
296
- ```markdown
297
- ### v0.2.0 (2025-11-15)
298
- **UR-001** (CHANGED): The system shall respond within 200ms for 99% of requests.
299
- - Previous (v0.1.0): 95% of requests
300
- - Rationale: User feedback-driven performance improvement
301
-
302
- ### v0.1.0 (2025-10-30)
303
- **UR-001**: The system shall respond within 200ms for 95% of requests.
304
- ```
305
-
306
- ### Pattern 2: Requirements Traceability Matrix
307
-
308
- Explicitly link requirements to test cases:
309
-
310
- ```markdown
311
- ## Requirements Traceability Matrix
312
-
313
- | Req ID | Description | Test Cases | Status |
314
- |--------|-------------|------------|--------|
315
- | UR-001 | JWT authentication | test_authenticate_valid_user | ✅ |
316
- | ER-001 | Token issuance | test_token_generation | ✅ |
317
- | ER-002 | Token expiration | test_expired_token_rejection | ✅ |
318
- | SR-001 | Authenticated access | test_protected_route_access | ✅ |
319
- | UB-001 | Token lifetime | test_token_expiry_constraint | ✅ |
320
- ```
321
-
322
- ### Pattern 3: Decision Log
323
-
324
- Document architectural decisions within the SPEC:
325
-
326
- ```markdown
327
- ## Decision Log
328
-
329
- ### Decision 1: JWT vs Session Cookies (2025-10-29)
330
- **Context**: Need stateless authentication for microservices
331
- **Decision**: Use JWT tokens
332
- **Alternatives Considered**:
333
- - Session cookies (rejected: stateful, not scalable)
334
- - OAuth 2.0 (deferred: too complex for MVP)
335
- **Consequences**:
336
- - ✅ Stateless, scalable
337
- - ✅ Service-to-service authentication
338
- - ❌ Token revocation complexity
339
-
340
- ### Decision 2: Token Expiration 15 minutes (2025-10-30)
341
- **Context**: Balance between security and UX
342
- **Decision**: 15-minute access token, 7-day refresh token
343
- **Rationale**: Industry standard, OWASP best practices
344
- **References**: OWASP JWT best practices
345
- ```
346
-
347
- ---
348
-
349
- ## Troubleshooting
350
-
351
- ### Issue: "Duplicate SPEC ID detected"
352
-
353
- **Symptom**: `rg "@SPEC:AUTH-001" -n` returns multiple results
354
-
355
- **Resolution**:
356
- ```bash
357
- # Find all occurrences
358
- rg "@SPEC:AUTH-001" -n .moai/specs/
359
-
360
- # Keep one SPEC, rename the other
361
- # Update TAG references in code/tests
362
- rg '@SPEC:AUTH-001' -l src/ tests/ | xargs sed -i 's/@SPEC:AUTH-001/@SPEC:AUTH-002/g'
363
- ```
364
-
365
- ### Issue: "Version number doesn't match status"
366
-
367
- **Symptom**: `status: completed` but `version: 0.0.1`
368
-
369
- **Resolution**:
370
- ```yaml
371
- # Update version to reflect completion
372
- version: 0.1.0 # Implementation completed
373
- status: completed
374
- ```
375
-
376
- ### Issue: "HISTORY section missing version entry"
377
-
378
- **Symptom**: Content changed but no new HISTORY entry
379
-
380
- **Resolution**:
381
- ```markdown
382
- ## HISTORY
383
-
384
- ### v0.0.2 (2025-10-25) ← Add new entry
385
- - **REFINED**: XYZ requirement updated
386
- - **AUTHOR**: @YourHandle
387
-
388
- ### v0.0.1 (2025-10-23)
389
- - **INITIAL**: Initial draft
390
- ```
391
-
392
- ### Issue: "Author field missing @ prefix"
393
-
394
- **Symptom**: `author: Goos` instead of `author: @Goos`
395
-
396
- **Resolution**:
397
- ```yaml
398
- # Incorrect
399
- author: Goos
400
- author: goos
401
-
402
- # Correct
403
- author: @Goos
404
- ```
405
-
406
- ### Issue: "EARS pattern mixing"
407
-
408
- **Symptom**: "WHEN user logs in, WHILE session is active, the system shall..."
409
-
410
- **Resolution**:
411
- ```markdown
412
- # Bad (pattern mixing)
413
- **ER-001**: WHEN user logs in, WHILE session is active, the system shall permit access.
414
-
415
- # Good (separate requirements)
416
- **ER-001**: WHEN user successfully logs in, the system shall create a session.
417
- **SR-001**: WHILE session is active, the system shall permit access to protected resources.
418
- ```
419
-
420
- ---
421
-
422
- ## Best Practices Summary
423
-
424
- ### ✅ DO (Best Practices)
425
-
426
- 1. **Check for duplicate IDs before creating**
427
- ```bash
428
- rg "@SPEC:AUTH-001" -n .moai/specs/
429
- rg "AUTH-001" -n
430
- ```
431
-
432
- 2. **Update HISTORY on every content change**
433
- ```markdown
434
- ### v0.0.2 (2025-10-25)
435
- - **REFINED**: XYZ added
436
- - **AUTHOR**: @YourHandle
437
- ```
438
-
439
- 3. **Follow version lifecycle strictly**
440
- ```
441
- 0.0.1 → 0.0.2 → ... → 0.1.0 → 0.1.1 → ... → 1.0.0
442
- (draft) (draft) (completed) (patches) (stable)
443
- ```
444
-
445
- 4. **Use @ prefix in author field**
446
- ```yaml
447
- author: @Goos # Correct
448
- ```
449
-
450
- 5. **Write testable, measurable requirements**
451
- ```markdown
452
- # Good
453
- **UR-001**: API response time shall not exceed 200ms for 95% of requests.
454
-
455
- # Bad
456
- **UR-001**: The system should be fast.
457
- ```
458
-
459
- 6. **Include all 7 required metadata fields**
460
- ```yaml
461
- id: AUTH-001
462
- version: 0.0.1
463
- status: draft
464
- created: 2025-10-29
465
- updated: 2025-10-29
466
- author: @Goos
467
- priority: high
468
- ```
469
-
470
- 7. **Use EARS patterns consistently**
471
-
472
- ### ❌ DON'T (Anti-Patterns)
473
-
474
- 1. **Don't change SPEC ID after assignment**
475
- - Breaks TAG chain
476
- - Orphans existing code/tests
477
- - Loses Git history
478
-
479
- 2. **Don't skip HISTORY updates**
480
- - Loses change rationale
481
- - Unclear version progression
482
- - Audit trail gaps
483
-
484
- 3. **Don't jump version numbers without reason**
485
- ```markdown
486
- # Bad: 0.0.1 → 1.0.0
487
- # Good: 0.0.1 → 0.0.2 → ... → 0.1.0 → 1.0.0
488
- ```
489
-
490
- 4. **Don't write ambiguous requirements**
491
- - Avoid "fast", "user-friendly", "good"
492
- - Use measurable criteria
493
-
494
- 5. **Don't mix EARS patterns in one requirement**
495
-
496
- 6. **Don't skip validation before submission**
497
- ```bash
498
- ./validate-spec.sh .moai/specs/SPEC-AUTH-001
499
- ```
500
-
501
- 7. **Don't create duplicate SPEC IDs**
502
-
503
- ---
504
-
505
- ## Integration Workflow
506
-
507
- ### `/alfred:1-plan` Integration
508
-
509
- When `/alfred:1-plan` is called, the `spec-builder` agent uses this Skill to:
510
-
511
- 1. **Analyze**: User request and project context
512
- 2. **Generate**: SPEC candidates with appropriate structure
513
- 3. **Validate**: Metadata completeness
514
- 4. **Create**: `.moai/specs/SPEC-{ID}/spec.md` with EARS requirements
515
- 5. **Initialize**: Git workflow (feature branch, Draft PR)
516
-
517
- ### spec-builder Integration Points
518
-
519
- ```markdown
520
- Phase 1: SPEC candidate generation
521
- ↓ (uses moai-spec-authoring for metadata structure)
522
- Phase 2: User approval
523
-
524
- Phase 3: SPEC file creation
525
- ↓ (applies EARS templates from this Skill)
526
- Phase 4: Git workflow initialization
527
-
528
- Phase 5: Handoff to /alfred:2-run
529
- ```
530
-
531
- ### Agent Collaboration
532
-
533
- - **spec-builder**: Creates SPEC using this Skill's templates
534
- - **tag-agent**: Validates TAG format and uniqueness
535
- - **trust-checker**: Verifies metadata completeness
536
- - **git-manager**: Creates feature branch and Draft PR
537
-
538
- ---
539
-
540
- **Last Updated**: 2025-10-29
541
- **Version**: 1.2.0