moai-adk 0.15.1__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 -426
  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 -1854
  134. moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -880
  135. moai_adk/templates/.claude/commands/alfred/2-run.md +0 -793
  136. moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -1084
  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.1.dist-info/METADATA +0 -3094
  414. moai_adk-0.15.1.dist-info/RECORD +0 -365
  415. {moai_adk-0.15.1.dist-info → moai_adk-0.25.4.dist-info}/WHEEL +0 -0
  416. {moai_adk-0.15.1.dist-info → moai_adk-0.25.4.dist-info}/entry_points.txt +0 -0
  417. {moai_adk-0.15.1.dist-info → moai_adk-0.25.4.dist-info}/licenses/LICENSE +0 -0
@@ -1,355 +0,0 @@
1
- # Alfred Development Guide - Examples
2
-
3
- ## Example 1: Complete SPEC-First TDD Workflow for User Authentication
4
-
5
- ### Phase 1: Write SPEC (30 minutes)
6
-
7
- **File**: `.moai/specs/SPEC-AUTH-001/spec.md`
8
-
9
- ```markdown
10
- ---
11
- id: AUTH-001
12
- title: "User Authentication System"
13
- version: 0.1.0
14
- status: active
15
- created: 2025-11-03
16
- updated: 2025-11-03
17
- author: @GOOS
18
- priority: high
19
- ---
20
-
21
- # User Authentication SPEC
22
-
23
- @SPEC:AUTH-001
24
-
25
- ## Ubiquitous Requirements
26
- - The system shall provide user authentication via email and password.
27
- - The system shall validate email format (RFC 5322) before storage.
28
- - The system shall hash passwords using bcrypt (≥12 rounds).
29
-
30
- ## Event-driven Requirements
31
- - WHEN a user submits signup form, the system shall create user account.
32
- - WHEN email verification link is clicked, the system shall activate account.
33
- - WHEN login fails 3 times, the system shall lock account for 1 hour.
34
-
35
- ## State-driven Requirements
36
- - WHILE user is authenticated, the system shall allow access to protected resources.
37
- - WHILE session is active, the system shall maintain JWT token validity.
38
-
39
- ## Optional Features
40
- - WHERE 2FA is enabled, the system may require additional verification.
41
-
42
- ## Constraints
43
- - IF password is invalid, the system shall return 401 Unauthorized.
44
- - The system shall NOT store plaintext passwords.
45
- - The system shall enforce 8-character minimum password length.
46
-
47
- ## HISTORY
48
-
49
- ### v0.1.0 (2025-11-03)
50
- - Initial draft with core auth requirements
51
- ```
52
-
53
- ### Phase 2: TDD Implementation (2 hours)
54
-
55
- **RED: Write failing tests first**
56
-
57
- ```python
58
- # tests/test_auth.py
59
- import pytest
60
- from src.auth import signup, login, verify_email # @TEST:AUTH-001
61
- from src.models import User
62
-
63
- class TestSignup:
64
- """SPEC: User signup and verification workflow"""
65
-
66
- def test_signup_creates_user(self): # @TEST:AUTH-001
67
- """SPEC: The system shall create user account."""
68
- response = signup(email="user@example.com", password="securePass123")
69
-
70
- assert response["status"] == "created"
71
- user = User.find_by_email("user@example.com")
72
- assert user is not None
73
- assert user.verified is False
74
-
75
- def test_invalid_email_rejected(self): # @TEST:AUTH-001
76
- """SPEC: The system shall validate email format."""
77
- with pytest.raises(ValueError):
78
- signup(email="invalid-email", password="securePass123")
79
-
80
- def test_weak_password_rejected(self): # @TEST:AUTH-001
81
- """SPEC: Enforce 8-character minimum password length."""
82
- with pytest.raises(ValueError):
83
- signup(email="user@example.com", password="short")
84
-
85
- class TestLogin:
86
- """SPEC: User login and session management"""
87
-
88
- def test_successful_login(self): # @TEST:AUTH-001
89
- """SPEC: The system shall authenticate valid credentials."""
90
- user = create_test_user("user@example.com", "securePass123", verified=True)
91
-
92
- token = login(email="user@example.com", password="securePass123")
93
-
94
- assert token is not None
95
- assert isinstance(token, str)
96
-
97
- def test_failed_login_locks_account(self): # @TEST:AUTH-001
98
- """SPEC: WHEN login fails 3 times, lock account."""
99
- user = create_test_user("user@example.com", "securePass123", verified=True)
100
-
101
- for i in range(3):
102
- with pytest.raises(Exception):
103
- login(email="user@example.com", password="wrongPassword")
104
-
105
- assert user.locked is True
106
- assert user.locked_until is not None
107
- ```
108
-
109
- **GREEN: Minimal implementation that passes tests**
110
-
111
- ```python
112
- # src/auth.py
113
- from datetime import datetime, timedelta # @CODE:AUTH-001
114
- import bcrypt
115
- import jwt
116
- from src.models import User
117
- from src.email import send_verification_email
118
-
119
- def signup(email: str, password: str) -> dict: # @CODE:AUTH-001
120
- """Create new user account with email verification."""
121
- # Validate inputs
122
- if "@" not in email:
123
- raise ValueError("Invalid email")
124
- if len(password) < 8:
125
- raise ValueError("Password too short")
126
-
127
- # Hash password
128
- hashed = bcrypt.hashpw(password.encode(), bcrypt.gensalt(12))
129
-
130
- # Create user
131
- user = User.create(email=email, password_hash=hashed, verified=False)
132
-
133
- # Send verification email
134
- token = generate_verification_token(user.id)
135
- send_verification_email(email, token)
136
-
137
- return {"status": "created", "user_id": user.id}
138
-
139
- def login(email: str, password: str) -> str: # @CODE:AUTH-001
140
- """Authenticate user and return JWT token."""
141
- user = User.find_by_email(email)
142
- if not user:
143
- raise ValueError("Invalid credentials")
144
-
145
- if user.locked:
146
- raise ValueError("Account locked")
147
-
148
- # Verify password
149
- if not bcrypt.checkpw(password.encode(), user.password_hash):
150
- user.failed_attempts += 1
151
- if user.failed_attempts >= 3:
152
- user.locked = True
153
- user.locked_until = datetime.now() + timedelta(hours=1)
154
- user.save()
155
- raise ValueError("Invalid credentials")
156
-
157
- # Reset attempts and create token
158
- user.failed_attempts = 0
159
- token = jwt.encode({"user_id": user.id, "exp": datetime.utcnow() + timedelta(hours=1)}, "SECRET_KEY")
160
- user.save()
161
-
162
- return token
163
- ```
164
-
165
- **REFACTOR: Improve code quality**
166
-
167
- ```python
168
- # src/auth.py (refactored)
169
- from datetime import datetime, timedelta # @CODE:AUTH-001
170
- import bcrypt
171
- import jwt
172
- from typing import Dict, Optional
173
- from src.models import User
174
- from src.email import send_verification_email
175
- from src.config import Settings
176
-
177
- MAX_FAILED_ATTEMPTS = 3 # @CODE:AUTH-001
178
- LOCKOUT_DURATION_HOURS = 1 # @CODE:AUTH-001
179
- MIN_PASSWORD_LENGTH = 8 # @CODE:AUTH-001
180
-
181
- def _validate_email(email: str) -> None:
182
- """Validate email format."""
183
- if "@" not in email or "." not in email.split("@")[1]:
184
- raise ValueError("Invalid email format")
185
-
186
- def _validate_password(password: str) -> None:
187
- """Validate password strength."""
188
- if len(password) < MIN_PASSWORD_LENGTH:
189
- raise ValueError(f"Password must be at least {MIN_PASSWORD_LENGTH} characters")
190
-
191
- def signup(email: str, password: str) -> Dict[str, any]: # @CODE:AUTH-001
192
- """Create new user account with email verification.
193
-
194
- Args:
195
- email: User email address
196
- password: User password (min 8 chars)
197
-
198
- Returns:
199
- Dictionary with status and user_id
200
-
201
- Raises:
202
- ValueError: If email or password invalid
203
- """
204
- _validate_email(email)
205
- _validate_password(password)
206
-
207
- hashed = bcrypt.hashpw(password.encode(), bcrypt.gensalt(12))
208
- user = User.create(email=email, password_hash=hashed, verified=False)
209
-
210
- token = jwt.encode({"user_id": user.id, "type": "verify"}, Settings.SECRET_KEY)
211
- send_verification_email(email, token)
212
-
213
- return {"status": "created", "user_id": user.id}
214
-
215
- def login(email: str, password: str) -> str: # @CODE:AUTH-001
216
- """Authenticate user and return JWT token."""
217
- user = User.find_by_email(email)
218
- if not user:
219
- raise ValueError("Invalid credentials")
220
-
221
- if user.is_locked():
222
- raise ValueError("Account temporarily locked")
223
-
224
- if not bcrypt.checkpw(password.encode(), user.password_hash):
225
- _handle_failed_login(user)
226
- raise ValueError("Invalid credentials")
227
-
228
- _reset_login_attempts(user)
229
- token = jwt.encode({
230
- "user_id": user.id,
231
- "exp": datetime.utcnow() + timedelta(hours=1)
232
- }, Settings.SECRET_KEY)
233
-
234
- return token
235
-
236
- def _handle_failed_login(user: User) -> None:
237
- """Track failed login attempts."""
238
- user.failed_attempts += 1
239
- if user.failed_attempts >= MAX_FAILED_ATTEMPTS:
240
- user.locked_until = datetime.now() + timedelta(hours=LOCKOUT_DURATION_HOURS)
241
- user.save()
242
-
243
- def _reset_login_attempts(user: User) -> None:
244
- """Reset failed attempt counter on successful login."""
245
- user.failed_attempts = 0
246
- user.locked_until = None
247
- user.save()
248
- ```
249
-
250
- ### Phase 3: Sync Documentation (1 hour)
251
-
252
- **Update SPEC status**:
253
-
254
- ```yaml
255
- status: completed
256
- version: 1.0.0
257
- updated: 2025-11-03
258
- ```
259
-
260
- **Update README.md**:
261
-
262
- ```markdown
263
- ## Authentication
264
-
265
- User authentication system with email verification and brute-force protection.
266
-
267
- - Email signup with verification
268
- - JWT-based sessions
269
- - Automatic lockout after 3 failed attempts
270
- - See SPEC-AUTH-001 for requirements
271
- ```
272
-
273
- **Generate sync report**:
274
-
275
- ```bash
276
- rg '@(SPEC|TEST|CODE|DOC):AUTH-001' -n .moai/specs/ tests/ src/ docs/
277
-
278
- # Output:
279
- # .moai/specs/SPEC-AUTH-001/spec.md:@SPEC:AUTH-001
280
- # tests/test_auth.py:@TEST:AUTH-001 (4 matches)
281
- # src/auth.py:@CODE:AUTH-001 (5 matches)
282
- # README.md:SPEC-AUTH-001
283
-
284
- ✅ TAG chain verified: SPEC→TEST→CODE→DOC
285
- ```
286
-
287
- ## Example 2: Context Engineering in Action
288
-
289
- ### `/alfred:1-plan` Command
290
-
291
- Only load:
292
- ```
293
- ✅ .moai/project/product.md (150 KB)
294
- ✅ .moai/project/structure.md (50 KB)
295
-
296
- ❌ Skip: All SPEC files, analysis, reports
297
- ```
298
-
299
- Context saved: ~5 MB
300
-
301
- ### `/alfred:2-run` Command
302
-
303
- Load only:
304
- ```
305
- ✅ .moai/specs/SPEC-AUTH-001/spec.md (20 KB)
306
- ✅ development-guide.md (14 KB) ← This Skill!
307
-
308
- ❌ Skip: Other SPECs, unrelated docs, analysis
309
- ```
310
-
311
- Context saved: ~200 MB
312
-
313
- ## Example 3: TRUST 5 Validation Checklist
314
-
315
- ```markdown
316
- # AUTH-001 Implementation Verification
317
-
318
- ## T – Test-Driven (SPEC-Aligned)
319
- - [x] SPEC written with EARS format (5 patterns)
320
- - [x] RED: Tests written first, all fail
321
- - [x] GREEN: Minimal code passes all tests
322
- - [x] REFACTOR: Code improved, tests still pass
323
- - [x] @TAG chain complete: SPEC→TEST(4)→CODE(5)→README
324
-
325
- ## R – Readable
326
- - [x] Function names: signup(), login(), _validate_email()
327
- - [x] Variables: email, password, hashed, token
328
- - [x] Comments explain WHY: "bcrypt 12 rounds for security"
329
- - [x] Docstrings for public functions
330
- - [x] README updated
331
-
332
- ## U – Unified
333
- - [x] Naming: snake_case for functions, UPPER_CASE for constants
334
- - [x] Error handling: consistent ValueError usage
335
- - [x] Test structure: Arrange→Act→Assert pattern
336
- - [x] SPEC format: 5 EARS patterns used
337
- - [x] Documentation: SPEC→README→docstrings
338
-
339
- ## S – Secured
340
- - [x] No hardcoded secrets (use Settings.SECRET_KEY)
341
- - [x] Input validation: email, password format
342
- - [x] Error handling: Generic "Invalid credentials"
343
- - [x] Brute-force protection: 3 attempts → lockout
344
- - [x] Password hashing: bcrypt with 12 rounds
345
-
346
- ## E – Evaluated (≥85% Coverage)
347
- - [x] Test coverage: 92%
348
- - signup(): 95% (valid, invalid email, weak password)
349
- - login(): 89% (success, invalid, locked, failed attempts)
350
- - helper functions: 100%
351
- - [x] Edge cases: lockout expiration, token expiration
352
- - [x] Integration tests: signup→verify→login
353
-
354
- ✅ All TRUST 5 principles met!
355
- ```
@@ -1,239 +0,0 @@
1
- # Alfred Development Guide - Reference
2
-
3
- ## SPEC-First TDD Workflow Details
4
-
5
- ### Phase 1: SPEC (`/alfred:1-plan`)
6
-
7
- **Duration**: 30-60 minutes per feature
8
- **Output**: `.moai/specs/SPEC-{ID}/spec.md`
9
-
10
- #### EARS Requirement Patterns
11
-
12
- ```markdown
13
- ### Ubiquitous Requirements (Baseline)
14
- - The system shall provide user authentication via email.
15
- - The system shall validate email format before storage.
16
-
17
- ### Event-driven Requirements
18
- - WHEN a user clicks 'Sign Up', the system shall display the signup form.
19
- - WHEN signup is complete, the system shall send verification email.
20
- - WHEN verification email expires, the system shall invalidate token.
21
-
22
- ### State-driven Requirements
23
- - WHILE the user is unauthenticated, the system shall deny access to protected resources.
24
- - WHILE the session is active, the system shall allow request processing.
25
-
26
- ### Optional Features
27
- - WHERE the user enables 2FA, the system may require additional verification.
28
- - WHERE API quota remains, the system may allow batch operations.
29
-
30
- ### Constraints
31
- - IF password is invalid 3 times, the system shall lock the account.
32
- - IF rate limit exceeded, the system shall return 429 error.
33
- ```
34
-
35
- #### SPEC Metadata Required
36
-
37
- ```yaml
38
- id: AUTH-001
39
- title: "User Authentication System"
40
- version: 0.1.0
41
- status: active
42
- created: 2025-11-03
43
- updated: 2025-11-03
44
- author: @USERNAME
45
- priority: high
46
- ```
47
-
48
- ### Phase 2: TDD Implementation (`/alfred:2-run`)
49
-
50
- **Duration**: 2-4 hours per SPEC
51
-
52
- #### RED Phase (Failing Tests)
53
-
54
- ```python
55
- # tests/test_auth.py
56
- import pytest
57
- from src.auth import authenticate # @TEST:AUTH-001
58
-
59
- def test_invalid_password_denies_access(): # @TEST:AUTH-001
60
- """SPEC: IF password invalid 3 times, lock account"""
61
- user = create_test_user()
62
-
63
- with pytest.raises(AuthenticationError): # RED: Will fail
64
- for _ in range(3):
65
- authenticate(user.email, "wrong_password")
66
-
67
- assert user.account_locked # Then passes (GREEN)
68
- ```
69
-
70
- #### GREEN Phase (Minimal Implementation)
71
-
72
- ```python
73
- # src/auth.py
74
- from src.models import User # @CODE:AUTH-001
75
-
76
- def authenticate(email: str, password: str) -> User: # @CODE:AUTH-001
77
- """Authenticate user with email and password."""
78
- user = User.find_by_email(email)
79
-
80
- if not user.verify_password(password):
81
- user.failed_attempts += 1
82
- if user.failed_attempts >= 3:
83
- user.account_locked = True
84
- return None
85
-
86
- user.failed_attempts = 0
87
- return user
88
- ```
89
-
90
- #### REFACTOR Phase (Improve Code)
91
-
92
- ```python
93
- # Refactored: Better error handling and type hints
94
- from typing import Optional # @CODE:AUTH-001
95
- from src.models import User
96
- from src.exceptions import AuthenticationError
97
-
98
- MAX_FAILED_ATTEMPTS = 3 # @CODE:AUTH-001
99
-
100
- def authenticate(email: str, password: str) -> Optional[User]: # @CODE:AUTH-001
101
- """Authenticate user and manage attempt tracking."""
102
- user = User.find_by_email(email)
103
- if not user:
104
- raise AuthenticationError("User not found")
105
-
106
- if not user.verify_password(password):
107
- user.increment_failed_attempts(MAX_FAILED_ATTEMPTS)
108
- raise AuthenticationError("Invalid credentials")
109
-
110
- user.reset_failed_attempts()
111
- return user
112
- ```
113
-
114
- ### Phase 3: Documentation Sync (`/alfred:3-sync`)
115
-
116
- **Duration**: 30-60 minutes per SPEC
117
- **Actions**:
118
- 1. Verify all @TAG chains (SPEC→TEST→CODE→DOC)
119
- 2. Update README, CHANGELOG
120
- 3. Generate sync report
121
- 4. Create PR to develop
122
-
123
- ## Context Engineering: JIT Loading
124
-
125
- ### When to Load What
126
-
127
- **`/alfred:1-plan` command**:
128
- ```
129
- Always load:
130
- - .moai/project/product.md (project overview)
131
-
132
- Optional load:
133
- - .moai/project/structure.md (codebase layout)
134
- - .moai/project/tech.md (technology choices)
135
-
136
- Never load:
137
- - Individual SPEC files (load only candidates)
138
- ```
139
-
140
- **`/alfred:2-run` command**:
141
- ```
142
- Always load:
143
- - .moai/specs/SPEC-{ID}/spec.md (target SPEC)
144
-
145
- Optionally load:
146
- - development-guide.md (if testing TDD patterns)
147
- - SPEC-related files (if chained features)
148
-
149
- Never load:
150
- - Unrelated SPECs, docs, analysis files
151
- ```
152
-
153
- **`/alfred:3-sync` command**:
154
- ```
155
- Always load:
156
- - .moai/reports/sync-report.md (previous sync state)
157
-
158
- Optional load:
159
- - Changed SPEC files (only ones modified)
160
- - TAG validation results
161
-
162
- Never load:
163
- - Old sync reports (keep recent only)
164
- ```
165
-
166
- ## TRUST 5 Principles Checklist
167
-
168
- ### T – Test-Driven (SPEC-Aligned)
169
- - [ ] SPEC written with EARS format
170
- - [ ] RED phase: failing tests written first
171
- - [ ] GREEN phase: code passes all tests
172
- - [ ] REFACTOR: improved code still passes
173
- - [ ] @TAG chain: SPEC→TEST→CODE→DOC
174
-
175
- ### R – Readable
176
- - [ ] Variable names are descriptive
177
- - [ ] Functions do one thing
178
- - [ ] Comments explain WHY, not WHAT
179
- - [ ] Code follows language style guide
180
- - [ ] Documentation is current
181
-
182
- ### U – Unified
183
- - [ ] Consistent naming conventions
184
- - [ ] Same patterns across codebase
185
- - [ ] Shared language (EARS for specs)
186
- - [ ] Common test structure
187
- - [ ] Standardized documentation
188
-
189
- ### S – Secured
190
- - [ ] No hardcoded secrets
191
- - [ ] Input validation present
192
- - [ ] Error handling included
193
- - [ ] OWASP top 10 considered
194
- - [ ] Security review completed
195
-
196
- ### E – Evaluated (85%+ Coverage)
197
- - [ ] Test coverage ≥85%
198
- - [ ] All functions tested
199
- - [ ] Error paths covered
200
- - [ ] Edge cases included
201
- - [ ] Integration tests exist
202
-
203
- ## @TAG Chain Validation
204
-
205
- ```bash
206
- # Check all TAGs
207
- rg '@(SPEC|TEST|CODE|DOC):' -n .moai/specs/ tests/ src/ docs/
208
-
209
- # Find orphan SPECs (no @CODE references)
210
- rg '@SPEC:AUTH-001' -n .moai/specs/
211
- rg '@CODE:AUTH-001' -n src/ # Should have at least one
212
-
213
- # Find orphan CODE tags (SPEC missing)
214
- rg '@CODE:AUTH-001' -n src/
215
- rg '@SPEC:AUTH-001' -n .moai/specs/ # Should exist
216
- ```
217
-
218
- ## Common Commands
219
-
220
- ```bash
221
- # Start new SPEC
222
- mkdir -p .moai/specs/SPEC-AUTH-001
223
-
224
- # Check for duplicates
225
- rg "@SPEC:AUTH-001" .moai/specs/ # Should return 0-1 hits
226
-
227
- # List all SPECs by status
228
- rg "^status:" .moai/specs/SPEC-*/spec.md
229
-
230
- # Validate all YAML frontmatter
231
- for f in .moai/specs/SPEC-*/spec.md; do
232
- echo "Checking $f..."
233
- head -20 "$f" | grep -E "^(id|version|status|created|updated|author|priority):"
234
- done
235
-
236
- # Generate SPEC index
237
- echo "# SPEC Inventory" && \
238
- rg "^id:" .moai/specs/SPEC-*/spec.md | sed 's/:id:/: /'
239
- ```
@@ -1,113 +0,0 @@
1
- ---
2
- name: moai-alfred-ears-authoring
3
- version: 2.0.0
4
- created: 2025-10-22
5
- updated: 2025-10-22
6
- status: active
7
- description: EARS (Easy Approach to Requirements Syntax) authoring with 5 statement patterns for clear requirements.
8
- keywords: ['ears', 'requirements', 'specs', 'authoring']
9
- allowed-tools:
10
- - Read
11
- - Bash
12
- ---
13
-
14
- # Alfred Ears Authoring Skill
15
-
16
- ## Skill Metadata
17
-
18
- | Field | Value |
19
- | ----- | ----- |
20
- | **Skill Name** | moai-alfred-ears-authoring |
21
- | **Version** | 2.0.0 (2025-10-22) |
22
- | **Allowed tools** | Read (read_file), Bash (terminal) |
23
- | **Auto-load** | On demand when keywords detected |
24
- | **Tier** | Alfred |
25
-
26
- ---
27
-
28
- ## What It Does
29
-
30
- EARS (Easy Approach to Requirements Syntax) authoring with 5 statement patterns for clear requirements.
31
-
32
- **Key capabilities**:
33
- - ✅ Best practices enforcement for alfred domain
34
- - ✅ TRUST 5 principles integration
35
- - ✅ Latest tool versions (2025-10-22)
36
- - ✅ TDD workflow support
37
-
38
- ---
39
-
40
- ## When to Use
41
-
42
- **Automatic triggers**:
43
- - Related code discussions and file patterns
44
- - SPEC implementation (`/alfred:2-run`)
45
- - Code review requests
46
-
47
- **Manual invocation**:
48
- - Review code for TRUST 5 compliance
49
- - Design new features
50
- - Troubleshoot issues
51
-
52
- ---
53
-
54
- ## Inputs
55
-
56
- - Language-specific source directories
57
- - Configuration files
58
- - Test suites and sample data
59
-
60
- ## Outputs
61
-
62
- - Test/lint execution plan
63
- - TRUST 5 review checkpoints
64
- - Migration guidance
65
-
66
- ## Failure Modes
67
-
68
- - When required tools are not installed
69
- - When dependencies are missing
70
- - When test coverage falls below 85%
71
-
72
- ## Dependencies
73
-
74
- - Access to project files via Read/Bash tools
75
- - Integration with `moai-foundation-langs` for language detection
76
- - Integration with `moai-foundation-trust` for quality gates
77
-
78
- ---
79
-
80
- ## References (Latest Documentation)
81
-
82
- _Documentation links updated 2025-10-22_
83
-
84
- ---
85
-
86
- ## Changelog
87
-
88
- - **v2.0.0** (2025-10-22): Major update with latest tool versions, comprehensive best practices, TRUST 5 integration
89
- - **v1.0.0** (2025-03-29): Initial Skill release
90
-
91
- ---
92
-
93
- ## Works Well With
94
-
95
- - `moai-foundation-trust` (quality gates)
96
- - `moai-alfred-code-reviewer` (code review)
97
- - `moai-essentials-debug` (debugging support)
98
-
99
- ---
100
-
101
- ## Best Practices
102
-
103
- ✅ **DO**:
104
- - Follow alfred best practices
105
- - Use latest stable tool versions
106
- - Maintain test coverage ≥85%
107
- - Document all public APIs
108
-
109
- ❌ **DON'T**:
110
- - Skip quality gates
111
- - Use deprecated tools
112
- - Ignore security warnings
113
- - Mix testing frameworks