moai-adk 0.4.5__py3-none-any.whl → 0.20.1__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.
- moai_adk/__init__.py +1 -1
- moai_adk/__main__.py +74 -1
- moai_adk/cli/commands/__init__.py +1 -1
- moai_adk/cli/commands/analyze.py +119 -0
- moai_adk/cli/commands/backup.py +25 -1
- moai_adk/cli/commands/doctor.py +31 -5
- moai_adk/cli/commands/improve_user_experience.py +307 -0
- moai_adk/cli/commands/init.py +111 -10
- moai_adk/cli/commands/status.py +33 -3
- moai_adk/cli/commands/update.py +921 -130
- moai_adk/cli/commands/validate_links.py +120 -0
- moai_adk/cli/prompts/init_prompts.py +22 -87
- moai_adk/core/analysis/__init__.py +9 -0
- moai_adk/core/analysis/session_analyzer.py +388 -0
- moai_adk/core/analysis/tag_chain_analyzer.py +344 -0
- moai_adk/core/analysis/tag_chain_repair.py +879 -0
- moai_adk/core/config/__init__.py +19 -0
- moai_adk/core/config/migration.py +235 -0
- moai_adk/core/git/__init__.py +1 -1
- moai_adk/core/git/branch.py +1 -1
- moai_adk/core/git/commit.py +1 -1
- moai_adk/core/git/manager.py +1 -1
- moai_adk/core/issue_creator.py +313 -0
- moai_adk/core/mcp/setup.py +56 -0
- moai_adk/core/mcp/setup_old.py +296 -0
- moai_adk/core/project/backup_utils.py +1 -1
- moai_adk/core/project/checker.py +2 -2
- moai_adk/core/project/detector.py +211 -12
- moai_adk/core/project/initializer.py +85 -15
- moai_adk/core/project/phase_executor.py +76 -13
- moai_adk/core/project/validator.py +13 -13
- moai_adk/core/quality/__init__.py +1 -1
- moai_adk/core/quality/trust_checker.py +1 -1
- moai_adk/core/quality/validators/__init__.py +1 -1
- moai_adk/core/quality/validators/base_validator.py +1 -1
- moai_adk/core/tags/__init__.py +86 -0
- moai_adk/core/tags/auto_corrector.py +693 -0
- moai_adk/core/tags/ci_validator.py +463 -0
- moai_adk/core/tags/cli.py +283 -0
- moai_adk/core/tags/generator.py +109 -0
- moai_adk/core/tags/inserter.py +99 -0
- moai_adk/core/tags/mapper.py +126 -0
- moai_adk/core/tags/parser.py +76 -0
- moai_adk/core/tags/policy_validator.py +580 -0
- moai_adk/core/tags/pre_commit_validator.py +421 -0
- moai_adk/core/tags/reporter.py +956 -0
- moai_adk/core/tags/rollback_manager.py +525 -0
- moai_adk/core/tags/tags.py +149 -0
- moai_adk/core/tags/validator.py +897 -0
- moai_adk/core/template/__init__.py +1 -1
- moai_adk/core/template/backup.py +1 -1
- moai_adk/core/template/merger.py +50 -1
- moai_adk/core/template/processor.py +119 -13
- moai_adk/core/template_engine.py +268 -0
- moai_adk/templates/.claude/agents/alfred/backend-expert.md +348 -0
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +209 -944
- moai_adk/templates/.claude/agents/alfred/database-expert.md +352 -0
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +34 -5
- moai_adk/templates/.claude/agents/alfred/devops-expert.md +464 -0
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +38 -8
- moai_adk/templates/.claude/agents/alfred/format-expert.md +469 -0
- moai_adk/templates/.claude/agents/alfred/frontend-expert.md +357 -0
- moai_adk/templates/.claude/agents/alfred/git-manager.md +128 -9
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +104 -6
- moai_adk/templates/.claude/agents/alfred/project-manager.md +88 -16
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +36 -9
- moai_adk/templates/.claude/agents/alfred/security-expert.md +270 -0
- moai_adk/templates/.claude/agents/alfred/skill-factory.md +865 -0
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +214 -43
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +111 -9
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +309 -160
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +36 -7
- moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +605 -0
- moai_adk/templates/.claude/commands/alfred/0-project.md +393 -966
- moai_adk/templates/.claude/commands/alfred/1-plan.md +651 -367
- moai_adk/templates/.claude/commands/alfred/2-run.md +388 -241
- moai_adk/templates/.claude/commands/alfred/3-sync.md +1921 -410
- moai_adk/templates/.claude/commands/alfred/9-feedback.md +153 -0
- moai_adk/templates/.claude/commands/alfred/release-new.md +3604 -0
- moai_adk/templates/.claude/hooks/alfred/core/project.py +484 -20
- moai_adk/templates/.claude/hooks/alfred/core/timeout.py +136 -0
- moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +108 -0
- moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +198 -0
- moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +14 -6
- moai_adk/templates/.claude/hooks/alfred/post_tool__enable_streaming_ui.py +50 -0
- moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +93 -0
- moai_adk/templates/.claude/hooks/alfred/post_tool__tag_auto_corrector.py +407 -0
- moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +99 -0
- moai_adk/templates/.claude/hooks/alfred/pre_tool__realtime_tag_monitor.py +335 -0
- moai_adk/templates/.claude/hooks/alfred/pre_tool__tag_policy_validator.py +325 -0
- moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +93 -0
- moai_adk/templates/.claude/hooks/alfred/session_start__auto_cleanup.py +580 -0
- moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +298 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +170 -0
- moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/checkpoint.py +3 -3
- moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/context.py +5 -5
- moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +749 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +230 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +198 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +21 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/daily_analysis.py +351 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +154 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +174 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +87 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +61 -0
- moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +111 -0
- moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +1 -0
- moai_adk/templates/.claude/hooks/alfred/utils/hook_config.py +94 -0
- moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +161 -0
- moai_adk/templates/.claude/output-styles/alfred/alfred-moai-adk-beginner.md +267 -0
- moai_adk/templates/.claude/output-styles/alfred/keating-personal-tutor.md +440 -0
- moai_adk/templates/.claude/output-styles/alfred/r2d2-agentic-coding.md +583 -0
- moai_adk/templates/.claude/settings.json +96 -14
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +70 -0
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +62 -0
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/reference.md +242 -0
- moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/SKILL.md +237 -0
- moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/examples.md +871 -0
- moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/reference.md +653 -0
- moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/README.md +162 -0
- moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/SKILL.md +227 -0
- moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/examples.md +354 -0
- moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/reference.md +158 -0
- moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/SKILL.md +179 -79
- moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/examples.md +117 -0
- moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/scripts/pre-review-check.sh +62 -0
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +132 -0
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/reference.md +444 -0
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +62 -0
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +405 -0
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +51 -0
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +355 -0
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +239 -0
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +323 -0
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +286 -0
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +126 -0
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +229 -0
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +4 -0
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +150 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +87 -73
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-personas/README.md +42 -0
- moai_adk/templates/.claude/skills/moai-alfred-personas/SKILL.md +429 -0
- moai_adk/templates/.claude/skills/moai-alfred-personas/examples.md +520 -0
- moai_adk/templates/.claude/skills/moai-alfred-personas/reference.md +405 -0
- moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +89 -0
- moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +122 -0
- moai_adk/templates/.claude/skills/moai-alfred-practices/reference.md +369 -0
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +508 -0
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +481 -0
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +100 -0
- moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +77 -0
- moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +265 -0
- moai_adk/templates/.claude/skills/moai-alfred-rules/reference.md +539 -0
- moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +320 -0
- moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +4 -0
- moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +84 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +137 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +219 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples/validate-spec.sh +161 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +541 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +622 -0
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +19 -0
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +4 -0
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +211 -0
- moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +288 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +269 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +298 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +307 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +252 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +199 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +316 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +263 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/CHECKLIST.md +482 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/EXAMPLES.md +303 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/METADATA.md +477 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL.md +273 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/STRUCTURE.md +583 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/WEB-RESEARCH.md +526 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/reference.md +608 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/generate-structure.sh +328 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/validate-skill.sh +312 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/examples-template.md +285 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/reference-template.md +278 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/scripts-template.sh +303 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +291 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
- moai_adk/templates/.claude/skills/moai-change-logger/SKILL.md +563 -0
- moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +802 -0
- moai_adk/templates/.claude/skills/moai-design-systems/examples.md +1238 -0
- moai_adk/templates/.claude/skills/moai-design-systems/reference.md +673 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +234 -43
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +97 -69
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +97 -72
- moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +97 -74
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +98 -74
- moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +102 -73
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +97 -73
- moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +97 -67
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +97 -79
- moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +97 -71
- moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +265 -64
- moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1064 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1047 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +87 -78
- moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +87 -70
- moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +87 -86
- moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +80 -62
- moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +207 -50
- moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +90 -71
- moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +78 -58
- moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +78 -51
- moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/.!11330!examples.md +0 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +253 -32
- moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
- moai_adk/templates/.claude/skills/moai-jit-docs-enhanced/SKILL.md +460 -0
- moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +98 -74
- moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +98 -76
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +2358 -70
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +2962 -68
- moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +1898 -70
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +1465 -68
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +2364 -66
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +1630 -69
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +89 -61
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +735 -66
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +97 -73
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +98 -73
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +1834 -70
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +99 -74
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +97 -74
- moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +98 -74
- moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +1959 -69
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-template/SKILL.md +348 -0
- moai_adk/templates/.claude/skills/moai-lang-template/VARIABLES.md +98 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +1230 -66
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
- moai_adk/templates/.claude/skills/moai-learning-optimizer/SKILL.md +575 -0
- moai_adk/templates/.claude/skills/moai-project-batch-questions/README.md +50 -0
- moai_adk/templates/.claude/skills/moai-project-batch-questions/SKILL.md +304 -0
- moai_adk/templates/.claude/skills/moai-project-batch-questions/examples.md +417 -0
- moai_adk/templates/.claude/skills/moai-project-batch-questions/reference.md +704 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/README.md +87 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/SKILL.md +552 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/examples.md +1109 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/reference.md +514 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/validate.py +106 -0
- moai_adk/templates/.claude/skills/moai-project-documentation/README.md +11 -0
- moai_adk/templates/.claude/skills/moai-project-documentation/SKILL.md +622 -0
- moai_adk/templates/.claude/skills/moai-project-documentation/examples.md +20 -0
- moai_adk/templates/.claude/skills/moai-project-documentation/reference.md +12 -0
- moai_adk/templates/.claude/skills/moai-project-language-initializer/README.md +152 -0
- moai_adk/templates/.claude/skills/moai-project-language-initializer/SKILL.md +285 -0
- moai_adk/templates/.claude/skills/moai-project-language-initializer/examples.md +333 -0
- moai_adk/templates/.claude/skills/moai-project-language-initializer/reference.md +386 -0
- moai_adk/templates/.claude/skills/moai-project-template-optimizer/README.md +49 -0
- moai_adk/templates/.claude/skills/moai-project-template-optimizer/SKILL.md +319 -0
- moai_adk/templates/.claude/skills/moai-project-template-optimizer/examples.md +58 -0
- moai_adk/templates/.claude/skills/moai-project-template-optimizer/reference.md +123 -0
- moai_adk/templates/.claude/skills/moai-session-info/SKILL.md +314 -0
- moai_adk/templates/.claude/skills/moai-streaming-ui/SKILL.md +552 -0
- moai_adk/templates/.claude/skills/moai-tag-policy-validator/SKILL.md +570 -0
- moai_adk/templates/.git-hooks/pre-commit +66 -0
- moai_adk/templates/.git-hooks/pre-push +255 -0
- moai_adk/templates/.github/workflows/c-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/cpp-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/csharp-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/dart-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/go-tag-validation.yml +130 -0
- moai_adk/templates/.github/workflows/java-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/javascript-tag-validation.yml +135 -0
- moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/moai-gitflow.yml +166 -3
- moai_adk/templates/.github/workflows/moai-release-create.yml +100 -0
- moai_adk/templates/.github/workflows/moai-release-pipeline.yml +188 -0
- moai_adk/templates/.github/workflows/php-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/python-tag-validation.yml +118 -0
- moai_adk/templates/.github/workflows/release.yml +118 -0
- moai_adk/templates/.github/workflows/ruby-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/rust-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/shell-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/spec-issue-sync.yml +338 -0
- moai_adk/templates/.github/workflows/swift-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/tag-report.yml +269 -0
- moai_adk/templates/.github/workflows/tag-validation.yml +186 -0
- moai_adk/templates/.github/workflows/typescript-tag-validation.yml +154 -0
- moai_adk/templates/.mcp.json +31 -0
- moai_adk/templates/.moai/config.json +80 -7
- moai_adk/templates/CLAUDE.md +562 -546
- moai_adk/utils/banner.py +5 -5
- moai_adk/utils/common.py +294 -0
- moai_adk/utils/link_validator.py +235 -0
- moai_adk/utils/logger.py +8 -8
- moai_adk/utils/user_experience.py +451 -0
- moai_adk-0.20.1.dist-info/METADATA +233 -0
- moai_adk-0.20.1.dist-info/RECORD +404 -0
- moai_adk/templates/.claude/hooks/alfred/README.md +0 -230
- moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -156
- moai_adk/templates/.claude/hooks/alfred/core/__init__.py +0 -85
- moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +0 -25
- moai_adk/templates/.claude/hooks/alfred/handlers/session.py +0 -92
- moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +0 -70
- moai_adk/templates/.claude/hooks/alfred/handlers/user.py +0 -41
- moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +0 -636
- moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +0 -692
- moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +0 -470
- moai_adk/templates/.claude/skills/moai-alfred-debugger-pro/SKILL.md +0 -103
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -103
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -95
- moai_adk/templates/.claude/skills/moai-alfred-performance-optimizer/SKILL.md +0 -105
- moai_adk/templates/.claude/skills/moai-alfred-refactoring-coach/SKILL.md +0 -97
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -97
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -90
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -99
- moai_adk/templates/.claude/skills/moai-alfred-tui-survey/SKILL.md +0 -87
- moai_adk/templates/.claude/skills/moai-alfred-tui-survey/examples.md +0 -62
- moai_adk/templates/.claude/skills/moai-claude-code/SKILL.md +0 -94
- moai_adk/templates/.claude/skills/moai-claude-code/examples.md +0 -513
- moai_adk/templates/.claude/skills/moai-claude-code/reference.md +0 -433
- moai_adk/templates/.claude/skills/moai-claude-code/templates/agent-full.md +0 -332
- moai_adk/templates/.claude/skills/moai-claude-code/templates/command-full.md +0 -384
- moai_adk/templates/.claude/skills/moai-claude-code/templates/plugin-full.json +0 -363
- moai_adk/templates/.claude/skills/moai-claude-code/templates/settings-full.json +0 -595
- moai_adk/templates/.claude/skills/moai-claude-code/templates/skill-full.md +0 -496
- moai_adk/templates/.claude/skills/moai-lang-clojure/SKILL.md +0 -100
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +0 -99
- moai_adk/templates/.claude/skills/moai-lang-haskell/SKILL.md +0 -100
- moai_adk/templates/.claude/skills/moai-lang-julia/SKILL.md +0 -98
- moai_adk/templates/.claude/skills/moai-lang-lua/SKILL.md +0 -98
- moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -69
- moai_adk/templates/.moai/memory/development-guide.md +0 -344
- moai_adk/templates/.moai/memory/gitflow-protection-policy.md +0 -220
- moai_adk/templates/.moai/memory/spec-metadata.md +0 -356
- moai_adk/templates/.moai/project/product.md +0 -161
- moai_adk/templates/.moai/project/structure.md +0 -156
- moai_adk/templates/.moai/project/tech.md +0 -227
- moai_adk/templates/__init__.py +0 -2
- moai_adk-0.4.5.dist-info/METADATA +0 -369
- moai_adk-0.4.5.dist-info/RECORD +0 -152
- {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/WHEEL +0 -0
- {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,622 @@
|
|
|
1
|
+
# SPEC Authoring Reference
|
|
2
|
+
|
|
3
|
+
## Complete Metadata Field Reference
|
|
4
|
+
|
|
5
|
+
### Seven Required Fields
|
|
6
|
+
|
|
7
|
+
#### 1. `id` – Unique SPEC Identifier
|
|
8
|
+
|
|
9
|
+
**Format**: `<DOMAIN>-<NUMBER>`
|
|
10
|
+
|
|
11
|
+
**Rules**:
|
|
12
|
+
- Immutable after assignment
|
|
13
|
+
- Use uppercase domain names (e.g., `AUTH`, `PAYMENT`, `CONFIG`)
|
|
14
|
+
- Three-digit numbers (001–999)
|
|
15
|
+
- Check for duplicates: `rg "@SPEC:AUTH-001" -n .moai/specs/`
|
|
16
|
+
|
|
17
|
+
**Examples**:
|
|
18
|
+
- `AUTH-001` (authentication)
|
|
19
|
+
- `INSTALLER-SEC-001` (installer security)
|
|
20
|
+
- `TRUST-001` (TRUST principles)
|
|
21
|
+
- `CONFIG-001` (configuration schema)
|
|
22
|
+
|
|
23
|
+
**Directory Structure**:
|
|
24
|
+
```
|
|
25
|
+
.moai/specs/SPEC-AUTH-001/
|
|
26
|
+
├── spec.md # Main SPEC document
|
|
27
|
+
├── diagrams/ # Optional: architecture diagrams
|
|
28
|
+
└── examples/ # Optional: code examples
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
#### 2. `version` – Semantic Versioning
|
|
32
|
+
|
|
33
|
+
**Format**: `MAJOR.MINOR.PATCH`
|
|
34
|
+
|
|
35
|
+
**Lifecycle**:
|
|
36
|
+
|
|
37
|
+
| Version | Status | Description | Trigger |
|
|
38
|
+
|---------|--------|-------------|---------|
|
|
39
|
+
| `0.0.1` | draft | Initial draft | SPEC creation |
|
|
40
|
+
| `0.0.x` | draft | Draft improvements | Content editing |
|
|
41
|
+
| `0.1.0` | completed | Implementation complete | TDD finished + `/alfred:3-sync` |
|
|
42
|
+
| `0.1.x` | completed | Bug fixes, doc updates | Post-implementation patches |
|
|
43
|
+
| `0.x.0` | completed | Feature additions | Minor enhancements |
|
|
44
|
+
| `1.0.0` | completed | Production stable | Stakeholder approval |
|
|
45
|
+
|
|
46
|
+
**Version Update Example**:
|
|
47
|
+
```markdown
|
|
48
|
+
## HISTORY
|
|
49
|
+
|
|
50
|
+
### v0.2.0 (2025-11-15)
|
|
51
|
+
- **ADDED**: Multi-factor authentication support
|
|
52
|
+
- **CHANGED**: Token expiration extended from 15 to 30 minutes
|
|
53
|
+
- **AUTHOR**: @YourHandle
|
|
54
|
+
|
|
55
|
+
### v0.1.0 (2025-10-30)
|
|
56
|
+
- **COMPLETED**: TDD implementation finished
|
|
57
|
+
- **EVIDENCE**: Commits 4c66076, 34e1bd9
|
|
58
|
+
- **TEST COVERAGE**: 89.13%
|
|
59
|
+
|
|
60
|
+
### v0.0.2 (2025-10-25)
|
|
61
|
+
- **REFINED**: Added password reset flow requirements
|
|
62
|
+
- **AUTHOR**: @YourHandle
|
|
63
|
+
|
|
64
|
+
### v0.0.1 (2025-10-23)
|
|
65
|
+
- **INITIAL**: JWT authentication SPEC draft created
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
#### 3. `status` – Progress State
|
|
69
|
+
|
|
70
|
+
**Values**: `draft` | `active` | `completed` | `deprecated`
|
|
71
|
+
|
|
72
|
+
**Lifecycle Flow**:
|
|
73
|
+
```
|
|
74
|
+
draft → active → completed → [deprecated]
|
|
75
|
+
↓ ↓ ↓
|
|
76
|
+
/alfred:1-plan /alfred:2-run /alfred:3-sync
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Transitions**:
|
|
80
|
+
- `draft`: Authoring phase (v0.0.x)
|
|
81
|
+
- `active`: Implementation in progress (v0.0.x → v0.1.0)
|
|
82
|
+
- `completed`: Implementation finished (v0.1.0+)
|
|
83
|
+
- `deprecated`: Marked for removal
|
|
84
|
+
|
|
85
|
+
#### 4. `created` – Creation Date
|
|
86
|
+
|
|
87
|
+
**Format**: `YYYY-MM-DD`
|
|
88
|
+
|
|
89
|
+
**Rules**:
|
|
90
|
+
- Set once, never changed
|
|
91
|
+
- ISO 8601 date format
|
|
92
|
+
- Initial draft date
|
|
93
|
+
|
|
94
|
+
**Example**: `created: 2025-10-29`
|
|
95
|
+
|
|
96
|
+
#### 5. `updated` – Last Modified Date
|
|
97
|
+
|
|
98
|
+
**Format**: `YYYY-MM-DD`
|
|
99
|
+
|
|
100
|
+
**Rules**:
|
|
101
|
+
- Update on every content change
|
|
102
|
+
- Initially same as `created`
|
|
103
|
+
- Reflects latest edit date
|
|
104
|
+
|
|
105
|
+
**Update Pattern**:
|
|
106
|
+
```yaml
|
|
107
|
+
created: 2025-10-29 # Never change
|
|
108
|
+
updated: 2025-10-31 # Update on edit
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
#### 6. `author` – Primary Author
|
|
112
|
+
|
|
113
|
+
**Format**: `@{GitHubHandle}`
|
|
114
|
+
|
|
115
|
+
**Rules**:
|
|
116
|
+
- Single value (not an array)
|
|
117
|
+
- @ prefix required
|
|
118
|
+
- Case-sensitive (e.g., `@Goos`, not `@goos`)
|
|
119
|
+
- Additional contributors documented in HISTORY section
|
|
120
|
+
|
|
121
|
+
**Examples**:
|
|
122
|
+
```yaml
|
|
123
|
+
# Correct
|
|
124
|
+
author: @Goos
|
|
125
|
+
|
|
126
|
+
# Incorrect
|
|
127
|
+
author: goos # Missing @
|
|
128
|
+
authors: [@Goos] # Array not allowed
|
|
129
|
+
author: @goos # Case mismatch
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
#### 7. `priority` – Task Priority
|
|
133
|
+
|
|
134
|
+
**Values**: `critical` | `high` | `medium` | `low`
|
|
135
|
+
|
|
136
|
+
**Guidelines**:
|
|
137
|
+
|
|
138
|
+
| Priority | Description | Examples |
|
|
139
|
+
|----------|-------------|----------|
|
|
140
|
+
| `critical` | Production blocker, security vulnerability | Security patches, critical bugs |
|
|
141
|
+
| `high` | Major features, core functionality | Authentication, payment systems |
|
|
142
|
+
| `medium` | Improvements, enhancements | UI polish, performance optimization |
|
|
143
|
+
| `low` | Nice-to-have, documentation | README updates, minor refactoring |
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
### Nine Optional Fields
|
|
148
|
+
|
|
149
|
+
#### 8. `category` – Change Type
|
|
150
|
+
|
|
151
|
+
**Values**: `feature` | `bugfix` | `refactor` | `security` | `docs` | `perf`
|
|
152
|
+
|
|
153
|
+
**Usage**:
|
|
154
|
+
```yaml
|
|
155
|
+
category: feature # New capability
|
|
156
|
+
category: bugfix # Defect resolution
|
|
157
|
+
category: refactor # Code structure improvement
|
|
158
|
+
category: security # Security enhancement
|
|
159
|
+
category: docs # Documentation update
|
|
160
|
+
category: perf # Performance optimization
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
#### 9. `labels` – Classification Tags
|
|
164
|
+
|
|
165
|
+
**Format**: String array
|
|
166
|
+
|
|
167
|
+
**Purpose**: Search, filtering, grouping
|
|
168
|
+
|
|
169
|
+
**Best Practices**:
|
|
170
|
+
- Use lowercase, kebab-case
|
|
171
|
+
- 2-5 labels per SPEC
|
|
172
|
+
- Avoid duplication with `category`
|
|
173
|
+
|
|
174
|
+
**Examples**:
|
|
175
|
+
```yaml
|
|
176
|
+
labels:
|
|
177
|
+
- authentication
|
|
178
|
+
- jwt
|
|
179
|
+
- security
|
|
180
|
+
|
|
181
|
+
labels:
|
|
182
|
+
- performance
|
|
183
|
+
- optimization
|
|
184
|
+
- caching
|
|
185
|
+
|
|
186
|
+
labels:
|
|
187
|
+
- installer
|
|
188
|
+
- template
|
|
189
|
+
- cross-platform
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
#### 10-13. Relationship Fields (Dependency Graph)
|
|
193
|
+
|
|
194
|
+
##### `depends_on` – Required SPECs
|
|
195
|
+
|
|
196
|
+
**Meaning**: SPECs that must complete first
|
|
197
|
+
|
|
198
|
+
**Example**:
|
|
199
|
+
```yaml
|
|
200
|
+
depends_on:
|
|
201
|
+
- USER-001 # User model SPEC
|
|
202
|
+
- TOKEN-001 # Token generation SPEC
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Use Case**: Execution order, parallelization decisions
|
|
206
|
+
|
|
207
|
+
##### `blocks` – Blocked SPECs
|
|
208
|
+
|
|
209
|
+
**Meaning**: SPECs blocked until this SPEC completes
|
|
210
|
+
|
|
211
|
+
**Example**:
|
|
212
|
+
```yaml
|
|
213
|
+
blocks:
|
|
214
|
+
- AUTH-002 # OAuth integration waits for base auth
|
|
215
|
+
- PAYMENT-001 # Payment requires authentication
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
##### `related_specs` – Related SPECs
|
|
219
|
+
|
|
220
|
+
**Meaning**: Related items without direct dependencies
|
|
221
|
+
|
|
222
|
+
**Example**:
|
|
223
|
+
```yaml
|
|
224
|
+
related_specs:
|
|
225
|
+
- SESSION-001 # Session management (related but independent)
|
|
226
|
+
- AUDIT-001 # Audit logging (cross-cutting concern)
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
##### `related_issue` – Linked GitHub Issue
|
|
230
|
+
|
|
231
|
+
**Format**: Full GitHub issue URL
|
|
232
|
+
|
|
233
|
+
**Example**:
|
|
234
|
+
```yaml
|
|
235
|
+
related_issue: "https://github.com/modu-ai/moai-adk/issues/42"
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
#### 14-15. Scope Fields (Impact Analysis)
|
|
239
|
+
|
|
240
|
+
##### `scope.packages` – Affected Packages
|
|
241
|
+
|
|
242
|
+
**Purpose**: Track which packages/modules are affected
|
|
243
|
+
|
|
244
|
+
**Example**:
|
|
245
|
+
```yaml
|
|
246
|
+
scope:
|
|
247
|
+
packages:
|
|
248
|
+
- src/core/auth
|
|
249
|
+
- src/core/token
|
|
250
|
+
- src/api/routes/auth
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
##### `scope.files` – Key Files
|
|
254
|
+
|
|
255
|
+
**Purpose**: Reference principal implementation files
|
|
256
|
+
|
|
257
|
+
**Example**:
|
|
258
|
+
```yaml
|
|
259
|
+
scope:
|
|
260
|
+
files:
|
|
261
|
+
- auth-service.ts
|
|
262
|
+
- token-manager.ts
|
|
263
|
+
- auth.routes.ts
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## EARS Requirement Syntax
|
|
269
|
+
|
|
270
|
+
### Five EARS Patterns
|
|
271
|
+
|
|
272
|
+
EARS (Easy Approach to Requirements Syntax) uses familiar keywords to provide systematic, testable requirements.
|
|
273
|
+
|
|
274
|
+
#### Pattern 1: Ubiquitous Requirements
|
|
275
|
+
|
|
276
|
+
**Template**: `The system shall [capability].`
|
|
277
|
+
|
|
278
|
+
**Purpose**: Always-active base functionality
|
|
279
|
+
|
|
280
|
+
**Characteristics**:
|
|
281
|
+
- No preconditions
|
|
282
|
+
- Always applicable
|
|
283
|
+
- Core functionality definition
|
|
284
|
+
|
|
285
|
+
**Examples**:
|
|
286
|
+
```markdown
|
|
287
|
+
**UR-001**: The system shall provide user authentication.
|
|
288
|
+
|
|
289
|
+
**UR-002**: The system shall support HTTPS connections.
|
|
290
|
+
|
|
291
|
+
**UR-003**: The system shall securely store user credentials.
|
|
292
|
+
|
|
293
|
+
**UR-004**: The mobile app size shall not exceed 50 MB.
|
|
294
|
+
|
|
295
|
+
**UR-005**: API response time shall not exceed 200ms for 95% of requests.
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
**Best Practices**:
|
|
299
|
+
- ✅ Use active voice
|
|
300
|
+
- ✅ Single responsibility per requirement
|
|
301
|
+
- ✅ Measurable outcomes
|
|
302
|
+
- ❌ Avoid ambiguous terms ("user-friendly", "fast")
|
|
303
|
+
|
|
304
|
+
#### Pattern 2: Event-driven Requirements
|
|
305
|
+
|
|
306
|
+
**Template**: `WHEN [trigger], the system shall [response].`
|
|
307
|
+
|
|
308
|
+
**Purpose**: Behavior triggered by specific events
|
|
309
|
+
|
|
310
|
+
**Characteristics**:
|
|
311
|
+
- Triggered by discrete events
|
|
312
|
+
- Single-shot responses
|
|
313
|
+
- Cause-effect relationships
|
|
314
|
+
|
|
315
|
+
**Examples**:
|
|
316
|
+
```markdown
|
|
317
|
+
**ER-001**: WHEN the user submits valid credentials, the system shall issue a JWT token.
|
|
318
|
+
|
|
319
|
+
**ER-002**: WHEN a token expires, the system shall return HTTP 401 Unauthorized.
|
|
320
|
+
|
|
321
|
+
**ER-003**: WHEN the user clicks "Forgot Password", the system shall send a password reset email.
|
|
322
|
+
|
|
323
|
+
**ER-004**: WHEN database connection fails, the system shall retry 3 times with exponential backoff.
|
|
324
|
+
|
|
325
|
+
**ER-005**: WHEN file upload exceeds 10 MB, the system shall reject the upload with an error message.
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**Advanced Pattern** (with postconditions):
|
|
329
|
+
```markdown
|
|
330
|
+
**ER-006**: WHEN payment transaction completes, the system shall send confirmation email, then update order status to "paid".
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
**Best Practices**:
|
|
334
|
+
- ✅ Single trigger per requirement
|
|
335
|
+
- ✅ Concrete, testable response
|
|
336
|
+
- ✅ Include error conditions
|
|
337
|
+
- ❌ Avoid chaining multiple WHEN clauses
|
|
338
|
+
|
|
339
|
+
#### Pattern 3: State-driven Requirements
|
|
340
|
+
|
|
341
|
+
**Template**: `WHILE [state], the system shall [behavior].`
|
|
342
|
+
|
|
343
|
+
**Purpose**: Persistent behavior during state
|
|
344
|
+
|
|
345
|
+
**Characteristics**:
|
|
346
|
+
- Active while state persists
|
|
347
|
+
- Continuous monitoring
|
|
348
|
+
- State-dependent behavior
|
|
349
|
+
|
|
350
|
+
**Examples**:
|
|
351
|
+
```markdown
|
|
352
|
+
**SR-001**: WHILE the user is in an authenticated state, the system shall permit access to protected routes.
|
|
353
|
+
|
|
354
|
+
**SR-002**: WHILE a token is valid, the system shall extract user ID from token claims.
|
|
355
|
+
|
|
356
|
+
**SR-003**: WHILE the system is in maintenance mode, the system shall return HTTP 503 Service Unavailable.
|
|
357
|
+
|
|
358
|
+
**SR-004**: WHILE battery level is below 20%, the mobile app shall reduce background sync frequency.
|
|
359
|
+
|
|
360
|
+
**SR-005**: WHILE file upload is in progress, the UI shall display a progress bar.
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
**Best Practices**:
|
|
364
|
+
- ✅ Clearly define state boundaries
|
|
365
|
+
- ✅ Specify state entry/exit conditions
|
|
366
|
+
- ✅ Test state transitions
|
|
367
|
+
- ❌ Avoid overlapping states
|
|
368
|
+
|
|
369
|
+
#### Pattern 4: Optional Features
|
|
370
|
+
|
|
371
|
+
**Template**: `WHERE [feature], the system can [behavior].`
|
|
372
|
+
|
|
373
|
+
**Purpose**: Feature-flag-based conditional functionality
|
|
374
|
+
|
|
375
|
+
**Characteristics**:
|
|
376
|
+
- Only applies when feature exists
|
|
377
|
+
- Configuration-dependent
|
|
378
|
+
- Product variant support
|
|
379
|
+
|
|
380
|
+
**Examples**:
|
|
381
|
+
```markdown
|
|
382
|
+
**OF-001**: WHERE multi-factor authentication is enabled, the system can require OTP verification after password confirmation.
|
|
383
|
+
|
|
384
|
+
**OF-002**: WHERE session logging is enabled, the system can record login timestamp and IP address.
|
|
385
|
+
|
|
386
|
+
**OF-003**: WHERE premium subscription is enabled, the system can permit unlimited API calls.
|
|
387
|
+
|
|
388
|
+
**OF-004**: WHERE dark mode is selected, the UI can render in dark color scheme.
|
|
389
|
+
|
|
390
|
+
**OF-005**: WHERE analytics consent is granted, the system can track user behavior.
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
**Best Practices**:
|
|
394
|
+
- ✅ Use "can" (permissive) not "shall" (mandatory)
|
|
395
|
+
- ✅ Clearly define feature flag condition
|
|
396
|
+
- ✅ Specify default behavior without feature
|
|
397
|
+
- ❌ Don't make core functionality optional
|
|
398
|
+
|
|
399
|
+
#### Pattern 5: Unwanted Behaviors
|
|
400
|
+
|
|
401
|
+
**Template**: `IF [condition], THEN the system shall [respond appropriately].`
|
|
402
|
+
|
|
403
|
+
**Purpose**: Error handling, quality gates, business rule enforcement
|
|
404
|
+
|
|
405
|
+
**Characteristics**:
|
|
406
|
+
- Conditional enforcement
|
|
407
|
+
- Quality gates and constraints
|
|
408
|
+
- Business rule validation
|
|
409
|
+
|
|
410
|
+
**Examples**:
|
|
411
|
+
```markdown
|
|
412
|
+
**UB-001**: IF a token has expired, THEN the system shall deny access and return HTTP 401.
|
|
413
|
+
|
|
414
|
+
**UB-002**: IF 5 or more login failures occur within 10 minutes, THEN the system shall temporarily lock the account.
|
|
415
|
+
|
|
416
|
+
**UB-003**: Response processing time shall not exceed 5 seconds.
|
|
417
|
+
|
|
418
|
+
**UB-004**: IF password length is less than 8 characters, THEN the system shall reject registration.
|
|
419
|
+
|
|
420
|
+
**UB-005**: IF API rate limit is exceeded, THEN the system shall return HTTP 429 Too Many Requests.
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
**Simplified Constraints** (no condition):
|
|
424
|
+
```markdown
|
|
425
|
+
**UB-006**: The system shall never store passwords in plaintext.
|
|
426
|
+
|
|
427
|
+
**UB-007**: All API endpoints except /health and /login shall require authentication.
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
**Best Practices**:
|
|
431
|
+
- ✅ Use SHALL for strict constraints, SHOULD for recommendations
|
|
432
|
+
- ✅ Quantify limits (time, size, count)
|
|
433
|
+
- ✅ Specify enforcement mechanism
|
|
434
|
+
- ❌ Avoid vague constraints
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
## EARS Pattern Selection Guide
|
|
439
|
+
|
|
440
|
+
| Pattern | Keyword | Use When | Context Example |
|
|
441
|
+
|---------|---------|----------|-----------------|
|
|
442
|
+
| **Ubiquitous** | shall | Core feature, always active | "System shall provide login" |
|
|
443
|
+
| **Event-driven** | WHEN | Response to specific event | "WHEN login fails, show error" |
|
|
444
|
+
| **State-driven** | WHILE | Continuous during state | "WHILE logged in, allow access" |
|
|
445
|
+
| **Optional** | WHERE | Feature flag or config | "WHERE premium enabled, unlock" |
|
|
446
|
+
| **Unwanted Behaviors** | IF-THEN | Error handling, quality gates | "IF expired, deny and return 401" |
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## HISTORY Section Format
|
|
451
|
+
|
|
452
|
+
The HISTORY section documents all SPEC versions and changes.
|
|
453
|
+
|
|
454
|
+
### Structure
|
|
455
|
+
|
|
456
|
+
```markdown
|
|
457
|
+
## HISTORY
|
|
458
|
+
|
|
459
|
+
### v{MAJOR}.{MINOR}.{PATCH} ({YYYY-MM-DD})
|
|
460
|
+
- **{CHANGE_TYPE}**: {Description}
|
|
461
|
+
- **AUTHOR**: {GitHub handle}
|
|
462
|
+
- **{Additional context}**: {Details}
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
### Change Types
|
|
466
|
+
|
|
467
|
+
| Type | Description | Example |
|
|
468
|
+
|------|-------------|---------|
|
|
469
|
+
| **INITIAL** | First draft | `v0.0.1: INITIAL draft created` |
|
|
470
|
+
| **REFINED** | Content update during draft | `v0.0.2: REFINED requirements based on review` |
|
|
471
|
+
| **COMPLETED** | Implementation finished | `v0.1.0: COMPLETED TDD implementation` |
|
|
472
|
+
| **ADDED** | New requirements/features | `v0.2.0: ADDED multi-factor authentication` |
|
|
473
|
+
| **CHANGED** | Modified requirement | `v0.2.0: CHANGED token expiration 15→30 minutes` |
|
|
474
|
+
| **FIXED** | Post-implementation bug fix | `v0.1.1: FIXED token refresh race condition` |
|
|
475
|
+
| **DEPRECATED** | Mark for removal | `v1.5.0: DEPRECATED legacy auth endpoint` |
|
|
476
|
+
|
|
477
|
+
### Complete HISTORY Example
|
|
478
|
+
|
|
479
|
+
```markdown
|
|
480
|
+
## HISTORY
|
|
481
|
+
|
|
482
|
+
### v0.2.0 (2025-11-15)
|
|
483
|
+
- **ADDED**: Multi-factor authentication via OTP
|
|
484
|
+
- **CHANGED**: Token expiration extended to 30 minutes based on user feedback
|
|
485
|
+
- **AUTHOR**: @Goos
|
|
486
|
+
- **REVIEWER**: @SecurityTeam
|
|
487
|
+
- **RATIONALE**: Maintain security posture while improving UX
|
|
488
|
+
|
|
489
|
+
### v0.1.1 (2025-11-01)
|
|
490
|
+
- **FIXED**: Token refresh race condition
|
|
491
|
+
- **EVIDENCE**: Commit 3f9a2b7
|
|
492
|
+
- **AUTHOR**: @Goos
|
|
493
|
+
|
|
494
|
+
### v0.1.0 (2025-10-30)
|
|
495
|
+
- **COMPLETED**: TDD implementation finished
|
|
496
|
+
- **AUTHOR**: @Goos
|
|
497
|
+
- **EVIDENCE**: Commits 4c66076, 34e1bd9, 1dec08f
|
|
498
|
+
- **TEST COVERAGE**: 89.13% (target: 85%)
|
|
499
|
+
- **QUALITY METRICS**:
|
|
500
|
+
- Test Pass Rate: 100% (42/42 tests)
|
|
501
|
+
- Linting: ruff ✅
|
|
502
|
+
- Type Checking: mypy ✅
|
|
503
|
+
- **TAG CHAIN**:
|
|
504
|
+
- @SPEC:AUTH-001: 1 occurrence
|
|
505
|
+
- @TEST:AUTH-001: 8 occurrences
|
|
506
|
+
- @CODE:AUTH-001: 12 occurrences
|
|
507
|
+
|
|
508
|
+
### v0.0.2 (2025-10-25)
|
|
509
|
+
- **REFINED**: Added password reset flow requirements
|
|
510
|
+
- **REFINED**: Clarified token lifetime constraints
|
|
511
|
+
- **AUTHOR**: @Goos
|
|
512
|
+
|
|
513
|
+
### v0.0.1 (2025-10-23)
|
|
514
|
+
- **INITIAL**: JWT authentication SPEC draft created
|
|
515
|
+
- **AUTHOR**: @Goos
|
|
516
|
+
- **SCOPE**: User authentication, token generation, token validation
|
|
517
|
+
- **CONTEXT**: Q4 2025 product roadmap requirements
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
---
|
|
521
|
+
|
|
522
|
+
## TAG Integration
|
|
523
|
+
|
|
524
|
+
### TAG Block Format
|
|
525
|
+
|
|
526
|
+
All SPEC documents start with a TAG block after the title:
|
|
527
|
+
|
|
528
|
+
```markdown
|
|
529
|
+
# @SPEC:AUTH-001: JWT Authentication System
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
### TAG Chain Reference
|
|
533
|
+
|
|
534
|
+
Link related TAGs in SPEC:
|
|
535
|
+
|
|
536
|
+
```markdown
|
|
537
|
+
## Traceability (@TAG Chain)
|
|
538
|
+
|
|
539
|
+
### TAG Chain Structure
|
|
540
|
+
```
|
|
541
|
+
@SPEC:AUTH-001 (this document)
|
|
542
|
+
↓
|
|
543
|
+
@TEST:AUTH-001 (tests/auth/service.test.ts)
|
|
544
|
+
↓
|
|
545
|
+
@CODE:AUTH-001 (src/auth/service.ts, src/auth/token-manager.ts)
|
|
546
|
+
↓
|
|
547
|
+
@DOC:AUTH-001 (docs/api/authentication.md)
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
### Validation Commands
|
|
551
|
+
```bash
|
|
552
|
+
# Validate SPEC TAG
|
|
553
|
+
rg '@SPEC:AUTH-001' -n .moai/specs/
|
|
554
|
+
|
|
555
|
+
# Check for duplicate IDs
|
|
556
|
+
rg '@SPEC:AUTH' -n .moai/specs/
|
|
557
|
+
rg 'AUTH-001' -n
|
|
558
|
+
|
|
559
|
+
# Scan full TAG chain
|
|
560
|
+
rg '@(SPEC|TEST|CODE|DOC):AUTH-001' -n
|
|
561
|
+
```
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
---
|
|
565
|
+
|
|
566
|
+
## Validation Commands
|
|
567
|
+
|
|
568
|
+
### Quick Validation Script
|
|
569
|
+
|
|
570
|
+
```bash
|
|
571
|
+
#!/usr/bin/env bash
|
|
572
|
+
# validate-spec.sh - SPEC validation helper
|
|
573
|
+
|
|
574
|
+
SPEC_DIR="$1"
|
|
575
|
+
|
|
576
|
+
echo "Validating SPEC: $SPEC_DIR"
|
|
577
|
+
|
|
578
|
+
# Check required fields
|
|
579
|
+
echo -n "Required fields... "
|
|
580
|
+
rg "^(id|version|status|created|updated|author|priority):" "$SPEC_DIR/spec.md" | wc -l | grep -q "7" && echo "✅" || echo "❌"
|
|
581
|
+
|
|
582
|
+
# Check author format
|
|
583
|
+
echo -n "Author format... "
|
|
584
|
+
rg "^author: @[A-Z]" "$SPEC_DIR/spec.md" > /dev/null && echo "✅" || echo "❌"
|
|
585
|
+
|
|
586
|
+
# Check version format
|
|
587
|
+
echo -n "Version format... "
|
|
588
|
+
rg "^version: 0\.\d+\.\d+" "$SPEC_DIR/spec.md" > /dev/null && echo "✅" || echo "❌"
|
|
589
|
+
|
|
590
|
+
# Check HISTORY section
|
|
591
|
+
echo -n "HISTORY section... "
|
|
592
|
+
rg "^## HISTORY" "$SPEC_DIR/spec.md" > /dev/null && echo "✅" || echo "❌"
|
|
593
|
+
|
|
594
|
+
# Check TAG block
|
|
595
|
+
echo -n "TAG block... "
|
|
596
|
+
rg "^# @SPEC:" "$SPEC_DIR/spec.md" > /dev/null && echo "✅" || echo "❌"
|
|
597
|
+
|
|
598
|
+
# Check for duplicate IDs
|
|
599
|
+
SPEC_ID=$(basename "$SPEC_DIR" | sed 's/SPEC-//')
|
|
600
|
+
DUPLICATE_COUNT=$(rg "@SPEC:$SPEC_ID" -n .moai/specs/ | wc -l)
|
|
601
|
+
echo -n "Duplicate ID check... "
|
|
602
|
+
[ "$DUPLICATE_COUNT" -eq 1 ] && echo "✅" || echo "❌ (found $DUPLICATE_COUNT occurrences)"
|
|
603
|
+
|
|
604
|
+
echo "Validation complete!"
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
### Usage
|
|
608
|
+
|
|
609
|
+
```bash
|
|
610
|
+
# Validate single SPEC
|
|
611
|
+
./validate-spec.sh .moai/specs/SPEC-AUTH-001
|
|
612
|
+
|
|
613
|
+
# Validate all SPECs
|
|
614
|
+
for spec in .moai/specs/SPEC-*/; do
|
|
615
|
+
./validate-spec.sh "$spec"
|
|
616
|
+
done
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
---
|
|
620
|
+
|
|
621
|
+
**Last Updated**: 2025-10-29
|
|
622
|
+
**Version**: 1.2.0
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moai-alfred-todowrite-pattern
|
|
3
|
+
description: "TodoWrite auto-initialization patterns from Plan agent, task tracking best practices, status management."
|
|
4
|
+
tier: Alfred
|
|
5
|
+
allowed-tools: "Read"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## What It Does
|
|
9
|
+
|
|
10
|
+
TodoWrite 자동 초기화, task 상태 관리, phase 구분 규칙을 정의합니다.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
- ✅ Task tracking 설정
|
|
15
|
+
- ✅ TodoWrite 상태 관리
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
Learn more in `reference.md`.
|