universal-dev-standards 3.5.1-beta.1 → 3.5.1-beta.11
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.
- package/bin/uds.js +2 -0
- package/bundled/core/ai-instruction-standards.md +205 -0
- package/bundled/core/anti-hallucination.md +684 -0
- package/bundled/core/changelog-standards.md +556 -0
- package/bundled/core/checkin-standards.md +935 -0
- package/bundled/core/code-review-checklist.md +684 -0
- package/bundled/core/commit-message-guide.md +915 -0
- package/bundled/core/documentation-structure.md +1117 -0
- package/bundled/core/documentation-writing-standards.md +487 -0
- package/bundled/core/error-code-standards.md +382 -0
- package/bundled/core/git-workflow.md +859 -0
- package/bundled/core/logging-standards.md +323 -0
- package/bundled/core/project-structure.md +354 -0
- package/bundled/core/refactoring-standards.md +636 -0
- package/bundled/core/spec-driven-development.md +207 -0
- package/bundled/core/test-completeness-dimensions.md +536 -0
- package/bundled/core/test-driven-development.md +995 -0
- package/bundled/core/testing-standards.md +3061 -0
- package/bundled/core/versioning.md +902 -0
- package/bundled/locales/README.md +88 -0
- package/bundled/locales/zh-CN/CHANGELOG.md +705 -0
- package/bundled/locales/zh-CN/CLAUDE.md +213 -0
- package/bundled/locales/zh-CN/MAINTENANCE.md +689 -0
- package/bundled/locales/zh-CN/README.md +707 -0
- package/bundled/locales/zh-CN/STANDARDS-MAPPING.md +177 -0
- package/bundled/locales/zh-CN/adoption/ADOPTION-GUIDE.md +392 -0
- package/bundled/locales/zh-CN/adoption/STATIC-DYNAMIC-GUIDE.md +302 -0
- package/bundled/locales/zh-CN/adoption/checklists/enterprise.md +332 -0
- package/bundled/locales/zh-CN/adoption/checklists/minimal.md +141 -0
- package/bundled/locales/zh-CN/adoption/checklists/recommended.md +272 -0
- package/bundled/locales/zh-CN/ai/MAINTENANCE.md +739 -0
- package/bundled/locales/zh-CN/ai/options/changelog/auto-generated.ai.yaml +76 -0
- package/bundled/locales/zh-CN/ai/options/changelog/keep-a-changelog.ai.yaml +99 -0
- package/bundled/locales/zh-CN/ai/options/code-review/automated-review.ai.yaml +120 -0
- package/bundled/locales/zh-CN/ai/options/code-review/pair-programming.ai.yaml +109 -0
- package/bundled/locales/zh-CN/ai/options/code-review/pr-review.ai.yaml +104 -0
- package/bundled/locales/zh-CN/ai/options/commit-message/bilingual.ai.yaml +105 -0
- package/bundled/locales/zh-CN/ai/options/commit-message/english.ai.yaml +79 -0
- package/bundled/locales/zh-CN/ai/options/commit-message/traditional-chinese.ai.yaml +100 -0
- package/bundled/locales/zh-CN/ai/options/documentation/api-docs.ai.yaml +140 -0
- package/bundled/locales/zh-CN/ai/options/documentation/markdown-docs.ai.yaml +89 -0
- package/bundled/locales/zh-CN/ai/options/documentation/wiki-style.ai.yaml +119 -0
- package/bundled/locales/zh-CN/ai/options/git-workflow/gitflow.ai.yaml +133 -0
- package/bundled/locales/zh-CN/ai/options/git-workflow/github-flow.ai.yaml +73 -0
- package/bundled/locales/zh-CN/ai/options/git-workflow/merge-commit.ai.yaml +88 -0
- package/bundled/locales/zh-CN/ai/options/git-workflow/rebase-ff.ai.yaml +113 -0
- package/bundled/locales/zh-CN/ai/options/git-workflow/squash-merge.ai.yaml +85 -0
- package/bundled/locales/zh-CN/ai/options/git-workflow/trunk-based.ai.yaml +117 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/dotnet.ai.yaml +108 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/go.ai.yaml +115 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/java.ai.yaml +113 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/kotlin.ai.yaml +123 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/nodejs.ai.yaml +101 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/php.ai.yaml +147 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/python.ai.yaml +116 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/ruby.ai.yaml +140 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/rust.ai.yaml +117 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/swift.ai.yaml +143 -0
- package/bundled/locales/zh-CN/ai/options/testing/contract-testing.ai.yaml +254 -0
- package/bundled/locales/zh-CN/ai/options/testing/e2e-testing.ai.yaml +116 -0
- package/bundled/locales/zh-CN/ai/options/testing/industry-pyramid.ai.yaml +144 -0
- package/bundled/locales/zh-CN/ai/options/testing/integration-testing.ai.yaml +90 -0
- package/bundled/locales/zh-CN/ai/options/testing/istqb-framework.ai.yaml +108 -0
- package/bundled/locales/zh-CN/ai/options/testing/performance-testing.ai.yaml +272 -0
- package/bundled/locales/zh-CN/ai/options/testing/security-testing.ai.yaml +160 -0
- package/bundled/locales/zh-CN/ai/options/testing/system-testing.ai.yaml +101 -0
- package/bundled/locales/zh-CN/ai/options/testing/unit-testing.ai.yaml +82 -0
- package/bundled/locales/zh-CN/ai/standards/anti-hallucination.ai.yaml +145 -0
- package/bundled/locales/zh-CN/ai/standards/changelog.ai.yaml +146 -0
- package/bundled/locales/zh-CN/ai/standards/checkin-standards.ai.yaml +170 -0
- package/bundled/locales/zh-CN/ai/standards/code-review.ai.yaml +148 -0
- package/bundled/locales/zh-CN/ai/standards/commit-message.ai.yaml +175 -0
- package/bundled/locales/zh-CN/ai/standards/documentation-structure.ai.yaml +124 -0
- package/bundled/locales/zh-CN/ai/standards/documentation-writing-standards.ai.yaml +190 -0
- package/bundled/locales/zh-CN/ai/standards/error-codes.ai.yaml +139 -0
- package/bundled/locales/zh-CN/ai/standards/git-workflow.ai.yaml +95 -0
- package/bundled/locales/zh-CN/ai/standards/logging.ai.yaml +128 -0
- package/bundled/locales/zh-CN/ai/standards/project-structure.ai.yaml +134 -0
- package/bundled/locales/zh-CN/ai/standards/spec-driven-development.ai.yaml +169 -0
- package/bundled/locales/zh-CN/ai/standards/test-completeness-dimensions.ai.yaml +220 -0
- package/bundled/locales/zh-CN/ai/standards/testing.ai.yaml +137 -0
- package/bundled/locales/zh-CN/ai/standards/versioning.ai.yaml +211 -0
- package/bundled/locales/zh-CN/core/ai-instruction-standards.md +213 -0
- package/bundled/locales/zh-CN/core/anti-hallucination.md +691 -0
- package/bundled/locales/zh-CN/core/changelog-standards.md +147 -0
- package/bundled/locales/zh-CN/core/checkin-standards.md +943 -0
- package/bundled/locales/zh-CN/core/code-review-guide.md +693 -0
- package/bundled/locales/zh-CN/core/commit-message-guide.md +129 -0
- package/bundled/locales/zh-CN/core/documentation-structure.md +173 -0
- package/bundled/locales/zh-CN/core/documentation-writing-standards.md +495 -0
- package/bundled/locales/zh-CN/core/error-code-standards.md +180 -0
- package/bundled/locales/zh-CN/core/git-workflow.md +193 -0
- package/bundled/locales/zh-CN/core/logging-standards.md +174 -0
- package/bundled/locales/zh-CN/core/project-structure.md +184 -0
- package/bundled/locales/zh-CN/core/refactoring-standards.md +642 -0
- package/bundled/locales/zh-CN/core/spec-driven-development.md +215 -0
- package/bundled/locales/zh-CN/core/test-completeness-dimensions.md +544 -0
- package/bundled/locales/zh-CN/core/test-driven-development.md +1002 -0
- package/bundled/locales/zh-CN/core/testing-standards.md +170 -0
- package/bundled/locales/zh-CN/core/versioning.md +177 -0
- package/bundled/locales/zh-CN/docs/AI-AGENT-ROADMAP.md +303 -0
- package/bundled/locales/zh-CN/docs/CLI-INIT-OPTIONS.md +990 -0
- package/bundled/locales/zh-CN/docs/OPERATION-WORKFLOW.md +1064 -0
- package/bundled/locales/zh-CN/docs/USAGE-MODES-COMPARISON.md +333 -0
- package/bundled/locales/zh-CN/docs/WINDOWS-GUIDE.md +215 -0
- package/bundled/locales/zh-CN/integrations/codex/AGENTS.md +115 -0
- package/bundled/locales/zh-CN/integrations/codex/README.md +67 -0
- package/bundled/locales/zh-CN/integrations/gemini-cli/GEMINI.md +102 -0
- package/bundled/locales/zh-CN/integrations/gemini-cli/README.md +140 -0
- package/bundled/locales/zh-CN/integrations/github-copilot/COPILOT-CHAT-REFERENCE.md +269 -0
- package/bundled/locales/zh-CN/integrations/github-copilot/README.md +167 -0
- package/bundled/locales/zh-CN/integrations/github-copilot/copilot-instructions.md +263 -0
- package/bundled/locales/zh-CN/integrations/github-copilot/skills-mapping.md +192 -0
- package/bundled/locales/zh-CN/integrations/google-antigravity/INSTRUCTIONS.md +61 -0
- package/bundled/locales/zh-CN/integrations/google-antigravity/README.md +84 -0
- package/bundled/locales/zh-CN/integrations/opencode/AGENTS.md +111 -0
- package/bundled/locales/zh-CN/integrations/opencode/README.md +176 -0
- package/bundled/locales/zh-CN/integrations/opencode/skills-mapping.md +396 -0
- package/bundled/locales/zh-CN/integrations/openspec/AGENTS.md +301 -0
- package/bundled/locales/zh-CN/integrations/openspec/README.md +43 -0
- package/bundled/locales/zh-CN/integrations/spec-kit/AGENTS.md +184 -0
- package/bundled/locales/zh-CN/integrations/spec-kit/README.md +43 -0
- package/bundled/locales/zh-CN/options/commit-message/bilingual.md +161 -0
- package/bundled/locales/zh-CN/options/commit-message/english.md +137 -0
- package/bundled/locales/zh-CN/options/commit-message/traditional-chinese.md +162 -0
- package/bundled/locales/zh-CN/options/git-workflow/gitflow.md +147 -0
- package/bundled/locales/zh-CN/options/git-workflow/github-flow.md +124 -0
- package/bundled/locales/zh-CN/options/git-workflow/merge-commit.md +124 -0
- package/bundled/locales/zh-CN/options/git-workflow/rebase-ff.md +160 -0
- package/bundled/locales/zh-CN/options/git-workflow/squash-merge.md +117 -0
- package/bundled/locales/zh-CN/options/git-workflow/trunk-based.md +125 -0
- package/bundled/locales/zh-CN/options/project-structure/dotnet.md +183 -0
- package/bundled/locales/zh-CN/options/project-structure/go.md +226 -0
- package/bundled/locales/zh-CN/options/project-structure/java.md +213 -0
- package/bundled/locales/zh-CN/options/project-structure/nodejs.md +185 -0
- package/bundled/locales/zh-CN/options/project-structure/python.md +229 -0
- package/bundled/locales/zh-CN/options/testing/e2e-testing.md +207 -0
- package/bundled/locales/zh-CN/options/testing/integration-testing.md +230 -0
- package/bundled/locales/zh-CN/options/testing/system-testing.md +183 -0
- package/bundled/locales/zh-CN/options/testing/unit-testing.md +165 -0
- package/bundled/locales/zh-CN/skills/INTEGRATION-GUIDE.md +218 -0
- package/bundled/locales/zh-CN/skills/README.md +134 -0
- package/bundled/locales/zh-CN/skills/_shared/README.md +68 -0
- package/bundled/locales/zh-CN/skills/claude-code/CONTRIBUTING.template.md +151 -0
- package/bundled/locales/zh-CN/skills/claude-code/README.md +174 -0
- package/bundled/locales/zh-CN/skills/claude-code/ai-collaboration-standards/SKILL.md +175 -0
- package/bundled/locales/zh-CN/skills/claude-code/ai-collaboration-standards/anti-hallucination.md +223 -0
- package/bundled/locales/zh-CN/skills/claude-code/ai-collaboration-standards/certainty-labels.md +132 -0
- package/bundled/locales/zh-CN/skills/claude-code/changelog-guide/SKILL.md +237 -0
- package/bundled/locales/zh-CN/skills/claude-code/checkin-assistant/SKILL.md +407 -0
- package/bundled/locales/zh-CN/skills/claude-code/code-review-assistant/SKILL.md +154 -0
- package/bundled/locales/zh-CN/skills/claude-code/code-review-assistant/checkin-checklist.md +257 -0
- package/bundled/locales/zh-CN/skills/claude-code/code-review-assistant/review-checklist.md +246 -0
- package/bundled/locales/zh-CN/skills/claude-code/commands/bdd.md +142 -0
- package/bundled/locales/zh-CN/skills/claude-code/commands/methodology.md +274 -0
- package/bundled/locales/zh-CN/skills/claude-code/commit-standards/SKILL.md +191 -0
- package/bundled/locales/zh-CN/skills/claude-code/commit-standards/conventional-commits.md +264 -0
- package/bundled/locales/zh-CN/skills/claude-code/commit-standards/language-options.md +172 -0
- package/bundled/locales/zh-CN/skills/claude-code/documentation-guide/SKILL.md +421 -0
- package/bundled/locales/zh-CN/skills/claude-code/documentation-guide/documentation-structure.md +357 -0
- package/bundled/locales/zh-CN/skills/claude-code/documentation-guide/readme-template.md +412 -0
- package/bundled/locales/zh-CN/skills/claude-code/error-code-guide/SKILL.md +269 -0
- package/bundled/locales/zh-CN/skills/claude-code/git-workflow-guide/SKILL.md +218 -0
- package/bundled/locales/zh-CN/skills/claude-code/git-workflow-guide/branch-naming.md +220 -0
- package/bundled/locales/zh-CN/skills/claude-code/git-workflow-guide/git-workflow.md +321 -0
- package/bundled/locales/zh-CN/skills/claude-code/logging-guide/SKILL.md +285 -0
- package/bundled/locales/zh-CN/skills/claude-code/methodology-system/SKILL.md +131 -0
- package/bundled/locales/zh-CN/skills/claude-code/methodology-system/create-methodology.md +350 -0
- package/bundled/locales/zh-CN/skills/claude-code/methodology-system/runtime.md +279 -0
- package/bundled/locales/zh-CN/skills/claude-code/project-structure-guide/SKILL.md +143 -0
- package/bundled/locales/zh-CN/skills/claude-code/project-structure-guide/language-patterns.md +271 -0
- package/bundled/locales/zh-CN/skills/claude-code/refactoring-assistant/SKILL.md +162 -0
- package/bundled/locales/zh-CN/skills/claude-code/release-standards/SKILL.md +191 -0
- package/bundled/locales/zh-CN/skills/claude-code/release-standards/changelog-format.md +247 -0
- package/bundled/locales/zh-CN/skills/claude-code/release-standards/release-workflow.md +345 -0
- package/bundled/locales/zh-CN/skills/claude-code/release-standards/semantic-versioning.md +250 -0
- package/bundled/locales/zh-CN/skills/claude-code/requirement-assistant/SKILL.md +227 -0
- package/bundled/locales/zh-CN/skills/claude-code/requirement-assistant/requirement-checklist.md +325 -0
- package/bundled/locales/zh-CN/skills/claude-code/requirement-assistant/requirement-writing.md +399 -0
- package/bundled/locales/zh-CN/skills/claude-code/spec-driven-dev/SKILL.md +243 -0
- package/bundled/locales/zh-CN/skills/claude-code/tdd-assistant/SKILL.md +332 -0
- package/bundled/locales/zh-CN/skills/claude-code/tdd-assistant/language-examples.md +639 -0
- package/bundled/locales/zh-CN/skills/claude-code/tdd-assistant/tdd-workflow.md +486 -0
- package/bundled/locales/zh-CN/skills/claude-code/test-coverage-assistant/SKILL.md +282 -0
- package/bundled/locales/zh-CN/skills/claude-code/testing-guide/SKILL.md +234 -0
- package/bundled/locales/zh-CN/skills/claude-code/testing-guide/testing-pyramid.md +448 -0
- package/bundled/locales/zh-CN/skills/cline/README.md +58 -0
- package/bundled/locales/zh-CN/skills/copilot/README.md +61 -0
- package/bundled/locales/zh-CN/skills/copilot/copilot-instructions.md +79 -0
- package/bundled/locales/zh-CN/skills/cursor/README.md +58 -0
- package/bundled/locales/zh-CN/skills/windsurf/README.md +59 -0
- package/bundled/locales/zh-TW/CHANGELOG.md +707 -0
- package/bundled/locales/zh-TW/CLAUDE.md +213 -0
- package/bundled/locales/zh-TW/MAINTENANCE.md +683 -0
- package/bundled/locales/zh-TW/README.md +687 -0
- package/bundled/locales/zh-TW/STANDARDS-MAPPING.md +177 -0
- package/bundled/locales/zh-TW/adoption/ADOPTION-GUIDE.md +392 -0
- package/bundled/locales/zh-TW/adoption/STATIC-DYNAMIC-GUIDE.md +299 -0
- package/bundled/locales/zh-TW/adoption/checklists/enterprise.md +332 -0
- package/bundled/locales/zh-TW/adoption/checklists/minimal.md +141 -0
- package/bundled/locales/zh-TW/adoption/checklists/recommended.md +272 -0
- package/bundled/locales/zh-TW/ai/MAINTENANCE.md +754 -0
- package/bundled/locales/zh-TW/ai/options/changelog/auto-generated.ai.yaml +76 -0
- package/bundled/locales/zh-TW/ai/options/changelog/keep-a-changelog.ai.yaml +99 -0
- package/bundled/locales/zh-TW/ai/options/code-review/automated-review.ai.yaml +120 -0
- package/bundled/locales/zh-TW/ai/options/code-review/pair-programming.ai.yaml +109 -0
- package/bundled/locales/zh-TW/ai/options/code-review/pr-review.ai.yaml +104 -0
- package/bundled/locales/zh-TW/ai/options/commit-message/bilingual.ai.yaml +105 -0
- package/bundled/locales/zh-TW/ai/options/commit-message/english.ai.yaml +79 -0
- package/bundled/locales/zh-TW/ai/options/commit-message/traditional-chinese.ai.yaml +100 -0
- package/bundled/locales/zh-TW/ai/options/documentation/api-docs.ai.yaml +140 -0
- package/bundled/locales/zh-TW/ai/options/documentation/markdown-docs.ai.yaml +89 -0
- package/bundled/locales/zh-TW/ai/options/documentation/wiki-style.ai.yaml +119 -0
- package/bundled/locales/zh-TW/ai/options/git-workflow/gitflow.ai.yaml +133 -0
- package/bundled/locales/zh-TW/ai/options/git-workflow/github-flow.ai.yaml +73 -0
- package/bundled/locales/zh-TW/ai/options/git-workflow/merge-commit.ai.yaml +88 -0
- package/bundled/locales/zh-TW/ai/options/git-workflow/rebase-ff.ai.yaml +113 -0
- package/bundled/locales/zh-TW/ai/options/git-workflow/squash-merge.ai.yaml +85 -0
- package/bundled/locales/zh-TW/ai/options/git-workflow/trunk-based.ai.yaml +117 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/dotnet.ai.yaml +108 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/go.ai.yaml +115 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/java.ai.yaml +113 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/kotlin.ai.yaml +123 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/nodejs.ai.yaml +101 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/php.ai.yaml +147 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/python.ai.yaml +116 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/ruby.ai.yaml +140 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/rust.ai.yaml +117 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/swift.ai.yaml +143 -0
- package/bundled/locales/zh-TW/ai/options/testing/contract-testing.ai.yaml +254 -0
- package/bundled/locales/zh-TW/ai/options/testing/e2e-testing.ai.yaml +116 -0
- package/bundled/locales/zh-TW/ai/options/testing/industry-pyramid.ai.yaml +144 -0
- package/bundled/locales/zh-TW/ai/options/testing/integration-testing.ai.yaml +90 -0
- package/bundled/locales/zh-TW/ai/options/testing/istqb-framework.ai.yaml +108 -0
- package/bundled/locales/zh-TW/ai/options/testing/performance-testing.ai.yaml +272 -0
- package/bundled/locales/zh-TW/ai/options/testing/security-testing.ai.yaml +160 -0
- package/bundled/locales/zh-TW/ai/options/testing/system-testing.ai.yaml +101 -0
- package/bundled/locales/zh-TW/ai/options/testing/unit-testing.ai.yaml +82 -0
- package/bundled/locales/zh-TW/ai/standards/anti-hallucination.ai.yaml +145 -0
- package/bundled/locales/zh-TW/ai/standards/changelog.ai.yaml +146 -0
- package/bundled/locales/zh-TW/ai/standards/checkin-standards.ai.yaml +170 -0
- package/bundled/locales/zh-TW/ai/standards/code-review.ai.yaml +148 -0
- package/bundled/locales/zh-TW/ai/standards/commit-message.ai.yaml +175 -0
- package/bundled/locales/zh-TW/ai/standards/documentation-structure.ai.yaml +124 -0
- package/bundled/locales/zh-TW/ai/standards/documentation-writing-standards.ai.yaml +190 -0
- package/bundled/locales/zh-TW/ai/standards/error-codes.ai.yaml +139 -0
- package/bundled/locales/zh-TW/ai/standards/git-workflow.ai.yaml +95 -0
- package/bundled/locales/zh-TW/ai/standards/logging.ai.yaml +128 -0
- package/bundled/locales/zh-TW/ai/standards/project-structure.ai.yaml +134 -0
- package/bundled/locales/zh-TW/ai/standards/spec-driven-development.ai.yaml +169 -0
- package/bundled/locales/zh-TW/ai/standards/test-completeness-dimensions.ai.yaml +220 -0
- package/bundled/locales/zh-TW/ai/standards/testing.ai.yaml +137 -0
- package/bundled/locales/zh-TW/ai/standards/versioning.ai.yaml +211 -0
- package/bundled/locales/zh-TW/core/ai-instruction-standards.md +213 -0
- package/bundled/locales/zh-TW/core/anti-hallucination.md +691 -0
- package/bundled/locales/zh-TW/core/changelog-standards.md +564 -0
- package/bundled/locales/zh-TW/core/checkin-standards.md +943 -0
- package/bundled/locales/zh-TW/core/code-review-checklist.md +693 -0
- package/bundled/locales/zh-TW/core/commit-message-guide.md +809 -0
- package/bundled/locales/zh-TW/core/documentation-structure.md +1125 -0
- package/bundled/locales/zh-TW/core/documentation-writing-standards.md +495 -0
- package/bundled/locales/zh-TW/core/error-code-standards.md +384 -0
- package/bundled/locales/zh-TW/core/git-workflow.md +860 -0
- package/bundled/locales/zh-TW/core/logging-standards.md +325 -0
- package/bundled/locales/zh-TW/core/project-structure.md +362 -0
- package/bundled/locales/zh-TW/core/refactoring-standards.md +642 -0
- package/bundled/locales/zh-TW/core/spec-driven-development.md +215 -0
- package/bundled/locales/zh-TW/core/test-completeness-dimensions.md +544 -0
- package/bundled/locales/zh-TW/core/test-driven-development.md +1004 -0
- package/bundled/locales/zh-TW/core/testing-standards.md +2158 -0
- package/bundled/locales/zh-TW/core/versioning.md +909 -0
- package/bundled/locales/zh-TW/docs/AI-AGENT-ROADMAP.md +303 -0
- package/bundled/locales/zh-TW/docs/CLI-INIT-OPTIONS.md +990 -0
- package/bundled/locales/zh-TW/docs/OPERATION-WORKFLOW.md +1064 -0
- package/bundled/locales/zh-TW/docs/USAGE-MODES-COMPARISON.md +333 -0
- package/bundled/locales/zh-TW/docs/WINDOWS-GUIDE.md +215 -0
- package/bundled/locales/zh-TW/integrations/codex/AGENTS.md +115 -0
- package/bundled/locales/zh-TW/integrations/codex/README.md +113 -0
- package/bundled/locales/zh-TW/integrations/gemini-cli/GEMINI.md +102 -0
- package/bundled/locales/zh-TW/integrations/gemini-cli/README.md +140 -0
- package/bundled/locales/zh-TW/integrations/github-copilot/COPILOT-CHAT-REFERENCE.md +269 -0
- package/bundled/locales/zh-TW/integrations/github-copilot/README.md +167 -0
- package/bundled/locales/zh-TW/integrations/github-copilot/copilot-instructions.md +263 -0
- package/bundled/locales/zh-TW/integrations/github-copilot/skills-mapping.md +192 -0
- package/bundled/locales/zh-TW/integrations/google-antigravity/INSTRUCTIONS.md +61 -0
- package/bundled/locales/zh-TW/integrations/google-antigravity/README.md +84 -0
- package/bundled/locales/zh-TW/integrations/opencode/AGENTS.md +111 -0
- package/bundled/locales/zh-TW/integrations/opencode/README.md +176 -0
- package/bundled/locales/zh-TW/integrations/opencode/skills-mapping.md +396 -0
- package/bundled/locales/zh-TW/integrations/openspec/AGENTS.md +301 -0
- package/bundled/locales/zh-TW/integrations/openspec/README.md +43 -0
- package/bundled/locales/zh-TW/integrations/spec-kit/AGENTS.md +184 -0
- package/bundled/locales/zh-TW/integrations/spec-kit/README.md +43 -0
- package/bundled/locales/zh-TW/options/commit-message/bilingual.md +161 -0
- package/bundled/locales/zh-TW/options/commit-message/english.md +137 -0
- package/bundled/locales/zh-TW/options/commit-message/traditional-chinese.md +162 -0
- package/bundled/locales/zh-TW/options/git-workflow/gitflow.md +147 -0
- package/bundled/locales/zh-TW/options/git-workflow/github-flow.md +124 -0
- package/bundled/locales/zh-TW/options/git-workflow/merge-commit.md +124 -0
- package/bundled/locales/zh-TW/options/git-workflow/rebase-ff.md +160 -0
- package/bundled/locales/zh-TW/options/git-workflow/squash-merge.md +117 -0
- package/bundled/locales/zh-TW/options/git-workflow/trunk-based.md +125 -0
- package/bundled/locales/zh-TW/options/project-structure/dotnet.md +183 -0
- package/bundled/locales/zh-TW/options/project-structure/go.md +226 -0
- package/bundled/locales/zh-TW/options/project-structure/java.md +213 -0
- package/bundled/locales/zh-TW/options/project-structure/nodejs.md +185 -0
- package/bundled/locales/zh-TW/options/project-structure/python.md +229 -0
- package/bundled/locales/zh-TW/options/testing/e2e-testing.md +207 -0
- package/bundled/locales/zh-TW/options/testing/integration-testing.md +230 -0
- package/bundled/locales/zh-TW/options/testing/system-testing.md +183 -0
- package/bundled/locales/zh-TW/options/testing/unit-testing.md +165 -0
- package/bundled/locales/zh-TW/skills/INTEGRATION-GUIDE.md +218 -0
- package/bundled/locales/zh-TW/skills/README.md +132 -0
- package/bundled/locales/zh-TW/skills/_shared/README.md +68 -0
- package/bundled/locales/zh-TW/skills/claude-code/CONTRIBUTING.template.md +151 -0
- package/bundled/locales/zh-TW/skills/claude-code/README.md +174 -0
- package/bundled/locales/zh-TW/skills/claude-code/ai-collaboration-standards/SKILL.md +175 -0
- package/bundled/locales/zh-TW/skills/claude-code/ai-collaboration-standards/anti-hallucination.md +223 -0
- package/bundled/locales/zh-TW/skills/claude-code/ai-collaboration-standards/certainty-labels.md +132 -0
- package/bundled/locales/zh-TW/skills/claude-code/changelog-guide/SKILL.md +237 -0
- package/bundled/locales/zh-TW/skills/claude-code/checkin-assistant/SKILL.md +407 -0
- package/bundled/locales/zh-TW/skills/claude-code/code-review-assistant/SKILL.md +154 -0
- package/bundled/locales/zh-TW/skills/claude-code/code-review-assistant/checkin-checklist.md +257 -0
- package/bundled/locales/zh-TW/skills/claude-code/code-review-assistant/review-checklist.md +246 -0
- package/bundled/locales/zh-TW/skills/claude-code/commands/bdd.md +142 -0
- package/bundled/locales/zh-TW/skills/claude-code/commands/methodology.md +274 -0
- package/bundled/locales/zh-TW/skills/claude-code/commit-standards/SKILL.md +191 -0
- package/bundled/locales/zh-TW/skills/claude-code/commit-standards/conventional-commits.md +264 -0
- package/bundled/locales/zh-TW/skills/claude-code/commit-standards/language-options.md +172 -0
- package/bundled/locales/zh-TW/skills/claude-code/documentation-guide/SKILL.md +421 -0
- package/bundled/locales/zh-TW/skills/claude-code/documentation-guide/documentation-structure.md +357 -0
- package/bundled/locales/zh-TW/skills/claude-code/documentation-guide/readme-template.md +412 -0
- package/bundled/locales/zh-TW/skills/claude-code/error-code-guide/SKILL.md +269 -0
- package/bundled/locales/zh-TW/skills/claude-code/git-workflow-guide/SKILL.md +218 -0
- package/bundled/locales/zh-TW/skills/claude-code/git-workflow-guide/branch-naming.md +220 -0
- package/bundled/locales/zh-TW/skills/claude-code/git-workflow-guide/git-workflow.md +321 -0
- package/bundled/locales/zh-TW/skills/claude-code/logging-guide/SKILL.md +285 -0
- package/bundled/locales/zh-TW/skills/claude-code/methodology-system/SKILL.md +131 -0
- package/bundled/locales/zh-TW/skills/claude-code/methodology-system/create-methodology.md +350 -0
- package/bundled/locales/zh-TW/skills/claude-code/methodology-system/runtime.md +279 -0
- package/bundled/locales/zh-TW/skills/claude-code/project-structure-guide/SKILL.md +143 -0
- package/bundled/locales/zh-TW/skills/claude-code/project-structure-guide/language-patterns.md +271 -0
- package/bundled/locales/zh-TW/skills/claude-code/refactoring-assistant/SKILL.md +162 -0
- package/bundled/locales/zh-TW/skills/claude-code/release-standards/SKILL.md +191 -0
- package/bundled/locales/zh-TW/skills/claude-code/release-standards/changelog-format.md +247 -0
- package/bundled/locales/zh-TW/skills/claude-code/release-standards/release-workflow.md +345 -0
- package/bundled/locales/zh-TW/skills/claude-code/release-standards/semantic-versioning.md +250 -0
- package/bundled/locales/zh-TW/skills/claude-code/requirement-assistant/SKILL.md +227 -0
- package/bundled/locales/zh-TW/skills/claude-code/requirement-assistant/requirement-checklist.md +325 -0
- package/bundled/locales/zh-TW/skills/claude-code/requirement-assistant/requirement-writing.md +399 -0
- package/bundled/locales/zh-TW/skills/claude-code/spec-driven-dev/SKILL.md +243 -0
- package/bundled/locales/zh-TW/skills/claude-code/tdd-assistant/SKILL.md +332 -0
- package/bundled/locales/zh-TW/skills/claude-code/tdd-assistant/language-examples.md +639 -0
- package/bundled/locales/zh-TW/skills/claude-code/tdd-assistant/tdd-workflow.md +486 -0
- package/bundled/locales/zh-TW/skills/claude-code/test-coverage-assistant/SKILL.md +282 -0
- package/bundled/locales/zh-TW/skills/claude-code/testing-guide/SKILL.md +234 -0
- package/bundled/locales/zh-TW/skills/claude-code/testing-guide/testing-pyramid.md +448 -0
- package/bundled/locales/zh-TW/skills/cline/README.md +58 -0
- package/bundled/locales/zh-TW/skills/copilot/README.md +61 -0
- package/bundled/locales/zh-TW/skills/copilot/copilot-instructions.md +79 -0
- package/bundled/locales/zh-TW/skills/cursor/README.md +58 -0
- package/bundled/locales/zh-TW/skills/windsurf/README.md +59 -0
- package/bundled/skills/claude-code/CONTRIBUTING.template.md +141 -0
- package/bundled/skills/claude-code/README.md +196 -0
- package/bundled/skills/claude-code/ai/standards/checkin.ai.yaml +21 -0
- package/bundled/skills/claude-code/ai/standards/commit.ai.yaml +20 -0
- package/bundled/skills/claude-code/ai/standards/refactoring.ai.yaml +34 -0
- package/bundled/skills/claude-code/ai/standards/testing.ai.yaml +41 -0
- package/bundled/skills/claude-code/ai-collaboration-standards/SKILL.md +175 -0
- package/bundled/skills/claude-code/ai-collaboration-standards/anti-hallucination.md +215 -0
- package/bundled/skills/claude-code/ai-collaboration-standards/certainty-labels.md +124 -0
- package/bundled/skills/claude-code/changelog-guide/SKILL.md +232 -0
- package/bundled/skills/claude-code/checkin-assistant/SKILL.md +402 -0
- package/bundled/skills/claude-code/code-review-assistant/SKILL.md +220 -0
- package/bundled/skills/claude-code/code-review-assistant/checkin-checklist.md +249 -0
- package/bundled/skills/claude-code/code-review-assistant/review-checklist.md +238 -0
- package/bundled/skills/claude-code/commands/README.md +78 -0
- package/bundled/skills/claude-code/commands/bdd.md +142 -0
- package/bundled/skills/claude-code/commands/changelog.md +57 -0
- package/bundled/skills/claude-code/commands/check.md +91 -0
- package/bundled/skills/claude-code/commands/commit.md +48 -0
- package/bundled/skills/claude-code/commands/config.md +97 -0
- package/bundled/skills/claude-code/commands/coverage.md +58 -0
- package/bundled/skills/claude-code/commands/docs.md +75 -0
- package/bundled/skills/claude-code/commands/init.md +88 -0
- package/bundled/skills/claude-code/commands/methodology.md +268 -0
- package/bundled/skills/claude-code/commands/release.md +50 -0
- package/bundled/skills/claude-code/commands/requirement.md +54 -0
- package/bundled/skills/claude-code/commands/review.md +50 -0
- package/bundled/skills/claude-code/commands/spec.md +69 -0
- package/bundled/skills/claude-code/commands/tdd.md +86 -0
- package/bundled/skills/claude-code/commands/update.md +122 -0
- package/bundled/skills/claude-code/commit-standards/SKILL.md +249 -0
- package/bundled/skills/claude-code/commit-standards/conventional-commits.md +256 -0
- package/bundled/skills/claude-code/commit-standards/language-options.md +164 -0
- package/bundled/skills/claude-code/documentation-guide/SKILL.md +416 -0
- package/bundled/skills/claude-code/documentation-guide/documentation-structure.md +349 -0
- package/bundled/skills/claude-code/documentation-guide/readme-template.md +404 -0
- package/bundled/skills/claude-code/error-code-guide/SKILL.md +264 -0
- package/bundled/skills/claude-code/git-workflow-guide/SKILL.md +226 -0
- package/bundled/skills/claude-code/git-workflow-guide/branch-naming.md +212 -0
- package/bundled/skills/claude-code/git-workflow-guide/git-workflow.md +313 -0
- package/bundled/skills/claude-code/logging-guide/SKILL.md +280 -0
- package/bundled/skills/claude-code/methodology-system/SKILL.md +215 -0
- package/bundled/skills/claude-code/methodology-system/create-methodology.md +450 -0
- package/bundled/skills/claude-code/methodology-system/runtime.md +271 -0
- package/bundled/skills/claude-code/project-structure-guide/SKILL.md +143 -0
- package/bundled/skills/claude-code/project-structure-guide/language-patterns.md +263 -0
- package/bundled/skills/claude-code/refactoring-assistant/SKILL.md +205 -0
- package/bundled/skills/claude-code/release-standards/SKILL.md +191 -0
- package/bundled/skills/claude-code/release-standards/changelog-format.md +239 -0
- package/bundled/skills/claude-code/release-standards/release-workflow.md +337 -0
- package/bundled/skills/claude-code/release-standards/semantic-versioning.md +242 -0
- package/bundled/skills/claude-code/requirement-assistant/SKILL.md +222 -0
- package/bundled/skills/claude-code/requirement-assistant/requirement-checklist.md +317 -0
- package/bundled/skills/claude-code/requirement-assistant/requirement-writing.md +391 -0
- package/bundled/skills/claude-code/spec-driven-dev/SKILL.md +238 -0
- package/bundled/skills/claude-code/tdd-assistant/SKILL.md +384 -0
- package/bundled/skills/claude-code/tdd-assistant/language-examples.md +1276 -0
- package/bundled/skills/claude-code/tdd-assistant/tdd-workflow.md +659 -0
- package/bundled/skills/claude-code/test-coverage-assistant/SKILL.md +277 -0
- package/bundled/skills/claude-code/testing-guide/SKILL.md +317 -0
- package/bundled/skills/claude-code/testing-guide/testing-pyramid.md +440 -0
- package/package.json +4 -2
- package/src/commands/check.js +38 -6
- package/src/commands/init.js +20 -6
- package/src/commands/list.js +7 -2
- package/src/commands/skills.js +0 -2
- package/src/commands/update.js +271 -0
- package/src/i18n/messages.js +161 -11
- package/src/utils/copier.js +63 -10
- package/src/utils/skills-installer.js +47 -11
- package/standards-registry.json +6 -3
package/src/commands/update.js
CHANGED
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
} from '../utils/skills-installer.js';
|
|
27
27
|
import {
|
|
28
28
|
getAgentDisplayName,
|
|
29
|
+
getAgentConfig,
|
|
29
30
|
getSkillsDirForAgent,
|
|
30
31
|
getCommandsDirForAgent
|
|
31
32
|
} from '../config/ai-agent-paths.js';
|
|
@@ -404,6 +405,83 @@ export async function updateCommand(options) {
|
|
|
404
405
|
}
|
|
405
406
|
}
|
|
406
407
|
|
|
408
|
+
// Check for new features (Skills/Commands) not yet installed
|
|
409
|
+
if (!options.standardsOnly) {
|
|
410
|
+
const { missingSkills, missingCommands } = checkNewFeatures(projectPath, manifest);
|
|
411
|
+
|
|
412
|
+
if (missingSkills.length > 0 || missingCommands.length > 0) {
|
|
413
|
+
if (!options.yes) {
|
|
414
|
+
// Interactive mode: prompt user to install
|
|
415
|
+
const { installSkills, installCommands } = await promptNewFeatureInstallation(
|
|
416
|
+
missingSkills,
|
|
417
|
+
missingCommands
|
|
418
|
+
);
|
|
419
|
+
|
|
420
|
+
// Install Skills if user agreed
|
|
421
|
+
if (installSkills.length > 0) {
|
|
422
|
+
const skillSpinner = ora(msg.installingNewSkills || 'Installing Skills...').start();
|
|
423
|
+
const skillResult = await installSkillsToMultipleAgents(installSkills, null, projectPath);
|
|
424
|
+
|
|
425
|
+
// Update manifest
|
|
426
|
+
if (!manifest.skills) manifest.skills = {};
|
|
427
|
+
manifest.skills.installed = true;
|
|
428
|
+
manifest.skills.version = repoInfo.skills.version;
|
|
429
|
+
manifest.skills.installations = [
|
|
430
|
+
...(manifest.skills.installations || []),
|
|
431
|
+
...installSkills
|
|
432
|
+
];
|
|
433
|
+
|
|
434
|
+
if (skillResult.totalErrors === 0) {
|
|
435
|
+
skillSpinner.succeed((msg.newSkillsInstalled || 'Installed Skills for {count} AI tools')
|
|
436
|
+
.replace('{count}', installSkills.length));
|
|
437
|
+
} else {
|
|
438
|
+
skillSpinner.warn((msg.newSkillsInstalledWithErrors || 'Installed Skills with {errors} errors')
|
|
439
|
+
.replace('{errors}', skillResult.totalErrors));
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
// Install Commands if user agreed
|
|
444
|
+
if (installCommands.length > 0) {
|
|
445
|
+
const cmdSpinner = ora(msg.installingNewCommands || 'Installing commands...').start();
|
|
446
|
+
const cmdResult = await installCommandsToMultipleAgents(installCommands, null, projectPath);
|
|
447
|
+
|
|
448
|
+
// Update manifest
|
|
449
|
+
if (!manifest.commands) manifest.commands = {};
|
|
450
|
+
manifest.commands.installed = true;
|
|
451
|
+
manifest.commands.installations = [
|
|
452
|
+
...(manifest.commands.installations || []),
|
|
453
|
+
...installCommands
|
|
454
|
+
];
|
|
455
|
+
|
|
456
|
+
if (cmdResult.totalErrors === 0) {
|
|
457
|
+
cmdSpinner.succeed((msg.newCommandsInstalled || 'Installed commands for {count} AI tools')
|
|
458
|
+
.replace('{count}', installCommands.length));
|
|
459
|
+
} else {
|
|
460
|
+
cmdSpinner.warn((msg.newCommandsInstalledWithErrors || 'Installed commands with {errors} errors')
|
|
461
|
+
.replace('{errors}', cmdResult.totalErrors));
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
// Write updated manifest if anything was installed
|
|
466
|
+
if (installSkills.length > 0 || installCommands.length > 0) {
|
|
467
|
+
writeManifest(manifest, projectPath);
|
|
468
|
+
}
|
|
469
|
+
} else {
|
|
470
|
+
// --yes mode: show hint but don't auto-install (conservative behavior)
|
|
471
|
+
console.log();
|
|
472
|
+
console.log(chalk.cyan(msg.newFeaturesAvailableHint || 'Note: New features available for your AI tools'));
|
|
473
|
+
if (missingSkills.length > 0) {
|
|
474
|
+
const toolNames = missingSkills.map(s => s.displayName).join(', ');
|
|
475
|
+
console.log(chalk.gray(` • Skills (${toolNames}): run "uds update --skills" or "uds init" to install`));
|
|
476
|
+
}
|
|
477
|
+
if (missingCommands.length > 0) {
|
|
478
|
+
const toolNames = missingCommands.map(c => c.displayName).join(', ');
|
|
479
|
+
console.log(chalk.gray(` • Commands (${toolNames}): run "uds update --commands" or "uds init" to install`));
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
|
|
407
485
|
// Skills update reminder
|
|
408
486
|
if (manifest.skills?.installed) {
|
|
409
487
|
const skillsVersion = repoInfo.skills.version;
|
|
@@ -835,3 +913,196 @@ async function updateCommandsOnly(projectPath, manifest) {
|
|
|
835
913
|
console.log();
|
|
836
914
|
process.exit(0);
|
|
837
915
|
}
|
|
916
|
+
|
|
917
|
+
/**
|
|
918
|
+
* Check manifest.aiTools and detect missing Skills/Commands
|
|
919
|
+
* @param {string} projectPath - Project path
|
|
920
|
+
* @param {Object} manifest - Manifest object
|
|
921
|
+
* @returns {{missingSkills: Array, missingCommands: Array}}
|
|
922
|
+
*/
|
|
923
|
+
function checkNewFeatures(projectPath, manifest) {
|
|
924
|
+
const aiTools = manifest.aiTools || [];
|
|
925
|
+
|
|
926
|
+
if (aiTools.length === 0) {
|
|
927
|
+
return { missingSkills: [], missingCommands: [] };
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
const missingSkills = [];
|
|
931
|
+
const missingCommands = [];
|
|
932
|
+
|
|
933
|
+
for (const tool of aiTools) {
|
|
934
|
+
const config = getAgentConfig(tool);
|
|
935
|
+
if (!config) continue;
|
|
936
|
+
|
|
937
|
+
// Check Skills support
|
|
938
|
+
if (config.supportsSkills && config.skills) {
|
|
939
|
+
// Check if skills are installed for this agent
|
|
940
|
+
const projectInfo = getInstalledSkillsInfoForAgent(tool, 'project', projectPath);
|
|
941
|
+
const userInfo = getInstalledSkillsInfoForAgent(tool, 'user');
|
|
942
|
+
|
|
943
|
+
// Check if already in manifest.skills.installations
|
|
944
|
+
const existingInstallations = manifest.skills?.installations || [];
|
|
945
|
+
const isInManifest = existingInstallations.some(
|
|
946
|
+
inst => inst.agent === tool || (inst.agent === 'claude-code' && tool === 'claude-code')
|
|
947
|
+
);
|
|
948
|
+
|
|
949
|
+
// Check if using marketplace (Claude Code only)
|
|
950
|
+
const usingMarketplace = manifest.skills?.location === 'marketplace' && tool === 'claude-code';
|
|
951
|
+
|
|
952
|
+
const hasSkills = projectInfo?.installed || userInfo?.installed || isInManifest || usingMarketplace;
|
|
953
|
+
|
|
954
|
+
if (!hasSkills) {
|
|
955
|
+
missingSkills.push({
|
|
956
|
+
agent: tool,
|
|
957
|
+
displayName: getAgentDisplayName(tool),
|
|
958
|
+
paths: config.skills
|
|
959
|
+
});
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
// Check Commands support
|
|
964
|
+
if (config.commands !== null && config.commands) {
|
|
965
|
+
const cmdInfo = getInstalledCommandsForAgent(tool, projectPath);
|
|
966
|
+
|
|
967
|
+
// Check if already in manifest.commands.installations
|
|
968
|
+
const existingCmdInstallations = manifest.commands?.installations || [];
|
|
969
|
+
const isInCmdManifest = existingCmdInstallations.includes(tool);
|
|
970
|
+
|
|
971
|
+
const hasCommands = cmdInfo?.installed || isInCmdManifest;
|
|
972
|
+
|
|
973
|
+
if (!hasCommands) {
|
|
974
|
+
missingCommands.push({
|
|
975
|
+
agent: tool,
|
|
976
|
+
displayName: getAgentDisplayName(tool),
|
|
977
|
+
path: config.commands.project
|
|
978
|
+
});
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
}
|
|
982
|
+
|
|
983
|
+
return { missingSkills, missingCommands };
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
/**
|
|
987
|
+
* Prompt user to install new features discovered during update
|
|
988
|
+
* @param {Array} missingSkills - Array of {agent, displayName, paths}
|
|
989
|
+
* @param {Array} missingCommands - Array of {agent, displayName, path}
|
|
990
|
+
* @returns {Promise<{installSkills: Array, installCommands: Array}>}
|
|
991
|
+
*/
|
|
992
|
+
async function promptNewFeatureInstallation(missingSkills, missingCommands) {
|
|
993
|
+
const msg = t().commands.update;
|
|
994
|
+
|
|
995
|
+
// If nothing missing, return empty
|
|
996
|
+
if (missingSkills.length === 0 && missingCommands.length === 0) {
|
|
997
|
+
return { installSkills: [], installCommands: [] };
|
|
998
|
+
}
|
|
999
|
+
|
|
1000
|
+
console.log();
|
|
1001
|
+
console.log(chalk.cyan('━'.repeat(50)));
|
|
1002
|
+
console.log(chalk.cyan.bold(msg.newFeaturesAvailable || 'New Features Available'));
|
|
1003
|
+
console.log(chalk.cyan('━'.repeat(50)));
|
|
1004
|
+
console.log();
|
|
1005
|
+
|
|
1006
|
+
const result = { installSkills: [], installCommands: [] };
|
|
1007
|
+
|
|
1008
|
+
// Handle missing Skills with checkbox selection
|
|
1009
|
+
if (missingSkills.length > 0) {
|
|
1010
|
+
console.log(chalk.yellow(msg.skillsNotInstalledFor || 'Skills not yet installed for these AI tools:'));
|
|
1011
|
+
for (const skill of missingSkills) {
|
|
1012
|
+
console.log(chalk.gray(` • ${skill.displayName}`));
|
|
1013
|
+
}
|
|
1014
|
+
console.log();
|
|
1015
|
+
|
|
1016
|
+
// Build checkbox choices
|
|
1017
|
+
const skillChoices = missingSkills.map(skill => ({
|
|
1018
|
+
name: skill.displayName,
|
|
1019
|
+
value: skill.agent,
|
|
1020
|
+
checked: true // Default checked for opt-out behavior
|
|
1021
|
+
}));
|
|
1022
|
+
|
|
1023
|
+
// Add skip option
|
|
1024
|
+
skillChoices.push(new inquirer.Separator());
|
|
1025
|
+
skillChoices.push({
|
|
1026
|
+
name: chalk.gray(msg.skipSkillsInstallation || 'Skip Skills installation'),
|
|
1027
|
+
value: '__skip__'
|
|
1028
|
+
});
|
|
1029
|
+
|
|
1030
|
+
const { selectedSkillAgents } = await inquirer.prompt([{
|
|
1031
|
+
type: 'checkbox',
|
|
1032
|
+
name: 'selectedSkillAgents',
|
|
1033
|
+
message: msg.selectSkillsToInstall || 'Select AI tools to install Skills for:',
|
|
1034
|
+
choices: skillChoices,
|
|
1035
|
+
validate: (answer) => {
|
|
1036
|
+
// If skip is selected, ensure it's the only selection
|
|
1037
|
+
if (answer.includes('__skip__') && answer.length > 1) {
|
|
1038
|
+
return msg.skipValidationError || 'Cannot select Skip with other options';
|
|
1039
|
+
}
|
|
1040
|
+
return true;
|
|
1041
|
+
}
|
|
1042
|
+
}]);
|
|
1043
|
+
|
|
1044
|
+
// Filter out skip and handle selection
|
|
1045
|
+
const filteredSkillAgents = selectedSkillAgents.filter(a => a !== '__skip__');
|
|
1046
|
+
|
|
1047
|
+
if (filteredSkillAgents.length > 0) {
|
|
1048
|
+
// Prompt for installation level
|
|
1049
|
+
const { skillsLevel } = await inquirer.prompt([{
|
|
1050
|
+
type: 'list',
|
|
1051
|
+
name: 'skillsLevel',
|
|
1052
|
+
message: msg.skillsLevelQuestion || 'Where should Skills be installed?',
|
|
1053
|
+
choices: [
|
|
1054
|
+
{ name: `${msg.projectLevel || 'Project level'} (.claude/skills/, etc.)`, value: 'project' },
|
|
1055
|
+
{ name: `${msg.userLevel || 'User level'} (~/.claude/skills/, etc.)`, value: 'user' }
|
|
1056
|
+
],
|
|
1057
|
+
default: 'project'
|
|
1058
|
+
}]);
|
|
1059
|
+
|
|
1060
|
+
result.installSkills = filteredSkillAgents.map(agent => ({
|
|
1061
|
+
agent,
|
|
1062
|
+
level: skillsLevel
|
|
1063
|
+
}));
|
|
1064
|
+
}
|
|
1065
|
+
console.log();
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
// Handle missing Commands with checkbox selection
|
|
1069
|
+
if (missingCommands.length > 0) {
|
|
1070
|
+
console.log(chalk.yellow(msg.commandsNotInstalledFor || 'Slash commands not yet installed for these AI tools:'));
|
|
1071
|
+
for (const cmd of missingCommands) {
|
|
1072
|
+
console.log(chalk.gray(` • ${cmd.displayName} → ${cmd.path}`));
|
|
1073
|
+
}
|
|
1074
|
+
console.log();
|
|
1075
|
+
|
|
1076
|
+
// Build checkbox choices
|
|
1077
|
+
const commandChoices = missingCommands.map(cmd => ({
|
|
1078
|
+
name: `${cmd.displayName} ${chalk.gray(`(${cmd.path})`)}`,
|
|
1079
|
+
value: cmd.agent,
|
|
1080
|
+
checked: true // Default checked for opt-out behavior
|
|
1081
|
+
}));
|
|
1082
|
+
|
|
1083
|
+
// Add skip option
|
|
1084
|
+
commandChoices.push(new inquirer.Separator());
|
|
1085
|
+
commandChoices.push({
|
|
1086
|
+
name: chalk.gray(msg.skipCommandsInstallation || 'Skip Commands installation'),
|
|
1087
|
+
value: '__skip__'
|
|
1088
|
+
});
|
|
1089
|
+
|
|
1090
|
+
const { selectedCommandAgents } = await inquirer.prompt([{
|
|
1091
|
+
type: 'checkbox',
|
|
1092
|
+
name: 'selectedCommandAgents',
|
|
1093
|
+
message: msg.selectCommandsToInstall || 'Select AI tools to install Commands for:',
|
|
1094
|
+
choices: commandChoices,
|
|
1095
|
+
validate: (answer) => {
|
|
1096
|
+
if (answer.includes('__skip__') && answer.length > 1) {
|
|
1097
|
+
return msg.skipValidationError || 'Cannot select Skip with other options';
|
|
1098
|
+
}
|
|
1099
|
+
return true;
|
|
1100
|
+
}
|
|
1101
|
+
}]);
|
|
1102
|
+
|
|
1103
|
+
// Filter out skip
|
|
1104
|
+
result.installCommands = selectedCommandAgents.filter(a => a !== '__skip__');
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1107
|
+
return result;
|
|
1108
|
+
}
|
package/src/i18n/messages.js
CHANGED
|
@@ -594,7 +594,17 @@ export const messages = {
|
|
|
594
594
|
runNpmUpdate: 'Run: npm update -g universal-dev-standards',
|
|
595
595
|
// Final status
|
|
596
596
|
projectCompliant: '✓ Project is compliant with standards',
|
|
597
|
-
issuesDetected: '⚠ Some issues detected. Review above for details.'
|
|
597
|
+
issuesDetected: '⚠ Some issues detected. Review above for details.',
|
|
598
|
+
// Installation prompts
|
|
599
|
+
offerSkillsInstallation: 'Skills Installation',
|
|
600
|
+
offerCommandsInstallation: 'Commands Installation',
|
|
601
|
+
selectSkillsToInstall: 'Select AI tools to install Skills for:',
|
|
602
|
+
selectCommandsToInstall: 'Select AI tools to install Commands for:',
|
|
603
|
+
skipInstallation: 'Skip',
|
|
604
|
+
skillsInstalledSuccess: 'Installed Skills for {count} AI tools',
|
|
605
|
+
commandsInstalledSuccess: 'Installed commands for {count} AI tools',
|
|
606
|
+
// Read-only hint
|
|
607
|
+
missingSkillsHint: 'Tip: Run `uds update` to install missing Skills/Commands'
|
|
598
608
|
},
|
|
599
609
|
|
|
600
610
|
// init command (commands/init.js)
|
|
@@ -744,7 +754,28 @@ export const messages = {
|
|
|
744
754
|
categoriesChanged: 'Categories: {old} → {new}',
|
|
745
755
|
failedToUpdate: '✗ Failed to update {path}: {error}',
|
|
746
756
|
updatedCount: '✓ Updated {count} integration file(s)',
|
|
747
|
-
skippedCount: 'Skipped {count} file(s) (already in sync or not found)'
|
|
757
|
+
skippedCount: 'Skipped {count} file(s) (already in sync or not found)',
|
|
758
|
+
// New features discovery
|
|
759
|
+
newFeaturesAvailable: 'New Features Available',
|
|
760
|
+
newFeaturesAvailableHint: 'Note: New features available for your AI tools',
|
|
761
|
+
skillsNotInstalledFor: 'Skills not yet installed for these AI tools:',
|
|
762
|
+
commandsNotInstalledFor: 'Slash commands not yet installed for these AI tools:',
|
|
763
|
+
installSkillsNow: 'Would you like to install Skills for these AI tools?',
|
|
764
|
+
installCommandsNow: 'Would you like to install slash commands for these AI tools?',
|
|
765
|
+
selectSkillsToInstall: 'Select AI tools to install Skills for:',
|
|
766
|
+
selectCommandsToInstall: 'Select AI tools to install Commands for:',
|
|
767
|
+
skipSkillsInstallation: 'Skip Skills installation',
|
|
768
|
+
skipCommandsInstallation: 'Skip Commands installation',
|
|
769
|
+
skipValidationError: 'Cannot select Skip with other options',
|
|
770
|
+
skillsLevelQuestion: 'Where should Skills be installed?',
|
|
771
|
+
projectLevel: 'Project level',
|
|
772
|
+
userLevel: 'User level',
|
|
773
|
+
installingNewSkills: 'Installing Skills...',
|
|
774
|
+
installingNewCommands: 'Installing commands...',
|
|
775
|
+
newSkillsInstalled: 'Installed Skills for {count} AI tools',
|
|
776
|
+
newSkillsInstalledWithErrors: 'Installed Skills with {errors} errors',
|
|
777
|
+
newCommandsInstalled: 'Installed commands for {count} AI tools',
|
|
778
|
+
newCommandsInstalledWithErrors: 'Installed commands with {errors} errors'
|
|
748
779
|
},
|
|
749
780
|
|
|
750
781
|
// configure command
|
|
@@ -1403,7 +1434,17 @@ export const messages = {
|
|
|
1403
1434
|
runNpmUpdate: '執行:npm update -g universal-dev-standards',
|
|
1404
1435
|
// Final status
|
|
1405
1436
|
projectCompliant: '✓ 專案符合標準',
|
|
1406
|
-
issuesDetected: '⚠ 偵測到一些問題。請檢視上方詳情。'
|
|
1437
|
+
issuesDetected: '⚠ 偵測到一些問題。請檢視上方詳情。',
|
|
1438
|
+
// Installation prompts
|
|
1439
|
+
offerSkillsInstallation: 'Skills 安裝',
|
|
1440
|
+
offerCommandsInstallation: '斜線命令安裝',
|
|
1441
|
+
selectSkillsToInstall: '選擇要安裝 Skills 的 AI 工具:',
|
|
1442
|
+
selectCommandsToInstall: '選擇要安裝斜線命令的 AI 工具:',
|
|
1443
|
+
skipInstallation: '跳過',
|
|
1444
|
+
skillsInstalledSuccess: '已為 {count} 個 AI 工具安裝 Skills',
|
|
1445
|
+
commandsInstalledSuccess: '已為 {count} 個 AI 工具安裝斜線命令',
|
|
1446
|
+
// Read-only hint
|
|
1447
|
+
missingSkillsHint: '提示:執行 `uds update` 安裝缺少的 Skills/斜線命令'
|
|
1407
1448
|
},
|
|
1408
1449
|
|
|
1409
1450
|
// init command (commands/init.js)
|
|
@@ -1553,7 +1594,28 @@ export const messages = {
|
|
|
1553
1594
|
categoriesChanged: '分類:{old} → {new}',
|
|
1554
1595
|
failedToUpdate: '✗ 更新 {path} 失敗:{error}',
|
|
1555
1596
|
updatedCount: '✓ 已更新 {count} 個整合檔案',
|
|
1556
|
-
skippedCount: '已跳過 {count} 個檔案(已同步或找不到)'
|
|
1597
|
+
skippedCount: '已跳過 {count} 個檔案(已同步或找不到)',
|
|
1598
|
+
// New features discovery
|
|
1599
|
+
newFeaturesAvailable: '發現新功能',
|
|
1600
|
+
newFeaturesAvailableHint: '提示:您的 AI 工具有新功能可用',
|
|
1601
|
+
skillsNotInstalledFor: '以下 AI 工具尚未安裝 Skills:',
|
|
1602
|
+
commandsNotInstalledFor: '以下 AI 工具尚未安裝斜線命令:',
|
|
1603
|
+
installSkillsNow: '是否要為這些 AI 工具安裝 Skills?',
|
|
1604
|
+
installCommandsNow: '是否要為這些 AI 工具安裝斜線命令?',
|
|
1605
|
+
selectSkillsToInstall: '選擇要安裝 Skills 的 AI 工具:',
|
|
1606
|
+
selectCommandsToInstall: '選擇要安裝斜線命令的 AI 工具:',
|
|
1607
|
+
skipSkillsInstallation: '跳過 Skills 安裝',
|
|
1608
|
+
skipCommandsInstallation: '跳過斜線命令安裝',
|
|
1609
|
+
skipValidationError: '選擇「跳過」時不能同時選擇其他選項',
|
|
1610
|
+
skillsLevelQuestion: 'Skills 要安裝到哪裡?',
|
|
1611
|
+
projectLevel: '專案層級',
|
|
1612
|
+
userLevel: '使用者層級',
|
|
1613
|
+
installingNewSkills: '安裝 Skills 中...',
|
|
1614
|
+
installingNewCommands: '安裝斜線命令中...',
|
|
1615
|
+
newSkillsInstalled: '已為 {count} 個 AI 工具安裝 Skills',
|
|
1616
|
+
newSkillsInstalledWithErrors: '安裝 Skills 時發生 {errors} 個錯誤',
|
|
1617
|
+
newCommandsInstalled: '已為 {count} 個 AI 工具安裝斜線命令',
|
|
1618
|
+
newCommandsInstalledWithErrors: '安裝斜線命令時發生 {errors} 個錯誤'
|
|
1557
1619
|
},
|
|
1558
1620
|
|
|
1559
1621
|
// configure command
|
|
@@ -1908,14 +1970,71 @@ export const messages = {
|
|
|
1908
1970
|
// init command
|
|
1909
1971
|
init: {
|
|
1910
1972
|
title: '通用开发标准 - 初始化',
|
|
1911
|
-
alreadyInitialized: '⚠
|
|
1973
|
+
alreadyInitialized: '⚠ 此项目已初始化标准。',
|
|
1912
1974
|
useUpdateOrDelete: '使用 `uds update` 更新,或删除 .standards/ 重新初始化。',
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1975
|
+
// Detection
|
|
1976
|
+
detectingProject: '正在检测项目特性...',
|
|
1977
|
+
analysisComplete: '项目分析完成',
|
|
1978
|
+
languages: '编程语言',
|
|
1979
|
+
frameworks: '框架',
|
|
1980
|
+
aiTools: 'AI 工具',
|
|
1981
|
+
// Skills status
|
|
1982
|
+
skillsStatus: 'Skills 状态:',
|
|
1983
|
+
projectLevel: '项目级别',
|
|
1984
|
+
userLevel: '用户级别',
|
|
1985
|
+
notInstalled: '未安装',
|
|
1986
|
+
noSkillsDetected: '未检测到 Skills 安装',
|
|
1987
|
+
// Integration
|
|
1988
|
+
integrationConfig: '集成配置:',
|
|
1989
|
+
sharedRuleConfig: '所有选中的工具将共享相同的规则配置。',
|
|
1990
|
+
// Config summary
|
|
1991
|
+
configSummary: '配置摘要:',
|
|
1992
|
+
standardsScope: '标准范围',
|
|
1993
|
+
standardsScopeLean: '精简(Skills 处理其余)',
|
|
1994
|
+
standardsScopeComplete: '完整',
|
|
1995
|
+
contentModeLabel: '内容模式',
|
|
1996
|
+
contentModeFull: '完整嵌入',
|
|
1997
|
+
contentModeIndex: '标准(推荐)',
|
|
1998
|
+
contentModeMinimal: '最小(仅核心)',
|
|
1999
|
+
locale: '地区设置',
|
|
2000
|
+
localeDefault: '默认(英文)',
|
|
2001
|
+
integrations: '集成',
|
|
2002
|
+
skillsLabel: 'Skills',
|
|
2003
|
+
skillsMarketplace: 'Plugin Marketplace(由 Claude Code 管理)',
|
|
2004
|
+
skillsInstallTo: '安装/更新到 {location}',
|
|
2005
|
+
skillsUsingExisting: '使用现有({location})',
|
|
2006
|
+
gitWorkflow: 'Git 工作流',
|
|
2007
|
+
mergeStrategy: '合并策略',
|
|
2008
|
+
commitLanguage: '提交消息语言',
|
|
2009
|
+
testLevels: '测试级别',
|
|
2010
|
+
// Prompts
|
|
2011
|
+
proceedInstall: '继续安装?',
|
|
2012
|
+
installCancelled: '安装已取消。',
|
|
2013
|
+
// Spinners
|
|
2014
|
+
copyingStandards: '正在复制标准...',
|
|
2015
|
+
copiedStandards: '已复制 {count} 个标准文件',
|
|
2016
|
+
copyingExtensions: '正在复制扩展...',
|
|
2017
|
+
copiedExtensions: '已复制 {count} 个扩展文件',
|
|
2018
|
+
generatingIntegrations: '正在生成集成文件...',
|
|
2019
|
+
generatedIntegrations: '已生成 {count} 个集成文件',
|
|
2020
|
+
generatingClaudeMd: '正在生成 CLAUDE.md...',
|
|
2021
|
+
generatedClaudeMd: '已生成 CLAUDE.md',
|
|
2022
|
+
couldNotGenerateClaudeMd: '无法生成 CLAUDE.md',
|
|
2023
|
+
installingSkills: '正在安装 Claude Code Skills...',
|
|
2024
|
+
installedSkills: '已安装 {count} 个 Skills 到 {locations}',
|
|
2025
|
+
installedSkillsWithErrors: '已安装 {count} 个 Skills,有 {errors} 个错误',
|
|
2026
|
+
// Success
|
|
2027
|
+
initializedSuccess: '✓ 标准初始化成功!',
|
|
2028
|
+
filesCopied: '已复制 {count} 个文件到项目',
|
|
2029
|
+
skillsUsingMarketplace: 'Skills:使用 Plugin Marketplace 安装',
|
|
2030
|
+
skillsInstalledTo: '已安装 {count} 个 Skills 到 {locations}',
|
|
2031
|
+
manifestCreated: 'Manifest 已创建于 .standards/manifest.json',
|
|
2032
|
+
errorsOccurred: '⚠ 发生 {count} 个错误:',
|
|
2033
|
+
// Next steps
|
|
2034
|
+
nextSteps: '后续步骤:',
|
|
1916
2035
|
reviewDirectory: '1. 查看 .standards/ 目录',
|
|
1917
2036
|
addToVcs: '2. 将 .standards/ 添加到版本控制',
|
|
1918
|
-
restartClaude: '3. 重启 Claude Code
|
|
2037
|
+
restartClaude: '3. 重启 Claude Code 以加载新 Skills',
|
|
1919
2038
|
runCheck: '执行 `uds check` 验证采用状态'
|
|
1920
2039
|
},
|
|
1921
2040
|
|
|
@@ -2058,7 +2177,17 @@ export const messages = {
|
|
|
2058
2177
|
runNpmUpdate: '执行:npm update -g universal-dev-standards',
|
|
2059
2178
|
// Final status
|
|
2060
2179
|
projectCompliant: '✓ 项目符合标准',
|
|
2061
|
-
issuesDetected: '⚠ 检测到一些问题。详情请查看上文。'
|
|
2180
|
+
issuesDetected: '⚠ 检测到一些问题。详情请查看上文。',
|
|
2181
|
+
// Installation prompts
|
|
2182
|
+
offerSkillsInstallation: 'Skills 安装',
|
|
2183
|
+
offerCommandsInstallation: '斜线命令安装',
|
|
2184
|
+
selectSkillsToInstall: '选择要安装 Skills 的 AI 工具:',
|
|
2185
|
+
selectCommandsToInstall: '选择要安装斜线命令的 AI 工具:',
|
|
2186
|
+
skipInstallation: '跳过',
|
|
2187
|
+
skillsInstalledSuccess: '已为 {count} 个 AI 工具安装 Skills',
|
|
2188
|
+
commandsInstalledSuccess: '已为 {count} 个 AI 工具安装斜线命令',
|
|
2189
|
+
// Read-only hint
|
|
2190
|
+
missingSkillsHint: '提示:执行 `uds update` 安装缺少的 Skills/斜线命令'
|
|
2062
2191
|
},
|
|
2063
2192
|
|
|
2064
2193
|
// update command
|
|
@@ -2137,7 +2266,28 @@ export const messages = {
|
|
|
2137
2266
|
categoriesChanged: '类别:{old} → {new}',
|
|
2138
2267
|
failedToUpdate: '✗ 更新 {path} 失败:{error}',
|
|
2139
2268
|
updatedCount: '✓ 已更新 {count} 个集成文件',
|
|
2140
|
-
skippedCount: '跳过 {count} 个文件(已同步或未找到)'
|
|
2269
|
+
skippedCount: '跳过 {count} 个文件(已同步或未找到)',
|
|
2270
|
+
// New features discovery
|
|
2271
|
+
newFeaturesAvailable: '发现新功能',
|
|
2272
|
+
newFeaturesAvailableHint: '提示:您的 AI 工具有新功能可用',
|
|
2273
|
+
skillsNotInstalledFor: '以下 AI 工具尚未安装 Skills:',
|
|
2274
|
+
commandsNotInstalledFor: '以下 AI 工具尚未安装斜线命令:',
|
|
2275
|
+
installSkillsNow: '是否要为这些 AI 工具安装 Skills?',
|
|
2276
|
+
installCommandsNow: '是否要为这些 AI 工具安装斜线命令?',
|
|
2277
|
+
selectSkillsToInstall: '选择要安装 Skills 的 AI 工具:',
|
|
2278
|
+
selectCommandsToInstall: '选择要安装斜线命令的 AI 工具:',
|
|
2279
|
+
skipSkillsInstallation: '跳过 Skills 安装',
|
|
2280
|
+
skipCommandsInstallation: '跳过斜线命令安装',
|
|
2281
|
+
skipValidationError: '选择「跳过」时不能同时选择其他选项',
|
|
2282
|
+
skillsLevelQuestion: 'Skills 要安装到哪里?',
|
|
2283
|
+
projectLevel: '项目级别',
|
|
2284
|
+
userLevel: '用户级别',
|
|
2285
|
+
installingNewSkills: '正在安装 Skills...',
|
|
2286
|
+
installingNewCommands: '正在安装斜线命令...',
|
|
2287
|
+
newSkillsInstalled: '已为 {count} 个 AI 工具安装 Skills',
|
|
2288
|
+
newSkillsInstalledWithErrors: '安装 Skills 时发生 {errors} 个错误',
|
|
2289
|
+
newCommandsInstalled: '已为 {count} 个 AI 工具安装斜线命令',
|
|
2290
|
+
newCommandsInstalledWithErrors: '安装斜线命令时发生 {errors} 个错误'
|
|
2141
2291
|
},
|
|
2142
2292
|
|
|
2143
2293
|
// configure command
|
package/src/utils/copier.js
CHANGED
|
@@ -6,8 +6,35 @@ import { downloadStandard, downloadIntegration } from './github.js';
|
|
|
6
6
|
const __filename = fileURLToPath(import.meta.url);
|
|
7
7
|
const __dirname = dirname(__filename);
|
|
8
8
|
|
|
9
|
+
// CLI package root (where package.json is located)
|
|
10
|
+
const CLI_ROOT = join(__dirname, '../..');
|
|
11
|
+
|
|
12
|
+
// Bundled files directory (for npm-installed CLI)
|
|
13
|
+
const BUNDLED_ROOT = join(CLI_ROOT, 'bundled');
|
|
14
|
+
|
|
9
15
|
// Root of the universal-dev-standards repository (for local development)
|
|
10
|
-
const REPO_ROOT = join(
|
|
16
|
+
const REPO_ROOT = join(CLI_ROOT, '..');
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Get the source file path, checking bundled first, then repo root
|
|
20
|
+
* @param {string} sourcePath - Relative path (e.g., 'core/anti-hallucination.md')
|
|
21
|
+
* @returns {string|null} Absolute path to source file, or null if not found
|
|
22
|
+
*/
|
|
23
|
+
function getSourcePath(sourcePath) {
|
|
24
|
+
// Priority 1: Bundled files (for npm-installed CLI)
|
|
25
|
+
const bundledPath = join(BUNDLED_ROOT, sourcePath);
|
|
26
|
+
if (existsSync(bundledPath)) {
|
|
27
|
+
return bundledPath;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Priority 2: Repository root (for local development)
|
|
31
|
+
const repoPath = join(REPO_ROOT, sourcePath);
|
|
32
|
+
if (existsSync(repoPath)) {
|
|
33
|
+
return repoPath;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
11
38
|
|
|
12
39
|
/**
|
|
13
40
|
* Copy a standard file to the target project
|
|
@@ -18,7 +45,6 @@ const REPO_ROOT = join(__dirname, '../../..');
|
|
|
18
45
|
* @returns {Promise<Object>} Result with success status and copied path
|
|
19
46
|
*/
|
|
20
47
|
export async function copyStandard(sourcePath, targetDir, projectPath) {
|
|
21
|
-
const source = join(REPO_ROOT, sourcePath);
|
|
22
48
|
const targetFolder = join(projectPath, targetDir);
|
|
23
49
|
const targetFile = join(targetFolder, basename(sourcePath));
|
|
24
50
|
|
|
@@ -27,8 +53,9 @@ export async function copyStandard(sourcePath, targetDir, projectPath) {
|
|
|
27
53
|
mkdirSync(targetFolder, { recursive: true });
|
|
28
54
|
}
|
|
29
55
|
|
|
30
|
-
// Try local copy first
|
|
31
|
-
|
|
56
|
+
// Try local copy first (bundled or repo)
|
|
57
|
+
const source = getSourcePath(sourcePath);
|
|
58
|
+
if (source) {
|
|
32
59
|
try {
|
|
33
60
|
copyFileSync(source, targetFile);
|
|
34
61
|
return {
|
|
@@ -46,7 +73,18 @@ export async function copyStandard(sourcePath, targetDir, projectPath) {
|
|
|
46
73
|
}
|
|
47
74
|
|
|
48
75
|
// Fall back to downloading from GitHub
|
|
49
|
-
|
|
76
|
+
const result = await downloadStandard(sourcePath, targetDir, projectPath);
|
|
77
|
+
|
|
78
|
+
// If download failed, provide a more helpful error message
|
|
79
|
+
if (!result.success && result.error?.includes('404')) {
|
|
80
|
+
return {
|
|
81
|
+
success: false,
|
|
82
|
+
error: `File not available: ${sourcePath}. This may be a beta version issue - try updating the CLI first.`,
|
|
83
|
+
path: null
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return result;
|
|
50
88
|
}
|
|
51
89
|
|
|
52
90
|
/**
|
|
@@ -58,7 +96,6 @@ export async function copyStandard(sourcePath, targetDir, projectPath) {
|
|
|
58
96
|
* @returns {Promise<Object>} Result
|
|
59
97
|
*/
|
|
60
98
|
export async function copyIntegration(sourcePath, targetPath, projectPath) {
|
|
61
|
-
const source = join(REPO_ROOT, sourcePath);
|
|
62
99
|
const target = join(projectPath, targetPath);
|
|
63
100
|
|
|
64
101
|
// Ensure target directory exists
|
|
@@ -67,8 +104,9 @@ export async function copyIntegration(sourcePath, targetPath, projectPath) {
|
|
|
67
104
|
mkdirSync(targetDir, { recursive: true });
|
|
68
105
|
}
|
|
69
106
|
|
|
70
|
-
// Try local copy first
|
|
71
|
-
|
|
107
|
+
// Try local copy first (bundled or repo)
|
|
108
|
+
const source = getSourcePath(sourcePath);
|
|
109
|
+
if (source) {
|
|
72
110
|
try {
|
|
73
111
|
copyFileSync(source, target);
|
|
74
112
|
return {
|
|
@@ -86,7 +124,18 @@ export async function copyIntegration(sourcePath, targetPath, projectPath) {
|
|
|
86
124
|
}
|
|
87
125
|
|
|
88
126
|
// Fall back to downloading from GitHub
|
|
89
|
-
|
|
127
|
+
const result = await downloadIntegration(sourcePath, targetPath, projectPath);
|
|
128
|
+
|
|
129
|
+
// If download failed, provide a more helpful error message
|
|
130
|
+
if (!result.success && result.error?.includes('404')) {
|
|
131
|
+
return {
|
|
132
|
+
success: false,
|
|
133
|
+
error: `File not available: ${sourcePath}. This may be a beta version issue - try updating the CLI first.`,
|
|
134
|
+
path: null
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return result;
|
|
90
139
|
}
|
|
91
140
|
|
|
92
141
|
/**
|
|
@@ -135,9 +184,13 @@ export function isInitialized(projectPath) {
|
|
|
135
184
|
}
|
|
136
185
|
|
|
137
186
|
/**
|
|
138
|
-
* Get the repository root path
|
|
187
|
+
* Get the repository root path (bundled or repo, whichever is available)
|
|
139
188
|
* @returns {string} Repository root path
|
|
140
189
|
*/
|
|
141
190
|
export function getRepoRoot() {
|
|
191
|
+
// Prefer bundled files for npm-installed CLI
|
|
192
|
+
if (existsSync(join(BUNDLED_ROOT, 'core'))) {
|
|
193
|
+
return BUNDLED_ROOT;
|
|
194
|
+
}
|
|
142
195
|
return REPO_ROOT;
|
|
143
196
|
}
|