moai-adk 0.11.0__py3-none-any.whl → 0.12.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/core/issue_creator.py +2 -2
- moai_adk/core/project/detector.py +195 -12
- moai_adk/core/tags/ci_validator.py +1 -1
- moai_adk/core/tags/pre_commit_validator.py +1 -1
- moai_adk/core/tags/validator.py +1 -1
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +316 -0
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +208 -0
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +214 -0
- moai_adk/templates/.claude/agents/alfred/git-manager.md +406 -0
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +350 -0
- moai_adk/templates/.claude/agents/alfred/project-manager.md +273 -0
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +343 -0
- moai_adk/templates/.claude/agents/alfred/skill-factory.md +865 -0
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +287 -0
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +287 -0
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +326 -0
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +375 -0
- moai_adk/templates/.claude/commands/alfred/0-project.md +1275 -0
- moai_adk/templates/.claude/commands/alfred/1-plan.md +734 -0
- moai_adk/templates/.claude/commands/alfred/2-run.md +551 -0
- moai_adk/templates/.claude/commands/alfred/3-sync.md +689 -0
- moai_adk/templates/.claude/commands/alfred/9-feedback.md +149 -0
- moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +206 -0
- moai_adk/templates/.claude/hooks/alfred/core/project.py +742 -0
- 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/notification__handle_events.py +95 -0
- moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +95 -0
- moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +101 -0
- moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +95 -0
- moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +97 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +170 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/checkpoint.py +271 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +67 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +749 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +230 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +198 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +21 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +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/stop__handle_interrupt.py +95 -0
- moai_adk/templates/.claude/hooks/alfred/subagent_stop__handle_subagent_end.py +95 -0
- moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +111 -0
- moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +1 -0
- moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +136 -0
- moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +640 -0
- moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +696 -0
- moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +474 -0
- moai_adk/templates/.claude/settings.json +144 -0
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +122 -0
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +237 -0
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +615 -0
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +653 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +269 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +298 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +307 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +252 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +199 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +316 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +263 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +291 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +290 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +303 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1064 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1047 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +116 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +122 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +307 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
- moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +125 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +431 -0
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +127 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +482 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +278 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +477 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +271 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +583 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +526 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +465 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +328 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +312 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +285 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +278 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +303 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +137 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +219 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +161 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +541 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +622 -0
- moai_adk/templates/.github/workflows/c-tag-validation.yml +83 -0
- moai_adk/templates/.github/workflows/cpp-tag-validation.yml +79 -0
- moai_adk/templates/.github/workflows/csharp-tag-validation.yml +65 -0
- moai_adk/templates/.github/workflows/dart-tag-validation.yml +82 -0
- moai_adk/templates/.github/workflows/java-tag-validation.yml +75 -0
- moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +67 -0
- moai_adk/templates/.github/workflows/php-tag-validation.yml +56 -0
- moai_adk/templates/.github/workflows/ruby-tag-validation.yml +68 -0
- moai_adk/templates/.github/workflows/rust-tag-validation.yml +73 -0
- moai_adk/templates/.github/workflows/shell-tag-validation.yml +65 -0
- moai_adk/templates/.github/workflows/swift-tag-validation.yml +79 -0
- moai_adk/templates/.moai/config.json +113 -0
- moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +208 -0
- moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +369 -0
- moai_adk/templates/.moai/memory/CLAUDE-RULES.md +539 -0
- moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +344 -0
- moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +330 -0
- moai_adk/templates/.moai/memory/ISSUE-LABEL-MAPPING.md +150 -0
- moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +218 -0
- moai_adk/templates/.moai/memory/SPEC-METADATA.md +356 -0
- moai_adk/templates/.moai/memory/gitflow-protection-policy.md +330 -0
- moai_adk/templates/.moai/memory/spec-metadata.md +356 -0
- moai_adk/templates/.moai/project/product.md +161 -0
- moai_adk/templates/.moai/project/structure.md +156 -0
- moai_adk/templates/.moai/project/tech.md +227 -0
- moai_adk/templates/CLAUDE.md +90 -10
- moai_adk/templates/workflows/go-tag-validation.yml +130 -0
- moai_adk/templates/workflows/javascript-tag-validation.yml +135 -0
- moai_adk/templates/workflows/python-tag-validation.yml +118 -0
- moai_adk/templates/workflows/typescript-tag-validation.yml +154 -0
- {moai_adk-0.11.0.dist-info → moai_adk-0.12.0.dist-info}/METADATA +43 -1
- moai_adk-0.12.0.dist-info/RECORD +330 -0
- moai_adk-0.11.0.dist-info/RECORD +0 -77
- /moai_adk/templates/.github/workflows/{release.yml → moai-adk-release.yml} +0 -0
- /moai_adk/templates/.github/workflows/{spec-issue-sync.yml → moai-adk-spec-issue-sync.yml} +0 -0
- /moai_adk/templates/.github/workflows/{tag-validation.yml → moai-adk-tag-validation.yml} +0 -0
- {moai_adk-0.11.0.dist-info → moai_adk-0.12.0.dist-info}/WHEEL +0 -0
- {moai_adk-0.11.0.dist-info → moai_adk-0.12.0.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.11.0.dist-info → moai_adk-0.12.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: TECH-001
|
|
3
|
+
version: 0.1.1
|
|
4
|
+
status: active
|
|
5
|
+
created: 2025-10-01
|
|
6
|
+
updated: 2025-10-17
|
|
7
|
+
author: @tech-lead
|
|
8
|
+
priority: medium
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# {{PROJECT_NAME}} Technology Stack
|
|
12
|
+
|
|
13
|
+
## HISTORY
|
|
14
|
+
|
|
15
|
+
### v0.1.1 (2025-10-17)
|
|
16
|
+
- **UPDATED**: Template version synced (v0.3.8)
|
|
17
|
+
- **AUTHOR**: @Alfred
|
|
18
|
+
- **SECTIONS**: Metadata standardization (single `author` field, added `priority`)
|
|
19
|
+
|
|
20
|
+
### v0.1.0 (2025-10-01)
|
|
21
|
+
- **INITIAL**: Authored the technology stack document
|
|
22
|
+
- **AUTHOR**: @tech-lead
|
|
23
|
+
- **SECTIONS**: Stack, Framework, Quality, Security, Deploy
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## @DOC:STACK-001 Languages & Runtimes
|
|
28
|
+
|
|
29
|
+
### Primary Language
|
|
30
|
+
|
|
31
|
+
- **Language**: [Chosen primary language]
|
|
32
|
+
- **Version Range**: [Supported versions]
|
|
33
|
+
- **Rationale**: [Justification and trade-offs]
|
|
34
|
+
- **Package Manager**: [Tool used to manage dependencies]
|
|
35
|
+
|
|
36
|
+
### Multi-Platform Support
|
|
37
|
+
|
|
38
|
+
| Platform | Support Level | Validation Tooling | Key Constraints |
|
|
39
|
+
| ----------- | ------------- | ------------------- | --------------- |
|
|
40
|
+
| **Windows** | [Supported?] | [Validation method] | [Constraints] |
|
|
41
|
+
| **macOS** | [Supported?] | [Validation method] | [Constraints] |
|
|
42
|
+
| **Linux** | [Supported?] | [Validation method] | [Constraints] |
|
|
43
|
+
|
|
44
|
+
## @DOC:FRAMEWORK-001 Core Frameworks & Libraries
|
|
45
|
+
|
|
46
|
+
### 1. Runtime Dependencies
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"[library1]": "[version]",
|
|
52
|
+
"[library2]": "[version]",
|
|
53
|
+
"[library3]": "[version]"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 2. Development Tooling
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"devDependencies": {
|
|
63
|
+
"[dev-tool1]": "[version]",
|
|
64
|
+
"[dev-tool2]": "[version]",
|
|
65
|
+
"[dev-tool3]": "[version]"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 3. Build System
|
|
71
|
+
|
|
72
|
+
- **Build Tool**: [Selected build tool]
|
|
73
|
+
- **Bundling**: [Bundler and configuration]
|
|
74
|
+
- **Targets**: [Build targets such as browser, Node.js, etc.]
|
|
75
|
+
- **Performance Goals**: [Desired build duration]
|
|
76
|
+
|
|
77
|
+
## @DOC:QUALITY-001 Quality Gates & Policies
|
|
78
|
+
|
|
79
|
+
### Test Coverage
|
|
80
|
+
|
|
81
|
+
- **Target**: [Coverage percentage goal]
|
|
82
|
+
- **Measurement Tool**: [Tooling used]
|
|
83
|
+
- **Failure Response**: [Actions when coverage falls short]
|
|
84
|
+
|
|
85
|
+
### Static Analysis
|
|
86
|
+
|
|
87
|
+
| Tool | Role | Config File | Failure Handling |
|
|
88
|
+
| -------------- | --------- | ------------- | ---------------- |
|
|
89
|
+
| [linter] | [Purpose] | [config file] | [Action] |
|
|
90
|
+
| [formatter] | [Purpose] | [config file] | [Action] |
|
|
91
|
+
| [type-checker] | [Purpose] | [config file] | [Action] |
|
|
92
|
+
|
|
93
|
+
### Automation Scripts
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# Quality gate pipeline
|
|
97
|
+
[test-command] # Run tests
|
|
98
|
+
[lint-command] # Enforce code quality
|
|
99
|
+
[type-check-command] # Validate types
|
|
100
|
+
[build-command] # Verify builds
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## @DOC:SECURITY-001 Security Policy & Operations
|
|
104
|
+
|
|
105
|
+
### Secret Management
|
|
106
|
+
|
|
107
|
+
- **Policy**: [Approach to handling secrets]
|
|
108
|
+
- **Tooling**: [Services or tools in use]
|
|
109
|
+
- **Verification**: [Automation to validate compliance]
|
|
110
|
+
|
|
111
|
+
### Dependency Security
|
|
112
|
+
|
|
113
|
+
```json
|
|
114
|
+
{
|
|
115
|
+
"security": {
|
|
116
|
+
"audit_tool": "[security-audit-tool]",
|
|
117
|
+
"update_policy": "[update-policy]",
|
|
118
|
+
"vulnerability_threshold": "[allowed-threshold]"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Logging Policy
|
|
124
|
+
|
|
125
|
+
- **Log Levels**: [Define log levels]
|
|
126
|
+
- **Sensitive Data Masking**: [Masking rules]
|
|
127
|
+
- **Retention Policy**: [Log retention period]
|
|
128
|
+
|
|
129
|
+
## @DOC:DEPLOY-001 Release Channels & Strategy
|
|
130
|
+
|
|
131
|
+
### 1. Distribution Channels
|
|
132
|
+
|
|
133
|
+
- **Primary Channel**: [Main release path]
|
|
134
|
+
- **Release Procedure**: [Deployment process]
|
|
135
|
+
- **Versioning Policy**: [Version management strategy]
|
|
136
|
+
- **Rollback Strategy**: [Rollback plan]
|
|
137
|
+
|
|
138
|
+
### 2. Developer Setup
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# Developer mode setup
|
|
142
|
+
[local-install-command]
|
|
143
|
+
[dependency-install-command]
|
|
144
|
+
[dev-environment-command]
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 3. CI/CD Pipeline
|
|
148
|
+
|
|
149
|
+
| Stage | Objective | Tooling | Success Criteria |
|
|
150
|
+
| --------- | ----------- | ------- | ---------------- |
|
|
151
|
+
| [Stage 1] | [Objective] | [Tool] | [Condition] |
|
|
152
|
+
| [Stage 2] | [Objective] | [Tool] | [Condition] |
|
|
153
|
+
| [Stage 3] | [Objective] | [Tool] | [Condition] |
|
|
154
|
+
|
|
155
|
+
## Environment Profiles
|
|
156
|
+
|
|
157
|
+
### Development (`dev`)
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
export PROJECT_MODE=development
|
|
161
|
+
export LOG_LEVEL=debug
|
|
162
|
+
[dev-env-command]
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Test (`test`)
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
export PROJECT_MODE=test
|
|
169
|
+
export LOG_LEVEL=info
|
|
170
|
+
[test-env-command]
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Production (`production`)
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
export PROJECT_MODE=production
|
|
177
|
+
export LOG_LEVEL=warning
|
|
178
|
+
[prod-env-command]
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## @CODE:TECH-DEBT-001 Technical Debt Management
|
|
182
|
+
|
|
183
|
+
### Current Debt
|
|
184
|
+
|
|
185
|
+
1. **[debt-item-1]** – [Description and priority]
|
|
186
|
+
2. **[debt-item-2]** – [Description and priority]
|
|
187
|
+
3. **[debt-item-3]** – [Description and priority]
|
|
188
|
+
|
|
189
|
+
### Remediation Plan
|
|
190
|
+
|
|
191
|
+
- **Short term (1 month)**: [Immediate fixes]
|
|
192
|
+
- **Mid term (3 months)**: [Progressive improvements]
|
|
193
|
+
- **Long term (6+ months)**: [Strategic upgrades]
|
|
194
|
+
|
|
195
|
+
## EARS Technical Requirements Guide
|
|
196
|
+
|
|
197
|
+
### Using EARS for the Stack
|
|
198
|
+
|
|
199
|
+
Apply EARS patterns when documenting technical decisions and quality gates:
|
|
200
|
+
|
|
201
|
+
#### Technology Stack EARS Example
|
|
202
|
+
```markdown
|
|
203
|
+
### Ubiquitous Requirements (Baseline)
|
|
204
|
+
- The system shall guarantee TypeScript type safety.
|
|
205
|
+
- The system shall provide cross-platform compatibility.
|
|
206
|
+
|
|
207
|
+
### Event-driven Requirements
|
|
208
|
+
- WHEN code is committed, the system shall run tests automatically.
|
|
209
|
+
- WHEN a build fails, the system shall notify developers immediately.
|
|
210
|
+
|
|
211
|
+
### State-driven Requirements
|
|
212
|
+
- WHILE in development mode, the system shall offer hot reloading.
|
|
213
|
+
- WHILE in production mode, the system shall produce optimized builds.
|
|
214
|
+
|
|
215
|
+
### Optional Features
|
|
216
|
+
- WHERE Docker is available, the system may support container-based deployment.
|
|
217
|
+
- WHERE CI/CD is configured, the system may execute automated deployments.
|
|
218
|
+
|
|
219
|
+
### Constraints
|
|
220
|
+
- IF a dependency vulnerability is detected, the system shall halt the build.
|
|
221
|
+
- Test coverage shall remain at or above 85%.
|
|
222
|
+
- Build time shall not exceed 5 minutes.
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
_This technology stack guides tool selection and quality gates when `/alfred:2-run` runs._
|
moai_adk/templates/CLAUDE.md
CHANGED
|
@@ -117,22 +117,102 @@ Alfred follows a systematic **4-step workflow** for all user requests to ensure
|
|
|
117
117
|
|
|
118
118
|
---
|
|
119
119
|
|
|
120
|
+
## 🛠️ Auto-Fix & Merge Conflict Protocol
|
|
121
|
+
|
|
122
|
+
When Alfred detects issues that could automatically fix code (merge conflicts, overwritten changes, deprecated code, etc.), follow this protocol BEFORE making any changes:
|
|
123
|
+
|
|
124
|
+
### Step 1: Analysis & Reporting
|
|
125
|
+
- Analyze the problem thoroughly using git history, file content, and logic
|
|
126
|
+
- Write a clear report (plain text, NO markdown) explaining:
|
|
127
|
+
- Root cause of the issue
|
|
128
|
+
- Files affected
|
|
129
|
+
- Proposed changes
|
|
130
|
+
- Impact analysis
|
|
131
|
+
|
|
132
|
+
Example Report Format:
|
|
133
|
+
```
|
|
134
|
+
Detected Merge Conflict:
|
|
135
|
+
|
|
136
|
+
Root Cause:
|
|
137
|
+
- Commit c054777b removed language detection from develop
|
|
138
|
+
- Merge commit e18c7f98 (main → develop) re-introduced the line
|
|
139
|
+
|
|
140
|
+
Impact:
|
|
141
|
+
- .claude/hooks/alfred/shared/handlers/session.py
|
|
142
|
+
- src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py
|
|
143
|
+
|
|
144
|
+
Proposed Fix:
|
|
145
|
+
- Remove detect_language() import and call
|
|
146
|
+
- Delete "🐍 Language: {language}" display line
|
|
147
|
+
- Synchronize both local + package templates
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Step 2: User Confirmation (AskUserQuestion)
|
|
151
|
+
- Present the analysis to the user
|
|
152
|
+
- Use AskUserQuestion to get explicit approval
|
|
153
|
+
- Options should be clear: "Should I proceed with this fix?" with YES/NO choices
|
|
154
|
+
- Wait for user response before proceeding
|
|
155
|
+
|
|
156
|
+
### Step 3: Execute Only After Approval
|
|
157
|
+
- Only modify files after user confirms
|
|
158
|
+
- Apply changes to both local project AND package templates
|
|
159
|
+
- Maintain consistency between `/` and `src/moai_adk/templates/`
|
|
160
|
+
|
|
161
|
+
### Step 4: Commit with Full Context
|
|
162
|
+
- Create commit with detailed message explaining:
|
|
163
|
+
- What problem was fixed
|
|
164
|
+
- Why it happened
|
|
165
|
+
- How it was resolved
|
|
166
|
+
- Reference the conflict commit if applicable
|
|
167
|
+
|
|
168
|
+
### Critical Rules
|
|
169
|
+
- ❌ NEVER auto-modify without user approval
|
|
170
|
+
- ❌ NEVER skip the report step
|
|
171
|
+
- ✅ ALWAYS report findings first
|
|
172
|
+
- ✅ ALWAYS ask for user confirmation (AskUserQuestion)
|
|
173
|
+
- ✅ ALWAYS update both local + package templates together
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
120
177
|
## 📊 Reporting Style
|
|
121
178
|
|
|
122
|
-
**CRITICAL RULE**:
|
|
179
|
+
**CRITICAL RULE**: Distinguish between screen output (user-facing) and internal documents (files).
|
|
180
|
+
|
|
181
|
+
### Output Format Rules
|
|
182
|
+
- **Screen output to user**: Plain text (NO markdown syntax)
|
|
183
|
+
- **Internal documents** (files in `.moai/docs/`, `.moai/reports/`): Markdown format
|
|
184
|
+
- **Code comments and git commits**: English, clear structure
|
|
185
|
+
|
|
186
|
+
### Screen Output to User (Plain Text)
|
|
187
|
+
|
|
188
|
+
**When responding directly to user in chat/prompt:**
|
|
189
|
+
|
|
190
|
+
Use plain text format (NO markdown headers, tables, or special formatting):
|
|
191
|
+
|
|
192
|
+
Example:
|
|
193
|
+
```
|
|
194
|
+
Detected Merge Conflict:
|
|
195
|
+
|
|
196
|
+
Root Cause:
|
|
197
|
+
- Commit c054777b removed language detection from develop
|
|
198
|
+
- Merge commit e18c7f98 re-introduced the line
|
|
199
|
+
|
|
200
|
+
Impact Range:
|
|
201
|
+
- .claude/hooks/alfred/shared/handlers/session.py
|
|
202
|
+
- src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py
|
|
203
|
+
|
|
204
|
+
Proposed Actions:
|
|
205
|
+
- Remove detect_language() import and call
|
|
206
|
+
- Delete language display line
|
|
207
|
+
- Synchronize both files
|
|
208
|
+
```
|
|
123
209
|
|
|
124
|
-
###
|
|
210
|
+
### Internal Documents (Markdown Format)
|
|
125
211
|
|
|
126
|
-
**
|
|
212
|
+
**When creating files in `.moai/docs/`, `.moai/reports/`, `.moai/analysis/`:**
|
|
127
213
|
|
|
128
|
-
|
|
129
|
-
2. **Session Finalization** - After `/alfred:3-sync` completion, PR merge
|
|
130
|
-
3. **Progress Summary** - Phase-by-phase status updates
|
|
131
|
-
4. **Next Steps Guidance** - Recommendations for user
|
|
132
|
-
5. **Analysis Results Report** - Code quality, architecture analysis
|
|
133
|
-
6. **Validation Results Summary** - TRUST 5, @TAG verification
|
|
214
|
+
Use markdown format with proper structure:
|
|
134
215
|
|
|
135
|
-
**Output Format**:
|
|
136
216
|
```markdown
|
|
137
217
|
## 🎊 Task Completion Report
|
|
138
218
|
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# @CODE:LANG-001-GO | 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-001-JAVASCRIPT | 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
|