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,307 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moai-cc-commands
|
|
3
|
+
description: "Designing Slash Commands for Claude Code. Create and optimize slash commands with proper argument parsing, tool permissions, and agent orchestration. Use when building workflow entry points, automation commands, or user-facing shortcuts."
|
|
4
|
+
allowed-tools: "Read, Write, Edit, Glob, Bash"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Skill Metadata
|
|
8
|
+
|
|
9
|
+
| Field | Value |
|
|
10
|
+
| ----- | ----- |
|
|
11
|
+
| Version | 1.0.0 |
|
|
12
|
+
| Tier | Ops |
|
|
13
|
+
| Auto-load | When designing slash commands |
|
|
14
|
+
|
|
15
|
+
## What It Does
|
|
16
|
+
|
|
17
|
+
Slash command 설계 및 최적화 방법을 제공합니다. Argument parsing, tool permissions, agent orchestration을 포함한 command 구조를 다룹니다.
|
|
18
|
+
|
|
19
|
+
## When to Use
|
|
20
|
+
|
|
21
|
+
- 새로운 slash command를 생성할 때
|
|
22
|
+
- 기존 command를 최적화하거나 리팩토링할 때
|
|
23
|
+
- Workflow entry point를 설계할 때
|
|
24
|
+
- User-facing automation을 구축할 때
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# Designing Slash Commands
|
|
28
|
+
|
|
29
|
+
Slash commands are user-facing entry points that orchestrate sub-agents, manage approvals, and coordinate multi-step workflows. They follow the Plan → Execute → Sync cadence.
|
|
30
|
+
|
|
31
|
+
## Command File Structure
|
|
32
|
+
|
|
33
|
+
**Location**: `.claude/commands/`
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
---
|
|
37
|
+
name: command-name
|
|
38
|
+
description: Brief description of what the command does
|
|
39
|
+
argument-hint: "[param1] [param2] [optional-param]"
|
|
40
|
+
tools: Read, Write, Task, Bash(git:*)
|
|
41
|
+
model: sonnet
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
# Command Title
|
|
45
|
+
|
|
46
|
+
Brief description of functionality.
|
|
47
|
+
|
|
48
|
+
## Usage
|
|
49
|
+
|
|
50
|
+
- `/command-name param1 param2` — Basic usage
|
|
51
|
+
- Parameter descriptions
|
|
52
|
+
- Expected behavior
|
|
53
|
+
|
|
54
|
+
## Agent Orchestration
|
|
55
|
+
|
|
56
|
+
1. Call specific agent for task
|
|
57
|
+
2. Handle results
|
|
58
|
+
3. Provide user feedback
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Command Design Patterns
|
|
62
|
+
|
|
63
|
+
### Pattern 1: Planning Command
|
|
64
|
+
```yaml
|
|
65
|
+
---
|
|
66
|
+
name: /alfred:1-plan
|
|
67
|
+
description: Write SPEC requirements in EARS syntax
|
|
68
|
+
argument-hint: "[title]"
|
|
69
|
+
tools: Read, Write, Task
|
|
70
|
+
model: sonnet
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
# SPEC Planning Command
|
|
74
|
+
|
|
75
|
+
Initiates SPEC authoring via spec-builder sub-agent.
|
|
76
|
+
|
|
77
|
+
## Usage
|
|
78
|
+
|
|
79
|
+
`/alfred:1-plan "User authentication system"`
|
|
80
|
+
|
|
81
|
+
## Agent Orchestration
|
|
82
|
+
|
|
83
|
+
1. Invoke spec-builder agent
|
|
84
|
+
2. Gather requirements via EARS patterns
|
|
85
|
+
3. Create SPEC file in `.moai/specs/`
|
|
86
|
+
4. Suggest next step: `/alfred:2-run`
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Pattern 2: Code Review Command
|
|
90
|
+
```yaml
|
|
91
|
+
---
|
|
92
|
+
name: /review-code
|
|
93
|
+
description: Trigger automated code review with quality analysis
|
|
94
|
+
argument-hint: "[file-pattern] [--strict]"
|
|
95
|
+
tools: Read, Glob, Grep, Task
|
|
96
|
+
model: sonnet
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
# Code Review Command
|
|
100
|
+
|
|
101
|
+
Analyzes code quality against TRUST 5 principles.
|
|
102
|
+
|
|
103
|
+
## Usage
|
|
104
|
+
|
|
105
|
+
- `/review-code src/**/*.ts` — Review TypeScript files
|
|
106
|
+
- `/review-code . --strict` — Strict mode (fail on warnings)
|
|
107
|
+
|
|
108
|
+
## Agent Orchestration
|
|
109
|
+
|
|
110
|
+
1. Scan files matching pattern
|
|
111
|
+
2. Invoke code-reviewer agent
|
|
112
|
+
3. Generate report with findings
|
|
113
|
+
4. Suggest fixes with severity levels
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Pattern 3: Deployment Command
|
|
117
|
+
```yaml
|
|
118
|
+
---
|
|
119
|
+
name: /deploy
|
|
120
|
+
description: Deploy application with safety gates
|
|
121
|
+
argument-hint: "[env] [--force]"
|
|
122
|
+
tools: Read, Write, Task, Bash(git:*)
|
|
123
|
+
model: haiku
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
# Deployment Command
|
|
127
|
+
|
|
128
|
+
Orchestrates multi-step deployment with approval gates.
|
|
129
|
+
|
|
130
|
+
## Usage
|
|
131
|
+
|
|
132
|
+
- `/deploy staging` — Deploy to staging
|
|
133
|
+
- `/deploy production --force` — Force production deploy
|
|
134
|
+
|
|
135
|
+
## Agent Orchestration
|
|
136
|
+
|
|
137
|
+
1. Validate deployment readiness
|
|
138
|
+
2. Run pre-deployment checks
|
|
139
|
+
3. Ask for user approval
|
|
140
|
+
4. Execute deployment
|
|
141
|
+
5. Monitor post-deployment
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Argument Parsing Pattern
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# Inside command execution
|
|
148
|
+
$ARGUMENTS # Entire argument string
|
|
149
|
+
$1, $2, $3 # Individual arguments
|
|
150
|
+
$@ # All arguments as array
|
|
151
|
+
|
|
152
|
+
# Example: /my-command arg1 arg2 --flag
|
|
153
|
+
# $ARGUMENTS = "arg1 arg2 --flag"
|
|
154
|
+
# $1 = "arg1"
|
|
155
|
+
# $2 = "arg2"
|
|
156
|
+
# $3 = "--flag"
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## High-Freedom: Orchestration Strategies
|
|
160
|
+
|
|
161
|
+
### Sequential Execution
|
|
162
|
+
```
|
|
163
|
+
Command: /plan-and-implement
|
|
164
|
+
├─ Phase 1: spec-builder (SPEC creation)
|
|
165
|
+
└─ Phase 2: code-builder (TDD implementation)
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Parallel Execution
|
|
169
|
+
```
|
|
170
|
+
Command: /analyze-project
|
|
171
|
+
├─ Agent 1: security-auditor (vulnerability scan)
|
|
172
|
+
├─ Agent 2: performance-analyzer (bottleneck detection)
|
|
173
|
+
└─ Agent 3: architecture-reviewer (design review)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Conditional Branching
|
|
177
|
+
```
|
|
178
|
+
Command: /fix-errors
|
|
179
|
+
├─ Check: Are tests failing?
|
|
180
|
+
│ ├─ YES → debug-helper agent
|
|
181
|
+
│ └─ NO → suggest next steps
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Medium-Freedom: Command Templates
|
|
185
|
+
|
|
186
|
+
### Status Check Command
|
|
187
|
+
```yaml
|
|
188
|
+
name: /status
|
|
189
|
+
description: Show project status summary
|
|
190
|
+
argument-hint: "[--verbose]"
|
|
191
|
+
tools: Read, Bash(git:*)
|
|
192
|
+
model: haiku
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
# Status Check
|
|
196
|
+
|
|
197
|
+
Displays project health: SPEC status, test results, Git state.
|
|
198
|
+
|
|
199
|
+
## Checks
|
|
200
|
+
|
|
201
|
+
1. SPEC completeness
|
|
202
|
+
2. Test coverage
|
|
203
|
+
3. Git branch status
|
|
204
|
+
4. Recent commits
|
|
205
|
+
5. TODO items
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Bulk Operation Command
|
|
209
|
+
```yaml
|
|
210
|
+
name: /migrate
|
|
211
|
+
description: Run migration across multiple files
|
|
212
|
+
argument-hint: "[from] [to] [--preview]"
|
|
213
|
+
tools: Read, Glob, Bash
|
|
214
|
+
model: sonnet
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
# Migration Command
|
|
218
|
+
|
|
219
|
+
Migrates code patterns across project.
|
|
220
|
+
|
|
221
|
+
## Usage
|
|
222
|
+
|
|
223
|
+
- `/migrate v1-api v2-api --preview` — Show changes without applying
|
|
224
|
+
- `/migrate v1-api v2-api` — Apply migration
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Low-Freedom: Safety & Approval Patterns
|
|
228
|
+
|
|
229
|
+
### Approval Gate Pattern
|
|
230
|
+
```bash
|
|
231
|
+
# Inside command execution
|
|
232
|
+
|
|
233
|
+
echo "🔴 This action is destructive. Review carefully:"
|
|
234
|
+
echo " • Will delete 10 files"
|
|
235
|
+
echo " • Cannot be undone"
|
|
236
|
+
echo ""
|
|
237
|
+
read -p "Type 'yes' to confirm: " confirm
|
|
238
|
+
|
|
239
|
+
if [[ "$confirm" != "yes" ]]; then
|
|
240
|
+
echo "❌ Cancelled"
|
|
241
|
+
exit 1
|
|
242
|
+
fi
|
|
243
|
+
|
|
244
|
+
# Execute dangerous operation
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Dry-Run Pattern
|
|
248
|
+
```bash
|
|
249
|
+
if [[ "${3:-}" == "--preview" ]]; then
|
|
250
|
+
echo "🔍 Preview mode (no changes)"
|
|
251
|
+
# Show what would happen
|
|
252
|
+
exit 0
|
|
253
|
+
fi
|
|
254
|
+
|
|
255
|
+
# Execute actual changes
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## Command Registry
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
# List all commands
|
|
262
|
+
/commands
|
|
263
|
+
|
|
264
|
+
# View command details
|
|
265
|
+
/commands view /deploy
|
|
266
|
+
|
|
267
|
+
# Create new command
|
|
268
|
+
/commands create
|
|
269
|
+
|
|
270
|
+
# Edit command
|
|
271
|
+
/commands edit /deploy
|
|
272
|
+
|
|
273
|
+
# Delete command
|
|
274
|
+
/commands delete /deploy
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Command Validation Checklist
|
|
278
|
+
|
|
279
|
+
- [ ] `name` is kebab-case (e.g., `/review-code`)
|
|
280
|
+
- [ ] `description` clearly explains purpose
|
|
281
|
+
- [ ] `argument-hint` shows expected parameters
|
|
282
|
+
- [ ] `tools` list is minimal and justified
|
|
283
|
+
- [ ] `model` is `haiku` or `sonnet`
|
|
284
|
+
- [ ] Agent orchestration is clearly defined
|
|
285
|
+
- [ ] Arguments are properly parsed
|
|
286
|
+
- [ ] Safety gates are in place for dangerous operations
|
|
287
|
+
- [ ] Feedback to user is clear and actionable
|
|
288
|
+
|
|
289
|
+
## Best Practices
|
|
290
|
+
|
|
291
|
+
✅ **DO**:
|
|
292
|
+
- Design commands around workflows, not tools
|
|
293
|
+
- Use agents for complex logic
|
|
294
|
+
- Include preview/dry-run modes for risky operations
|
|
295
|
+
- Provide clear feedback at each step
|
|
296
|
+
- Link to next command in suggestions
|
|
297
|
+
|
|
298
|
+
❌ **DON'T**:
|
|
299
|
+
- Make commands do too much (limit to 1 coherent workflow)
|
|
300
|
+
- Require multiple parameters without defaults
|
|
301
|
+
- Skip approval gates for destructive operations
|
|
302
|
+
- Leave users guessing what happened
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
**Reference**: Claude Code Slash Commands documentation
|
|
307
|
+
**Version**: 1.0.0
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: command-name
|
|
3
|
+
description: Brief description of what the command does
|
|
4
|
+
argument-hint: "[param1] [param2]"
|
|
5
|
+
tools: Read, Write, Task
|
|
6
|
+
model: sonnet
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Command Title
|
|
10
|
+
|
|
11
|
+
Brief description of functionality.
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
`/command-name param1 param2` — Basic usage
|
|
16
|
+
|
|
17
|
+
## Agent Orchestration
|
|
18
|
+
|
|
19
|
+
1. Call specific agent for task
|
|
20
|
+
2. Handle results
|
|
21
|
+
3. Provide user feedback
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moai-cc-hooks
|
|
3
|
+
description: "Configuring Claude Code Hooks System. Design, implement, and manage PreToolUse/PostToolUse/SessionStart/Notification/Stop hooks. Use when enforcing safety checks, auto-formatting, running linters, or triggering automated workflows based on development events."
|
|
4
|
+
allowed-tools: "Read, Write, Edit, Glob, Bash"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Skill Metadata
|
|
8
|
+
|
|
9
|
+
| Field | Value |
|
|
10
|
+
| ----- | ----- |
|
|
11
|
+
| Version | 1.0.0 |
|
|
12
|
+
| Tier | Ops |
|
|
13
|
+
| Auto-load | When configuring hook system |
|
|
14
|
+
|
|
15
|
+
## What It Does
|
|
16
|
+
|
|
17
|
+
Hook system 설정 및 관리를 위한 전체 가이드를 제공합니다. PreToolUse, PostToolUse, SessionStart 등 다양한 hook type의 설계와 구현 방법을 다룹니다.
|
|
18
|
+
|
|
19
|
+
## When to Use
|
|
20
|
+
|
|
21
|
+
- Safety check나 validation hook을 추가할 때
|
|
22
|
+
- Auto-formatting이나 linting을 자동화할 때
|
|
23
|
+
- Session lifecycle event에 응답하는 로직을 작성할 때
|
|
24
|
+
- 개발 이벤트 기반 workflow를 트리거할 때
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# Configuring Claude Code Hooks System
|
|
28
|
+
|
|
29
|
+
Hooks are lightweight (<100ms) automated scripts triggered by Claude Code lifecycle events. They enforce guardrails, run quality checks, and seed context without blocking user workflow.
|
|
30
|
+
|
|
31
|
+
## Hook Types & Events
|
|
32
|
+
|
|
33
|
+
| Hook Type | Trigger Event | Execution Time | Use Cases |
|
|
34
|
+
|-----------|---------------|-----------------|-----------|
|
|
35
|
+
| **PreToolUse** | Before tool execution (Read, Edit, Bash, etc.) | <100ms | Command validation, permission checks, safety gates |
|
|
36
|
+
| **PostToolUse** | After tool execution succeeds | <100ms | Auto-formatting, linting, permission restoration |
|
|
37
|
+
| **SessionStart** | Session initialization | <500ms | Project summary, context seeding, status card |
|
|
38
|
+
| **Notification** | User notification event | N/A | macOS notifications, alerts, wait status |
|
|
39
|
+
| **Stop** | Session termination | N/A | Cleanup, final checks, task summary |
|
|
40
|
+
|
|
41
|
+
## Hook Configuration in settings.json
|
|
42
|
+
|
|
43
|
+
### High-Freedom Approach: Events-Driven Hooks
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"hooks": {
|
|
48
|
+
"PreToolUse": [
|
|
49
|
+
{
|
|
50
|
+
"matcher": "Bash",
|
|
51
|
+
"hooks": [
|
|
52
|
+
{
|
|
53
|
+
"type": "command",
|
|
54
|
+
"command": "node ~/.claude/hooks/pre-bash-validator.js"
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"matcher": "Edit|Write",
|
|
60
|
+
"hooks": [
|
|
61
|
+
{
|
|
62
|
+
"type": "command",
|
|
63
|
+
"command": "bash ~/.claude/hooks/pre-edit-guard.sh"
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"PostToolUse": [
|
|
69
|
+
{
|
|
70
|
+
"matcher": "Edit",
|
|
71
|
+
"hooks": [
|
|
72
|
+
{
|
|
73
|
+
"type": "command",
|
|
74
|
+
"command": "bash ~/.claude/hooks/post-edit-lint.sh"
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"SessionStart": [
|
|
80
|
+
{
|
|
81
|
+
"matcher": "*",
|
|
82
|
+
"hooks": [
|
|
83
|
+
{
|
|
84
|
+
"type": "command",
|
|
85
|
+
"command": "node ~/.claude/hooks/session-status-card.js"
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Medium-Freedom: Hook Patterns
|
|
95
|
+
|
|
96
|
+
### Pattern 1: Pre-Command Validation
|
|
97
|
+
```bash
|
|
98
|
+
#!/bin/bash
|
|
99
|
+
# pre-bash-validator.sh: Block dangerous patterns
|
|
100
|
+
|
|
101
|
+
FORBIDDEN_PATTERNS=(
|
|
102
|
+
"rm -rf /"
|
|
103
|
+
"sudo rm"
|
|
104
|
+
"chmod 777 /"
|
|
105
|
+
"eval \$(curl"
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
COMMAND="$1"
|
|
109
|
+
for pattern in "${FORBIDDEN_PATTERNS[@]}"; do
|
|
110
|
+
if [[ "$COMMAND" =~ $pattern ]]; then
|
|
111
|
+
echo "🔴 Blocked: $pattern detected" >&2
|
|
112
|
+
exit 2 # Block execution
|
|
113
|
+
fi
|
|
114
|
+
done
|
|
115
|
+
|
|
116
|
+
exit 0 # Allow execution
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Pattern 2: Post-Edit Auto-Formatting
|
|
120
|
+
```bash
|
|
121
|
+
#!/bin/bash
|
|
122
|
+
# post-edit-format.sh: Auto-format after edits
|
|
123
|
+
|
|
124
|
+
FILE="$1"
|
|
125
|
+
EXT="${FILE##*.}"
|
|
126
|
+
|
|
127
|
+
case "$EXT" in
|
|
128
|
+
js|ts)
|
|
129
|
+
npx prettier --write "$FILE" 2>/dev/null
|
|
130
|
+
;;
|
|
131
|
+
py)
|
|
132
|
+
python3 -m black "$FILE" 2>/dev/null
|
|
133
|
+
;;
|
|
134
|
+
go)
|
|
135
|
+
gofmt -w "$FILE" 2>/dev/null
|
|
136
|
+
;;
|
|
137
|
+
esac
|
|
138
|
+
|
|
139
|
+
exit 0
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Pattern 3: SessionStart Status Card
|
|
143
|
+
```bash
|
|
144
|
+
#!/bin/bash
|
|
145
|
+
# session-status-card.sh: Show project status
|
|
146
|
+
|
|
147
|
+
echo "🚀 Claude Code Session Started"
|
|
148
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
149
|
+
|
|
150
|
+
if [ -f ".moai/config.json" ]; then
|
|
151
|
+
PROJECT=$(jq -r '.name' .moai/config.json 2>/dev/null || echo "Unknown")
|
|
152
|
+
echo "📦 Project: $PROJECT"
|
|
153
|
+
echo "🏗️ Framework: $(jq -r '.tech_stack' .moai/config.json 2>/dev/null || echo "Auto-detect")"
|
|
154
|
+
fi
|
|
155
|
+
|
|
156
|
+
echo "📋 Recent SPECS:"
|
|
157
|
+
ls .moai/specs/ 2>/dev/null | head -3 | sed 's/^/ ✓ /'
|
|
158
|
+
|
|
159
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Low-Freedom: Security-Focused Hook Scripts
|
|
163
|
+
|
|
164
|
+
### Permission Preservation Hook
|
|
165
|
+
```bash
|
|
166
|
+
#!/bin/bash
|
|
167
|
+
set -euo pipefail
|
|
168
|
+
# preserve-permissions.sh: Save/restore file permissions
|
|
169
|
+
|
|
170
|
+
HOOK_TYPE="${1:-pre}" # 'pre' or 'post'
|
|
171
|
+
FILE="${2:-.}"
|
|
172
|
+
|
|
173
|
+
PERMS_FILE="/tmp/perms_${FILE//\//_}.txt"
|
|
174
|
+
|
|
175
|
+
if [[ "$HOOK_TYPE" == "pre" ]]; then
|
|
176
|
+
stat -c "%a %u:%g" "$FILE" > "$PERMS_FILE" 2>/dev/null || true
|
|
177
|
+
exit 0
|
|
178
|
+
elif [[ "$HOOK_TYPE" == "post" ]]; then
|
|
179
|
+
if [[ -f "$PERMS_FILE" ]]; then
|
|
180
|
+
SAVED_PERMS=$(cat "$PERMS_FILE")
|
|
181
|
+
chmod ${SAVED_PERMS%% *} "$FILE" 2>/dev/null || true
|
|
182
|
+
rm "$PERMS_FILE"
|
|
183
|
+
fi
|
|
184
|
+
exit 0
|
|
185
|
+
fi
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Dangerous Command Blocker
|
|
189
|
+
```python
|
|
190
|
+
#!/usr/bin/env python3
|
|
191
|
+
import json
|
|
192
|
+
import sys
|
|
193
|
+
import re
|
|
194
|
+
|
|
195
|
+
BLOCKED_PATTERNS = [
|
|
196
|
+
(r"rm\s+-rf\s+/", "Blocking rm -rf /"),
|
|
197
|
+
(r"sudo\s+rm", "Blocking sudo rm without confirmation"),
|
|
198
|
+
(r">\s*/etc/\w+", "Blocking writes to system files"),
|
|
199
|
+
(r"curl.*\|\s*bash", "Blocking curl | bash (code injection risk)"),
|
|
200
|
+
]
|
|
201
|
+
|
|
202
|
+
try:
|
|
203
|
+
data = json.load(sys.stdin)
|
|
204
|
+
command = data.get("tool_input", {}).get("command", "")
|
|
205
|
+
|
|
206
|
+
for pattern, msg in BLOCKED_PATTERNS:
|
|
207
|
+
if re.search(pattern, command):
|
|
208
|
+
print(f"🔴 BLOCKED: {msg}", file=sys.stderr)
|
|
209
|
+
sys.exit(2) # Block
|
|
210
|
+
|
|
211
|
+
sys.exit(0) # Allow
|
|
212
|
+
except Exception as e:
|
|
213
|
+
print(f"Hook error: {e}", file=sys.stderr)
|
|
214
|
+
sys.exit(0) # Allow on error (fail open)
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## Hook Exit Codes
|
|
218
|
+
|
|
219
|
+
| Code | Meaning | Behavior |
|
|
220
|
+
|------|---------|----------|
|
|
221
|
+
| `0` | Success | Tool proceeds normally |
|
|
222
|
+
| `1` | Warning + Stderr | Warning logged, tool proceeds |
|
|
223
|
+
| `2` | Blocked + Error | Tool execution blocked |
|
|
224
|
+
|
|
225
|
+
## Best Practices
|
|
226
|
+
|
|
227
|
+
✅ **DO**:
|
|
228
|
+
- Keep hook scripts < 100ms execution time
|
|
229
|
+
- Use specific matchers (not wildcard `*` unless necessary)
|
|
230
|
+
- Log errors clearly to stderr
|
|
231
|
+
- Test hooks before deploying to team
|
|
232
|
+
|
|
233
|
+
❌ **DON'T**:
|
|
234
|
+
- Make network calls in PreToolUse hooks
|
|
235
|
+
- Block common operations (use warnings instead)
|
|
236
|
+
- Write to user files from hooks
|
|
237
|
+
- Create complex logic (delegate to sub-agents)
|
|
238
|
+
|
|
239
|
+
## Hook Validation Checklist
|
|
240
|
+
|
|
241
|
+
- [ ] All scripts have proper shebang (`#!/bin/bash` or `#!/usr/bin/env python3`)
|
|
242
|
+
- [ ] Scripts are executable: `chmod +x hook.sh`
|
|
243
|
+
- [ ] Exit codes are correct (0, 1, or 2)
|
|
244
|
+
- [ ] Paths are absolute (not relative)
|
|
245
|
+
- [ ] Tested for < 100ms latency
|
|
246
|
+
- [ ] Error messages are user-friendly
|
|
247
|
+
- [ ] No hardcoded secrets or credentials
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
**Reference**: Context7 Claude Code Hooks documentation
|
|
252
|
+
**Version**: 1.0.0
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Pre-Bash Command Validator (from Context7 official docs)
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
FORBIDDEN=(
|
|
6
|
+
"rm -rf /"
|
|
7
|
+
"sudo rm"
|
|
8
|
+
"chmod 777"
|
|
9
|
+
"eval.*curl"
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
COMMAND="${1:-}"
|
|
13
|
+
for pattern in "${FORBIDDEN[@]}"; do
|
|
14
|
+
if [[ "$COMMAND" =~ $pattern ]]; then
|
|
15
|
+
echo "🔴 BLOCKED: $pattern" >&2
|
|
16
|
+
exit 2
|
|
17
|
+
fi
|
|
18
|
+
done
|
|
19
|
+
exit 0
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Preserve file permissions (from Context7 official docs)
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
HOOK_TYPE="${1:-pre}"
|
|
6
|
+
FILE="${2:-.}"
|
|
7
|
+
PERMS_FILE="/tmp/perms_${FILE//\//_}.txt"
|
|
8
|
+
|
|
9
|
+
if [[ "$HOOK_TYPE" == "pre" ]]; then
|
|
10
|
+
stat -c "%a %u:%g" "$FILE" > "$PERMS_FILE" 2>/dev/null || true
|
|
11
|
+
exit 0
|
|
12
|
+
elif [[ "$HOOK_TYPE" == "post" ]]; then
|
|
13
|
+
if [[ -f "$PERMS_FILE" ]]; then
|
|
14
|
+
SAVED=$(cat "$PERMS_FILE")
|
|
15
|
+
chmod ${SAVED%% *} "$FILE" 2>/dev/null || true
|
|
16
|
+
rm "$PERMS_FILE"
|
|
17
|
+
fi
|
|
18
|
+
exit 0
|
|
19
|
+
fi
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# @CODE:HOOK-BASH-001 | SPEC: TBD | TEST: tests/hooks/test_bash_validation.py
|
|
3
|
+
# Bash command validator (from Context7 official docs)
|
|
4
|
+
import json
|
|
5
|
+
import re
|
|
6
|
+
import sys
|
|
7
|
+
|
|
8
|
+
BLOCKED = [
|
|
9
|
+
(r"rm\s+-rf\s+/", "Blocking rm -rf /"),
|
|
10
|
+
(r"sudo\s+rm", "Blocking sudo rm"),
|
|
11
|
+
(r">\s*/etc/\w+", "Blocking writes to /etc"),
|
|
12
|
+
(r"curl.*\|\s*bash", "Blocking curl | bash"),
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
try:
|
|
16
|
+
data = json.load(sys.stdin)
|
|
17
|
+
cmd = data.get("tool_input", {}).get("command", "")
|
|
18
|
+
for pattern, msg in BLOCKED:
|
|
19
|
+
if re.search(pattern, cmd):
|
|
20
|
+
print(f"🔴 {msg}", file=sys.stderr)
|
|
21
|
+
sys.exit(2)
|
|
22
|
+
sys.exit(0)
|
|
23
|
+
except Exception:
|
|
24
|
+
sys.exit(0)
|