moai-adk 0.4.5__py3-none-any.whl → 0.20.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/__init__.py +1 -1
- moai_adk/__main__.py +74 -1
- moai_adk/cli/commands/__init__.py +1 -1
- moai_adk/cli/commands/analyze.py +119 -0
- moai_adk/cli/commands/backup.py +25 -1
- moai_adk/cli/commands/doctor.py +31 -5
- moai_adk/cli/commands/improve_user_experience.py +307 -0
- moai_adk/cli/commands/init.py +111 -10
- moai_adk/cli/commands/status.py +33 -3
- moai_adk/cli/commands/update.py +921 -130
- moai_adk/cli/commands/validate_links.py +120 -0
- moai_adk/cli/prompts/init_prompts.py +22 -87
- moai_adk/core/analysis/__init__.py +9 -0
- moai_adk/core/analysis/session_analyzer.py +388 -0
- moai_adk/core/analysis/tag_chain_analyzer.py +344 -0
- moai_adk/core/analysis/tag_chain_repair.py +879 -0
- moai_adk/core/config/__init__.py +19 -0
- moai_adk/core/config/migration.py +235 -0
- moai_adk/core/git/__init__.py +1 -1
- moai_adk/core/git/branch.py +1 -1
- moai_adk/core/git/commit.py +1 -1
- moai_adk/core/git/manager.py +1 -1
- moai_adk/core/issue_creator.py +313 -0
- moai_adk/core/mcp/setup.py +56 -0
- moai_adk/core/mcp/setup_old.py +296 -0
- moai_adk/core/project/backup_utils.py +1 -1
- moai_adk/core/project/checker.py +2 -2
- moai_adk/core/project/detector.py +211 -12
- moai_adk/core/project/initializer.py +85 -15
- moai_adk/core/project/phase_executor.py +76 -13
- moai_adk/core/project/validator.py +13 -13
- moai_adk/core/quality/__init__.py +1 -1
- moai_adk/core/quality/trust_checker.py +1 -1
- moai_adk/core/quality/validators/__init__.py +1 -1
- moai_adk/core/quality/validators/base_validator.py +1 -1
- moai_adk/core/tags/__init__.py +86 -0
- moai_adk/core/tags/auto_corrector.py +693 -0
- moai_adk/core/tags/ci_validator.py +463 -0
- moai_adk/core/tags/cli.py +283 -0
- moai_adk/core/tags/generator.py +109 -0
- moai_adk/core/tags/inserter.py +99 -0
- moai_adk/core/tags/mapper.py +126 -0
- moai_adk/core/tags/parser.py +76 -0
- moai_adk/core/tags/policy_validator.py +580 -0
- moai_adk/core/tags/pre_commit_validator.py +421 -0
- moai_adk/core/tags/reporter.py +956 -0
- moai_adk/core/tags/rollback_manager.py +525 -0
- moai_adk/core/tags/tags.py +149 -0
- moai_adk/core/tags/validator.py +897 -0
- moai_adk/core/template/__init__.py +1 -1
- moai_adk/core/template/backup.py +1 -1
- moai_adk/core/template/merger.py +50 -1
- moai_adk/core/template/processor.py +119 -13
- moai_adk/core/template_engine.py +268 -0
- moai_adk/templates/.claude/agents/alfred/backend-expert.md +348 -0
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +209 -944
- moai_adk/templates/.claude/agents/alfred/database-expert.md +352 -0
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +34 -5
- moai_adk/templates/.claude/agents/alfred/devops-expert.md +464 -0
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +38 -8
- moai_adk/templates/.claude/agents/alfred/format-expert.md +469 -0
- moai_adk/templates/.claude/agents/alfred/frontend-expert.md +357 -0
- moai_adk/templates/.claude/agents/alfred/git-manager.md +128 -9
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +104 -6
- moai_adk/templates/.claude/agents/alfred/project-manager.md +88 -16
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +36 -9
- moai_adk/templates/.claude/agents/alfred/security-expert.md +270 -0
- moai_adk/templates/.claude/agents/alfred/skill-factory.md +865 -0
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +214 -43
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +111 -9
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +309 -160
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +36 -7
- moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +605 -0
- moai_adk/templates/.claude/commands/alfred/0-project.md +393 -966
- moai_adk/templates/.claude/commands/alfred/1-plan.md +651 -367
- moai_adk/templates/.claude/commands/alfred/2-run.md +388 -241
- moai_adk/templates/.claude/commands/alfred/3-sync.md +1921 -410
- moai_adk/templates/.claude/commands/alfred/9-feedback.md +153 -0
- moai_adk/templates/.claude/commands/alfred/release-new.md +3604 -0
- moai_adk/templates/.claude/hooks/alfred/core/project.py +484 -20
- moai_adk/templates/.claude/hooks/alfred/core/timeout.py +136 -0
- moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +108 -0
- moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +198 -0
- moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +14 -6
- moai_adk/templates/.claude/hooks/alfred/post_tool__enable_streaming_ui.py +50 -0
- moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +93 -0
- moai_adk/templates/.claude/hooks/alfred/post_tool__tag_auto_corrector.py +407 -0
- moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +99 -0
- moai_adk/templates/.claude/hooks/alfred/pre_tool__realtime_tag_monitor.py +335 -0
- moai_adk/templates/.claude/hooks/alfred/pre_tool__tag_policy_validator.py +325 -0
- moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +93 -0
- moai_adk/templates/.claude/hooks/alfred/session_start__auto_cleanup.py +580 -0
- moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +298 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +170 -0
- moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/checkpoint.py +3 -3
- moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/context.py +5 -5
- moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +749 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +230 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +198 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +21 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/daily_analysis.py +351 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +154 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +174 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +87 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +61 -0
- moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +111 -0
- moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +1 -0
- moai_adk/templates/.claude/hooks/alfred/utils/hook_config.py +94 -0
- moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +161 -0
- moai_adk/templates/.claude/output-styles/alfred/alfred-moai-adk-beginner.md +267 -0
- moai_adk/templates/.claude/output-styles/alfred/keating-personal-tutor.md +440 -0
- moai_adk/templates/.claude/output-styles/alfred/r2d2-agentic-coding.md +583 -0
- moai_adk/templates/.claude/settings.json +96 -14
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +70 -0
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +62 -0
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/reference.md +242 -0
- moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/SKILL.md +237 -0
- moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/examples.md +871 -0
- moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/reference.md +653 -0
- moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/README.md +162 -0
- moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/SKILL.md +227 -0
- moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/examples.md +354 -0
- moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/reference.md +158 -0
- moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/SKILL.md +179 -79
- moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/examples.md +117 -0
- moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/scripts/pre-review-check.sh +62 -0
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +132 -0
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/reference.md +444 -0
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +62 -0
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +405 -0
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +51 -0
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +355 -0
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +239 -0
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +323 -0
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +286 -0
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +126 -0
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +229 -0
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +4 -0
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +150 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +87 -73
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-personas/README.md +42 -0
- moai_adk/templates/.claude/skills/moai-alfred-personas/SKILL.md +429 -0
- moai_adk/templates/.claude/skills/moai-alfred-personas/examples.md +520 -0
- moai_adk/templates/.claude/skills/moai-alfred-personas/reference.md +405 -0
- moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +89 -0
- moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +122 -0
- moai_adk/templates/.claude/skills/moai-alfred-practices/reference.md +369 -0
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +508 -0
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +481 -0
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +100 -0
- moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +77 -0
- moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +265 -0
- moai_adk/templates/.claude/skills/moai-alfred-rules/reference.md +539 -0
- moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +320 -0
- moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +4 -0
- moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +84 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +137 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +219 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples/validate-spec.sh +161 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +541 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +622 -0
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +19 -0
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +4 -0
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +211 -0
- moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +288 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +269 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +298 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +307 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +252 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +199 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +316 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +263 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/CHECKLIST.md +482 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/EXAMPLES.md +303 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/METADATA.md +477 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL.md +273 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/STRUCTURE.md +583 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/WEB-RESEARCH.md +526 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/reference.md +608 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/generate-structure.sh +328 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/validate-skill.sh +312 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/examples-template.md +285 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/reference-template.md +278 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/scripts-template.sh +303 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +291 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
- moai_adk/templates/.claude/skills/moai-change-logger/SKILL.md +563 -0
- moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +802 -0
- moai_adk/templates/.claude/skills/moai-design-systems/examples.md +1238 -0
- moai_adk/templates/.claude/skills/moai-design-systems/reference.md +673 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +234 -43
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +97 -69
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +97 -72
- moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +97 -74
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +98 -74
- moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +102 -73
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +97 -73
- moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +97 -67
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +97 -79
- moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +97 -71
- moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +265 -64
- moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1064 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1047 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +87 -78
- moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +87 -70
- moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +87 -86
- moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +80 -62
- moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +207 -50
- moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +90 -71
- moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +78 -58
- moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +78 -51
- moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/.!11330!examples.md +0 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +253 -32
- moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
- moai_adk/templates/.claude/skills/moai-jit-docs-enhanced/SKILL.md +460 -0
- moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +98 -74
- moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +98 -76
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +2358 -70
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +2962 -68
- moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +1898 -70
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +1465 -68
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +2364 -66
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +1630 -69
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +89 -61
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +735 -66
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +97 -73
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +98 -73
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +1834 -70
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +99 -74
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +97 -74
- moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +98 -74
- moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +1959 -69
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-template/SKILL.md +348 -0
- moai_adk/templates/.claude/skills/moai-lang-template/VARIABLES.md +98 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +1230 -66
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
- moai_adk/templates/.claude/skills/moai-learning-optimizer/SKILL.md +575 -0
- moai_adk/templates/.claude/skills/moai-project-batch-questions/README.md +50 -0
- moai_adk/templates/.claude/skills/moai-project-batch-questions/SKILL.md +304 -0
- moai_adk/templates/.claude/skills/moai-project-batch-questions/examples.md +417 -0
- moai_adk/templates/.claude/skills/moai-project-batch-questions/reference.md +704 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/README.md +87 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/SKILL.md +552 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/examples.md +1109 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/reference.md +514 -0
- moai_adk/templates/.claude/skills/moai-project-config-manager/validate.py +106 -0
- moai_adk/templates/.claude/skills/moai-project-documentation/README.md +11 -0
- moai_adk/templates/.claude/skills/moai-project-documentation/SKILL.md +622 -0
- moai_adk/templates/.claude/skills/moai-project-documentation/examples.md +20 -0
- moai_adk/templates/.claude/skills/moai-project-documentation/reference.md +12 -0
- moai_adk/templates/.claude/skills/moai-project-language-initializer/README.md +152 -0
- moai_adk/templates/.claude/skills/moai-project-language-initializer/SKILL.md +285 -0
- moai_adk/templates/.claude/skills/moai-project-language-initializer/examples.md +333 -0
- moai_adk/templates/.claude/skills/moai-project-language-initializer/reference.md +386 -0
- moai_adk/templates/.claude/skills/moai-project-template-optimizer/README.md +49 -0
- moai_adk/templates/.claude/skills/moai-project-template-optimizer/SKILL.md +319 -0
- moai_adk/templates/.claude/skills/moai-project-template-optimizer/examples.md +58 -0
- moai_adk/templates/.claude/skills/moai-project-template-optimizer/reference.md +123 -0
- moai_adk/templates/.claude/skills/moai-session-info/SKILL.md +314 -0
- moai_adk/templates/.claude/skills/moai-streaming-ui/SKILL.md +552 -0
- moai_adk/templates/.claude/skills/moai-tag-policy-validator/SKILL.md +570 -0
- moai_adk/templates/.git-hooks/pre-commit +66 -0
- moai_adk/templates/.git-hooks/pre-push +255 -0
- moai_adk/templates/.github/workflows/c-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/cpp-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/csharp-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/dart-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/go-tag-validation.yml +130 -0
- moai_adk/templates/.github/workflows/java-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/javascript-tag-validation.yml +135 -0
- moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/moai-gitflow.yml +166 -3
- moai_adk/templates/.github/workflows/moai-release-create.yml +100 -0
- moai_adk/templates/.github/workflows/moai-release-pipeline.yml +188 -0
- moai_adk/templates/.github/workflows/php-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/python-tag-validation.yml +118 -0
- moai_adk/templates/.github/workflows/release.yml +118 -0
- moai_adk/templates/.github/workflows/ruby-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/rust-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/shell-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/spec-issue-sync.yml +338 -0
- moai_adk/templates/.github/workflows/swift-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/tag-report.yml +269 -0
- moai_adk/templates/.github/workflows/tag-validation.yml +186 -0
- moai_adk/templates/.github/workflows/typescript-tag-validation.yml +154 -0
- moai_adk/templates/.mcp.json +31 -0
- moai_adk/templates/.moai/config.json +80 -7
- moai_adk/templates/CLAUDE.md +562 -546
- moai_adk/utils/banner.py +5 -5
- moai_adk/utils/common.py +294 -0
- moai_adk/utils/link_validator.py +235 -0
- moai_adk/utils/logger.py +8 -8
- moai_adk/utils/user_experience.py +451 -0
- moai_adk-0.20.1.dist-info/METADATA +233 -0
- moai_adk-0.20.1.dist-info/RECORD +404 -0
- moai_adk/templates/.claude/hooks/alfred/README.md +0 -230
- moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -156
- moai_adk/templates/.claude/hooks/alfred/core/__init__.py +0 -85
- moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +0 -25
- moai_adk/templates/.claude/hooks/alfred/handlers/session.py +0 -92
- moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +0 -70
- moai_adk/templates/.claude/hooks/alfred/handlers/user.py +0 -41
- moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +0 -636
- moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +0 -692
- moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +0 -470
- moai_adk/templates/.claude/skills/moai-alfred-debugger-pro/SKILL.md +0 -103
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -103
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -95
- moai_adk/templates/.claude/skills/moai-alfred-performance-optimizer/SKILL.md +0 -105
- moai_adk/templates/.claude/skills/moai-alfred-refactoring-coach/SKILL.md +0 -97
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -97
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -90
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -99
- moai_adk/templates/.claude/skills/moai-alfred-tui-survey/SKILL.md +0 -87
- moai_adk/templates/.claude/skills/moai-alfred-tui-survey/examples.md +0 -62
- moai_adk/templates/.claude/skills/moai-claude-code/SKILL.md +0 -94
- moai_adk/templates/.claude/skills/moai-claude-code/examples.md +0 -513
- moai_adk/templates/.claude/skills/moai-claude-code/reference.md +0 -433
- moai_adk/templates/.claude/skills/moai-claude-code/templates/agent-full.md +0 -332
- moai_adk/templates/.claude/skills/moai-claude-code/templates/command-full.md +0 -384
- moai_adk/templates/.claude/skills/moai-claude-code/templates/plugin-full.json +0 -363
- moai_adk/templates/.claude/skills/moai-claude-code/templates/settings-full.json +0 -595
- moai_adk/templates/.claude/skills/moai-claude-code/templates/skill-full.md +0 -496
- moai_adk/templates/.claude/skills/moai-lang-clojure/SKILL.md +0 -100
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +0 -99
- moai_adk/templates/.claude/skills/moai-lang-haskell/SKILL.md +0 -100
- moai_adk/templates/.claude/skills/moai-lang-julia/SKILL.md +0 -98
- moai_adk/templates/.claude/skills/moai-lang-lua/SKILL.md +0 -98
- moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -69
- moai_adk/templates/.moai/memory/development-guide.md +0 -344
- moai_adk/templates/.moai/memory/gitflow-protection-policy.md +0 -220
- moai_adk/templates/.moai/memory/spec-metadata.md +0 -356
- moai_adk/templates/.moai/project/product.md +0 -161
- moai_adk/templates/.moai/project/structure.md +0 -156
- moai_adk/templates/.moai/project/tech.md +0 -227
- moai_adk/templates/__init__.py +0 -2
- moai_adk-0.4.5.dist-info/METADATA +0 -369
- moai_adk-0.4.5.dist-info/RECORD +0 -152
- {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/WHEEL +0 -0
- {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# MoAI-ADK GitFlow Main Branch Control Hook
|
|
4
|
+
# Purpose: Enforce GitFlow in team mode, advisory in personal mode
|
|
5
|
+
# Enforces: Strict team workflow, flexible personal development
|
|
6
|
+
#
|
|
7
|
+
# This hook runs before any git push operation:
|
|
8
|
+
# Team Mode: Blocks direct main/master push (non-develop), requires confirmation for develop→main
|
|
9
|
+
# Personal Mode: Advisory warnings, allows flexibility
|
|
10
|
+
#
|
|
11
|
+
# Exit codes:
|
|
12
|
+
# 0 - Push allowed
|
|
13
|
+
# 1 - Push blocked (team mode violation or user declined)
|
|
14
|
+
|
|
15
|
+
# Check team mode from .moai/config.json
|
|
16
|
+
is_team_mode() {
|
|
17
|
+
if [ -f ".moai/config.json" ]; then
|
|
18
|
+
# Check if mode is "team"
|
|
19
|
+
grep -q '"mode".*:.*"team"' ".moai/config.json" 2>/dev/null
|
|
20
|
+
return $?
|
|
21
|
+
fi
|
|
22
|
+
return 1
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
# Colors for output
|
|
26
|
+
RED='\033[0;31m'
|
|
27
|
+
YELLOW='\033[1;33m'
|
|
28
|
+
GREEN='\033[0;32m'
|
|
29
|
+
BLUE='\033[0;34m'
|
|
30
|
+
NC='\033[0m' # No Color
|
|
31
|
+
|
|
32
|
+
TEAM_MODE=false
|
|
33
|
+
is_team_mode && TEAM_MODE=true
|
|
34
|
+
|
|
35
|
+
# STRICT TAG VALIDATION - Check all refs for tags first
|
|
36
|
+
for ref_line in $(cat); do
|
|
37
|
+
local_ref=$(echo "$ref_line" | awk '{print $1}')
|
|
38
|
+
remote_ref=$(echo "$ref_line" | awk '{print $3}')
|
|
39
|
+
|
|
40
|
+
# Check if this is a tag push (refs/tags/)
|
|
41
|
+
if [[ "$remote_ref" == refs/tags/* ]]; then
|
|
42
|
+
tag_name=$(echo "$remote_ref" | sed 's|refs/tags/||')
|
|
43
|
+
echo "🏷️ Tag push detected: $tag_name"
|
|
44
|
+
|
|
45
|
+
if [[ "$TEAM_MODE" == true ]]; then
|
|
46
|
+
# In team mode, tags must follow strict GitFlow rules
|
|
47
|
+
|
|
48
|
+
# Validate tag format (must be semantic version: v1.2.3)
|
|
49
|
+
if [[ ! "$tag_name" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
50
|
+
echo ""
|
|
51
|
+
echo -e "${RED}❌ TAG POLICY VIOLATION${NC}"
|
|
52
|
+
echo ""
|
|
53
|
+
echo "Invalid tag format: $tag_name"
|
|
54
|
+
echo "Allowed format: v{major}.{minor}.{patch}"
|
|
55
|
+
echo "Examples: v1.0.0, v1.2.3, v2.0.0"
|
|
56
|
+
echo ""
|
|
57
|
+
echo "Tags must follow semantic versioning in team mode"
|
|
58
|
+
exit 1
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
# Get current branch for validation
|
|
62
|
+
current_branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
|
|
63
|
+
|
|
64
|
+
# Tags can only be created from main branch in team mode
|
|
65
|
+
if [[ "$current_branch" != "main" ]]; then
|
|
66
|
+
echo ""
|
|
67
|
+
echo -e "${RED}❌ TAG POLICY VIOLATION${NC}"
|
|
68
|
+
echo ""
|
|
69
|
+
echo "Tags must be created from 'main' branch in team mode"
|
|
70
|
+
echo "Current branch: $current_branch"
|
|
71
|
+
echo "Required branch: main"
|
|
72
|
+
echo ""
|
|
73
|
+
echo -e "${BLUE}Proper GitFlow tag creation:${NC}"
|
|
74
|
+
echo "1. Ensure all features are merged to develop"
|
|
75
|
+
echo "2. Merge develop to main"
|
|
76
|
+
echo "3. Create tag from main branch"
|
|
77
|
+
echo ""
|
|
78
|
+
echo "Command: git checkout main && git tag $tag_name"
|
|
79
|
+
exit 1
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
# Verify main branch is up-to-date with develop
|
|
83
|
+
if git rev-parse --verify develop >/dev/null 2>&1; then
|
|
84
|
+
main_commit=$(git rev-parse main)
|
|
85
|
+
develop_commit=$(git rev-parse develop)
|
|
86
|
+
|
|
87
|
+
if [[ "$main_commit" != "$develop_commit" ]]; then
|
|
88
|
+
echo ""
|
|
89
|
+
echo -e "${YELLOW}⚠️ GITFLOW WARNING${NC}"
|
|
90
|
+
echo ""
|
|
91
|
+
echo "Main branch is not synchronized with develop"
|
|
92
|
+
echo "Main commit: $main_commit"
|
|
93
|
+
echo "Develop commit: $develop_commit"
|
|
94
|
+
echo ""
|
|
95
|
+
echo "In team mode, tags should only be created after develop → main merge"
|
|
96
|
+
echo ""
|
|
97
|
+
read -p "Continue anyway? (y/N): " -n 1 -r
|
|
98
|
+
echo
|
|
99
|
+
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
100
|
+
echo "Tag push cancelled"
|
|
101
|
+
exit 1
|
|
102
|
+
fi
|
|
103
|
+
fi
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
# Check if tag already exists remotely
|
|
107
|
+
if git ls-remote --tags origin "$tag_name" | grep -q "$tag_name"; then
|
|
108
|
+
echo ""
|
|
109
|
+
echo -e "${RED}❌ TAG POLICY VIOLATION${NC}"
|
|
110
|
+
echo ""
|
|
111
|
+
echo "Tag '$tag_name' already exists remotely"
|
|
112
|
+
echo "Cannot overwrite existing tags in team mode"
|
|
113
|
+
echo ""
|
|
114
|
+
echo "Use different version number or delete remote tag first:"
|
|
115
|
+
echo "git tag -d $tag_name"
|
|
116
|
+
echo "git push origin :refs/tags/$tag_name"
|
|
117
|
+
exit 1
|
|
118
|
+
fi
|
|
119
|
+
|
|
120
|
+
echo ""
|
|
121
|
+
echo -e "${GREEN}✅ Tag validation passed (team mode)${NC}"
|
|
122
|
+
echo " - Format: semantic version ✓"
|
|
123
|
+
echo " - Source: main branch ✓"
|
|
124
|
+
echo " - Unique: new tag ✓"
|
|
125
|
+
echo ""
|
|
126
|
+
|
|
127
|
+
else
|
|
128
|
+
# Personal mode - more permissive but still validate format
|
|
129
|
+
if [[ ! "$tag_name" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
130
|
+
echo ""
|
|
131
|
+
echo -e "${YELLOW}⚠️ Advisory: Tag format should be semantic version (v1.2.3)${NC}"
|
|
132
|
+
echo "Current tag: $tag_name"
|
|
133
|
+
echo ""
|
|
134
|
+
read -p "Continue with non-standard tag? (y/N): " -n 1 -r
|
|
135
|
+
echo
|
|
136
|
+
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
137
|
+
echo "Tag push cancelled"
|
|
138
|
+
exit 1
|
|
139
|
+
fi
|
|
140
|
+
fi
|
|
141
|
+
|
|
142
|
+
echo -e "${GREEN}✅ Tag push allowed (personal mode)${NC}"
|
|
143
|
+
fi
|
|
144
|
+
fi
|
|
145
|
+
done
|
|
146
|
+
|
|
147
|
+
# Now read from stdin again for branch validation
|
|
148
|
+
# Format: <local ref> <local oid> <remote ref> <remote oid>
|
|
149
|
+
while read local_ref local_oid remote_ref remote_oid; do
|
|
150
|
+
# Extract the remote branch name from the reference
|
|
151
|
+
# remote_ref format: refs/heads/main
|
|
152
|
+
remote_branch=$(echo "$remote_ref" | sed 's|refs/heads/||')
|
|
153
|
+
local_branch=$(echo "$local_ref" | sed 's|refs/heads/||')
|
|
154
|
+
|
|
155
|
+
# Check if attempting to push to main branch
|
|
156
|
+
if [ "$remote_branch" = "main" ] || [ "$remote_branch" = "master" ]; then
|
|
157
|
+
# Get the current branch to determine if this is the develop branch
|
|
158
|
+
current_branch=$(git rev-parse --abbrev-ref HEAD)
|
|
159
|
+
|
|
160
|
+
# TEAM MODE ENFORCEMENT
|
|
161
|
+
if [ "$TEAM_MODE" = true ]; then
|
|
162
|
+
# Block non-develop, non-release branches from pushing to main
|
|
163
|
+
if [ "$local_branch" != "develop" ] && [ "${local_branch#release/}" = "$local_branch" ]; then
|
|
164
|
+
echo ""
|
|
165
|
+
echo -e "${RED}❌ BLOCKED: Non-standard GitFlow in TEAM MODE${NC}"
|
|
166
|
+
echo ""
|
|
167
|
+
echo -e "${BLUE}Current branch: ${local_branch}${NC}"
|
|
168
|
+
echo -e "${BLUE}Target branch: ${remote_branch}${NC}"
|
|
169
|
+
echo ""
|
|
170
|
+
echo "🚀 Correct GitFlow workflow for TEAM MODE:"
|
|
171
|
+
echo " 1. Work on feature/SPEC-{ID} branch (created from develop)"
|
|
172
|
+
echo " 2. Push to feature/SPEC-{ID} and create PR to develop"
|
|
173
|
+
echo " 3. Code review & merge into develop"
|
|
174
|
+
echo " 4. When develop is stable, create PR from develop to main"
|
|
175
|
+
echo " 5. Release manager merges develop → main with tag"
|
|
176
|
+
echo ""
|
|
177
|
+
echo -e "${RED}⚠️ Push to ${remote_branch} blocked in team mode${NC}"
|
|
178
|
+
echo ""
|
|
179
|
+
exit 1
|
|
180
|
+
fi
|
|
181
|
+
|
|
182
|
+
# For develop → main or release/* → main, ask for confirmation
|
|
183
|
+
if [ "$local_branch" = "develop" ] || [ "${local_branch#release/}" != "$local_branch" ]; then
|
|
184
|
+
echo ""
|
|
185
|
+
echo -e "${YELLOW}⚠️ TEAM MODE: Pushing ${local_branch} → ${remote_branch}${NC}"
|
|
186
|
+
echo ""
|
|
187
|
+
echo "📋 Summary:"
|
|
188
|
+
echo " • Source branch: ${local_branch}"
|
|
189
|
+
echo " • Target branch: ${remote_branch}"
|
|
190
|
+
echo " • Mode: TEAM MODE (strict enforcement)"
|
|
191
|
+
echo ""
|
|
192
|
+
read -p "❓ Are you sure you want to push ${local_branch} to ${remote_branch}? (y/n) " -n 1 -r
|
|
193
|
+
echo ""
|
|
194
|
+
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
195
|
+
echo -e "${RED}✓ Push cancelled by user${NC}"
|
|
196
|
+
exit 1
|
|
197
|
+
fi
|
|
198
|
+
fi
|
|
199
|
+
fi
|
|
200
|
+
|
|
201
|
+
# PERSONAL MODE: Advisory warnings (allow all pushes)
|
|
202
|
+
if [ "$TEAM_MODE" = false ]; then
|
|
203
|
+
# Advisory: recommend develop -> main workflow
|
|
204
|
+
if [ "$local_branch" != "develop" ] && [ "${local_branch#release/}" = "$local_branch" ]; then
|
|
205
|
+
echo ""
|
|
206
|
+
echo -e "${YELLOW}⚠️ ADVISORY: Non-standard GitFlow detected${NC}"
|
|
207
|
+
echo ""
|
|
208
|
+
echo -e "${BLUE}Current branch: ${local_branch}${NC}"
|
|
209
|
+
echo -e "${BLUE}Target branch: ${remote_branch}${NC}"
|
|
210
|
+
echo ""
|
|
211
|
+
echo "Recommended GitFlow workflow:"
|
|
212
|
+
echo " 1. Work on feature/SPEC-{ID} branch (created from develop)"
|
|
213
|
+
echo " 2. Push to feature/SPEC-{ID} and create PR to develop"
|
|
214
|
+
echo " 3. Merge into develop after code review"
|
|
215
|
+
echo " 4. When develop is stable, create PR from develop to main"
|
|
216
|
+
echo " 5. Release manager merges develop -> main with tag"
|
|
217
|
+
echo ""
|
|
218
|
+
echo -e "${GREEN}✓ Push will proceed (personal mode - flexibility enabled)${NC}"
|
|
219
|
+
echo ""
|
|
220
|
+
fi
|
|
221
|
+
|
|
222
|
+
# Check for delete operation
|
|
223
|
+
if [ "$local_oid" = "0000000000000000000000000000000000000000" ]; then
|
|
224
|
+
echo ""
|
|
225
|
+
echo -e "${RED}⚠️ WARNING: Attempting to delete main branch${NC}"
|
|
226
|
+
echo ""
|
|
227
|
+
echo -e "${YELLOW}This operation is highly discouraged.${NC}"
|
|
228
|
+
echo -e "${GREEN}✓ Push will proceed (personal mode - flexibility enabled)${NC}"
|
|
229
|
+
echo ""
|
|
230
|
+
fi
|
|
231
|
+
|
|
232
|
+
# Check for force push attempts to main
|
|
233
|
+
if [ "$remote_branch" = "main" ] || [ "$remote_branch" = "master" ]; then
|
|
234
|
+
# Check if remote_oid exists (non-zero means we're trying to update existing ref)
|
|
235
|
+
if [ "$remote_oid" != "0000000000000000000000000000000000000000" ]; then
|
|
236
|
+
# Verify this is a fast-forward merge (no force push)
|
|
237
|
+
if ! git merge-base --is-ancestor "$remote_oid" "$local_oid" 2>/dev/null; then
|
|
238
|
+
echo ""
|
|
239
|
+
echo -e "${YELLOW}⚠️ ADVISORY: Force-push to main branch detected${NC}"
|
|
240
|
+
echo ""
|
|
241
|
+
echo "Recommended approach:"
|
|
242
|
+
echo " - Use GitHub PR with proper code review"
|
|
243
|
+
echo " - Ensure changes are merged via fast-forward"
|
|
244
|
+
echo ""
|
|
245
|
+
echo -e "${GREEN}✓ Push will proceed (personal mode - flexibility enabled)${NC}"
|
|
246
|
+
echo ""
|
|
247
|
+
fi
|
|
248
|
+
fi
|
|
249
|
+
fi
|
|
250
|
+
fi
|
|
251
|
+
fi
|
|
252
|
+
done
|
|
253
|
+
|
|
254
|
+
# All checks passed (or advisory warnings shown)
|
|
255
|
+
exit 0
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# @CODE:LANG-GO-001 | SPEC: SPEC-LANGUAGE-DETECTION-001.md | TEST: tests/test_workflows.py
|
|
2
|
+
# Go Project TAG Validation Workflow
|
|
3
|
+
# Automatically validates TAGs with go test, golangci-lint, and coverage
|
|
4
|
+
|
|
5
|
+
name: TAG Validation (Go)
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
push:
|
|
9
|
+
branches: [main, develop, feature/**]
|
|
10
|
+
pull_request:
|
|
11
|
+
branches: [main, develop]
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
validate:
|
|
19
|
+
name: Validate TAGs - Go ${{ matrix.go-version }}
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
|
|
22
|
+
strategy:
|
|
23
|
+
matrix:
|
|
24
|
+
go-version: ['1.22', '1.23']
|
|
25
|
+
fail-fast: false
|
|
26
|
+
|
|
27
|
+
steps:
|
|
28
|
+
- name: Checkout repository
|
|
29
|
+
uses: actions/checkout@v4
|
|
30
|
+
with:
|
|
31
|
+
fetch-depth: 0
|
|
32
|
+
|
|
33
|
+
- name: Set up Go ${{ matrix.go-version }}
|
|
34
|
+
uses: actions/setup-go@v6
|
|
35
|
+
with:
|
|
36
|
+
go-version: ${{ matrix.go-version }}
|
|
37
|
+
cache: true
|
|
38
|
+
|
|
39
|
+
- name: Cache Go modules
|
|
40
|
+
uses: actions/cache@v4
|
|
41
|
+
with:
|
|
42
|
+
path: |
|
|
43
|
+
~/.cache/go-build
|
|
44
|
+
~/go/pkg/mod
|
|
45
|
+
key: go-${{ runner.os }}-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
46
|
+
restore-keys: |
|
|
47
|
+
go-${{ runner.os }}-${{ matrix.go-version }}-
|
|
48
|
+
go-${{ runner.os }}-
|
|
49
|
+
|
|
50
|
+
- name: Download dependencies
|
|
51
|
+
run: go mod download
|
|
52
|
+
|
|
53
|
+
- name: Verify dependencies
|
|
54
|
+
run: go mod verify
|
|
55
|
+
|
|
56
|
+
- name: Run go fmt
|
|
57
|
+
run: |
|
|
58
|
+
FMT_OUTPUT=$(gofmt -l .)
|
|
59
|
+
if [ -n "$FMT_OUTPUT" ]; then
|
|
60
|
+
echo "Files need formatting:"
|
|
61
|
+
echo "$FMT_OUTPUT"
|
|
62
|
+
exit 1
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
- name: Run golangci-lint
|
|
66
|
+
uses: golangci/golangci-lint-action@v6
|
|
67
|
+
with:
|
|
68
|
+
version: latest
|
|
69
|
+
args: --timeout=5m
|
|
70
|
+
|
|
71
|
+
- name: Run tests with coverage
|
|
72
|
+
run: |
|
|
73
|
+
go test -v -race -coverprofile=coverage.out -covermode=atomic ./...
|
|
74
|
+
go tool cover -func=coverage.out
|
|
75
|
+
|
|
76
|
+
- name: Check coverage threshold
|
|
77
|
+
run: |
|
|
78
|
+
COVERAGE=$(go tool cover -func=coverage.out | grep total | awk '{print $3}' | sed 's/%//')
|
|
79
|
+
echo "Total coverage: ${COVERAGE}%"
|
|
80
|
+
if (( $(echo "$COVERAGE < 75" | bc -l) )); then
|
|
81
|
+
echo "❌ Coverage ${COVERAGE}% is below 75% threshold"
|
|
82
|
+
exit 1
|
|
83
|
+
fi
|
|
84
|
+
echo "✅ Coverage ${COVERAGE}% meets 75% threshold"
|
|
85
|
+
|
|
86
|
+
- name: Upload coverage reports
|
|
87
|
+
if: matrix.go-version == '1.23'
|
|
88
|
+
uses: actions/upload-artifact@v4
|
|
89
|
+
with:
|
|
90
|
+
name: coverage-report-go
|
|
91
|
+
path: coverage.out
|
|
92
|
+
|
|
93
|
+
- name: Comment PR with coverage
|
|
94
|
+
if: github.event_name == 'pull_request' && matrix.go-version == '1.23'
|
|
95
|
+
uses: codecov/codecov-action@v5
|
|
96
|
+
with:
|
|
97
|
+
files: ./coverage.out
|
|
98
|
+
flags: go
|
|
99
|
+
fail_ci_if_error: false
|
|
100
|
+
|
|
101
|
+
- name: Run go vet
|
|
102
|
+
run: go vet ./...
|
|
103
|
+
|
|
104
|
+
- name: Build project
|
|
105
|
+
run: go build -v ./...
|
|
106
|
+
|
|
107
|
+
quality-gate:
|
|
108
|
+
name: Quality Gate Summary
|
|
109
|
+
needs: validate
|
|
110
|
+
runs-on: ubuntu-latest
|
|
111
|
+
if: always()
|
|
112
|
+
|
|
113
|
+
steps:
|
|
114
|
+
- name: Check validation results
|
|
115
|
+
run: |
|
|
116
|
+
if [ "${{ needs.validate.result }}" != "success" ]; then
|
|
117
|
+
echo "❌ TAG validation failed"
|
|
118
|
+
exit 1
|
|
119
|
+
fi
|
|
120
|
+
echo "✅ TAG validation passed"
|
|
121
|
+
|
|
122
|
+
- name: Quality metrics summary
|
|
123
|
+
run: |
|
|
124
|
+
echo "## Quality Metrics Summary" >> $GITHUB_STEP_SUMMARY
|
|
125
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
126
|
+
echo "- ✅ Go tests passed" >> $GITHUB_STEP_SUMMARY
|
|
127
|
+
echo "- ✅ Code coverage ≥ 75%" >> $GITHUB_STEP_SUMMARY
|
|
128
|
+
echo "- ✅ Linting passed (golangci-lint)" >> $GITHUB_STEP_SUMMARY
|
|
129
|
+
echo "- ✅ Formatting checked (gofmt)" >> $GITHUB_STEP_SUMMARY
|
|
130
|
+
echo "- ✅ Build successful" >> $GITHUB_STEP_SUMMARY
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# @CODE:LANG-JS-001 | SPEC: SPEC-LANGUAGE-DETECTION-001.md | TEST: tests/test_workflows.py
|
|
2
|
+
# JavaScript Project TAG Validation Workflow
|
|
3
|
+
# Automatically validates TAGs in JavaScript projects with npm/yarn/pnpm auto-detection
|
|
4
|
+
|
|
5
|
+
name: TAG Validation (JavaScript)
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
push:
|
|
9
|
+
branches: [main, develop, feature/**]
|
|
10
|
+
pull_request:
|
|
11
|
+
branches: [main, develop]
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
validate:
|
|
19
|
+
name: Validate TAGs - Node ${{ matrix.node-version }}
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
|
|
22
|
+
strategy:
|
|
23
|
+
matrix:
|
|
24
|
+
node-version: ['20', '22']
|
|
25
|
+
fail-fast: false
|
|
26
|
+
|
|
27
|
+
steps:
|
|
28
|
+
- name: Checkout repository
|
|
29
|
+
uses: actions/checkout@v4
|
|
30
|
+
with:
|
|
31
|
+
fetch-depth: 0
|
|
32
|
+
|
|
33
|
+
- name: Set up Node.js ${{ matrix.node-version }}
|
|
34
|
+
uses: actions/setup-node@v6
|
|
35
|
+
with:
|
|
36
|
+
node-version: ${{ matrix.node-version }}
|
|
37
|
+
|
|
38
|
+
- name: Detect package manager
|
|
39
|
+
id: detect-pm
|
|
40
|
+
run: |
|
|
41
|
+
if [ -f "bun.lockb" ]; then
|
|
42
|
+
echo "manager=bun" >> $GITHUB_OUTPUT
|
|
43
|
+
echo "lockfile=bun.lockb" >> $GITHUB_OUTPUT
|
|
44
|
+
elif [ -f "pnpm-lock.yaml" ]; then
|
|
45
|
+
echo "manager=pnpm" >> $GITHUB_OUTPUT
|
|
46
|
+
echo "lockfile=pnpm-lock.yaml" >> $GITHUB_OUTPUT
|
|
47
|
+
elif [ -f "yarn.lock" ]; then
|
|
48
|
+
echo "manager=yarn" >> $GITHUB_OUTPUT
|
|
49
|
+
echo "lockfile=yarn.lock" >> $GITHUB_OUTPUT
|
|
50
|
+
else
|
|
51
|
+
echo "manager=npm" >> $GITHUB_OUTPUT
|
|
52
|
+
echo "lockfile=package-lock.json" >> $GITHUB_OUTPUT
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
- name: Setup package manager cache
|
|
56
|
+
uses: actions/setup-node@v6
|
|
57
|
+
with:
|
|
58
|
+
node-version: ${{ matrix.node-version }}
|
|
59
|
+
cache: ${{ steps.detect-pm.outputs.manager }}
|
|
60
|
+
|
|
61
|
+
- name: Install pnpm (if needed)
|
|
62
|
+
if: steps.detect-pm.outputs.manager == 'pnpm'
|
|
63
|
+
run: npm install -g pnpm
|
|
64
|
+
|
|
65
|
+
- name: Install Bun (if needed)
|
|
66
|
+
if: steps.detect-pm.outputs.manager == 'bun'
|
|
67
|
+
uses: oven-sh/setup-bun@v2
|
|
68
|
+
|
|
69
|
+
- name: Install dependencies
|
|
70
|
+
run: |
|
|
71
|
+
case "${{ steps.detect-pm.outputs.manager }}" in
|
|
72
|
+
npm)
|
|
73
|
+
npm ci
|
|
74
|
+
;;
|
|
75
|
+
yarn)
|
|
76
|
+
yarn install --frozen-lockfile
|
|
77
|
+
;;
|
|
78
|
+
pnpm)
|
|
79
|
+
pnpm install --frozen-lockfile
|
|
80
|
+
;;
|
|
81
|
+
bun)
|
|
82
|
+
bun install --frozen-lockfile
|
|
83
|
+
;;
|
|
84
|
+
esac
|
|
85
|
+
|
|
86
|
+
- name: Run linting
|
|
87
|
+
run: |
|
|
88
|
+
if [ -f "biome.json" ]; then
|
|
89
|
+
npx @biomejs/biome check src/
|
|
90
|
+
elif command -v eslint &> /dev/null; then
|
|
91
|
+
npm run lint || npx eslint src/
|
|
92
|
+
fi
|
|
93
|
+
continue-on-error: false
|
|
94
|
+
|
|
95
|
+
- name: Run tests with coverage
|
|
96
|
+
run: npm test -- --coverage --coverage-threshold=80
|
|
97
|
+
continue-on-error: false
|
|
98
|
+
|
|
99
|
+
- name: Upload coverage reports
|
|
100
|
+
if: matrix.node-version == '22'
|
|
101
|
+
uses: actions/upload-artifact@v4
|
|
102
|
+
with:
|
|
103
|
+
name: coverage-report-javascript
|
|
104
|
+
path: coverage/
|
|
105
|
+
|
|
106
|
+
- name: Comment PR with coverage
|
|
107
|
+
if: github.event_name == 'pull_request' && matrix.node-version == '22'
|
|
108
|
+
uses: ArtiomTr/jest-coverage-report-action@v2
|
|
109
|
+
with:
|
|
110
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
111
|
+
threshold: 80
|
|
112
|
+
|
|
113
|
+
quality-gate:
|
|
114
|
+
name: Quality Gate Summary
|
|
115
|
+
needs: validate
|
|
116
|
+
runs-on: ubuntu-latest
|
|
117
|
+
if: always()
|
|
118
|
+
|
|
119
|
+
steps:
|
|
120
|
+
- name: Check validation results
|
|
121
|
+
run: |
|
|
122
|
+
if [ "${{ needs.validate.result }}" != "success" ]; then
|
|
123
|
+
echo "❌ TAG validation failed"
|
|
124
|
+
exit 1
|
|
125
|
+
fi
|
|
126
|
+
echo "✅ TAG validation passed"
|
|
127
|
+
|
|
128
|
+
- name: Quality metrics summary
|
|
129
|
+
run: |
|
|
130
|
+
echo "## Quality Metrics Summary" >> $GITHUB_STEP_SUMMARY
|
|
131
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
132
|
+
echo "- ✅ JavaScript tests passed" >> $GITHUB_STEP_SUMMARY
|
|
133
|
+
echo "- ✅ Code coverage ≥ 80%" >> $GITHUB_STEP_SUMMARY
|
|
134
|
+
echo "- ✅ Linting passed" >> $GITHUB_STEP_SUMMARY
|
|
135
|
+
echo "- ✅ TAG chain validated" >> $GITHUB_STEP_SUMMARY
|