moai-adk 0.11.0__tar.gz → 0.11.1__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.11.1}/.gitignore +1 -24
- {moai_adk-0.11.0 → moai_adk-0.11.1}/PKG-INFO +43 -1
- {moai_adk-0.11.0 → moai_adk-0.11.1}/README.md +42 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/pyproject.toml +1 -1
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/issue_creator.py +2 -2
- moai_adk-0.11.1/src/moai_adk/core/project/detector.py +399 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/agents/alfred/cc-manager.md +316 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/agents/alfred/debug-helper.md +208 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/agents/alfred/doc-syncer.md +214 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/agents/alfred/git-manager.md +406 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/agents/alfred/implementation-planner.md +350 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/agents/alfred/project-manager.md +273 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/agents/alfred/quality-gate.md +343 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/agents/alfred/skill-factory.md +865 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/agents/alfred/spec-builder.md +287 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/agents/alfred/tag-agent.md +287 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +326 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/agents/alfred/trust-checker.md +375 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/commands/alfred/0-project.md +1187 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/commands/alfred/1-plan.md +734 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/commands/alfred/2-run.md +551 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/commands/alfred/3-sync.md +689 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/commands/alfred/9-feedback.md +149 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +208 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/core/project.py +744 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/core/timeout.py +136 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +109 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +198 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/notification__handle_events.py +97 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +97 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +103 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +97 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +97 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +170 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/shared/core/checkpoint.py +271 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +67 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +749 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +230 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +198 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +21 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +156 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +174 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +87 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +61 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/stop__handle_interrupt.py +97 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/subagent_stop__handle_subagent_end.py +97 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +111 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +1 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +136 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +640 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +696 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +474 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/settings.json +144 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +113 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +28 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +122 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +237 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +615 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +653 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +113 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +113 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +28 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +113 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +28 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +113 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +28 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +269 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +298 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +307 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +252 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +199 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +316 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +263 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +291 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +290 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +123 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +123 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +123 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +124 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +124 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +123 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +123 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +123 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +123 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +303 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1064 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1047 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +113 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +113 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +113 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +116 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +122 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +113 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +113 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +113 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +307 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +124 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +124 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +123 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +123 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +124 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +124 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +125 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +124 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +123 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +431 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +123 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +124 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +124 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +123 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +123 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +124 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +123 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +127 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +482 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +278 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +477 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +271 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +583 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +526 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +465 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +328 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +312 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +285 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +278 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +303 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +137 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +219 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +161 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +541 -0
- moai_adk-0.11.1/src/moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +622 -0
- moai_adk-0.11.1/src/moai_adk/templates/.github/workflows/c-tag-validation.yml +83 -0
- moai_adk-0.11.1/src/moai_adk/templates/.github/workflows/cpp-tag-validation.yml +79 -0
- moai_adk-0.11.1/src/moai_adk/templates/.github/workflows/csharp-tag-validation.yml +65 -0
- moai_adk-0.11.1/src/moai_adk/templates/.github/workflows/dart-tag-validation.yml +82 -0
- moai_adk-0.11.1/src/moai_adk/templates/.github/workflows/java-tag-validation.yml +75 -0
- moai_adk-0.11.1/src/moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +67 -0
- moai_adk-0.11.1/src/moai_adk/templates/.github/workflows/php-tag-validation.yml +56 -0
- moai_adk-0.11.1/src/moai_adk/templates/.github/workflows/ruby-tag-validation.yml +68 -0
- moai_adk-0.11.1/src/moai_adk/templates/.github/workflows/rust-tag-validation.yml +73 -0
- moai_adk-0.11.1/src/moai_adk/templates/.github/workflows/shell-tag-validation.yml +65 -0
- moai_adk-0.11.1/src/moai_adk/templates/.github/workflows/swift-tag-validation.yml +79 -0
- moai_adk-0.11.1/src/moai_adk/templates/.moai/config.json +113 -0
- moai_adk-0.11.1/src/moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +208 -0
- moai_adk-0.11.1/src/moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +369 -0
- moai_adk-0.11.1/src/moai_adk/templates/.moai/memory/CLAUDE-RULES.md +539 -0
- moai_adk-0.11.1/src/moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +344 -0
- moai_adk-0.11.1/src/moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +330 -0
- moai_adk-0.11.1/src/moai_adk/templates/.moai/memory/ISSUE-LABEL-MAPPING.md +150 -0
- moai_adk-0.11.1/src/moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +218 -0
- moai_adk-0.11.1/src/moai_adk/templates/.moai/memory/SPEC-METADATA.md +356 -0
- moai_adk-0.11.1/src/moai_adk/templates/.moai/memory/gitflow-protection-policy.md +330 -0
- moai_adk-0.11.1/src/moai_adk/templates/.moai/memory/spec-metadata.md +356 -0
- moai_adk-0.11.1/src/moai_adk/templates/.moai/project/product.md +161 -0
- moai_adk-0.11.1/src/moai_adk/templates/.moai/project/structure.md +156 -0
- moai_adk-0.11.1/src/moai_adk/templates/.moai/project/tech.md +227 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/templates/CLAUDE.md +90 -10
- moai_adk-0.11.1/src/moai_adk/templates/workflows/go-tag-validation.yml +130 -0
- moai_adk-0.11.1/src/moai_adk/templates/workflows/javascript-tag-validation.yml +135 -0
- moai_adk-0.11.1/src/moai_adk/templates/workflows/python-tag-validation.yml +118 -0
- moai_adk-0.11.1/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.11.1}/LICENSE +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/__main__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/cli/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/cli/commands/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/cli/commands/backup.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/cli/commands/doctor.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/cli/commands/init.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/cli/commands/status.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/cli/commands/update.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/cli/main.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/cli/prompts/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/cli/prompts/init_prompts.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/config/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/config/migration.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/diagnostics/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/diagnostics/slash_commands.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/git/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/git/branch.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/git/branch_manager.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/git/checkpoint.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/git/commit.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/git/event_detector.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/git/manager.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/project/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/project/backup_utils.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/project/checker.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/project/initializer.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/project/phase_executor.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/project/validator.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/quality/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/quality/trust_checker.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/quality/validators/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/quality/validators/base_validator.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/tags/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/tags/ci_validator.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/tags/cli.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/tags/generator.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/tags/inserter.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/tags/mapper.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/tags/parser.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/tags/pre_commit_validator.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/tags/reporter.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/tags/tags.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/tags/validator.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/template/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/template/backup.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/template/config.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/template/languages.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/template/merger.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/template/processor.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/core/template_engine.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/templates/.git-hooks/pre-push +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/templates/.github/ISSUE_TEMPLATE/spec.yml +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/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.11.1/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.11.1/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.11.1/src/moai_adk/templates/.github/workflows/moai-adk-tag-validation.yml +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/templates/.github/workflows/moai-release-create.yml +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/templates/.gitignore +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/templates/README.md +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/templates/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/templates/src/moai_adk/core/tags/pre_commit_validator.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/templates/src/moai_adk/core/tags/reporter.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/utils/__init__.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/src/moai_adk/utils/banner.py +0 -0
- {moai_adk-0.11.0 → moai_adk-0.11.1}/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.11.
|
|
3
|
+
Version: 0.11.1
|
|
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,399 @@
|
|
|
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
|
+
# @CODE:LANG-002 | SPEC: SPEC-LANGUAGE-DETECTION-001.md | TEST: tests/unit/test_detector.py
|
|
122
|
+
def detect_package_manager(self, path: str | Path = ".") -> str:
|
|
123
|
+
"""Detect JavaScript/TypeScript package manager.
|
|
124
|
+
|
|
125
|
+
Checks for lock files in priority order (highest to lowest):
|
|
126
|
+
1. bun.lockb (Bun) - fastest runtime
|
|
127
|
+
2. pnpm-lock.yaml (pnpm) - efficient disk usage
|
|
128
|
+
3. yarn.lock (Yarn) - Facebook's package manager
|
|
129
|
+
4. package-lock.json (npm) - default Node.js package manager
|
|
130
|
+
|
|
131
|
+
Priority order reflects modern best practices and performance characteristics.
|
|
132
|
+
|
|
133
|
+
Args:
|
|
134
|
+
path: Project root directory to inspect. Defaults to current directory.
|
|
135
|
+
|
|
136
|
+
Returns:
|
|
137
|
+
Package manager name: 'bun' | 'pnpm' | 'yarn' | 'npm'
|
|
138
|
+
|
|
139
|
+
Example:
|
|
140
|
+
>>> detector = LanguageDetector()
|
|
141
|
+
>>> detector.detect_package_manager("/path/to/project")
|
|
142
|
+
'pnpm'
|
|
143
|
+
"""
|
|
144
|
+
path = Path(path)
|
|
145
|
+
|
|
146
|
+
# Check in priority order (Bun → pnpm → Yarn → npm)
|
|
147
|
+
if (path / "bun.lockb").exists():
|
|
148
|
+
return "bun"
|
|
149
|
+
elif (path / "pnpm-lock.yaml").exists():
|
|
150
|
+
return "pnpm"
|
|
151
|
+
elif (path / "yarn.lock").exists():
|
|
152
|
+
return "yarn"
|
|
153
|
+
else:
|
|
154
|
+
# Default to npm (most common, works everywhere)
|
|
155
|
+
return "npm"
|
|
156
|
+
|
|
157
|
+
# @CODE:LANG-002 | SPEC: SPEC-LANGUAGE-DETECTION-001.md | TEST: tests/unit/test_detector.py
|
|
158
|
+
def get_workflow_template_path(self, language: str) -> str:
|
|
159
|
+
"""Get workflow template path for detected language.
|
|
160
|
+
|
|
161
|
+
Returns the relative path to the language-specific GitHub Actions workflow template.
|
|
162
|
+
These templates are pre-configured with language-specific testing tools, linting,
|
|
163
|
+
and coverage reporting.
|
|
164
|
+
|
|
165
|
+
Args:
|
|
166
|
+
language: Detected language name (lowercase).
|
|
167
|
+
Supported: 'python', 'javascript', 'typescript', 'go'
|
|
168
|
+
|
|
169
|
+
Returns:
|
|
170
|
+
Relative path to workflow template (e.g., 'workflows/python-tag-validation.yml')
|
|
171
|
+
|
|
172
|
+
Raises:
|
|
173
|
+
ValueError: If language doesn't have a dedicated workflow template
|
|
174
|
+
|
|
175
|
+
Example:
|
|
176
|
+
>>> detector = LanguageDetector()
|
|
177
|
+
>>> detector.get_workflow_template_path("python")
|
|
178
|
+
'workflows/python-tag-validation.yml'
|
|
179
|
+
"""
|
|
180
|
+
# Language-to-template mapping (add new languages here)
|
|
181
|
+
template_mapping = {
|
|
182
|
+
"python": "python-tag-validation.yml",
|
|
183
|
+
"javascript": "javascript-tag-validation.yml",
|
|
184
|
+
"typescript": "typescript-tag-validation.yml",
|
|
185
|
+
"go": "go-tag-validation.yml",
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if language not in template_mapping:
|
|
189
|
+
supported = ", ".join(sorted(template_mapping.keys()))
|
|
190
|
+
raise ValueError(
|
|
191
|
+
f"Language '{language}' does not have a dedicated workflow template. "
|
|
192
|
+
f"Supported languages: {supported}"
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
template_filename = template_mapping[language]
|
|
196
|
+
# Return path relative to templates directory
|
|
197
|
+
return f"workflows/{template_filename}"
|
|
198
|
+
|
|
199
|
+
# @CODE:LANG-002 | SPEC: SPEC-LANGUAGE-DETECTION-001.md | TEST: tests/unit/test_detector.py
|
|
200
|
+
def get_supported_languages_for_workflows(self) -> list[str]:
|
|
201
|
+
"""Get list of languages with dedicated workflow templates.
|
|
202
|
+
|
|
203
|
+
Returns languages that have pre-built GitHub Actions workflow templates
|
|
204
|
+
with language-specific testing, linting, and coverage configuration.
|
|
205
|
+
|
|
206
|
+
Returns:
|
|
207
|
+
List of supported language names (lowercase)
|
|
208
|
+
|
|
209
|
+
Example:
|
|
210
|
+
>>> detector = LanguageDetector()
|
|
211
|
+
>>> detector.get_supported_languages_for_workflows()
|
|
212
|
+
['python', 'javascript', 'typescript', 'go']
|
|
213
|
+
|
|
214
|
+
Note:
|
|
215
|
+
While LanguageDetector can detect 20+ languages, only these 4
|
|
216
|
+
have dedicated CI/CD workflow templates. Other languages fall back
|
|
217
|
+
to generic workflows.
|
|
218
|
+
"""
|
|
219
|
+
return ["python", "javascript", "typescript", "go"]
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
def get_workflow_template_path(self, language: str) -> str:
|
|
223
|
+
"""Get the GitHub Actions workflow template path for a language.
|
|
224
|
+
|
|
225
|
+
@CODE:LDE-WORKFLOW-PATH-001 | SPEC: SPEC-LANGUAGE-DETECTION-EXTENDED-001/spec.md
|
|
226
|
+
|
|
227
|
+
Args:
|
|
228
|
+
language: Programming language name (lowercase).
|
|
229
|
+
|
|
230
|
+
Returns:
|
|
231
|
+
Workflow template file path relative to templates directory.
|
|
232
|
+
|
|
233
|
+
Raises:
|
|
234
|
+
ValueError: If language is not supported for workflows.
|
|
235
|
+
"""
|
|
236
|
+
workflow_mapping = {
|
|
237
|
+
"python": ".github/workflows/python-tag-validation.yml",
|
|
238
|
+
"javascript": ".github/workflows/javascript-tag-validation.yml",
|
|
239
|
+
"typescript": ".github/workflows/typescript-tag-validation.yml",
|
|
240
|
+
"go": ".github/workflows/go-tag-validation.yml",
|
|
241
|
+
"ruby": ".github/workflows/ruby-tag-validation.yml",
|
|
242
|
+
"php": ".github/workflows/php-tag-validation.yml",
|
|
243
|
+
"java": ".github/workflows/java-tag-validation.yml",
|
|
244
|
+
"rust": ".github/workflows/rust-tag-validation.yml",
|
|
245
|
+
"dart": ".github/workflows/dart-tag-validation.yml",
|
|
246
|
+
"swift": ".github/workflows/swift-tag-validation.yml",
|
|
247
|
+
"kotlin": ".github/workflows/kotlin-tag-validation.yml",
|
|
248
|
+
"csharp": ".github/workflows/csharp-tag-validation.yml",
|
|
249
|
+
"c": ".github/workflows/c-tag-validation.yml",
|
|
250
|
+
"cpp": ".github/workflows/cpp-tag-validation.yml",
|
|
251
|
+
"shell": ".github/workflows/shell-tag-validation.yml",
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
if language.lower() not in workflow_mapping:
|
|
255
|
+
raise ValueError(
|
|
256
|
+
f"No workflow template available for language: {language}. "
|
|
257
|
+
f"Supported languages: {', '.join(workflow_mapping.keys())}"
|
|
258
|
+
)
|
|
259
|
+
|
|
260
|
+
return workflow_mapping[language.lower()]
|
|
261
|
+
|
|
262
|
+
def detect_package_manager(self, path: str | Path = ".") -> str | None:
|
|
263
|
+
"""Detect the package manager for the detected language.
|
|
264
|
+
|
|
265
|
+
@CODE:LDE-PKG-MGR-001 | SPEC: SPEC-LANGUAGE-DETECTION-EXTENDED-001/spec.md
|
|
266
|
+
|
|
267
|
+
Args:
|
|
268
|
+
path: Directory to inspect.
|
|
269
|
+
|
|
270
|
+
Returns:
|
|
271
|
+
Package manager name or None if not detected.
|
|
272
|
+
"""
|
|
273
|
+
path = Path(path)
|
|
274
|
+
|
|
275
|
+
# Ruby
|
|
276
|
+
if (path / "Gemfile").exists():
|
|
277
|
+
return "bundle"
|
|
278
|
+
|
|
279
|
+
# PHP
|
|
280
|
+
if (path / "composer.json").exists():
|
|
281
|
+
return "composer"
|
|
282
|
+
|
|
283
|
+
# Java/Kotlin
|
|
284
|
+
if (path / "pom.xml").exists():
|
|
285
|
+
return "maven"
|
|
286
|
+
if (path / "build.gradle").exists() or (path / "build.gradle.kts").exists():
|
|
287
|
+
return "gradle"
|
|
288
|
+
|
|
289
|
+
# Rust
|
|
290
|
+
if (path / "Cargo.toml").exists():
|
|
291
|
+
return "cargo"
|
|
292
|
+
|
|
293
|
+
# Dart/Flutter
|
|
294
|
+
if (path / "pubspec.yaml").exists():
|
|
295
|
+
return "dart_pub"
|
|
296
|
+
|
|
297
|
+
# Swift
|
|
298
|
+
if (path / "Package.swift").exists():
|
|
299
|
+
return "spm"
|
|
300
|
+
|
|
301
|
+
# C#
|
|
302
|
+
if list(path.glob("*.csproj")) or list(path.glob("*.sln")):
|
|
303
|
+
return "dotnet"
|
|
304
|
+
|
|
305
|
+
# Python
|
|
306
|
+
if (path / "pyproject.toml").exists():
|
|
307
|
+
return "pip"
|
|
308
|
+
|
|
309
|
+
# JavaScript/TypeScript
|
|
310
|
+
if (path / "package.json").exists():
|
|
311
|
+
return "npm"
|
|
312
|
+
|
|
313
|
+
# Go
|
|
314
|
+
if (path / "go.mod").exists():
|
|
315
|
+
return "go_modules"
|
|
316
|
+
|
|
317
|
+
return None
|
|
318
|
+
|
|
319
|
+
def detect_build_tool(self, path: str | Path = ".", language: str | None = None) -> str | None:
|
|
320
|
+
"""Detect the build tool for the detected language.
|
|
321
|
+
|
|
322
|
+
@CODE:LDE-BUILD-TOOL-001 | SPEC: SPEC-LANGUAGE-DETECTION-EXTENDED-001/spec.md
|
|
323
|
+
|
|
324
|
+
Args:
|
|
325
|
+
path: Directory to inspect.
|
|
326
|
+
language: Optional language hint for disambiguation.
|
|
327
|
+
|
|
328
|
+
Returns:
|
|
329
|
+
Build tool name or None if not detected.
|
|
330
|
+
"""
|
|
331
|
+
path = Path(path)
|
|
332
|
+
|
|
333
|
+
# C/C++
|
|
334
|
+
if (path / "CMakeLists.txt").exists():
|
|
335
|
+
return "cmake"
|
|
336
|
+
if (path / "Makefile").exists():
|
|
337
|
+
return "make"
|
|
338
|
+
|
|
339
|
+
# Java/Kotlin
|
|
340
|
+
if language in ["java", "kotlin"]:
|
|
341
|
+
if (path / "pom.xml").exists():
|
|
342
|
+
return "maven"
|
|
343
|
+
if (path / "build.gradle").exists() or (path / "build.gradle.kts").exists():
|
|
344
|
+
return "gradle"
|
|
345
|
+
|
|
346
|
+
# Rust
|
|
347
|
+
if (path / "Cargo.toml").exists():
|
|
348
|
+
return "cargo"
|
|
349
|
+
|
|
350
|
+
# Swift
|
|
351
|
+
if (path / "Package.swift").exists():
|
|
352
|
+
return "spm"
|
|
353
|
+
if list(path.glob("*.xcodeproj")) or list(path.glob("*.xcworkspace")):
|
|
354
|
+
return "xcode"
|
|
355
|
+
|
|
356
|
+
# C#
|
|
357
|
+
if list(path.glob("*.csproj")) or list(path.glob("*.sln")):
|
|
358
|
+
return "dotnet"
|
|
359
|
+
|
|
360
|
+
return None
|
|
361
|
+
|
|
362
|
+
def get_supported_languages_for_workflows(self) -> list[str]:
|
|
363
|
+
"""Get the list of languages with dedicated CI/CD workflow support.
|
|
364
|
+
|
|
365
|
+
@CODE:LDE-SUPPORTED-LANGS-001 | SPEC: SPEC-LANGUAGE-DETECTION-EXTENDED-001/spec.md
|
|
366
|
+
|
|
367
|
+
Returns:
|
|
368
|
+
List of supported language names (15 total).
|
|
369
|
+
"""
|
|
370
|
+
return [
|
|
371
|
+
"python",
|
|
372
|
+
"javascript",
|
|
373
|
+
"typescript",
|
|
374
|
+
"go",
|
|
375
|
+
"ruby",
|
|
376
|
+
"php",
|
|
377
|
+
"java",
|
|
378
|
+
"rust",
|
|
379
|
+
"dart",
|
|
380
|
+
"swift",
|
|
381
|
+
"kotlin",
|
|
382
|
+
"csharp",
|
|
383
|
+
"c",
|
|
384
|
+
"cpp",
|
|
385
|
+
"shell",
|
|
386
|
+
]
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
def detect_project_language(path: str | Path = ".") -> str | None:
|
|
390
|
+
"""Detect the project language (helper).
|
|
391
|
+
|
|
392
|
+
Args:
|
|
393
|
+
path: Directory to inspect (default: current directory).
|
|
394
|
+
|
|
395
|
+
Returns:
|
|
396
|
+
Detected language name (lowercase) or None.
|
|
397
|
+
"""
|
|
398
|
+
detector = LanguageDetector()
|
|
399
|
+
return detector.detect(path)
|