moai-adk 0.7.0__tar.gz → 0.8.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.7.0 → moai_adk-0.8.1}/PKG-INFO +123 -1
- {moai_adk-0.7.0 → moai_adk-0.8.1}/README.md +122 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/pyproject.toml +1 -1
- moai_adk-0.8.1/src/moai_adk/core/issue_creator.py +309 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/project/phase_executor.py +1 -2
- moai_adk-0.8.1/src/moai_adk/core/template_engine.py +253 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/agents/alfred/cc-manager.md +1 -1
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/agents/alfred/debug-helper.md +2 -2
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/agents/alfred/doc-syncer.md +2 -2
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/agents/alfred/git-manager.md +27 -4
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/agents/alfred/implementation-planner.md +2 -2
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/agents/alfred/project-manager.md +6 -6
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/agents/alfred/quality-gate.md +2 -2
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/agents/alfred/skill-factory.md +7 -7
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/agents/alfred/spec-builder.md +2 -2
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/agents/alfred/tag-agent.md +2 -2
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +2 -2
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/agents/alfred/trust-checker.md +2 -2
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/commands/alfred/0-project.md +9 -9
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/commands/alfred/1-plan.md +3 -3
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/commands/alfred/2-run.md +4 -4
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/commands/alfred/3-sync.md +5 -5
- moai_adk-0.8.1/src/moai_adk/templates/.claude/commands/alfred/9-feedback.md +149 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/hooks/alfred/core/project.py +145 -13
- moai_adk-0.8.1/src/moai_adk/templates/.claude/hooks/alfred/handlers/session.py +161 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +1 -1
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +1 -1
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +1 -1
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.github/ISSUE_TEMPLATE/spec.yml +5 -3
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +20 -8
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.github/workflows/moai-gitflow.yml +22 -16
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.github/workflows/spec-issue-sync.yml +10 -6
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/config.json +12 -0
- moai_adk-0.8.1/src/moai_adk/templates/.moai/docs/quick-issue-creation-guide.md +219 -0
- moai_adk-0.8.1/src/moai_adk/templates/.moai/memory/issue-label-mapping.md +150 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/CLAUDE.md +67 -1
- moai_adk-0.7.0/src/moai_adk/templates/.claude/hooks/alfred/handlers/session.py +0 -91
- moai_adk-0.7.0/src/moai_adk/templates/.claude/hooks/alfred/test_hook_output.py +0 -175
- {moai_adk-0.7.0 → moai_adk-0.8.1}/.gitignore +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/LICENSE +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/__main__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/cli/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/cli/commands/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/cli/commands/backup.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/cli/commands/doctor.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/cli/commands/init.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/cli/commands/status.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/cli/commands/update.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/cli/main.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/cli/prompts/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/cli/prompts/init_prompts.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/config/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/config/migration.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/diagnostics/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/diagnostics/slash_commands.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/git/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/git/branch.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/git/branch_manager.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/git/checkpoint.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/git/commit.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/git/event_detector.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/git/manager.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/project/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/project/backup_utils.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/project/checker.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/project/detector.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/project/initializer.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/project/validator.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/quality/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/quality/trust_checker.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/quality/validators/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/quality/validators/base_validator.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/template/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/template/backup.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/template/config.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/template/languages.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/template/merger.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/core/template/processor.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/hooks/alfred/HOOK_SCHEMA_VALIDATION.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/hooks/alfred/README.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/hooks/alfred/core/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/hooks/alfred/core/checkpoint.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/hooks/alfred/core/context.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/hooks/alfred/core/tags.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/hooks/alfred/handlers/user.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/settings.json +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-database/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-database/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-go/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-go/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-java/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-java/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-python/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-python/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.gitignore +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/memory/CLAUDE-RULES.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/memory/CONFIG-SCHEMA.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/memory/SPEC-METADATA.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/memory/config-schema.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/memory/gitflow-protection-policy.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/memory/spec-metadata.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/project/product.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/project/structure.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/.moai/project/tech.md +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/templates/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/utils/__init__.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/utils/banner.py +0 -0
- {moai_adk-0.7.0 → moai_adk-0.8.1}/src/moai_adk/utils/logger.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: moai-adk
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.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
|
|
@@ -696,8 +696,11 @@ graph TD
|
|
|
696
696
|
| `/alfred:1-plan <description>` | Analyze requirements, draft SPEC, write Plan Board | `.moai/specs/SPEC-*/spec.md`, plan/acceptance docs, feature branch |
|
|
697
697
|
| `/alfred:2-run <SPEC-ID>` | Execute TDD, test/implement/refactor, verify quality | `tests/`, `src/` implementation, quality report, TAG connection |
|
|
698
698
|
| `/alfred:3-sync` | Sync docs/README/CHANGELOG, organize TAG/PR status | `docs/`, `.moai/reports/sync-report.md`, Ready PR |
|
|
699
|
+
| `/alfred:9-feedback` | Interactively create GitHub Issues (type → title → description → priority) | GitHub Issue with auto labels, priority, URL |
|
|
699
700
|
|
|
700
701
|
> ❗ All commands maintain **Phase 0 (optional) → Phase 1 → Phase 2 → Phase 3** cycle structure. Alfred automatically reports execution status and next-step suggestions.
|
|
702
|
+
>
|
|
703
|
+
> 💡 **New in v0.7.0+**: `/alfred:9-feedback` enables instant GitHub Issue creation during development, keeping your workflow uninterrupted while keeping issues tracked and visible to the team.
|
|
701
704
|
|
|
702
705
|
---
|
|
703
706
|
|
|
@@ -814,6 +817,125 @@ When working in your **local development environment**, CodeRabbit provides auto
|
|
|
814
817
|
|
|
815
818
|
---
|
|
816
819
|
|
|
820
|
+
## Quick Issue Creation with `/alfred:9-feedback`
|
|
821
|
+
|
|
822
|
+
MoAI-ADK v0.7.0+ includes the **Quick Issue Creation** feature, allowing developers to instantly create GitHub Issues without interrupting their development workflow.
|
|
823
|
+
|
|
824
|
+
### Why Quick Issue Creation?
|
|
825
|
+
|
|
826
|
+
During development, you frequently encounter:
|
|
827
|
+
- 🐛 Bugs that need immediate reporting
|
|
828
|
+
- ✨ Feature ideas that come to mind
|
|
829
|
+
- ⚡ Performance improvements to suggest
|
|
830
|
+
- ❓ Architecture questions that need team discussion
|
|
831
|
+
|
|
832
|
+
**The old way**: Stop coding, go to GitHub, manually fill issue form, remember what you were working on.
|
|
833
|
+
**The new way**: Type one command, GitHub Issue is created instantly, continue coding.
|
|
834
|
+
|
|
835
|
+
### Interactive Dialog Flow
|
|
836
|
+
|
|
837
|
+
When you run `/alfred:9-help`, Alfred guides you through an interactive multi-step dialog:
|
|
838
|
+
|
|
839
|
+
**Step 1: Select Issue Type**
|
|
840
|
+
```
|
|
841
|
+
Alfred: What type of issue do you want to create?
|
|
842
|
+
[ ] 🐛 Bug Report - Something isn't working
|
|
843
|
+
[ ] ✨ Feature Request - Suggest new functionality
|
|
844
|
+
[ ] ⚡ Improvement - Enhance existing features
|
|
845
|
+
[ ] ❓ Question/Discussion - Ask the team
|
|
846
|
+
```
|
|
847
|
+
|
|
848
|
+
**Step 2: Enter Issue Title**
|
|
849
|
+
```
|
|
850
|
+
Alfred: What's the issue title?
|
|
851
|
+
Your input: "Login button not responding to clicks"
|
|
852
|
+
```
|
|
853
|
+
|
|
854
|
+
**Step 3: Enter Description (Optional)**
|
|
855
|
+
```
|
|
856
|
+
Alfred: Provide a detailed description (optional—press Enter to skip)
|
|
857
|
+
Your input: "When I click the login button on iPhone 15, it freezes for 5 seconds then crashes"
|
|
858
|
+
```
|
|
859
|
+
|
|
860
|
+
**Step 4: Select Priority Level**
|
|
861
|
+
```
|
|
862
|
+
Alfred: What's the priority level?
|
|
863
|
+
[ ] 🔴 Critical - System down, data loss, security breach
|
|
864
|
+
[ ] 🟠 High - Major feature broken, significant impact
|
|
865
|
+
[✓] 🟡 Medium - Normal priority (default)
|
|
866
|
+
[ ] 🟢 Low - Minor issues, nice-to-have
|
|
867
|
+
```
|
|
868
|
+
|
|
869
|
+
**Step 5: Automatic Issue Creation**
|
|
870
|
+
```
|
|
871
|
+
Alfred automatically:
|
|
872
|
+
1. Determines appropriate labels based on issue type and priority
|
|
873
|
+
2. Formats title with emoji: "🐛 [BUG] Login button not responding..."
|
|
874
|
+
3. Creates GitHub Issue with all information
|
|
875
|
+
4. Returns the issue number and URL
|
|
876
|
+
```
|
|
877
|
+
|
|
878
|
+
### Key Features
|
|
879
|
+
|
|
880
|
+
1. **⚡ Instant Creation**: Create GitHub Issues in seconds
|
|
881
|
+
2. **🏷️ Automatic Labels**: Issue type + priority automatically labeled
|
|
882
|
+
3. **🎯 Priority Selection**: Choose from Critical/High/Medium/Low
|
|
883
|
+
4. **🔗 Team Visibility**: Issues immediately visible and discussable
|
|
884
|
+
5. **📋 Standardized Format**: All issues follow consistent structure
|
|
885
|
+
|
|
886
|
+
### Complete Example: Bug Report During Code Review
|
|
887
|
+
|
|
888
|
+
```bash
|
|
889
|
+
# During code review, you notice a critical issue and want to report it instantly
|
|
890
|
+
$ /alfred:9-feedback
|
|
891
|
+
|
|
892
|
+
Alfred: What type of issue do you want to create?
|
|
893
|
+
> 🐛 Bug Report
|
|
894
|
+
|
|
895
|
+
Alfred: What's the issue title?
|
|
896
|
+
> Login button crash on mobile devices
|
|
897
|
+
|
|
898
|
+
Alfred: Provide a detailed description (optional—press Enter to skip)
|
|
899
|
+
> Tapping the login button on iPhone 15 causes app to freeze for 5 seconds then crash.
|
|
900
|
+
> Tested on iOS 17.2, Chrome 120 on macOS 14.2.
|
|
901
|
+
> Expected: Login modal should appear
|
|
902
|
+
> Actual: No response then crash
|
|
903
|
+
|
|
904
|
+
Alfred: What's the priority level?
|
|
905
|
+
> 🟠 High
|
|
906
|
+
|
|
907
|
+
✅ GitHub Issue #234 created successfully!
|
|
908
|
+
|
|
909
|
+
📋 Title: 🐛 [BUG] Login button crash on mobile devices
|
|
910
|
+
🟠 Priority: High
|
|
911
|
+
🏷️ Labels: bug, reported, priority-high
|
|
912
|
+
🔗 URL: https://github.com/owner/repo/issues/234
|
|
913
|
+
|
|
914
|
+
💡 Next: Continue with your work—the issue is now tracked!
|
|
915
|
+
```
|
|
916
|
+
|
|
917
|
+
### Integration with MoAI-ADK Workflow
|
|
918
|
+
|
|
919
|
+
1. **During Development**: Use `/alfred:9-help` to report bugs/ideas instantly
|
|
920
|
+
2. **In Code Review**: Convert improvement suggestions to tracked issues
|
|
921
|
+
3. **When Planning**: Reference created issues in SPEC documents
|
|
922
|
+
4. **During Sync**: Link issues to SPEC requirements with `/alfred:3-sync`
|
|
923
|
+
|
|
924
|
+
### Prerequisites
|
|
925
|
+
|
|
926
|
+
- GitHub CLI (`gh`) installed and authenticated
|
|
927
|
+
- Repository initialized with Git
|
|
928
|
+
|
|
929
|
+
### Learn More
|
|
930
|
+
|
|
931
|
+
See `.moai/docs/quick-issue-creation-guide.md` for comprehensive documentation including:
|
|
932
|
+
- Detailed usage examples
|
|
933
|
+
- Best practices and tips
|
|
934
|
+
- Troubleshooting guide
|
|
935
|
+
- Integration with SPEC documents
|
|
936
|
+
|
|
937
|
+
---
|
|
938
|
+
|
|
817
939
|
## 5 Key Concepts
|
|
818
940
|
|
|
819
941
|
MoAI-ADK consists of 5 key concepts. Each concept connects to the others, and together they create a powerful development system.
|
|
@@ -656,8 +656,11 @@ graph TD
|
|
|
656
656
|
| `/alfred:1-plan <description>` | Analyze requirements, draft SPEC, write Plan Board | `.moai/specs/SPEC-*/spec.md`, plan/acceptance docs, feature branch |
|
|
657
657
|
| `/alfred:2-run <SPEC-ID>` | Execute TDD, test/implement/refactor, verify quality | `tests/`, `src/` implementation, quality report, TAG connection |
|
|
658
658
|
| `/alfred:3-sync` | Sync docs/README/CHANGELOG, organize TAG/PR status | `docs/`, `.moai/reports/sync-report.md`, Ready PR |
|
|
659
|
+
| `/alfred:9-feedback` | Interactively create GitHub Issues (type → title → description → priority) | GitHub Issue with auto labels, priority, URL |
|
|
659
660
|
|
|
660
661
|
> ❗ All commands maintain **Phase 0 (optional) → Phase 1 → Phase 2 → Phase 3** cycle structure. Alfred automatically reports execution status and next-step suggestions.
|
|
662
|
+
>
|
|
663
|
+
> 💡 **New in v0.7.0+**: `/alfred:9-feedback` enables instant GitHub Issue creation during development, keeping your workflow uninterrupted while keeping issues tracked and visible to the team.
|
|
661
664
|
|
|
662
665
|
---
|
|
663
666
|
|
|
@@ -774,6 +777,125 @@ When working in your **local development environment**, CodeRabbit provides auto
|
|
|
774
777
|
|
|
775
778
|
---
|
|
776
779
|
|
|
780
|
+
## Quick Issue Creation with `/alfred:9-feedback`
|
|
781
|
+
|
|
782
|
+
MoAI-ADK v0.7.0+ includes the **Quick Issue Creation** feature, allowing developers to instantly create GitHub Issues without interrupting their development workflow.
|
|
783
|
+
|
|
784
|
+
### Why Quick Issue Creation?
|
|
785
|
+
|
|
786
|
+
During development, you frequently encounter:
|
|
787
|
+
- 🐛 Bugs that need immediate reporting
|
|
788
|
+
- ✨ Feature ideas that come to mind
|
|
789
|
+
- ⚡ Performance improvements to suggest
|
|
790
|
+
- ❓ Architecture questions that need team discussion
|
|
791
|
+
|
|
792
|
+
**The old way**: Stop coding, go to GitHub, manually fill issue form, remember what you were working on.
|
|
793
|
+
**The new way**: Type one command, GitHub Issue is created instantly, continue coding.
|
|
794
|
+
|
|
795
|
+
### Interactive Dialog Flow
|
|
796
|
+
|
|
797
|
+
When you run `/alfred:9-help`, Alfred guides you through an interactive multi-step dialog:
|
|
798
|
+
|
|
799
|
+
**Step 1: Select Issue Type**
|
|
800
|
+
```
|
|
801
|
+
Alfred: What type of issue do you want to create?
|
|
802
|
+
[ ] 🐛 Bug Report - Something isn't working
|
|
803
|
+
[ ] ✨ Feature Request - Suggest new functionality
|
|
804
|
+
[ ] ⚡ Improvement - Enhance existing features
|
|
805
|
+
[ ] ❓ Question/Discussion - Ask the team
|
|
806
|
+
```
|
|
807
|
+
|
|
808
|
+
**Step 2: Enter Issue Title**
|
|
809
|
+
```
|
|
810
|
+
Alfred: What's the issue title?
|
|
811
|
+
Your input: "Login button not responding to clicks"
|
|
812
|
+
```
|
|
813
|
+
|
|
814
|
+
**Step 3: Enter Description (Optional)**
|
|
815
|
+
```
|
|
816
|
+
Alfred: Provide a detailed description (optional—press Enter to skip)
|
|
817
|
+
Your input: "When I click the login button on iPhone 15, it freezes for 5 seconds then crashes"
|
|
818
|
+
```
|
|
819
|
+
|
|
820
|
+
**Step 4: Select Priority Level**
|
|
821
|
+
```
|
|
822
|
+
Alfred: What's the priority level?
|
|
823
|
+
[ ] 🔴 Critical - System down, data loss, security breach
|
|
824
|
+
[ ] 🟠 High - Major feature broken, significant impact
|
|
825
|
+
[✓] 🟡 Medium - Normal priority (default)
|
|
826
|
+
[ ] 🟢 Low - Minor issues, nice-to-have
|
|
827
|
+
```
|
|
828
|
+
|
|
829
|
+
**Step 5: Automatic Issue Creation**
|
|
830
|
+
```
|
|
831
|
+
Alfred automatically:
|
|
832
|
+
1. Determines appropriate labels based on issue type and priority
|
|
833
|
+
2. Formats title with emoji: "🐛 [BUG] Login button not responding..."
|
|
834
|
+
3. Creates GitHub Issue with all information
|
|
835
|
+
4. Returns the issue number and URL
|
|
836
|
+
```
|
|
837
|
+
|
|
838
|
+
### Key Features
|
|
839
|
+
|
|
840
|
+
1. **⚡ Instant Creation**: Create GitHub Issues in seconds
|
|
841
|
+
2. **🏷️ Automatic Labels**: Issue type + priority automatically labeled
|
|
842
|
+
3. **🎯 Priority Selection**: Choose from Critical/High/Medium/Low
|
|
843
|
+
4. **🔗 Team Visibility**: Issues immediately visible and discussable
|
|
844
|
+
5. **📋 Standardized Format**: All issues follow consistent structure
|
|
845
|
+
|
|
846
|
+
### Complete Example: Bug Report During Code Review
|
|
847
|
+
|
|
848
|
+
```bash
|
|
849
|
+
# During code review, you notice a critical issue and want to report it instantly
|
|
850
|
+
$ /alfred:9-feedback
|
|
851
|
+
|
|
852
|
+
Alfred: What type of issue do you want to create?
|
|
853
|
+
> 🐛 Bug Report
|
|
854
|
+
|
|
855
|
+
Alfred: What's the issue title?
|
|
856
|
+
> Login button crash on mobile devices
|
|
857
|
+
|
|
858
|
+
Alfred: Provide a detailed description (optional—press Enter to skip)
|
|
859
|
+
> Tapping the login button on iPhone 15 causes app to freeze for 5 seconds then crash.
|
|
860
|
+
> Tested on iOS 17.2, Chrome 120 on macOS 14.2.
|
|
861
|
+
> Expected: Login modal should appear
|
|
862
|
+
> Actual: No response then crash
|
|
863
|
+
|
|
864
|
+
Alfred: What's the priority level?
|
|
865
|
+
> 🟠 High
|
|
866
|
+
|
|
867
|
+
✅ GitHub Issue #234 created successfully!
|
|
868
|
+
|
|
869
|
+
📋 Title: 🐛 [BUG] Login button crash on mobile devices
|
|
870
|
+
🟠 Priority: High
|
|
871
|
+
🏷️ Labels: bug, reported, priority-high
|
|
872
|
+
🔗 URL: https://github.com/owner/repo/issues/234
|
|
873
|
+
|
|
874
|
+
💡 Next: Continue with your work—the issue is now tracked!
|
|
875
|
+
```
|
|
876
|
+
|
|
877
|
+
### Integration with MoAI-ADK Workflow
|
|
878
|
+
|
|
879
|
+
1. **During Development**: Use `/alfred:9-help` to report bugs/ideas instantly
|
|
880
|
+
2. **In Code Review**: Convert improvement suggestions to tracked issues
|
|
881
|
+
3. **When Planning**: Reference created issues in SPEC documents
|
|
882
|
+
4. **During Sync**: Link issues to SPEC requirements with `/alfred:3-sync`
|
|
883
|
+
|
|
884
|
+
### Prerequisites
|
|
885
|
+
|
|
886
|
+
- GitHub CLI (`gh`) installed and authenticated
|
|
887
|
+
- Repository initialized with Git
|
|
888
|
+
|
|
889
|
+
### Learn More
|
|
890
|
+
|
|
891
|
+
See `.moai/docs/quick-issue-creation-guide.md` for comprehensive documentation including:
|
|
892
|
+
- Detailed usage examples
|
|
893
|
+
- Best practices and tips
|
|
894
|
+
- Troubleshooting guide
|
|
895
|
+
- Integration with SPEC documents
|
|
896
|
+
|
|
897
|
+
---
|
|
898
|
+
|
|
777
899
|
## 5 Key Concepts
|
|
778
900
|
|
|
779
901
|
MoAI-ADK consists of 5 key concepts. Each concept connects to the others, and together they create a powerful development system.
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
"""
|
|
2
|
+
GitHub Issue Creator for MoAI-ADK quick issue reporting.
|
|
3
|
+
|
|
4
|
+
Enables users to quickly create GitHub Issues with standardized templates
|
|
5
|
+
using `/alfred:9-feedback` interactive dialog.
|
|
6
|
+
|
|
7
|
+
@TAG:ISSUE-CREATOR-001 - GitHub issue creation system
|
|
8
|
+
@TAG:QUICK-REPORTING-001 - Quick issue reporting functionality
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import subprocess
|
|
12
|
+
from dataclasses import dataclass
|
|
13
|
+
from enum import Enum
|
|
14
|
+
from typing import Any, Dict, List, Optional
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class IssueType(Enum):
|
|
18
|
+
"""Supported GitHub issue types."""
|
|
19
|
+
BUG = "bug"
|
|
20
|
+
FEATURE = "feature"
|
|
21
|
+
IMPROVEMENT = "improvement"
|
|
22
|
+
QUESTION = "question"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class IssuePriority(Enum):
|
|
26
|
+
"""Issue priority levels."""
|
|
27
|
+
CRITICAL = "critical"
|
|
28
|
+
HIGH = "high"
|
|
29
|
+
MEDIUM = "medium"
|
|
30
|
+
LOW = "low"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@dataclass
|
|
34
|
+
class IssueConfig:
|
|
35
|
+
"""Configuration for issue creation."""
|
|
36
|
+
issue_type: IssueType
|
|
37
|
+
title: str
|
|
38
|
+
description: str
|
|
39
|
+
priority: IssuePriority = IssuePriority.MEDIUM
|
|
40
|
+
category: Optional[str] = None
|
|
41
|
+
assignees: Optional[List[str]] = None
|
|
42
|
+
custom_labels: Optional[List[str]] = None
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class GitHubIssueCreator:
|
|
46
|
+
"""
|
|
47
|
+
Creates GitHub Issues using the `gh` CLI.
|
|
48
|
+
|
|
49
|
+
Supports:
|
|
50
|
+
- Multiple issue types (bug, feature, improvement, question)
|
|
51
|
+
- Priority levels and categories
|
|
52
|
+
- Standard templates for each type
|
|
53
|
+
- Label automation
|
|
54
|
+
- Priority emoji indicators
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
# Label mapping for issue types
|
|
58
|
+
LABEL_MAP = {
|
|
59
|
+
IssueType.BUG: ["bug", "reported"],
|
|
60
|
+
IssueType.FEATURE: ["feature-request", "enhancement"],
|
|
61
|
+
IssueType.IMPROVEMENT: ["improvement", "enhancement"],
|
|
62
|
+
IssueType.QUESTION: ["question", "help-wanted"],
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
# Priority emoji
|
|
66
|
+
PRIORITY_EMOJI = {
|
|
67
|
+
IssuePriority.CRITICAL: "🔴",
|
|
68
|
+
IssuePriority.HIGH: "🟠",
|
|
69
|
+
IssuePriority.MEDIUM: "🟡",
|
|
70
|
+
IssuePriority.LOW: "🟢",
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
# Issue type emoji
|
|
74
|
+
TYPE_EMOJI = {
|
|
75
|
+
IssueType.BUG: "🐛",
|
|
76
|
+
IssueType.FEATURE: "✨",
|
|
77
|
+
IssueType.IMPROVEMENT: "⚡",
|
|
78
|
+
IssueType.QUESTION: "❓",
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
def __init__(self, github_token: Optional[str] = None):
|
|
82
|
+
"""
|
|
83
|
+
Initialize the GitHub Issue Creator.
|
|
84
|
+
|
|
85
|
+
Args:
|
|
86
|
+
github_token: GitHub API token. If not provided, uses GITHUB_TOKEN env var.
|
|
87
|
+
"""
|
|
88
|
+
self.github_token = github_token
|
|
89
|
+
self._check_gh_cli()
|
|
90
|
+
|
|
91
|
+
def _check_gh_cli(self) -> None:
|
|
92
|
+
"""
|
|
93
|
+
Check if `gh` CLI is installed and accessible.
|
|
94
|
+
|
|
95
|
+
Raises:
|
|
96
|
+
RuntimeError: If `gh` CLI is not found or not authenticated.
|
|
97
|
+
"""
|
|
98
|
+
try:
|
|
99
|
+
result = subprocess.run(
|
|
100
|
+
["gh", "auth", "status"],
|
|
101
|
+
capture_output=True,
|
|
102
|
+
text=True,
|
|
103
|
+
timeout=5
|
|
104
|
+
)
|
|
105
|
+
if result.returncode != 0:
|
|
106
|
+
raise RuntimeError(
|
|
107
|
+
"GitHub CLI (gh) is not authenticated. "
|
|
108
|
+
"Run `gh auth login` to authenticate."
|
|
109
|
+
)
|
|
110
|
+
except FileNotFoundError:
|
|
111
|
+
raise RuntimeError(
|
|
112
|
+
"GitHub CLI (gh) is not installed. "
|
|
113
|
+
"Please install it: https://cli.github.com"
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
def create_issue(self, config: IssueConfig) -> Dict[str, Any]:
|
|
117
|
+
"""
|
|
118
|
+
Create a GitHub issue with the given configuration.
|
|
119
|
+
|
|
120
|
+
Args:
|
|
121
|
+
config: Issue configuration
|
|
122
|
+
|
|
123
|
+
Returns:
|
|
124
|
+
Dictionary containing issue creation result:
|
|
125
|
+
{
|
|
126
|
+
"success": bool,
|
|
127
|
+
"issue_number": int,
|
|
128
|
+
"issue_url": str,
|
|
129
|
+
"message": str
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
Raises:
|
|
133
|
+
RuntimeError: If issue creation fails
|
|
134
|
+
"""
|
|
135
|
+
# Build title with emoji and priority
|
|
136
|
+
emoji = self.TYPE_EMOJI.get(config.issue_type, "📋")
|
|
137
|
+
priority_emoji = self.PRIORITY_EMOJI.get(config.priority, "")
|
|
138
|
+
full_title = f"{emoji} [{config.issue_type.value.upper()}] {config.title}"
|
|
139
|
+
if priority_emoji:
|
|
140
|
+
full_title = f"{priority_emoji} {full_title}"
|
|
141
|
+
|
|
142
|
+
# Build body with template
|
|
143
|
+
body = self._build_body(config)
|
|
144
|
+
|
|
145
|
+
# Collect labels
|
|
146
|
+
labels = self.LABEL_MAP.get(config.issue_type, []).copy()
|
|
147
|
+
if config.priority:
|
|
148
|
+
labels.append(f"priority-{config.priority.value}")
|
|
149
|
+
if config.category:
|
|
150
|
+
labels.append(f"category-{config.category.lower().replace(' ', '-')}")
|
|
151
|
+
if config.custom_labels:
|
|
152
|
+
labels.extend(config.custom_labels)
|
|
153
|
+
|
|
154
|
+
# Build gh command
|
|
155
|
+
gh_command = [
|
|
156
|
+
"gh", "issue", "create",
|
|
157
|
+
"--title", full_title,
|
|
158
|
+
"--body", body,
|
|
159
|
+
]
|
|
160
|
+
|
|
161
|
+
# Add labels
|
|
162
|
+
if labels:
|
|
163
|
+
gh_command.extend(["--label", ",".join(set(labels))])
|
|
164
|
+
|
|
165
|
+
# Add assignees if provided
|
|
166
|
+
if config.assignees:
|
|
167
|
+
gh_command.extend(["--assignee", ",".join(config.assignees)])
|
|
168
|
+
|
|
169
|
+
try:
|
|
170
|
+
result = subprocess.run(
|
|
171
|
+
gh_command,
|
|
172
|
+
capture_output=True,
|
|
173
|
+
text=True,
|
|
174
|
+
timeout=30
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
if result.returncode != 0:
|
|
178
|
+
error_msg = result.stderr or result.stdout
|
|
179
|
+
raise RuntimeError(f"Failed to create GitHub issue: {error_msg}")
|
|
180
|
+
|
|
181
|
+
# Parse issue URL from output
|
|
182
|
+
issue_url = result.stdout.strip()
|
|
183
|
+
issue_number = self._extract_issue_number(issue_url)
|
|
184
|
+
|
|
185
|
+
return {
|
|
186
|
+
"success": True,
|
|
187
|
+
"issue_number": issue_number,
|
|
188
|
+
"issue_url": issue_url,
|
|
189
|
+
"message": f"✅ GitHub Issue #{issue_number} created successfully",
|
|
190
|
+
"title": full_title,
|
|
191
|
+
"labels": labels,
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
except subprocess.TimeoutExpired:
|
|
195
|
+
raise RuntimeError("GitHub issue creation timed out")
|
|
196
|
+
except Exception as e:
|
|
197
|
+
raise RuntimeError(f"Error creating GitHub issue: {e}")
|
|
198
|
+
|
|
199
|
+
def _build_body(self, config: IssueConfig) -> str:
|
|
200
|
+
"""
|
|
201
|
+
Build the issue body based on issue type.
|
|
202
|
+
|
|
203
|
+
Args:
|
|
204
|
+
config: Issue configuration
|
|
205
|
+
|
|
206
|
+
Returns:
|
|
207
|
+
Formatted issue body
|
|
208
|
+
"""
|
|
209
|
+
body = config.description
|
|
210
|
+
|
|
211
|
+
# Add metadata footer
|
|
212
|
+
footer = "\n\n---\n\n"
|
|
213
|
+
footer += f"**Type**: {config.issue_type.value} \n"
|
|
214
|
+
footer += f"**Priority**: {config.priority.value} \n"
|
|
215
|
+
if config.category:
|
|
216
|
+
footer += f"**Category**: {config.category} \n"
|
|
217
|
+
footer += f"**Created via**: `/alfred:9-feedback`"
|
|
218
|
+
|
|
219
|
+
return body + footer
|
|
220
|
+
|
|
221
|
+
@staticmethod
|
|
222
|
+
def _extract_issue_number(url: str) -> int:
|
|
223
|
+
"""
|
|
224
|
+
Extract issue number from GitHub URL.
|
|
225
|
+
|
|
226
|
+
Args:
|
|
227
|
+
url: GitHub issue URL
|
|
228
|
+
|
|
229
|
+
Returns:
|
|
230
|
+
Issue number
|
|
231
|
+
|
|
232
|
+
Raises:
|
|
233
|
+
ValueError: If unable to extract issue number
|
|
234
|
+
"""
|
|
235
|
+
try:
|
|
236
|
+
# URL format: https://github.com/owner/repo/issues/123
|
|
237
|
+
return int(url.strip().split("/")[-1])
|
|
238
|
+
except (ValueError, IndexError):
|
|
239
|
+
raise ValueError(f"Unable to extract issue number from URL: {url}")
|
|
240
|
+
|
|
241
|
+
def format_result(self, result: Dict[str, Any]) -> str:
|
|
242
|
+
"""
|
|
243
|
+
Format the issue creation result for display.
|
|
244
|
+
|
|
245
|
+
Args:
|
|
246
|
+
result: Issue creation result
|
|
247
|
+
|
|
248
|
+
Returns:
|
|
249
|
+
Formatted result string
|
|
250
|
+
"""
|
|
251
|
+
if result["success"]:
|
|
252
|
+
output = f"{result['message']}\n"
|
|
253
|
+
output += f"📋 Title: {result['title']}\n"
|
|
254
|
+
output += f"🔗 URL: {result['issue_url']}\n"
|
|
255
|
+
if result.get("labels"):
|
|
256
|
+
output += f"🏷️ Labels: {', '.join(result['labels'])}\n"
|
|
257
|
+
return output
|
|
258
|
+
else:
|
|
259
|
+
return f"❌ Failed to create issue: {result.get('message', 'Unknown error')}"
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
class IssueCreatorFactory:
|
|
263
|
+
"""
|
|
264
|
+
Factory for creating issue creators with predefined configurations.
|
|
265
|
+
"""
|
|
266
|
+
|
|
267
|
+
@staticmethod
|
|
268
|
+
def create_bug_issue(title: str, description: str, priority: IssuePriority = IssuePriority.HIGH) -> IssueConfig:
|
|
269
|
+
"""Create a bug report issue configuration."""
|
|
270
|
+
return IssueConfig(
|
|
271
|
+
issue_type=IssueType.BUG,
|
|
272
|
+
title=title,
|
|
273
|
+
description=description,
|
|
274
|
+
priority=priority,
|
|
275
|
+
category="Bug Report",
|
|
276
|
+
)
|
|
277
|
+
|
|
278
|
+
@staticmethod
|
|
279
|
+
def create_feature_issue(title: str, description: str, priority: IssuePriority = IssuePriority.MEDIUM) -> IssueConfig:
|
|
280
|
+
"""Create a feature request issue configuration."""
|
|
281
|
+
return IssueConfig(
|
|
282
|
+
issue_type=IssueType.FEATURE,
|
|
283
|
+
title=title,
|
|
284
|
+
description=description,
|
|
285
|
+
priority=priority,
|
|
286
|
+
category="Feature Request",
|
|
287
|
+
)
|
|
288
|
+
|
|
289
|
+
@staticmethod
|
|
290
|
+
def create_improvement_issue(title: str, description: str, priority: IssuePriority = IssuePriority.MEDIUM) -> IssueConfig:
|
|
291
|
+
"""Create an improvement issue configuration."""
|
|
292
|
+
return IssueConfig(
|
|
293
|
+
issue_type=IssueType.IMPROVEMENT,
|
|
294
|
+
title=title,
|
|
295
|
+
description=description,
|
|
296
|
+
priority=priority,
|
|
297
|
+
category="Improvement",
|
|
298
|
+
)
|
|
299
|
+
|
|
300
|
+
@staticmethod
|
|
301
|
+
def create_question_issue(title: str, description: str, priority: IssuePriority = IssuePriority.LOW) -> IssueConfig:
|
|
302
|
+
"""Create a question/discussion issue configuration."""
|
|
303
|
+
return IssueConfig(
|
|
304
|
+
issue_type=IssueType.QUESTION,
|
|
305
|
+
title=title,
|
|
306
|
+
description=description,
|
|
307
|
+
priority=priority,
|
|
308
|
+
category="Question",
|
|
309
|
+
)
|
|
@@ -26,6 +26,7 @@ from moai_adk.core.project.backup_utils import (
|
|
|
26
26
|
is_protected_path,
|
|
27
27
|
)
|
|
28
28
|
from moai_adk.core.project.validator import ProjectValidator
|
|
29
|
+
from moai_adk.core.template.processor import TemplateProcessor
|
|
29
30
|
|
|
30
31
|
console = Console()
|
|
31
32
|
|
|
@@ -136,8 +137,6 @@ class PhaseExecutor:
|
|
|
136
137
|
)
|
|
137
138
|
|
|
138
139
|
# Copy resources via TemplateProcessor in silent mode
|
|
139
|
-
from moai_adk.core.template import TemplateProcessor
|
|
140
|
-
|
|
141
140
|
processor = TemplateProcessor(project_path)
|
|
142
141
|
|
|
143
142
|
# Set template variable context (if provided)
|