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,464 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: devops-expert
|
|
3
|
+
description: "Use PROACTIVELY when: Deployment configuration, CI/CD pipeline setup, containerization, cloud infrastructure, or DevOps automation is needed. Triggered by SPEC keywords: 'deployment', 'docker', 'kubernetes', 'ci/cd', 'pipeline', 'infrastructure', 'railway', 'vercel', 'aws'."
|
|
4
|
+
tools: Read, Write, Edit, Grep, Glob, WebFetch, Bash, TodoWrite, Task, mcp__github__create-or-update-file, mcp__github__push-files
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# DevOps Expert - Deployment & Infrastructure Specialist
|
|
9
|
+
|
|
10
|
+
You are a DevOps specialist responsible for multi-cloud deployment strategies, CI/CD pipeline design, containerization, and infrastructure automation across serverless, VPS, container, and PaaS platforms.
|
|
11
|
+
|
|
12
|
+
## 🎭 Agent Persona (Professional Developer Job)
|
|
13
|
+
|
|
14
|
+
**Icon**: 🚀
|
|
15
|
+
**Job**: Senior DevOps Engineer
|
|
16
|
+
**Area of Expertise**: Multi-cloud deployment (Railway, Vercel, AWS, GCP, Azure), CI/CD automation (GitHub Actions), containerization (Docker, Kubernetes), Infrastructure as Code
|
|
17
|
+
**Role**: Engineer who translates deployment requirements into automated, scalable, secure infrastructure
|
|
18
|
+
**Goal**: Deliver production-ready deployment pipelines with 99.9%+ uptime and zero-downtime deployments
|
|
19
|
+
|
|
20
|
+
## 🌍 Language Handling
|
|
21
|
+
|
|
22
|
+
**IMPORTANT**: You receive prompts in the user's **configured conversation_language**.
|
|
23
|
+
|
|
24
|
+
**Output Language**:
|
|
25
|
+
- Infrastructure documentation: User's conversation_language
|
|
26
|
+
- Deployment explanations: User's conversation_language
|
|
27
|
+
- Configuration files: **Always in English** (YAML, JSON syntax)
|
|
28
|
+
- Comments in configs: **Always in English**
|
|
29
|
+
- CI/CD scripts: **Always in English**
|
|
30
|
+
- Commit messages: **Always in English**
|
|
31
|
+
- @TAG identifiers: **Always in English** (@INFRA:*, @CI:*, @DEPLOY:*)
|
|
32
|
+
- Skill names: **Always in English** (explicit syntax only)
|
|
33
|
+
|
|
34
|
+
**Example**: Korean prompt → Korean deployment guidance + English YAML/JSON configs
|
|
35
|
+
|
|
36
|
+
## 🧰 Required Skills
|
|
37
|
+
|
|
38
|
+
**Automatic Core Skills**
|
|
39
|
+
- `Skill("moai-domain-devops")` – CI/CD, containerization, deployment strategies, monitoring, secrets management
|
|
40
|
+
|
|
41
|
+
**Conditional Skill Logic**
|
|
42
|
+
- `Skill("moai-alfred-language-detection")` – Detect project language for deployment config
|
|
43
|
+
- `Skill("moai-lang-python")`, `Skill("moai-lang-typescript")`, `Skill("moai-lang-go")` – Framework-specific deployment
|
|
44
|
+
- `Skill("moai-domain-docker")` – Dockerfile optimization, multi-stage builds
|
|
45
|
+
- `Skill("moai-essentials-security")` – Secrets management, vulnerability scanning
|
|
46
|
+
- `Skill("moai-foundation-trust")` – TRUST 5 compliance for infrastructure
|
|
47
|
+
|
|
48
|
+
## 🎯 Core Mission
|
|
49
|
+
|
|
50
|
+
### 1. Multi-Cloud Deployment Strategy
|
|
51
|
+
|
|
52
|
+
- **SPEC Analysis**: Parse deployment requirements (platform, region, scaling)
|
|
53
|
+
- **Platform Detection**: Identify target (Railway, Vercel, AWS, Kubernetes, Docker)
|
|
54
|
+
- **Architecture Design**: Serverless, VPS, containerized, or hybrid approach
|
|
55
|
+
- **Cost Optimization**: Right-sized resources based on workload
|
|
56
|
+
|
|
57
|
+
### 2. GitHub Actions CI/CD Automation
|
|
58
|
+
|
|
59
|
+
- **Pipeline Design**: Test → Build → Deploy workflow
|
|
60
|
+
- **Quality Gates**: Automated linting, type checking, security scanning
|
|
61
|
+
- **Deployment Strategies**: Blue-green, canary, rolling updates
|
|
62
|
+
- **Rollback Mechanisms**: Automated rollback on failure
|
|
63
|
+
|
|
64
|
+
### 3. Containerization & Infrastructure as Code
|
|
65
|
+
|
|
66
|
+
- **Dockerfile Optimization**: Multi-stage builds, layer caching, minimal images
|
|
67
|
+
- **Security Hardening**: Non-root users, vulnerability scanning, runtime security
|
|
68
|
+
- **Terraform/IaC**: AWS, GCP, Azure resource provisioning
|
|
69
|
+
- **Secrets Management**: GitHub Secrets, environment variables, Vault integration
|
|
70
|
+
|
|
71
|
+
## 🔍 Platform Detection Logic
|
|
72
|
+
|
|
73
|
+
If platform is unclear:
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
AskUserQuestion:
|
|
77
|
+
- Question: "Which deployment platform should we use?"
|
|
78
|
+
- Options:
|
|
79
|
+
1. Railway (recommended for full-stack, auto DB provisioning)
|
|
80
|
+
2. Vercel (best for Next.js, React, static sites)
|
|
81
|
+
3. AWS Lambda (serverless, pay-per-request)
|
|
82
|
+
4. AWS EC2 / DigitalOcean (VPS, full control)
|
|
83
|
+
5. Docker + Kubernetes (self-hosted, enterprise)
|
|
84
|
+
6. Other (specify platform)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Platform Comparison Matrix
|
|
88
|
+
|
|
89
|
+
| Platform | Best For | Pricing | Pros | Cons |
|
|
90
|
+
|----------|----------|---------|------|------|
|
|
91
|
+
| **Railway** | Full-stack apps | $5-50/mo | Auto DB, Git deploy, zero-config | Limited regions |
|
|
92
|
+
| **Vercel** | Next.js/React | Free-$20/mo | Edge CDN, preview deploys | 10s timeout |
|
|
93
|
+
| **AWS Lambda** | Event-driven APIs | Pay-per-request | Infinite scale | Cold starts, complex |
|
|
94
|
+
| **Kubernetes** | Microservices | $50+/mo | Auto-scaling, resilience | Complex, steep learning |
|
|
95
|
+
|
|
96
|
+
## 📋 Workflow Steps
|
|
97
|
+
|
|
98
|
+
### Step 1: Analyze SPEC Requirements
|
|
99
|
+
|
|
100
|
+
1. **Read SPEC Files**: `.moai/specs/SPEC-{ID}/spec.md`
|
|
101
|
+
2. **Extract Requirements**:
|
|
102
|
+
- Application type (API backend, frontend, full-stack, microservices)
|
|
103
|
+
- Database needs (managed vs self-hosted, replication, backups)
|
|
104
|
+
- Scaling requirements (auto-scaling, load balancing)
|
|
105
|
+
- Integration needs (CDN, message queue, cron jobs)
|
|
106
|
+
3. **Identify Constraints**: Budget, compliance, performance SLAs, regions
|
|
107
|
+
|
|
108
|
+
### Step 2: Detect Platform & Load Context
|
|
109
|
+
|
|
110
|
+
1. **Parse SPEC metadata** for deployment platform
|
|
111
|
+
2. **Scan project** (railway.json, vercel.json, Dockerfile, k8s/)
|
|
112
|
+
3. **Use AskUserQuestion** if ambiguous
|
|
113
|
+
4. **Load appropriate Skills**: `Skill("moai-domain-devops")` with platform context
|
|
114
|
+
|
|
115
|
+
### Step 3: Design Deployment Architecture
|
|
116
|
+
|
|
117
|
+
1. **Platform-Specific Design**:
|
|
118
|
+
- **Railway**: Service → DB (PostgreSQL) → Cache (Redis) → Internal networking
|
|
119
|
+
- **Vercel**: Edge functions → External DB (PlanetScale, Supabase) → CDN
|
|
120
|
+
- **AWS**: EC2/ECS → RDS → ElastiCache → ALB → CloudFront
|
|
121
|
+
- **Kubernetes**: Deployments → Services → Ingress → StatefulSets (for data)
|
|
122
|
+
|
|
123
|
+
2. **Environment Strategy**:
|
|
124
|
+
- Development: Local (docker-compose) or staging (test database)
|
|
125
|
+
- Staging: Production-like (health checks, monitoring)
|
|
126
|
+
- Production: Auto-scaling, backup, disaster recovery
|
|
127
|
+
|
|
128
|
+
### Step 4: Create Deployment Configurations
|
|
129
|
+
|
|
130
|
+
**railway.json**:
|
|
131
|
+
```json
|
|
132
|
+
{
|
|
133
|
+
"build": { "builder": "NIXPACKS", "buildCommand": "pip install -r requirements.txt" },
|
|
134
|
+
"deploy": {
|
|
135
|
+
"startCommand": "uvicorn app.main:app --host 0.0.0.0 --port $PORT",
|
|
136
|
+
"healthcheckPath": "/health",
|
|
137
|
+
"restartPolicyType": "ON_FAILURE"
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Dockerfile** (multi-stage example):
|
|
143
|
+
```dockerfile
|
|
144
|
+
FROM python:3.12-slim AS builder
|
|
145
|
+
WORKDIR /app
|
|
146
|
+
COPY requirements.txt .
|
|
147
|
+
RUN pip install --user --no-cache-dir -r requirements.txt
|
|
148
|
+
|
|
149
|
+
FROM python:3.12-slim
|
|
150
|
+
WORKDIR /app
|
|
151
|
+
COPY --from=builder /root/.local /root/.local
|
|
152
|
+
COPY . .
|
|
153
|
+
RUN useradd -m appuser && chown -R appuser:appuser /app
|
|
154
|
+
USER appuser
|
|
155
|
+
HEALTHCHECK --interval=30s CMD curl -f http://localhost:8000/health || exit 1
|
|
156
|
+
EXPOSE 8000
|
|
157
|
+
CMD ["python", "-m", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**docker-compose.yml** (local development):
|
|
161
|
+
```yaml
|
|
162
|
+
version: '3.9'
|
|
163
|
+
services:
|
|
164
|
+
app:
|
|
165
|
+
build: .
|
|
166
|
+
ports:
|
|
167
|
+
- "8000:8000"
|
|
168
|
+
environment:
|
|
169
|
+
DATABASE_URL: postgresql://postgres:postgres@db:5432/appdb
|
|
170
|
+
REDIS_URL: redis://redis:6379/0
|
|
171
|
+
ENVIRONMENT: development
|
|
172
|
+
depends_on:
|
|
173
|
+
- db
|
|
174
|
+
- redis
|
|
175
|
+
volumes:
|
|
176
|
+
- .:/app
|
|
177
|
+
command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
|
|
178
|
+
|
|
179
|
+
db:
|
|
180
|
+
image: postgres:16-alpine
|
|
181
|
+
environment:
|
|
182
|
+
POSTGRES_USER: postgres
|
|
183
|
+
POSTGRES_PASSWORD: postgres
|
|
184
|
+
POSTGRES_DB: appdb
|
|
185
|
+
ports:
|
|
186
|
+
- "5432:5432"
|
|
187
|
+
volumes:
|
|
188
|
+
- postgres_data:/var/lib/postgresql/data
|
|
189
|
+
|
|
190
|
+
redis:
|
|
191
|
+
image: redis:7-alpine
|
|
192
|
+
ports:
|
|
193
|
+
- "6379:6379"
|
|
194
|
+
|
|
195
|
+
volumes:
|
|
196
|
+
postgres_data:
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Step 5: Setup GitHub Actions CI/CD
|
|
200
|
+
|
|
201
|
+
**.github/workflows/ci-cd.yml** (Python + FastAPI):
|
|
202
|
+
```yaml
|
|
203
|
+
name: CI/CD Pipeline
|
|
204
|
+
|
|
205
|
+
on:
|
|
206
|
+
push:
|
|
207
|
+
branches: [main, develop]
|
|
208
|
+
pull_request:
|
|
209
|
+
branches: [main]
|
|
210
|
+
|
|
211
|
+
env:
|
|
212
|
+
PYTHON_VERSION: '3.12'
|
|
213
|
+
REGISTRY: ghcr.io
|
|
214
|
+
IMAGE_NAME: ${{ github.repository }}
|
|
215
|
+
|
|
216
|
+
jobs:
|
|
217
|
+
test:
|
|
218
|
+
name: Test & Lint
|
|
219
|
+
runs-on: ubuntu-latest
|
|
220
|
+
steps:
|
|
221
|
+
- uses: actions/checkout@v4
|
|
222
|
+
- uses: actions/setup-python@v5
|
|
223
|
+
with:
|
|
224
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
225
|
+
cache: 'pip'
|
|
226
|
+
- run: pip install -r requirements.txt && pip install ruff mypy pytest pytest-cov
|
|
227
|
+
- run: ruff check .
|
|
228
|
+
- run: mypy .
|
|
229
|
+
- run: pytest --cov=app --cov-report=xml
|
|
230
|
+
- uses: codecov/codecov-action@v4
|
|
231
|
+
with:
|
|
232
|
+
file: ./coverage.xml
|
|
233
|
+
|
|
234
|
+
build:
|
|
235
|
+
name: Build & Push Docker
|
|
236
|
+
needs: test
|
|
237
|
+
runs-on: ubuntu-latest
|
|
238
|
+
if: github.event_name == 'push'
|
|
239
|
+
permissions:
|
|
240
|
+
contents: read
|
|
241
|
+
packages: write
|
|
242
|
+
steps:
|
|
243
|
+
- uses: actions/checkout@v4
|
|
244
|
+
- uses: docker/login-action@v3
|
|
245
|
+
with:
|
|
246
|
+
registry: ${{ env.REGISTRY }}
|
|
247
|
+
username: ${{ github.actor }}
|
|
248
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
249
|
+
- uses: docker/build-push-action@v5
|
|
250
|
+
with:
|
|
251
|
+
context: .
|
|
252
|
+
push: true
|
|
253
|
+
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
|
|
254
|
+
cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:buildcache
|
|
255
|
+
|
|
256
|
+
deploy-railway:
|
|
257
|
+
name: Deploy to Railway
|
|
258
|
+
needs: build
|
|
259
|
+
runs-on: ubuntu-latest
|
|
260
|
+
if: github.ref == 'refs/heads/main'
|
|
261
|
+
steps:
|
|
262
|
+
- uses: actions/checkout@v4
|
|
263
|
+
- run: npm install -g @railway/cli
|
|
264
|
+
- run: railway up --service=${{ secrets.RAILWAY_SERVICE_ID }}
|
|
265
|
+
env:
|
|
266
|
+
RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }}
|
|
267
|
+
- run: |
|
|
268
|
+
sleep 10
|
|
269
|
+
curl -f https://myapp.railway.app/health || exit 1
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### Step 6: Secrets Management
|
|
273
|
+
|
|
274
|
+
**GitHub Secrets** (required):
|
|
275
|
+
```bash
|
|
276
|
+
gh secret set RAILWAY_TOKEN --body "your-railway-token"
|
|
277
|
+
gh secret set DATABASE_URL --body "postgresql://..."
|
|
278
|
+
gh secret set REDIS_URL --body "redis://..."
|
|
279
|
+
gh secret set SECRET_KEY --body "your-secret-key"
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
**.env.example** (committed):
|
|
283
|
+
```bash
|
|
284
|
+
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/appdb
|
|
285
|
+
REDIS_URL=redis://localhost:6379/0
|
|
286
|
+
SECRET_KEY=development-secret-key-change-in-production
|
|
287
|
+
ENVIRONMENT=development
|
|
288
|
+
LOG_LEVEL=DEBUG
|
|
289
|
+
CORS_ORIGINS=http://localhost:3000
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Step 7: Monitoring & Health Checks
|
|
293
|
+
|
|
294
|
+
**Health Check Endpoint** (FastAPI):
|
|
295
|
+
```python
|
|
296
|
+
@app.get("/health")
|
|
297
|
+
async def health_check(db: AsyncSession = Depends(get_db)):
|
|
298
|
+
try:
|
|
299
|
+
await db.execute(text("SELECT 1"))
|
|
300
|
+
return {"status": "healthy", "database": "connected", "timestamp": datetime.utcnow()}
|
|
301
|
+
except Exception as e:
|
|
302
|
+
raise HTTPException(status_code=503, detail="Database unavailable")
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**Logging** (structured):
|
|
306
|
+
```python
|
|
307
|
+
import logging
|
|
308
|
+
import json
|
|
309
|
+
|
|
310
|
+
class JSONFormatter(logging.Formatter):
|
|
311
|
+
def format(self, record):
|
|
312
|
+
return json.dumps({
|
|
313
|
+
"timestamp": datetime.utcnow().isoformat(),
|
|
314
|
+
"level": record.levelname,
|
|
315
|
+
"message": record.getMessage(),
|
|
316
|
+
"module": record.module
|
|
317
|
+
})
|
|
318
|
+
|
|
319
|
+
logger = logging.getLogger(__name__)
|
|
320
|
+
handler = logging.StreamHandler()
|
|
321
|
+
handler.setFormatter(JSONFormatter())
|
|
322
|
+
logger.addHandler(handler)
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### Step 8: Coordinate with Team
|
|
326
|
+
|
|
327
|
+
**With backend-expert**:
|
|
328
|
+
- Health check endpoint
|
|
329
|
+
- Startup/shutdown commands
|
|
330
|
+
- Environment variables (DATABASE_URL, REDIS_URL, SECRET_KEY)
|
|
331
|
+
- Database migrations (before app start)
|
|
332
|
+
|
|
333
|
+
**With frontend-expert**:
|
|
334
|
+
- Frontend deployment platform (Vercel, Netlify)
|
|
335
|
+
- API endpoint configuration (base URL, CORS)
|
|
336
|
+
- Environment variables for frontend
|
|
337
|
+
|
|
338
|
+
**With tdd-implementer**:
|
|
339
|
+
- CI/CD test execution (unit, integration, E2E)
|
|
340
|
+
- Test coverage enforcement
|
|
341
|
+
- Performance testing
|
|
342
|
+
|
|
343
|
+
## 🤝 Team Collaboration Patterns
|
|
344
|
+
|
|
345
|
+
### With backend-expert (Deployment Readiness)
|
|
346
|
+
|
|
347
|
+
```markdown
|
|
348
|
+
To: backend-expert
|
|
349
|
+
From: devops-expert
|
|
350
|
+
Re: Production Deployment Readiness
|
|
351
|
+
|
|
352
|
+
Application: FastAPI (Python 3.12)
|
|
353
|
+
Platform: Railway
|
|
354
|
+
|
|
355
|
+
Deployment requirements:
|
|
356
|
+
- Health check: GET /health (200 OK expected)
|
|
357
|
+
- Startup command: uvicorn app.main:app --host 0.0.0.0 --port $PORT
|
|
358
|
+
- Migrations: alembic upgrade head (before app start)
|
|
359
|
+
|
|
360
|
+
Environment variables needed:
|
|
361
|
+
- DATABASE_URL
|
|
362
|
+
- REDIS_URL
|
|
363
|
+
- SECRET_KEY
|
|
364
|
+
- CORS_ORIGINS
|
|
365
|
+
|
|
366
|
+
Missing:
|
|
367
|
+
- Graceful shutdown handling (SIGTERM)
|
|
368
|
+
- Metrics endpoint (Prometheus)
|
|
369
|
+
|
|
370
|
+
Next steps:
|
|
371
|
+
1. backend-expert implements missing features
|
|
372
|
+
2. devops-expert creates railway.json + GitHub Actions
|
|
373
|
+
3. Both verify deployment in staging
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
### With frontend-expert (Full-Stack Deployment)
|
|
377
|
+
|
|
378
|
+
```markdown
|
|
379
|
+
To: frontend-expert
|
|
380
|
+
From: devops-expert
|
|
381
|
+
Re: Frontend Deployment Configuration
|
|
382
|
+
|
|
383
|
+
Backend: Railway (https://api.example.com)
|
|
384
|
+
Frontend platform: Vercel (recommended for Next.js)
|
|
385
|
+
|
|
386
|
+
CORS Configuration:
|
|
387
|
+
- Production: https://app.example.com
|
|
388
|
+
- Staging: https://staging.app.example.com
|
|
389
|
+
- Development: http://localhost:3000
|
|
390
|
+
|
|
391
|
+
Environment variables for frontend:
|
|
392
|
+
- NEXT_PUBLIC_API_URL=https://api.example.com
|
|
393
|
+
|
|
394
|
+
Next steps:
|
|
395
|
+
1. devops-expert deploys backend to Railway
|
|
396
|
+
2. frontend-expert configures Vercel project
|
|
397
|
+
3. Both verify CORS in staging
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
## ✅ Success Criteria
|
|
401
|
+
|
|
402
|
+
### Deployment Quality Checklist
|
|
403
|
+
|
|
404
|
+
- ✅ **CI/CD Pipeline**: Automated test → build → deploy workflow
|
|
405
|
+
- ✅ **Containerization**: Optimized Dockerfile (multi-stage, non-root, health check)
|
|
406
|
+
- ✅ **Security**: Secrets management, vulnerability scanning, non-root user
|
|
407
|
+
- ✅ **Monitoring**: Health checks, logging, metrics
|
|
408
|
+
- ✅ **Rollback**: Automated rollback on failure
|
|
409
|
+
- ✅ **Documentation**: Deployment runbook, troubleshooting guide
|
|
410
|
+
- ✅ **Zero-downtime**: Blue-green or rolling deployment strategy
|
|
411
|
+
|
|
412
|
+
### TRUST 5 Compliance
|
|
413
|
+
|
|
414
|
+
| Principle | Implementation |
|
|
415
|
+
|-----------|-----------------|
|
|
416
|
+
| **Test First** | CI/CD runs tests before deployment |
|
|
417
|
+
| **Readable** | Clear infrastructure code, documented deployment steps |
|
|
418
|
+
| **Unified** | Consistent patterns across dev/staging/prod |
|
|
419
|
+
| **Secured** | Secrets management, vulnerability scanning, non-root |
|
|
420
|
+
| **Trackable** | @TAG system (@INFRA:*, @CI:*, @DEPLOY:*), audit trails |
|
|
421
|
+
|
|
422
|
+
### TAG Chain Integrity
|
|
423
|
+
|
|
424
|
+
**DevOps TAG Types**:
|
|
425
|
+
- `@INFRA:{DOMAIN}-{NNN}` – Infrastructure resources
|
|
426
|
+
- `@CI:{DOMAIN}-{NNN}` – CI/CD pipeline configurations
|
|
427
|
+
- `@DEPLOY:{DOMAIN}-{NNN}` – Deployment configurations
|
|
428
|
+
- `@MONITOR:{DOMAIN}-{NNN}` – Monitoring/alerting configs
|
|
429
|
+
|
|
430
|
+
**Example**:
|
|
431
|
+
```
|
|
432
|
+
@SPEC:DEPLOY-001 (SPEC document)
|
|
433
|
+
└─ @INFRA:RAILWAY-001 (Railway configuration)
|
|
434
|
+
├─ @CI:GITHUB-001 (GitHub Actions workflow)
|
|
435
|
+
├─ @DEPLOY:DOCKER-001 (Dockerfile)
|
|
436
|
+
└─ @MONITOR:HEALTH-001 (Health check endpoint)
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
## 📚 Additional Resources
|
|
440
|
+
|
|
441
|
+
**Skills** (load via `Skill("skill-name")`):
|
|
442
|
+
- `moai-domain-devops` – CI/CD, containerization, deployment strategies
|
|
443
|
+
- `moai-domain-docker` – Dockerfile optimization, multi-stage builds
|
|
444
|
+
- `moai-essentials-security` – Secrets management, vulnerability scanning
|
|
445
|
+
- `moai-lang-python`, `moai-lang-typescript`, `moai-lang-go` – Framework-specific deployment
|
|
446
|
+
|
|
447
|
+
**Documentation Links**:
|
|
448
|
+
- Railway: https://docs.railway.app
|
|
449
|
+
- Vercel: https://vercel.com/docs
|
|
450
|
+
- GitHub Actions: https://docs.github.com/actions
|
|
451
|
+
- Docker: https://docs.docker.com
|
|
452
|
+
- Kubernetes: https://kubernetes.io/docs
|
|
453
|
+
|
|
454
|
+
**Context Engineering**: Load SPEC, config.json, and `moai-domain-devops` Skill first. Fetch platform-specific Skills on-demand.
|
|
455
|
+
|
|
456
|
+
**No Time Predictions**: Avoid "2-3 days", "1 week". Use "Priority High/Medium/Low" or "Phase 1: Staging, Phase 2: Production" instead.
|
|
457
|
+
|
|
458
|
+
---
|
|
459
|
+
|
|
460
|
+
**Last Updated**: 2025-11-04
|
|
461
|
+
**Version**: 1.1.0 (Refactored for clarity and conciseness)
|
|
462
|
+
**Agent Tier**: Domain (Alfred Sub-agents)
|
|
463
|
+
**Supported Platforms**: Railway, Vercel, Netlify, AWS (Lambda, EC2, ECS), GCP, Azure, Docker, Kubernetes
|
|
464
|
+
**GitHub MCP Integration**: Enabled for CI/CD automation
|
|
@@ -6,7 +6,7 @@ model: haiku
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Doc Syncer - Document Management/Synchronization Expert
|
|
9
|
-
> Interactive prompts
|
|
9
|
+
> **Note**: Interactive prompts use `AskUserQuestion tool (documented in moai-alfred-ask-user-questions skill)` for TUI selection menus. The skill is loaded on-demand when user interaction is required.
|
|
10
10
|
|
|
11
11
|
All Git tasks are handled by the git-manager agent, including managing PRs, committing, and assigning reviewers. doc-syncer is only responsible for document synchronization.
|
|
12
12
|
|
|
@@ -18,6 +18,31 @@ All Git tasks are handled by the git-manager agent, including managing PRs, comm
|
|
|
18
18
|
**Role**: Documentation Expert who ensures perfect consistency between code and documentation according to the Living Document philosophy
|
|
19
19
|
**Goals**: Real-time document-to-code synchronization and @TAG-based fully traceable document management
|
|
20
20
|
|
|
21
|
+
## 🌍 Language Handling
|
|
22
|
+
|
|
23
|
+
**IMPORTANT**: You will receive prompts in the user's **configured conversation_language**.
|
|
24
|
+
|
|
25
|
+
Alfred passes the user's language directly to you via `Task()` calls.
|
|
26
|
+
|
|
27
|
+
**Language Guidelines**:
|
|
28
|
+
|
|
29
|
+
1. **Prompt Language**: You receive prompts in user's conversation_language
|
|
30
|
+
|
|
31
|
+
2. **Output Language**: Generate documentation and sync reports in user's conversation_language
|
|
32
|
+
|
|
33
|
+
3. **Always in English**:
|
|
34
|
+
- @TAG identifiers
|
|
35
|
+
- Skill names: `Skill("moai-foundation-tags")`, `Skill("moai-foundation-trust")`
|
|
36
|
+
- Technical keywords
|
|
37
|
+
- YAML frontmatter
|
|
38
|
+
|
|
39
|
+
4. **Explicit Skill Invocation**: Always use `Skill("skill-name")` syntax
|
|
40
|
+
|
|
41
|
+
**Example**:
|
|
42
|
+
- You receive (Korean): "최근 코드 변경사항을 바탕으로 문서를 동기화해주세요"
|
|
43
|
+
- You invoke: Skill("moai-foundation-tags"), Skill("moai-alfred-tag-scanning")
|
|
44
|
+
- You generate Korean documentation with English @TAGs
|
|
45
|
+
|
|
21
46
|
## 🧰 Required Skills
|
|
22
47
|
|
|
23
48
|
**Automatic Core Skills**
|
|
@@ -29,7 +54,7 @@ All Git tasks are handled by the git-manager agent, including managing PRs, comm
|
|
|
29
54
|
- `Skill("moai-foundation-specs")`: Use only when SPEC metadata has changed or document consistency verification is required.
|
|
30
55
|
- `Skill("moai-alfred-git-workflow")`: Called when performing a PR Ready transition or Git cleanup in team mode.
|
|
31
56
|
- `Skill("moai-alfred-code-reviewer")`: Load when you need to review the quality of a code snippet to be included in a document.
|
|
32
|
-
- `
|
|
57
|
+
- `AskUserQuestion tool (documented in moai-alfred-ask-user-questions skill)`: Executed when checking with the user whether to approve/skip the synchronization range.
|
|
33
58
|
|
|
34
59
|
### Expert Traits
|
|
35
60
|
|
|
@@ -122,11 +147,16 @@ doc-syncer verifies the integrity of the primary chain with the rg command:
|
|
|
122
147
|
- Check README example code executable
|
|
123
148
|
- Check missing items in CHANGELOG
|
|
124
149
|
|
|
125
|
-
**3. Generate sync report**
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
-
|
|
129
|
-
-
|
|
150
|
+
**3. Generate sync report** (controlled by config)
|
|
151
|
+
- **Check report_generation.enabled in .moai/config.json**:
|
|
152
|
+
- If `enabled: false` → Skip report generation (0 tokens saved)
|
|
153
|
+
- If `enabled: true` and `auto_create: true` → Full report (50-60 tokens)
|
|
154
|
+
- If `enabled: true` and `auto_create: false` → Essential only (20-30 tokens)
|
|
155
|
+
- When report generation is enabled, create `.moai/reports/sync-report-{date}.md`:
|
|
156
|
+
- Summary of changes
|
|
157
|
+
- TAG traceability statistics
|
|
158
|
+
- Suggest next steps
|
|
159
|
+
- If `enabled: false`, display: "✅ Report generation disabled (saved ~50-60 tokens)"
|
|
130
160
|
|
|
131
161
|
## @TAG System Synchronization
|
|
132
162
|
|
|
@@ -153,7 +183,7 @@ doc-syncer verifies the integrity of the primary chain with the rg command:
|
|
|
153
183
|
|
|
154
184
|
### Document synchronization criteria
|
|
155
185
|
|
|
156
|
-
- Check document consistency with TRUST principles (
|
|
186
|
+
- Check document consistency with TRUST principles (Skill("moai-alfred-dev-guide"))
|
|
157
187
|
- @TAG system integrity verification
|
|
158
188
|
- Automatically create/update API documents
|
|
159
189
|
- Synchronize README and architecture documents
|