moai-adk 0.11.0__tar.gz → 0.12.0__tar.gz
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-0.11.0 → moai_adk-0.12.0}/.gitignore +1 -24
- {moai_adk-0.11.0 → moai_adk-0.12.0}/PKG-INFO +43 -1
- {moai_adk-0.11.0 → moai_adk-0.12.0}/README.md +42 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/pyproject.toml +1 -1
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/issue_creator.py +2 -2
- moai_adk-0.12.0/src/moai_adk/core/project/detector.py +309 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/tags/ci_validator.py +1 -1
- {moai_adk-0.11.0/src/moai_adk/templates → moai_adk-0.12.0}/src/moai_adk/core/tags/pre_commit_validator.py +1 -1
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/tags/validator.py +1 -1
- moai_adk-0.12.0/src/moai_adk/templates/.claude/agents/alfred/cc-manager.md +316 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/agents/alfred/debug-helper.md +208 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/agents/alfred/doc-syncer.md +214 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/agents/alfred/git-manager.md +406 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/agents/alfred/implementation-planner.md +350 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/agents/alfred/project-manager.md +273 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/agents/alfred/quality-gate.md +343 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/agents/alfred/skill-factory.md +865 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/agents/alfred/spec-builder.md +287 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/agents/alfred/tag-agent.md +287 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +326 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/agents/alfred/trust-checker.md +375 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/commands/alfred/0-project.md +1275 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/commands/alfred/1-plan.md +734 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/commands/alfred/2-run.md +551 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/commands/alfred/3-sync.md +689 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/commands/alfred/9-feedback.md +149 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +206 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/core/project.py +742 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/core/timeout.py +136 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +108 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +198 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/notification__handle_events.py +95 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +95 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +101 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +95 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +97 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +170 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/shared/core/checkpoint.py +271 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +67 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +749 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +230 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +198 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +21 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +154 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +174 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +87 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +61 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/stop__handle_interrupt.py +95 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/subagent_stop__handle_subagent_end.py +95 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +111 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +1 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +136 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +640 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +696 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +474 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/settings.json +144 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +113 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +28 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +122 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +237 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +615 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +653 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +113 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +113 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +28 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +113 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +28 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +113 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +28 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +269 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +298 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +307 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +252 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +199 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +316 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +263 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +291 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +290 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +123 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +123 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +123 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +124 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +124 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +123 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +123 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +123 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +123 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +303 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1064 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1047 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +113 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +113 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +113 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +116 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +122 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +113 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +113 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +113 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +307 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +124 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +124 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +123 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +123 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +124 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +124 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +125 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +124 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +123 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +431 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +123 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +124 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +124 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +123 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +123 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +124 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +123 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +127 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +482 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +278 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +477 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +271 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +583 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +526 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +465 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +328 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +312 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +285 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +278 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +303 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +137 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +219 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +161 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +541 -0
- moai_adk-0.12.0/src/moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +622 -0
- moai_adk-0.12.0/src/moai_adk/templates/.github/workflows/c-tag-validation.yml +83 -0
- moai_adk-0.12.0/src/moai_adk/templates/.github/workflows/cpp-tag-validation.yml +79 -0
- moai_adk-0.12.0/src/moai_adk/templates/.github/workflows/csharp-tag-validation.yml +65 -0
- moai_adk-0.12.0/src/moai_adk/templates/.github/workflows/dart-tag-validation.yml +82 -0
- moai_adk-0.12.0/src/moai_adk/templates/.github/workflows/java-tag-validation.yml +75 -0
- moai_adk-0.12.0/src/moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +67 -0
- moai_adk-0.12.0/src/moai_adk/templates/.github/workflows/php-tag-validation.yml +56 -0
- moai_adk-0.12.0/src/moai_adk/templates/.github/workflows/ruby-tag-validation.yml +68 -0
- moai_adk-0.12.0/src/moai_adk/templates/.github/workflows/rust-tag-validation.yml +73 -0
- moai_adk-0.12.0/src/moai_adk/templates/.github/workflows/shell-tag-validation.yml +65 -0
- moai_adk-0.12.0/src/moai_adk/templates/.github/workflows/swift-tag-validation.yml +79 -0
- moai_adk-0.12.0/src/moai_adk/templates/.moai/config.json +113 -0
- moai_adk-0.12.0/src/moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +208 -0
- moai_adk-0.12.0/src/moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +369 -0
- moai_adk-0.12.0/src/moai_adk/templates/.moai/memory/CLAUDE-RULES.md +539 -0
- moai_adk-0.12.0/src/moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +344 -0
- moai_adk-0.12.0/src/moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +330 -0
- moai_adk-0.12.0/src/moai_adk/templates/.moai/memory/ISSUE-LABEL-MAPPING.md +150 -0
- moai_adk-0.12.0/src/moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +218 -0
- moai_adk-0.12.0/src/moai_adk/templates/.moai/memory/SPEC-METADATA.md +356 -0
- moai_adk-0.12.0/src/moai_adk/templates/.moai/memory/gitflow-protection-policy.md +330 -0
- moai_adk-0.12.0/src/moai_adk/templates/.moai/memory/spec-metadata.md +356 -0
- moai_adk-0.12.0/src/moai_adk/templates/.moai/project/product.md +161 -0
- moai_adk-0.12.0/src/moai_adk/templates/.moai/project/structure.md +156 -0
- moai_adk-0.12.0/src/moai_adk/templates/.moai/project/tech.md +227 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/templates/CLAUDE.md +90 -10
- moai_adk-0.12.0/src/moai_adk/templates/workflows/go-tag-validation.yml +130 -0
- moai_adk-0.12.0/src/moai_adk/templates/workflows/javascript-tag-validation.yml +135 -0
- moai_adk-0.12.0/src/moai_adk/templates/workflows/python-tag-validation.yml +118 -0
- moai_adk-0.12.0/src/moai_adk/templates/workflows/typescript-tag-validation.yml +154 -0
- moai_adk-0.11.0/src/moai_adk/core/project/detector.py +0 -126
- {moai_adk-0.11.0 → moai_adk-0.12.0}/LICENSE +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/__main__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/cli/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/cli/commands/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/cli/commands/backup.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/cli/commands/doctor.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/cli/commands/init.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/cli/commands/status.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/cli/commands/update.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/cli/main.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/cli/prompts/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/cli/prompts/init_prompts.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/config/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/config/migration.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/diagnostics/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/diagnostics/slash_commands.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/git/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/git/branch.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/git/branch_manager.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/git/checkpoint.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/git/commit.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/git/event_detector.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/git/manager.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/project/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/project/backup_utils.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/project/checker.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/project/initializer.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/project/phase_executor.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/project/validator.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/quality/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/quality/trust_checker.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/quality/validators/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/quality/validators/base_validator.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/tags/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/tags/cli.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/tags/generator.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/tags/inserter.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/tags/mapper.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/tags/parser.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/tags/reporter.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/tags/tags.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/template/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/template/backup.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/template/config.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/template/languages.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/template/merger.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/template/processor.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/core/template_engine.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/templates/.git-hooks/pre-push +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/templates/.github/ISSUE_TEMPLATE/spec.yml +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- /moai_adk-0.11.0/src/moai_adk/templates/.github/workflows/release.yml → /moai_adk-0.12.0/src/moai_adk/templates/.github/workflows/moai-adk-release.yml +0 -0
- /moai_adk-0.11.0/src/moai_adk/templates/.github/workflows/spec-issue-sync.yml → /moai_adk-0.12.0/src/moai_adk/templates/.github/workflows/moai-adk-spec-issue-sync.yml +0 -0
- /moai_adk-0.11.0/src/moai_adk/templates/.github/workflows/tag-validation.yml → /moai_adk-0.12.0/src/moai_adk/templates/.github/workflows/moai-adk-tag-validation.yml +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/templates/.github/workflows/moai-release-create.yml +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/templates/.gitignore +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/templates/README.md +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/templates/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0/src/moai_adk/templates}/src/moai_adk/core/tags/pre_commit_validator.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/templates/src/moai_adk/core/tags/reporter.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/utils/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/utils/banner.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.12.0}/src/moai_adk/utils/logger.py +0 -0
|
@@ -33,10 +33,6 @@ docs/_build/
|
|
|
33
33
|
docs/*
|
|
34
34
|
!docs/public/
|
|
35
35
|
|
|
36
|
-
# MoAI Project - 모두 공개
|
|
37
|
-
# /.moai/ - 공개로 전환
|
|
38
|
-
# !src/moai_adk/templates/.moai/ - 이미 공개
|
|
39
|
-
|
|
40
36
|
# Virtual environment
|
|
41
37
|
venv/
|
|
42
38
|
.venv/
|
|
@@ -50,12 +46,6 @@ env/
|
|
|
50
46
|
*.swo
|
|
51
47
|
*~
|
|
52
48
|
|
|
53
|
-
# Claude Code - 모두 공개
|
|
54
|
-
AGENTS.md
|
|
55
|
-
# CLAUDE.md - 공개로 전환
|
|
56
|
-
# /.claude/ - 공개로 전환
|
|
57
|
-
# !src/moai_adk/templates/.claude/ - 이미 공개
|
|
58
|
-
|
|
59
49
|
# OS
|
|
60
50
|
.DS_Store
|
|
61
51
|
Thumbs.db
|
|
@@ -68,20 +58,7 @@ logs/
|
|
|
68
58
|
*.tmp
|
|
69
59
|
*.temp
|
|
70
60
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
61
|
.claudeignore
|
|
75
62
|
|
|
76
63
|
# Project Plans (internal tracking, not versioned)
|
|
77
|
-
CURSOR_INTEGRATION_PLAN.md
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
# MoAI internal directories (not versioned)
|
|
81
|
-
.moai/analysis/
|
|
82
|
-
.moai/docs/
|
|
83
|
-
.moai/reports/
|
|
84
|
-
.moai/scripts/
|
|
85
|
-
.moai/cache/
|
|
86
|
-
.claude/
|
|
87
|
-
.moai/
|
|
64
|
+
CURSOR_INTEGRATION_PLAN.md
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: moai-adk
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.12.0
|
|
4
4
|
Summary: MoAI Agentic Development Kit - SPEC-First TDD with Alfred SuperAgent & Complete Skills v2.0
|
|
5
5
|
Project-URL: Homepage, https://github.com/modu-ai/moai-adk
|
|
6
6
|
Project-URL: Repository, https://github.com/modu-ai/moai-adk
|
|
@@ -319,6 +319,48 @@ In this section you'll experience:
|
|
|
319
319
|
|
|
320
320
|
---
|
|
321
321
|
|
|
322
|
+
## Language Support
|
|
323
|
+
|
|
324
|
+
MoAI-ADK automatically detects and supports **15 programming languages** with dedicated CI/CD workflows:
|
|
325
|
+
|
|
326
|
+
### Core Languages (v0.11.0+)
|
|
327
|
+
- **Python** (pytest, mypy, ruff, 85% coverage target)
|
|
328
|
+
- **JavaScript** (npm/yarn/pnpm/bun auto-detect, 80% coverage target)
|
|
329
|
+
- **TypeScript** (tsc type checking, biome/eslint, 85% coverage target)
|
|
330
|
+
- **Go** (golangci-lint, gofmt, 75% coverage target)
|
|
331
|
+
|
|
332
|
+
### Extended Languages (v0.11.1+)
|
|
333
|
+
- **Ruby** (RSpec, Rubocop, bundle)
|
|
334
|
+
- **PHP** (PHPUnit, PHPCS, composer)
|
|
335
|
+
- **Java** (JUnit 5, Jacoco, Maven/Gradle auto-detection)
|
|
336
|
+
- **Rust** (cargo test, clippy, rustfmt)
|
|
337
|
+
- **Dart** (flutter test, dart analyze)
|
|
338
|
+
- **Swift** (XCTest, SwiftLint, SPM)
|
|
339
|
+
- **Kotlin** (JUnit 5, ktlint, Gradle)
|
|
340
|
+
- **C#** (xUnit, StyleCop, dotnet CLI)
|
|
341
|
+
- **C** (gcc/clang, cppcheck, CMake)
|
|
342
|
+
- **C++** (g++/clang++, Google Test, cpplint)
|
|
343
|
+
- **Shell** (shellcheck, bats-core)
|
|
344
|
+
|
|
345
|
+
### How Language Detection Works
|
|
346
|
+
|
|
347
|
+
When you run `/alfred:2-run SPEC-XXX`, MoAI-ADK automatically:
|
|
348
|
+
1. Scans your project for configuration files (package.json, pyproject.toml, go.mod, Cargo.toml, pom.xml, build.gradle, etc.)
|
|
349
|
+
2. Detects your project's primary language using priority-based detection (Rust → Dart → Swift → ... → Shell)
|
|
350
|
+
3. Auto-detects build tools (Maven/Gradle for Java, CMake for C/C++, SPM for Swift, etc.)
|
|
351
|
+
4. Selects the appropriate CI/CD workflow template
|
|
352
|
+
5. Generates language-specific testing and linting configuration
|
|
353
|
+
|
|
354
|
+
### Supported Languages
|
|
355
|
+
|
|
356
|
+
For detailed language detection priority and build tool detection, see [Language Detection Guide](.moai/docs/language-detection-guide.md)
|
|
357
|
+
|
|
358
|
+
### Customization
|
|
359
|
+
|
|
360
|
+
For advanced workflow customization, see [Workflow Templates Guide](.moai/docs/workflow-templates.md)
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
322
364
|
## Earlier Detailed Guide (Optional Reading)
|
|
323
365
|
|
|
324
366
|
Need more explanations? See detailed guides below.
|
|
@@ -275,6 +275,48 @@ In this section you'll experience:
|
|
|
275
275
|
|
|
276
276
|
---
|
|
277
277
|
|
|
278
|
+
## Language Support
|
|
279
|
+
|
|
280
|
+
MoAI-ADK automatically detects and supports **15 programming languages** with dedicated CI/CD workflows:
|
|
281
|
+
|
|
282
|
+
### Core Languages (v0.11.0+)
|
|
283
|
+
- **Python** (pytest, mypy, ruff, 85% coverage target)
|
|
284
|
+
- **JavaScript** (npm/yarn/pnpm/bun auto-detect, 80% coverage target)
|
|
285
|
+
- **TypeScript** (tsc type checking, biome/eslint, 85% coverage target)
|
|
286
|
+
- **Go** (golangci-lint, gofmt, 75% coverage target)
|
|
287
|
+
|
|
288
|
+
### Extended Languages (v0.11.1+)
|
|
289
|
+
- **Ruby** (RSpec, Rubocop, bundle)
|
|
290
|
+
- **PHP** (PHPUnit, PHPCS, composer)
|
|
291
|
+
- **Java** (JUnit 5, Jacoco, Maven/Gradle auto-detection)
|
|
292
|
+
- **Rust** (cargo test, clippy, rustfmt)
|
|
293
|
+
- **Dart** (flutter test, dart analyze)
|
|
294
|
+
- **Swift** (XCTest, SwiftLint, SPM)
|
|
295
|
+
- **Kotlin** (JUnit 5, ktlint, Gradle)
|
|
296
|
+
- **C#** (xUnit, StyleCop, dotnet CLI)
|
|
297
|
+
- **C** (gcc/clang, cppcheck, CMake)
|
|
298
|
+
- **C++** (g++/clang++, Google Test, cpplint)
|
|
299
|
+
- **Shell** (shellcheck, bats-core)
|
|
300
|
+
|
|
301
|
+
### How Language Detection Works
|
|
302
|
+
|
|
303
|
+
When you run `/alfred:2-run SPEC-XXX`, MoAI-ADK automatically:
|
|
304
|
+
1. Scans your project for configuration files (package.json, pyproject.toml, go.mod, Cargo.toml, pom.xml, build.gradle, etc.)
|
|
305
|
+
2. Detects your project's primary language using priority-based detection (Rust → Dart → Swift → ... → Shell)
|
|
306
|
+
3. Auto-detects build tools (Maven/Gradle for Java, CMake for C/C++, SPM for Swift, etc.)
|
|
307
|
+
4. Selects the appropriate CI/CD workflow template
|
|
308
|
+
5. Generates language-specific testing and linting configuration
|
|
309
|
+
|
|
310
|
+
### Supported Languages
|
|
311
|
+
|
|
312
|
+
For detailed language detection priority and build tool detection, see [Language Detection Guide](.moai/docs/language-detection-guide.md)
|
|
313
|
+
|
|
314
|
+
### Customization
|
|
315
|
+
|
|
316
|
+
For advanced workflow customization, see [Workflow Templates Guide](.moai/docs/workflow-templates.md)
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
278
320
|
## Earlier Detailed Guide (Optional Reading)
|
|
279
321
|
|
|
280
322
|
Need more explanations? See detailed guides below.
|
|
@@ -59,7 +59,7 @@ class GitHubIssueCreator:
|
|
|
59
59
|
IssueType.BUG: ["bug", "reported"],
|
|
60
60
|
IssueType.FEATURE: ["feature-request", "enhancement"],
|
|
61
61
|
IssueType.IMPROVEMENT: ["improvement", "enhancement"],
|
|
62
|
-
IssueType.QUESTION: ["question", "help
|
|
62
|
+
IssueType.QUESTION: ["question", "help wanted"], # Fixed: "help-wanted" → "help wanted" (GitHub standard)
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
# Priority emoji
|
|
@@ -145,7 +145,7 @@ class GitHubIssueCreator:
|
|
|
145
145
|
# Collect labels
|
|
146
146
|
labels = self.LABEL_MAP.get(config.issue_type, []).copy()
|
|
147
147
|
if config.priority:
|
|
148
|
-
labels.append(
|
|
148
|
+
labels.append(config.priority.value) # Fixed: removed "priority-" prefix (use direct label names)
|
|
149
149
|
if config.category:
|
|
150
150
|
labels.append(f"category-{config.category.lower().replace(' ', '-')}")
|
|
151
151
|
if config.custom_labels:
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
# @CODE:CORE-PROJECT-001 | SPEC: SPEC-CORE-PROJECT-001.md | TEST: tests/unit/test_language_detector.py
|
|
2
|
+
# @CODE:LANG-DETECT-001 | SPEC: SPEC-LANG-DETECT-001.md | TEST: tests/unit/test_detector.py
|
|
3
|
+
"""Language detector module.
|
|
4
|
+
|
|
5
|
+
Automatically detects 20 programming languages.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class LanguageDetector:
|
|
12
|
+
"""Automatically detect up to 20 programming languages.
|
|
13
|
+
|
|
14
|
+
Prioritizes framework-specific files (e.g., Laravel, Django) over
|
|
15
|
+
generic language files to improve accuracy in mixed-language projects.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
LANGUAGE_PATTERNS = {
|
|
19
|
+
# @CODE:LDE-PRIORITY-001 | SPEC: SPEC-LANGUAGE-DETECTION-EXTENDED-001/spec.md
|
|
20
|
+
# Priority order (highest to lowest):
|
|
21
|
+
# 1. Rust, 2. Dart, 3. Swift, 4. Kotlin, 5. C#, 6. Java, 7. Ruby, 8. PHP
|
|
22
|
+
# 9. Go, 10. Python, 11. TypeScript, 12. JavaScript, 13. C++, 14. C, 15. Shell
|
|
23
|
+
|
|
24
|
+
"rust": ["*.rs", "Cargo.toml"],
|
|
25
|
+
"dart": ["*.dart", "pubspec.yaml"],
|
|
26
|
+
"swift": ["*.swift", "Package.swift"],
|
|
27
|
+
"kotlin": ["*.kt", "build.gradle.kts"],
|
|
28
|
+
"csharp": ["*.cs", "*.csproj"],
|
|
29
|
+
"java": ["*.java", "pom.xml", "build.gradle"],
|
|
30
|
+
# Ruby moved for priority (Rails detection)
|
|
31
|
+
# @CODE:LANG-DETECT-RUBY-001 | SPEC: Issue #51 Language Detection Fix
|
|
32
|
+
"ruby": [
|
|
33
|
+
"*.rb",
|
|
34
|
+
"Gemfile",
|
|
35
|
+
"Gemfile.lock", # Bundler: lock file (unique to Ruby)
|
|
36
|
+
"config/routes.rb", # Rails: routing file (unique identifier)
|
|
37
|
+
"app/controllers/", # Rails: controller directory
|
|
38
|
+
"Rakefile" # Rails/Ruby: task file
|
|
39
|
+
],
|
|
40
|
+
# PHP after Ruby (Laravel detection)
|
|
41
|
+
"php": [
|
|
42
|
+
"*.php",
|
|
43
|
+
"composer.json",
|
|
44
|
+
"artisan", # Laravel: CLI tool (unique identifier)
|
|
45
|
+
"app/", # Laravel: application directory
|
|
46
|
+
"bootstrap/laravel.php" # Laravel: bootstrap file
|
|
47
|
+
],
|
|
48
|
+
"go": ["*.go", "go.mod"],
|
|
49
|
+
"python": ["*.py", "pyproject.toml", "requirements.txt", "setup.py"],
|
|
50
|
+
"typescript": ["*.ts", "tsconfig.json"],
|
|
51
|
+
"javascript": ["*.js", "package.json"],
|
|
52
|
+
"cpp": ["*.cpp", "CMakeLists.txt"],
|
|
53
|
+
"c": ["*.c", "Makefile"],
|
|
54
|
+
"shell": ["*.sh", "*.bash"],
|
|
55
|
+
# Additional languages (lower priority)
|
|
56
|
+
"elixir": ["*.ex", "mix.exs"],
|
|
57
|
+
"scala": ["*.scala", "build.sbt"],
|
|
58
|
+
"clojure": ["*.clj", "project.clj"],
|
|
59
|
+
"haskell": ["*.hs", "*.cabal"],
|
|
60
|
+
"lua": ["*.lua"],
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
def detect(self, path: str | Path = ".") -> str | None:
|
|
64
|
+
"""Detect a single language (in priority order).
|
|
65
|
+
|
|
66
|
+
Args:
|
|
67
|
+
path: Directory to inspect.
|
|
68
|
+
|
|
69
|
+
Returns:
|
|
70
|
+
Detected language name (lowercase) or None.
|
|
71
|
+
"""
|
|
72
|
+
path = Path(path)
|
|
73
|
+
|
|
74
|
+
# Inspect each language in priority order
|
|
75
|
+
for language, patterns in self.LANGUAGE_PATTERNS.items():
|
|
76
|
+
if self._check_patterns(path, patterns):
|
|
77
|
+
return language
|
|
78
|
+
|
|
79
|
+
return None
|
|
80
|
+
|
|
81
|
+
def detect_multiple(self, path: str | Path = ".") -> list[str]:
|
|
82
|
+
"""Detect multiple languages.
|
|
83
|
+
|
|
84
|
+
Args:
|
|
85
|
+
path: Directory to inspect.
|
|
86
|
+
|
|
87
|
+
Returns:
|
|
88
|
+
List of all detected language names.
|
|
89
|
+
"""
|
|
90
|
+
path = Path(path)
|
|
91
|
+
detected = []
|
|
92
|
+
|
|
93
|
+
for language, patterns in self.LANGUAGE_PATTERNS.items():
|
|
94
|
+
if self._check_patterns(path, patterns):
|
|
95
|
+
detected.append(language)
|
|
96
|
+
|
|
97
|
+
return detected
|
|
98
|
+
|
|
99
|
+
def _check_patterns(self, path: Path, patterns: list[str]) -> bool:
|
|
100
|
+
"""Check whether any pattern matches.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
path: Directory to inspect.
|
|
104
|
+
patterns: List of glob patterns.
|
|
105
|
+
|
|
106
|
+
Returns:
|
|
107
|
+
True when any pattern matches.
|
|
108
|
+
"""
|
|
109
|
+
for pattern in patterns:
|
|
110
|
+
# Extension pattern (e.g., *.py)
|
|
111
|
+
if pattern.startswith("*."):
|
|
112
|
+
if list(path.rglob(pattern)):
|
|
113
|
+
return True
|
|
114
|
+
# Specific file name (e.g., pyproject.toml)
|
|
115
|
+
else:
|
|
116
|
+
if (path / pattern).exists():
|
|
117
|
+
return True
|
|
118
|
+
|
|
119
|
+
return False
|
|
120
|
+
|
|
121
|
+
def get_workflow_template_path(self, language: str) -> str:
|
|
122
|
+
"""Get the GitHub Actions workflow template path for a language.
|
|
123
|
+
|
|
124
|
+
@CODE:LDE-WORKFLOW-PATH-001 | SPEC: SPEC-LANGUAGE-DETECTION-EXTENDED-001/spec.md
|
|
125
|
+
|
|
126
|
+
Args:
|
|
127
|
+
language: Programming language name (lowercase).
|
|
128
|
+
|
|
129
|
+
Returns:
|
|
130
|
+
Workflow template file path relative to templates directory.
|
|
131
|
+
|
|
132
|
+
Raises:
|
|
133
|
+
ValueError: If language is not supported for workflows.
|
|
134
|
+
"""
|
|
135
|
+
workflow_mapping = {
|
|
136
|
+
"python": ".github/workflows/python-tag-validation.yml",
|
|
137
|
+
"javascript": ".github/workflows/javascript-tag-validation.yml",
|
|
138
|
+
"typescript": ".github/workflows/typescript-tag-validation.yml",
|
|
139
|
+
"go": ".github/workflows/go-tag-validation.yml",
|
|
140
|
+
"ruby": ".github/workflows/ruby-tag-validation.yml",
|
|
141
|
+
"php": ".github/workflows/php-tag-validation.yml",
|
|
142
|
+
"java": ".github/workflows/java-tag-validation.yml",
|
|
143
|
+
"rust": ".github/workflows/rust-tag-validation.yml",
|
|
144
|
+
"dart": ".github/workflows/dart-tag-validation.yml",
|
|
145
|
+
"swift": ".github/workflows/swift-tag-validation.yml",
|
|
146
|
+
"kotlin": ".github/workflows/kotlin-tag-validation.yml",
|
|
147
|
+
"csharp": ".github/workflows/csharp-tag-validation.yml",
|
|
148
|
+
"c": ".github/workflows/c-tag-validation.yml",
|
|
149
|
+
"cpp": ".github/workflows/cpp-tag-validation.yml",
|
|
150
|
+
"shell": ".github/workflows/shell-tag-validation.yml",
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if language.lower() not in workflow_mapping:
|
|
154
|
+
raise ValueError(
|
|
155
|
+
f"No workflow template available for language: {language}. "
|
|
156
|
+
f"Supported languages: {', '.join(workflow_mapping.keys())}"
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
return workflow_mapping[language.lower()]
|
|
160
|
+
|
|
161
|
+
def detect_package_manager(self, path: str | Path = ".") -> str | None:
|
|
162
|
+
"""Detect the package manager for the detected language.
|
|
163
|
+
|
|
164
|
+
@CODE:LDE-PKG-MGR-001 | SPEC: SPEC-LANGUAGE-DETECTION-EXTENDED-001/spec.md
|
|
165
|
+
|
|
166
|
+
Args:
|
|
167
|
+
path: Directory to inspect.
|
|
168
|
+
|
|
169
|
+
Returns:
|
|
170
|
+
Package manager name or None if not detected.
|
|
171
|
+
"""
|
|
172
|
+
path = Path(path)
|
|
173
|
+
|
|
174
|
+
# Ruby
|
|
175
|
+
if (path / "Gemfile").exists():
|
|
176
|
+
return "bundle"
|
|
177
|
+
|
|
178
|
+
# PHP
|
|
179
|
+
if (path / "composer.json").exists():
|
|
180
|
+
return "composer"
|
|
181
|
+
|
|
182
|
+
# Java/Kotlin
|
|
183
|
+
if (path / "pom.xml").exists():
|
|
184
|
+
return "maven"
|
|
185
|
+
if (path / "build.gradle").exists() or (path / "build.gradle.kts").exists():
|
|
186
|
+
return "gradle"
|
|
187
|
+
|
|
188
|
+
# Rust
|
|
189
|
+
if (path / "Cargo.toml").exists():
|
|
190
|
+
return "cargo"
|
|
191
|
+
|
|
192
|
+
# Dart/Flutter
|
|
193
|
+
if (path / "pubspec.yaml").exists():
|
|
194
|
+
return "dart_pub"
|
|
195
|
+
|
|
196
|
+
# Swift
|
|
197
|
+
if (path / "Package.swift").exists():
|
|
198
|
+
return "spm"
|
|
199
|
+
|
|
200
|
+
# C#
|
|
201
|
+
if list(path.glob("*.csproj")) or list(path.glob("*.sln")):
|
|
202
|
+
return "dotnet"
|
|
203
|
+
|
|
204
|
+
# Python
|
|
205
|
+
if (path / "pyproject.toml").exists():
|
|
206
|
+
return "pip"
|
|
207
|
+
|
|
208
|
+
# JavaScript/TypeScript (check in priority order)
|
|
209
|
+
if (path / "package.json").exists():
|
|
210
|
+
# Check for package managers in priority order
|
|
211
|
+
if (path / "bun.lockb").exists():
|
|
212
|
+
return "bun"
|
|
213
|
+
elif (path / "pnpm-lock.yaml").exists():
|
|
214
|
+
return "pnpm"
|
|
215
|
+
elif (path / "yarn.lock").exists():
|
|
216
|
+
return "yarn"
|
|
217
|
+
elif (path / "package-lock.json").exists():
|
|
218
|
+
return "npm"
|
|
219
|
+
else:
|
|
220
|
+
# Default to npm for package.json without lock files
|
|
221
|
+
return "npm"
|
|
222
|
+
|
|
223
|
+
# Go
|
|
224
|
+
if (path / "go.mod").exists():
|
|
225
|
+
return "go_modules"
|
|
226
|
+
|
|
227
|
+
return None
|
|
228
|
+
|
|
229
|
+
def detect_build_tool(self, path: str | Path = ".", language: str | None = None) -> str | None:
|
|
230
|
+
"""Detect the build tool for the detected language.
|
|
231
|
+
|
|
232
|
+
@CODE:LDE-BUILD-TOOL-001 | SPEC: SPEC-LANGUAGE-DETECTION-EXTENDED-001/spec.md
|
|
233
|
+
|
|
234
|
+
Args:
|
|
235
|
+
path: Directory to inspect.
|
|
236
|
+
language: Optional language hint for disambiguation.
|
|
237
|
+
|
|
238
|
+
Returns:
|
|
239
|
+
Build tool name or None if not detected.
|
|
240
|
+
"""
|
|
241
|
+
path = Path(path)
|
|
242
|
+
|
|
243
|
+
# C/C++
|
|
244
|
+
if (path / "CMakeLists.txt").exists():
|
|
245
|
+
return "cmake"
|
|
246
|
+
if (path / "Makefile").exists():
|
|
247
|
+
return "make"
|
|
248
|
+
|
|
249
|
+
# Java/Kotlin
|
|
250
|
+
if language in ["java", "kotlin"]:
|
|
251
|
+
if (path / "pom.xml").exists():
|
|
252
|
+
return "maven"
|
|
253
|
+
if (path / "build.gradle").exists() or (path / "build.gradle.kts").exists():
|
|
254
|
+
return "gradle"
|
|
255
|
+
|
|
256
|
+
# Rust
|
|
257
|
+
if (path / "Cargo.toml").exists():
|
|
258
|
+
return "cargo"
|
|
259
|
+
|
|
260
|
+
# Swift
|
|
261
|
+
if (path / "Package.swift").exists():
|
|
262
|
+
return "spm"
|
|
263
|
+
if list(path.glob("*.xcodeproj")) or list(path.glob("*.xcworkspace")):
|
|
264
|
+
return "xcode"
|
|
265
|
+
|
|
266
|
+
# C#
|
|
267
|
+
if list(path.glob("*.csproj")) or list(path.glob("*.sln")):
|
|
268
|
+
return "dotnet"
|
|
269
|
+
|
|
270
|
+
return None
|
|
271
|
+
|
|
272
|
+
def get_supported_languages_for_workflows(self) -> list[str]:
|
|
273
|
+
"""Get the list of languages with dedicated CI/CD workflow support.
|
|
274
|
+
|
|
275
|
+
@CODE:LDE-SUPPORTED-LANGS-001 | SPEC: SPEC-LANGUAGE-DETECTION-EXTENDED-001/spec.md
|
|
276
|
+
|
|
277
|
+
Returns:
|
|
278
|
+
List of supported language names (15 total).
|
|
279
|
+
"""
|
|
280
|
+
return [
|
|
281
|
+
"python",
|
|
282
|
+
"javascript",
|
|
283
|
+
"typescript",
|
|
284
|
+
"go",
|
|
285
|
+
"ruby",
|
|
286
|
+
"php",
|
|
287
|
+
"java",
|
|
288
|
+
"rust",
|
|
289
|
+
"dart",
|
|
290
|
+
"swift",
|
|
291
|
+
"kotlin",
|
|
292
|
+
"csharp",
|
|
293
|
+
"c",
|
|
294
|
+
"cpp",
|
|
295
|
+
"shell",
|
|
296
|
+
]
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
def detect_project_language(path: str | Path = ".") -> str | None:
|
|
300
|
+
"""Detect the project language (helper).
|
|
301
|
+
|
|
302
|
+
Args:
|
|
303
|
+
path: Directory to inspect (default: current directory).
|
|
304
|
+
|
|
305
|
+
Returns:
|
|
306
|
+
Detected language name (lowercase) or None.
|
|
307
|
+
"""
|
|
308
|
+
detector = LanguageDetector()
|
|
309
|
+
return detector.detect(path)
|
|
@@ -290,7 +290,7 @@ class CIValidator(PreCommitValidator):
|
|
|
290
290
|
tag = error.tag
|
|
291
291
|
message = error.message
|
|
292
292
|
locations = ', '.join([
|
|
293
|
-
f"`{f}:{
|
|
293
|
+
f"`{f}:{line}`" for f, line in error.locations[:3]
|
|
294
294
|
])
|
|
295
295
|
if len(error.locations) > 3:
|
|
296
296
|
locations += f" (+{len(error.locations) - 3} more)"
|
|
@@ -26,7 +26,7 @@ class ValidationError:
|
|
|
26
26
|
locations: List[Tuple[str, int]] = field(default_factory=list)
|
|
27
27
|
|
|
28
28
|
def __str__(self) -> str:
|
|
29
|
-
loc_str = ", ".join([f"{f}:{
|
|
29
|
+
loc_str = ", ".join([f"{f}:{line}" for f, line in self.locations])
|
|
30
30
|
return f"{self.message}: {self.tag} at {loc_str}"
|
|
31
31
|
|
|
32
32
|
|