moai-adk 0.11.0__py3-none-any.whl โ 0.12.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/core/issue_creator.py +2 -2
- moai_adk/core/project/detector.py +285 -12
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +316 -0
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +208 -0
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +214 -0
- moai_adk/templates/.claude/agents/alfred/git-manager.md +406 -0
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +350 -0
- moai_adk/templates/.claude/agents/alfred/project-manager.md +273 -0
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +343 -0
- moai_adk/templates/.claude/agents/alfred/skill-factory.md +865 -0
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +287 -0
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +287 -0
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +326 -0
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +375 -0
- moai_adk/templates/.claude/commands/alfred/0-project.md +1187 -0
- moai_adk/templates/.claude/commands/alfred/1-plan.md +734 -0
- moai_adk/templates/.claude/commands/alfred/2-run.md +551 -0
- moai_adk/templates/.claude/commands/alfred/3-sync.md +689 -0
- moai_adk/templates/.claude/commands/alfred/9-feedback.md +149 -0
- moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +208 -0
- moai_adk/templates/.claude/hooks/alfred/core/project.py +744 -0
- moai_adk/templates/.claude/hooks/alfred/core/timeout.py +136 -0
- moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +109 -0
- moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +198 -0
- moai_adk/templates/.claude/hooks/alfred/notification__handle_events.py +94 -0
- moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +94 -0
- moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +100 -0
- moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +94 -0
- moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +94 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +170 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/checkpoint.py +271 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +67 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +749 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +230 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +198 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +21 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +156 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +174 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +87 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +61 -0
- moai_adk/templates/.claude/hooks/alfred/stop__handle_interrupt.py +94 -0
- moai_adk/templates/.claude/hooks/alfred/subagent_stop__handle_subagent_end.py +94 -0
- moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +111 -0
- moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +1 -0
- moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +136 -0
- moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +640 -0
- moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +696 -0
- moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +474 -0
- moai_adk/templates/.claude/settings.json +144 -0
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +122 -0
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +237 -0
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +615 -0
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +653 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +269 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +298 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +307 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +252 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +199 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +316 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +263 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +291 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +290 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +303 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1064 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1047 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +116 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +122 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +307 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
- moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +125 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +431 -0
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +127 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +482 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +278 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +477 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +271 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +583 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +526 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +465 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +328 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +312 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +285 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +278 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +303 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +137 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +219 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +161 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +541 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +622 -0
- moai_adk/templates/.github/workflows/c-tag-validation.yml +83 -0
- moai_adk/templates/.github/workflows/cpp-tag-validation.yml +79 -0
- moai_adk/templates/.github/workflows/csharp-tag-validation.yml +65 -0
- moai_adk/templates/.github/workflows/dart-tag-validation.yml +82 -0
- moai_adk/templates/.github/workflows/java-tag-validation.yml +75 -0
- moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +67 -0
- moai_adk/templates/.github/workflows/php-tag-validation.yml +56 -0
- moai_adk/templates/.github/workflows/ruby-tag-validation.yml +68 -0
- moai_adk/templates/.github/workflows/rust-tag-validation.yml +73 -0
- moai_adk/templates/.github/workflows/shell-tag-validation.yml +65 -0
- moai_adk/templates/.github/workflows/swift-tag-validation.yml +79 -0
- moai_adk/templates/.moai/config.json +113 -0
- moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +208 -0
- moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +369 -0
- moai_adk/templates/.moai/memory/CLAUDE-RULES.md +539 -0
- moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +344 -0
- moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +330 -0
- moai_adk/templates/.moai/memory/ISSUE-LABEL-MAPPING.md +150 -0
- moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +218 -0
- moai_adk/templates/.moai/memory/SPEC-METADATA.md +356 -0
- moai_adk/templates/.moai/memory/gitflow-protection-policy.md +330 -0
- moai_adk/templates/.moai/memory/spec-metadata.md +356 -0
- moai_adk/templates/.moai/project/product.md +161 -0
- moai_adk/templates/.moai/project/structure.md +156 -0
- moai_adk/templates/.moai/project/tech.md +227 -0
- moai_adk/templates/CLAUDE.md +90 -10
- moai_adk/templates/workflows/go-tag-validation.yml +130 -0
- moai_adk/templates/workflows/javascript-tag-validation.yml +135 -0
- moai_adk/templates/workflows/python-tag-validation.yml +118 -0
- moai_adk/templates/workflows/typescript-tag-validation.yml +154 -0
- {moai_adk-0.11.0.dist-info โ moai_adk-0.12.1.dist-info}/METADATA +43 -1
- moai_adk-0.12.1.dist-info/RECORD +330 -0
- moai_adk-0.11.0.dist-info/RECORD +0 -77
- /moai_adk/templates/.github/workflows/{release.yml โ moai-adk-release.yml} +0 -0
- /moai_adk/templates/.github/workflows/{spec-issue-sync.yml โ moai-adk-spec-issue-sync.yml} +0 -0
- /moai_adk/templates/.github/workflows/{tag-validation.yml โ moai-adk-tag-validation.yml} +0 -0
- {moai_adk-0.11.0.dist-info โ moai_adk-0.12.1.dist-info}/WHEEL +0 -0
- {moai_adk-0.11.0.dist-info โ moai_adk-0.12.1.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.11.0.dist-info โ moai_adk-0.12.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: alfred:9-feedback
|
|
3
|
+
description: "Interactive GitHub Issue creation - Step-by-step dialog to create issues without command arguments"
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Bash(gh:*)
|
|
6
|
+
- Task
|
|
7
|
+
- AskUserQuestion
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# ๐ฏ MoAI-ADK Alfred 9-Feedback: Interactive GitHub Issue Creation
|
|
11
|
+
|
|
12
|
+
> **Purpose**: Create GitHub Issues through an interactive multi-step dialog. Simple command โ guided questions โ automatic issue creation.
|
|
13
|
+
|
|
14
|
+
## ๐ Command Purpose
|
|
15
|
+
|
|
16
|
+
Enable developers to instantly report bugs, request features, suggest improvements, and ask questions through conversational dialogs. No command arguments neededโjust run `/alfred:9-feedback` and answer questions.
|
|
17
|
+
|
|
18
|
+
**Command Format**:
|
|
19
|
+
```bash
|
|
20
|
+
/alfred:9-feedback
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
That's it! Alfred guides you through the rest.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## ๐ Interactive Execution Flow
|
|
28
|
+
|
|
29
|
+
### Step 1: Start Command
|
|
30
|
+
```bash
|
|
31
|
+
/alfred:9-feedback
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Alfred responds and proceeds to Step 2.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
### Step 2: Select Issue Type (AskUserQuestion)
|
|
39
|
+
|
|
40
|
+
**Question**: "What type of issue do you want to create?"
|
|
41
|
+
|
|
42
|
+
**Options**:
|
|
43
|
+
```
|
|
44
|
+
[ ] ๐ Bug Report - Something isn't working
|
|
45
|
+
[ ] โจ Feature Request - Suggest new functionality
|
|
46
|
+
[ ] โก Improvement - Enhance existing features
|
|
47
|
+
[ ] โ Question/Discussion - Ask the team
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**User Selection**: Selects one (e.g., ๐ Bug Report)
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
### Step 3: Enter Issue Title (AskUserQuestion)
|
|
55
|
+
|
|
56
|
+
**Question**: "What is the issue title? (Be concise)"
|
|
57
|
+
|
|
58
|
+
**Example Input**:
|
|
59
|
+
```
|
|
60
|
+
Login button on homepage not responding to clicks
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
### Step 4: Enter Description (AskUserQuestion)
|
|
66
|
+
|
|
67
|
+
**Question**: "Provide a detailed description (optionalโpress Enter to skip)"
|
|
68
|
+
|
|
69
|
+
**Example Input**:
|
|
70
|
+
```
|
|
71
|
+
When I click the login button on the homepage, nothing happens.
|
|
72
|
+
Tested on Chrome 120.0 on macOS 14.2.
|
|
73
|
+
Expected: Login modal should appear
|
|
74
|
+
Actual: No response
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Or just press Enter to skip.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
### Step 5: Select Priority (AskUserQuestion)
|
|
82
|
+
|
|
83
|
+
**Question**: "What's the priority level?"
|
|
84
|
+
|
|
85
|
+
**Options**:
|
|
86
|
+
```
|
|
87
|
+
[ ] ๐ด Critical - System down, data loss, security breach
|
|
88
|
+
[ ] ๐ High - Major feature broken, significant impact
|
|
89
|
+
[โ] ๐ก Medium - Normal priority (default)
|
|
90
|
+
[ ] ๐ข Low - Minor issues, nice-to-have
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**User Selection**: Selects priority (e.g., ๐ High)
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
### Step 6: Create Issue (Automatic)
|
|
98
|
+
|
|
99
|
+
Alfred automatically:
|
|
100
|
+
1. Formats title with emoji: "๐ [BUG] Login button not responding..."
|
|
101
|
+
2. Prepares body with user description + metadata
|
|
102
|
+
3. Assigns labels: bug, reported, priority-high
|
|
103
|
+
4. Executes: `gh issue create --title ... --body ... --label ...`
|
|
104
|
+
5. Parses issue number from response
|
|
105
|
+
|
|
106
|
+
**Success Output**:
|
|
107
|
+
```
|
|
108
|
+
โ
GitHub Issue #234 created successfully!
|
|
109
|
+
|
|
110
|
+
๐ Title: ๐ [BUG] Login button not responding to clicks
|
|
111
|
+
๐ด Priority: High
|
|
112
|
+
๐ท๏ธ Labels: bug, reported, priority-high
|
|
113
|
+
๐ URL: https://github.com/owner/repo/issues/234
|
|
114
|
+
|
|
115
|
+
๐ก Next: Reference this issue in your commits or link to a SPEC document
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## โ ๏ธ Important Rules
|
|
121
|
+
|
|
122
|
+
### โ
What to Do
|
|
123
|
+
|
|
124
|
+
- โ
Ask all 4 questions in sequence (type โ title โ description โ priority)
|
|
125
|
+
- โ
Preserve exact user wording in title and description
|
|
126
|
+
- โ
Use AskUserQuestion for all user inputs
|
|
127
|
+
- โ
Allow skipping description (optional field)
|
|
128
|
+
- โ
Show issue URL after creation
|
|
129
|
+
|
|
130
|
+
### โ What NOT to Do
|
|
131
|
+
|
|
132
|
+
- โ Accept command arguments (`/alfred:9-feedback --bug` is wrongโjust use `/alfred:9-feedback`)
|
|
133
|
+
- โ Skip questions or change order
|
|
134
|
+
- โ Rephrase user's input
|
|
135
|
+
- โ Create issues without labels
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## ๐ก Key Benefits
|
|
140
|
+
|
|
141
|
+
1. **๐ No Arguments Needed**: Just `/alfred:9-feedback`
|
|
142
|
+
2. **๐ฌ Conversational**: Intuitive step-by-step dialog
|
|
143
|
+
3. **๐ท๏ธ Auto-labeled**: Labels applied automatically
|
|
144
|
+
4. **๐ Team Visible**: Issues immediately visible
|
|
145
|
+
5. **โฑ๏ธ Fast**: Create issues in 30 seconds
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
**Supported since**: MoAI-ADK v0.7.0+
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# @CODE:HOOKS-REFACTOR-001 | SPEC: SPEC-HOOKS-REFACTOR-001.md
|
|
3
|
+
"""Alfred Hooks - Main entry point for MoAI-ADK Claude Code Hooks
|
|
4
|
+
|
|
5
|
+
A main entry point that routes Claude Code events to the appropriate handlers.
|
|
6
|
+
|
|
7
|
+
๐๏ธ Architecture:
|
|
8
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
9
|
+
โ alfred_hooks.py (Router) โ
|
|
10
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
|
|
11
|
+
โ - CLI argument parsing โ
|
|
12
|
+
โ - JSON I/O (stdin/stdout) โ
|
|
13
|
+
โ - Event routing to handlers โ
|
|
14
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
15
|
+
โผ
|
|
16
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
17
|
+
โ handlers/ (Event Handlers) โ
|
|
18
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
|
|
19
|
+
โ - session.py: SessionStart, SessionEnd โ
|
|
20
|
+
โ - user.py: UserPromptSubmit โ
|
|
21
|
+
โ - tool.py: PreToolUse, PostToolUse โ
|
|
22
|
+
โ - notification.py: Notification, Stop, SubagentStop โ
|
|
23
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
24
|
+
โผ
|
|
25
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
26
|
+
โ core/ (Business Logic) โ
|
|
27
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
|
|
28
|
+
โ - project.py: Language detection, Git info, SPEC progress โ
|
|
29
|
+
โ - context.py: JIT Retrieval, workflow context โ
|
|
30
|
+
โ - checkpoint.py: Event-Driven Checkpoint system โ
|
|
31
|
+
โ - tags.py: TAG search/verification, library version cache โ
|
|
32
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
33
|
+
|
|
34
|
+
๐ ๏ธ Usage:
|
|
35
|
+
python alfred_hooks.py <event_name> < payload.json
|
|
36
|
+
|
|
37
|
+
๐ฃ Supported Events:
|
|
38
|
+
- SessionStart: Start Session (display project status)
|
|
39
|
+
- UserPromptSubmit: Prompt submission (JIT document loading)
|
|
40
|
+
- PreToolUse: Before using the tool (automatically creates checkpoint)
|
|
41
|
+
- SessionEnd, PostToolUse, Notification, Stop, SubagentStop
|
|
42
|
+
|
|
43
|
+
๐ฆ Exit Codes:
|
|
44
|
+
- 0: Success
|
|
45
|
+
- 1: Error (no arguments, JSON parsing failure, exception thrown)
|
|
46
|
+
|
|
47
|
+
๐งช TDD History:
|
|
48
|
+
- RED: Module separation design, event routing test
|
|
49
|
+
- GREEN: 1233 LOC โ 9 items Module separation implementation (SRP compliance)
|
|
50
|
+
- REFACTOR: Import optimization, enhanced error handling
|
|
51
|
+
|
|
52
|
+
Setup sys.path for package imports
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
import json
|
|
56
|
+
import sys
|
|
57
|
+
from pathlib import Path
|
|
58
|
+
from typing import Any
|
|
59
|
+
|
|
60
|
+
from utils.timeout import CrossPlatformTimeout, TimeoutError as PlatformTimeoutError
|
|
61
|
+
|
|
62
|
+
from core import HookResult
|
|
63
|
+
from handlers import (
|
|
64
|
+
handle_notification,
|
|
65
|
+
handle_post_tool_use,
|
|
66
|
+
handle_pre_tool_use,
|
|
67
|
+
handle_session_end,
|
|
68
|
+
handle_session_start,
|
|
69
|
+
handle_stop,
|
|
70
|
+
handle_subagent_stop,
|
|
71
|
+
handle_user_prompt_submit,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
# Add the hooks directory to sys.path to enable package imports
|
|
75
|
+
HOOKS_DIR = Path(__file__).parent
|
|
76
|
+
if str(HOOKS_DIR) not in sys.path:
|
|
77
|
+
sys.path.insert(0, str(HOOKS_DIR))
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
pass
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def _hook_timeout_handler(signum, frame):
|
|
84
|
+
"""Signal handler for global hook timeout"""
|
|
85
|
+
raise HookTimeoutError("Hook execution exceeded 5-second timeout")
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def main() -> None:
|
|
89
|
+
"""Main entry point - Claude Code Hook script with GLOBAL TIMEOUT PROTECTION
|
|
90
|
+
|
|
91
|
+
Receives the event name as a CLI argument and reads the JSON payload through stdin.
|
|
92
|
+
Calls the handler appropriate for the event and outputs the results to stdout as JSON.
|
|
93
|
+
Enforces a 5-second global timeout to prevent subprocess hangs from freezing Claude Code.
|
|
94
|
+
|
|
95
|
+
๐ ๏ธ Usage:
|
|
96
|
+
python alfred_hooks.py <event_name> < payload.json
|
|
97
|
+
|
|
98
|
+
๐ฃ Supported Events:
|
|
99
|
+
- SessionStart: Start Session (display project status)
|
|
100
|
+
- UserPromptSubmit: Prompt submission (JIT document loading)
|
|
101
|
+
- SessionEnd, PreToolUse, PostToolUse, Notification, Stop, SubagentStop
|
|
102
|
+
|
|
103
|
+
๐ฆ Exit Codes:
|
|
104
|
+
- 0: Success
|
|
105
|
+
- 1: Error (timeout, no arguments, JSON parsing failure, exception thrown)
|
|
106
|
+
|
|
107
|
+
๐ Examples:
|
|
108
|
+
$ echo '{"cwd": "."}' | python alfred_hooks.py SessionStart
|
|
109
|
+
{"message": "๐ MoAI-ADK Session Started\\n...", ...}
|
|
110
|
+
|
|
111
|
+
๐๏ธ Notes:
|
|
112
|
+
- Claude Code is automatically called (no need for direct user execution)
|
|
113
|
+
- JSON I/O processing through stdin/stdout
|
|
114
|
+
- Print error message to stderr
|
|
115
|
+
- UserPromptSubmit uses a special output schema (hookEventName + additionalContext)
|
|
116
|
+
- CRITICAL: 5-second global timeout prevents Claude Code freeze on subprocess hang
|
|
117
|
+
|
|
118
|
+
๐งช TDD History:
|
|
119
|
+
- RED: Event routing, JSON I/O, error handling testing
|
|
120
|
+
- GREEN: Handler map-based routing implementation
|
|
121
|
+
- REFACTOR: Error message clarification, exit code standardization, UserPromptSubmit schema separation
|
|
122
|
+
- HOTFIX: Added global SIGALRM timeout to prevent subprocess hang (Issue #66)
|
|
123
|
+
|
|
124
|
+
@TAG:HOOKS-TIMEOUT-001
|
|
125
|
+
"""
|
|
126
|
+
# Set global 5-second timeout for entire hook execution
|
|
127
|
+
signal.signal(signal.SIGALRM, _hook_timeout_handler)
|
|
128
|
+
signal.alarm(5)
|
|
129
|
+
|
|
130
|
+
try:
|
|
131
|
+
# Check for event argument
|
|
132
|
+
if len(sys.argv) < 2:
|
|
133
|
+
print("Usage: alfred_hooks.py <event>", file=sys.stderr)
|
|
134
|
+
sys.exit(1)
|
|
135
|
+
|
|
136
|
+
event_name = sys.argv[1]
|
|
137
|
+
|
|
138
|
+
try:
|
|
139
|
+
# Read JSON from stdin
|
|
140
|
+
input_data = sys.stdin.read()
|
|
141
|
+
# Handle empty stdin gracefully (return empty dict)
|
|
142
|
+
if not input_data or not input_data.strip():
|
|
143
|
+
data = {}
|
|
144
|
+
else:
|
|
145
|
+
data = json.loads(input_data)
|
|
146
|
+
|
|
147
|
+
cwd = data.get("cwd", ".")
|
|
148
|
+
|
|
149
|
+
# Route to appropriate handler
|
|
150
|
+
handlers = {
|
|
151
|
+
"SessionStart": handle_session_start,
|
|
152
|
+
"UserPromptSubmit": handle_user_prompt_submit,
|
|
153
|
+
"SessionEnd": handle_session_end,
|
|
154
|
+
"PreToolUse": handle_pre_tool_use,
|
|
155
|
+
"PostToolUse": handle_post_tool_use,
|
|
156
|
+
"Notification": handle_notification,
|
|
157
|
+
"Stop": handle_stop,
|
|
158
|
+
"SubagentStop": handle_subagent_stop,
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
handler = handlers.get(event_name)
|
|
162
|
+
result = handler({"cwd": cwd, **data}) if handler else HookResult()
|
|
163
|
+
|
|
164
|
+
# Output Hook result as JSON
|
|
165
|
+
# Note: UserPromptSubmit uses to_user_prompt_submit_dict() for special schema
|
|
166
|
+
if event_name == "UserPromptSubmit":
|
|
167
|
+
print(json.dumps(result.to_user_prompt_submit_dict()))
|
|
168
|
+
else:
|
|
169
|
+
print(json.dumps(result.to_dict()))
|
|
170
|
+
|
|
171
|
+
sys.exit(0)
|
|
172
|
+
|
|
173
|
+
except json.JSONDecodeError as e:
|
|
174
|
+
# Return valid Hook response even on JSON parse error
|
|
175
|
+
error_response: dict[str, Any] = {
|
|
176
|
+
"continue": True,
|
|
177
|
+
"hookSpecificOutput": {"error": f"JSON parse error: {e}"},
|
|
178
|
+
}
|
|
179
|
+
print(json.dumps(error_response))
|
|
180
|
+
print(f"JSON parse error: {e}", file=sys.stderr)
|
|
181
|
+
sys.exit(1)
|
|
182
|
+
except Exception as e:
|
|
183
|
+
# Return valid Hook response even on unexpected error
|
|
184
|
+
error_response: dict[str, Any] = {
|
|
185
|
+
"continue": True,
|
|
186
|
+
"hookSpecificOutput": {"error": f"Hook error: {e}"},
|
|
187
|
+
}
|
|
188
|
+
print(json.dumps(error_response))
|
|
189
|
+
print(f"Unexpected error: {e}", file=sys.stderr)
|
|
190
|
+
sys.exit(1)
|
|
191
|
+
|
|
192
|
+
except PlatformTimeoutError:
|
|
193
|
+
# CRITICAL: Hook took too long - return minimal valid response to prevent Claude Code freeze
|
|
194
|
+
timeout_response: dict[str, Any] = {
|
|
195
|
+
"continue": True,
|
|
196
|
+
"systemMessage": "โ ๏ธ Hook execution timeout - continuing without session info",
|
|
197
|
+
}
|
|
198
|
+
print(json.dumps(timeout_response))
|
|
199
|
+
print("Hook timeout after 5 seconds", file=sys.stderr)
|
|
200
|
+
sys.exit(1)
|
|
201
|
+
|
|
202
|
+
finally:
|
|
203
|
+
# Always cancel the alarm to prevent signal leakage
|
|
204
|
+
timeout.cancel()
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
if __name__ == "__main__":
|
|
208
|
+
main()
|