universal-dev-standards 4.1.0 → 5.0.0-beta.10
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/README.md +3 -3
- package/bin/uds.js +239 -4
- package/bundled/core/acceptance-test-driven-development.md +19 -721
- package/bundled/core/accessibility-standards.md +862 -0
- package/bundled/core/ai-agreement-standards.md +95 -0
- package/bundled/core/ai-friendly-architecture.md +544 -0
- package/bundled/core/ai-instruction-standards.md +2 -0
- package/bundled/core/anti-hallucination.md +90 -637
- package/bundled/core/behavior-driven-development.md +20 -735
- package/bundled/core/changelog-standards.md +4 -0
- package/bundled/core/checkin-standards.md +21 -4
- package/bundled/core/code-review-checklist.md +3 -0
- package/bundled/core/commit-message-guide.md +14 -3
- package/bundled/core/deployment-standards.md +296 -0
- package/bundled/core/developer-memory.md +568 -0
- package/bundled/core/documentation-structure.md +114 -18
- package/bundled/core/documentation-writing-standards.md +272 -2
- package/bundled/core/error-code-standards.md +3 -0
- package/bundled/core/forward-derivation-standards.md +134 -8
- package/bundled/core/git-workflow.md +72 -686
- package/bundled/core/guides/anti-hallucination-guide.md +517 -0
- package/bundled/core/guides/git-workflow-guide.md +954 -0
- package/bundled/core/guides/performance-guide.md +508 -0
- package/bundled/core/guides/refactoring-guide.md +608 -0
- package/bundled/core/guides/security-guide.md +485 -0
- package/bundled/core/logging-standards.md +337 -2
- package/bundled/core/performance-standards.md +231 -0
- package/bundled/core/project-context-memory.md +180 -0
- package/bundled/core/project-structure.md +315 -2
- package/bundled/core/refactoring-standards.md +81 -761
- package/bundled/core/requirement-engineering.md +39 -0
- package/bundled/core/reverse-engineering-standards.md +6 -4
- package/bundled/core/security-standards.md +244 -0
- package/bundled/core/spec-driven-development.md +20 -319
- package/bundled/core/test-completeness-dimensions.md +213 -11
- package/bundled/core/test-driven-development.md +22 -978
- package/bundled/core/testing-standards.md +222 -2903
- package/bundled/core/versioning.md +16 -55
- package/bundled/core/virtual-organization-standards.md +85 -0
- package/bundled/locales/README.md +4 -4
- package/bundled/locales/zh-CN/CHANGELOG.md +18 -18
- package/bundled/locales/zh-CN/CLAUDE.md +3 -3
- package/bundled/locales/zh-CN/MAINTENANCE.md +7 -7
- package/bundled/locales/zh-CN/README.md +211 -510
- package/bundled/locales/zh-CN/STANDARDS-MAPPING.md +1 -1
- package/bundled/locales/zh-CN/adoption/ADOPTION-GUIDE.md +3 -3
- package/bundled/locales/zh-CN/adoption/DAILY-WORKFLOW-GUIDE.md +66 -7
- package/bundled/locales/zh-CN/adoption/STATIC-DYNAMIC-GUIDE.md +22 -22
- package/bundled/locales/zh-CN/adoption/checklists/enterprise.md +5 -5
- package/bundled/locales/zh-CN/adoption/checklists/minimal.md +4 -4
- package/bundled/locales/zh-CN/adoption/checklists/recommended.md +5 -5
- package/bundled/locales/zh-CN/ai/MAINTENANCE.md +13 -13
- package/bundled/locales/zh-CN/core/ai-friendly-architecture.md +306 -0
- package/bundled/locales/zh-CN/core/ai-instruction-standards.md +1 -1
- package/bundled/locales/zh-CN/core/anti-hallucination.md +39 -3
- package/bundled/locales/zh-CN/core/checkin-standards.md +18 -5
- package/bundled/locales/zh-CN/core/commit-message-guide.md +1 -1
- package/bundled/locales/zh-CN/core/developer-memory.md +576 -0
- package/bundled/locales/zh-CN/core/documentation-structure.md +43 -5
- package/bundled/locales/zh-CN/core/documentation-writing-standards.md +146 -5
- package/bundled/locales/zh-CN/core/git-workflow.md +179 -4
- package/bundled/locales/zh-CN/core/logging-standards.md +177 -4
- package/bundled/locales/zh-CN/core/project-structure.md +117 -5
- package/bundled/locales/zh-CN/core/refactoring-standards.md +3 -3
- package/bundled/locales/zh-CN/core/reverse-engineering-standards.md +6 -6
- package/bundled/locales/zh-CN/core/spec-driven-development.md +516 -14
- package/bundled/locales/zh-CN/core/test-completeness-dimensions.md +155 -24
- package/bundled/locales/zh-CN/core/test-driven-development.md +71 -20
- package/bundled/locales/zh-CN/core/testing-standards.md +4 -4
- package/bundled/locales/zh-CN/core/versioning.md +1 -1
- package/bundled/locales/zh-CN/docs/AI-AGENT-ROADMAP.md +145 -46
- package/bundled/locales/zh-CN/docs/CHEATSHEET.md +184 -0
- package/bundled/locales/zh-CN/docs/CLI-FLOW.md +239 -0
- package/bundled/locales/zh-CN/docs/FEATURE-REFERENCE.md +320 -0
- package/bundled/locales/zh-CN/docs/OPERATION-WORKFLOW.md +43 -43
- package/bundled/locales/zh-CN/docs/STANDARDS-REFERENCE.md +440 -0
- package/bundled/locales/zh-CN/docs/USAGE-MODES-COMPARISON.md +1 -1
- package/bundled/locales/zh-CN/docs/WINDOWS-GUIDE.md +1 -1
- package/bundled/locales/zh-CN/integrations/codex/README.md +3 -3
- package/bundled/locales/zh-CN/integrations/gemini-cli/GEMINI.md +35 -3
- package/bundled/locales/zh-CN/integrations/gemini-cli/README.md +3 -3
- package/bundled/locales/zh-CN/integrations/github-copilot/COPILOT-CHAT-REFERENCE.md +89 -3
- package/bundled/locales/zh-CN/integrations/github-copilot/README.md +5 -5
- package/bundled/locales/zh-CN/integrations/github-copilot/copilot-instructions.md +9 -9
- package/bundled/locales/zh-CN/integrations/github-copilot/skills-mapping.md +23 -7
- package/bundled/locales/zh-CN/integrations/google-antigravity/README.md +2 -2
- package/bundled/locales/zh-CN/integrations/opencode/README.md +3 -3
- package/bundled/locales/zh-CN/integrations/opencode/skills-mapping.md +22 -10
- package/bundled/locales/zh-CN/integrations/openspec/README.md +1 -1
- package/bundled/locales/zh-CN/integrations/spec-kit/AGENTS.md +3 -3
- package/bundled/locales/zh-CN/integrations/spec-kit/README.md +1 -1
- package/bundled/locales/zh-CN/options/commit-message/bilingual.md +1 -1
- package/bundled/locales/zh-CN/options/commit-message/english.md +1 -1
- package/bundled/locales/zh-CN/options/commit-message/traditional-chinese.md +1 -1
- package/bundled/locales/zh-CN/options/git-workflow/gitflow.md +1 -1
- package/bundled/locales/zh-CN/options/git-workflow/github-flow.md +1 -1
- package/bundled/locales/zh-CN/options/git-workflow/merge-commit.md +1 -1
- package/bundled/locales/zh-CN/options/git-workflow/rebase-ff.md +1 -1
- package/bundled/locales/zh-CN/options/git-workflow/squash-merge.md +1 -1
- package/bundled/locales/zh-CN/options/git-workflow/trunk-based.md +1 -1
- package/bundled/locales/zh-CN/options/project-structure/dotnet.md +1 -1
- package/bundled/locales/zh-CN/options/project-structure/go.md +1 -1
- package/bundled/locales/zh-CN/options/project-structure/java.md +1 -1
- package/bundled/locales/zh-CN/options/project-structure/nodejs.md +1 -1
- package/bundled/locales/zh-CN/options/project-structure/python.md +1 -1
- package/bundled/locales/zh-CN/options/testing/e2e-testing.md +1 -1
- package/bundled/locales/zh-CN/options/testing/integration-testing.md +1 -1
- package/bundled/locales/zh-CN/options/testing/system-testing.md +1 -1
- package/bundled/locales/zh-CN/options/testing/unit-testing.md +1 -1
- package/bundled/locales/zh-CN/skills/{claude-code/CONTRIBUTING.template.md → CONTRIBUTING.template.md} +2 -2
- package/bundled/locales/zh-CN/skills/README.md +131 -81
- package/bundled/locales/zh-CN/skills/agents/README.md +281 -0
- package/bundled/locales/zh-CN/skills/{claude-code/ai-collaboration-standards → ai-collaboration-standards}/SKILL.md +10 -10
- package/bundled/locales/zh-CN/skills/{claude-code/ai-collaboration-standards → ai-collaboration-standards}/anti-hallucination.md +8 -8
- package/bundled/locales/zh-CN/skills/{claude-code/ai-collaboration-standards → ai-collaboration-standards}/certainty-labels.md +8 -8
- package/bundled/locales/zh-CN/skills/ai-friendly-architecture/SKILL.md +221 -0
- package/bundled/locales/zh-CN/skills/ai-instruction-standards/SKILL.md +214 -0
- package/bundled/locales/zh-CN/skills/atdd-assistant/SKILL.md +71 -0
- package/bundled/locales/zh-CN/skills/atdd-assistant/acceptance-criteria-guide.md +428 -0
- package/bundled/locales/zh-CN/skills/atdd-assistant/atdd-workflow.md +484 -0
- package/bundled/locales/zh-CN/skills/atdd-assistant/guide.md +368 -0
- package/bundled/locales/zh-CN/skills/bdd-assistant/SKILL.md +68 -0
- package/bundled/locales/zh-CN/skills/bdd-assistant/bdd-workflow.md +406 -0
- package/bundled/locales/zh-CN/skills/bdd-assistant/gherkin-guide.md +454 -0
- package/bundled/locales/zh-CN/skills/bdd-assistant/guide.md +324 -0
- package/bundled/locales/zh-CN/skills/changelog-guide/SKILL.md +64 -0
- package/bundled/locales/zh-CN/skills/{claude-code/changelog-guide/SKILL.md → changelog-guide/guide.md} +6 -7
- package/bundled/locales/zh-CN/skills/checkin-assistant/SKILL.md +56 -0
- package/bundled/locales/zh-CN/skills/{claude-code/checkin-assistant/SKILL.md → checkin-assistant/guide.md} +6 -7
- package/bundled/locales/zh-CN/skills/code-review-assistant/SKILL.md +56 -0
- package/bundled/locales/zh-CN/skills/{claude-code/code-review-assistant → code-review-assistant}/checkin-checklist.md +4 -4
- package/bundled/locales/zh-CN/skills/{claude-code/code-review-assistant/SKILL.md → code-review-assistant/guide.md} +5 -6
- package/bundled/locales/zh-CN/skills/{claude-code/code-review-assistant → code-review-assistant}/review-checklist.md +4 -4
- package/bundled/locales/zh-CN/skills/{claude-code/commands → commands}/bdd.md +2 -2
- package/bundled/locales/zh-CN/skills/{claude-code/commands → commands}/methodology.md +3 -3
- package/bundled/locales/zh-CN/skills/{claude-code/commands → commands}/refactor.md +3 -3
- package/bundled/locales/zh-CN/skills/commit-standards/SKILL.md +61 -0
- package/bundled/locales/zh-CN/skills/{claude-code/commit-standards → commit-standards}/conventional-commits.md +4 -4
- package/bundled/locales/zh-CN/skills/{claude-code/commit-standards/SKILL.md → commit-standards/guide.md} +5 -6
- package/bundled/locales/zh-CN/skills/{claude-code/commit-standards → commit-standards}/language-options.md +3 -3
- package/bundled/locales/zh-CN/skills/docs-generator/SKILL.md +59 -0
- package/bundled/locales/zh-CN/skills/docs-generator/guide.md +262 -0
- package/bundled/locales/zh-CN/skills/{claude-code/documentation-guide → documentation-guide}/SKILL.md +7 -8
- package/bundled/locales/zh-CN/skills/{claude-code/documentation-guide → documentation-guide}/documentation-structure.md +4 -4
- package/bundled/locales/zh-CN/skills/{claude-code/documentation-guide → documentation-guide}/readme-template.md +3 -3
- package/bundled/locales/zh-CN/skills/{claude-code/error-code-guide → error-code-guide}/SKILL.md +6 -6
- package/bundled/locales/zh-CN/skills/forward-derivation/SKILL.md +62 -0
- package/bundled/locales/zh-CN/skills/forward-derivation/guide.md +130 -0
- package/bundled/locales/zh-CN/skills/{claude-code/git-workflow-guide → git-workflow-guide}/SKILL.md +6 -6
- package/bundled/locales/zh-CN/skills/{claude-code/git-workflow-guide → git-workflow-guide}/branch-naming.md +3 -3
- package/bundled/locales/zh-CN/skills/{claude-code/git-workflow-guide → git-workflow-guide}/git-workflow.md +4 -4
- package/bundled/locales/zh-CN/skills/{claude-code/logging-guide → logging-guide}/SKILL.md +6 -6
- package/bundled/locales/zh-CN/skills/methodology-system/SKILL.md +78 -0
- package/bundled/locales/zh-CN/skills/{claude-code/methodology-system → methodology-system}/create-methodology.md +2 -2
- package/bundled/locales/zh-CN/skills/{claude-code/methodology-system/SKILL.md → methodology-system/guide.md} +2 -2
- package/bundled/locales/zh-CN/skills/{claude-code/methodology-system → methodology-system}/runtime.md +3 -3
- package/bundled/locales/zh-CN/skills/project-discovery/SKILL.md +66 -0
- package/bundled/locales/zh-CN/skills/project-discovery/guide.md +371 -0
- package/bundled/locales/zh-CN/skills/{claude-code/project-structure-guide → project-structure-guide}/SKILL.md +4 -4
- package/bundled/locales/zh-CN/skills/{claude-code/project-structure-guide → project-structure-guide}/language-patterns.md +1 -1
- package/bundled/locales/zh-CN/skills/refactoring-assistant/SKILL.md +67 -0
- package/bundled/locales/zh-CN/skills/{claude-code/refactoring-assistant/SKILL.md → refactoring-assistant/guide.md} +7 -8
- package/bundled/locales/zh-CN/skills/release-standards/SKILL.md +64 -0
- package/bundled/locales/zh-CN/skills/{claude-code/release-standards → release-standards}/changelog-format.md +3 -3
- package/bundled/locales/zh-CN/skills/{claude-code/release-standards/SKILL.md → release-standards/guide.md} +5 -6
- package/bundled/locales/zh-CN/skills/{claude-code/release-standards → release-standards}/release-workflow.md +7 -7
- package/bundled/locales/zh-CN/skills/{claude-code/release-standards → release-standards}/semantic-versioning.md +3 -3
- package/bundled/locales/zh-CN/skills/requirement-assistant/SKILL.md +67 -0
- package/bundled/locales/zh-CN/skills/{claude-code/requirement-assistant/SKILL.md → requirement-assistant/guide.md} +4 -5
- package/bundled/locales/zh-CN/skills/{claude-code/requirement-assistant → requirement-assistant}/requirement-checklist.md +3 -3
- package/bundled/locales/zh-CN/skills/{claude-code/requirement-assistant → requirement-assistant}/requirement-writing.md +3 -3
- package/bundled/locales/zh-CN/skills/reverse-engineer/SKILL.md +67 -0
- package/bundled/locales/zh-CN/skills/{claude-code/reverse-engineer → reverse-engineer}/bdd-extraction.md +2 -2
- package/bundled/locales/zh-CN/skills/{claude-code/reverse-engineer/SKILL.md → reverse-engineer/guide.md} +17 -18
- package/bundled/locales/zh-CN/skills/{claude-code/reverse-engineer → reverse-engineer}/tdd-analysis.md +2 -2
- package/bundled/locales/zh-CN/skills/{claude-code/reverse-engineer → reverse-engineer}/workflow.md +3 -3
- package/bundled/locales/zh-CN/skills/spec-driven-dev/SKILL.md +75 -0
- package/bundled/locales/zh-CN/skills/{claude-code/spec-driven-dev/SKILL.md → spec-driven-dev/guide.md} +10 -11
- package/bundled/locales/zh-CN/skills/tdd-assistant/SKILL.md +66 -0
- package/bundled/locales/zh-CN/skills/{claude-code/tdd-assistant/SKILL.md → tdd-assistant/guide.md} +12 -16
- package/bundled/locales/zh-CN/skills/{claude-code/tdd-assistant → tdd-assistant}/language-examples.md +3 -3
- package/bundled/locales/zh-CN/skills/{claude-code/tdd-assistant → tdd-assistant}/tdd-workflow.md +3 -3
- package/bundled/locales/zh-CN/skills/test-coverage-assistant/SKILL.md +65 -0
- package/bundled/locales/zh-CN/skills/test-coverage-assistant/guide.md +284 -0
- package/bundled/locales/zh-CN/skills/{claude-code/testing-guide → testing-guide}/SKILL.md +8 -8
- package/bundled/locales/zh-CN/skills/{claude-code/testing-guide → testing-guide}/testing-pyramid.md +4 -4
- package/bundled/locales/zh-CN/skills/{cline → tools/cline}/README.md +1 -1
- package/bundled/locales/zh-CN/skills/{copilot → tools/copilot}/README.md +1 -1
- package/bundled/locales/zh-CN/skills/{copilot → tools/copilot}/copilot-instructions.md +1 -1
- package/bundled/locales/zh-CN/skills/{cursor → tools/cursor}/README.md +1 -1
- package/bundled/locales/zh-CN/skills/{windsurf → tools/windsurf}/README.md +1 -1
- package/bundled/locales/zh-TW/CHANGELOG.md +16 -16
- package/bundled/locales/zh-TW/CLAUDE.md +3 -3
- package/bundled/locales/zh-TW/MAINTENANCE.md +7 -7
- package/bundled/locales/zh-TW/README.md +217 -490
- package/bundled/locales/zh-TW/STANDARDS-MAPPING.md +1 -1
- package/bundled/locales/zh-TW/adoption/ADOPTION-GUIDE.md +4 -4
- package/bundled/locales/zh-TW/adoption/DAILY-WORKFLOW-GUIDE.md +66 -7
- package/bundled/locales/zh-TW/adoption/STATIC-DYNAMIC-GUIDE.md +22 -22
- package/bundled/locales/zh-TW/adoption/checklists/enterprise.md +5 -5
- package/bundled/locales/zh-TW/adoption/checklists/minimal.md +4 -4
- package/bundled/locales/zh-TW/adoption/checklists/recommended.md +5 -5
- package/bundled/locales/zh-TW/ai/MAINTENANCE.md +13 -13
- package/bundled/locales/zh-TW/ai/standards/anti-hallucination.ai.yaml +3 -2
- package/bundled/locales/zh-TW/ai/standards/git-workflow.ai.yaml +4 -3
- package/bundled/locales/zh-TW/ai/standards/spec-driven-development.ai.yaml +3 -3
- package/bundled/locales/zh-TW/ai/standards/testing.ai.yaml +1 -0
- package/bundled/locales/zh-TW/core/ai-friendly-architecture.md +306 -0
- package/bundled/locales/zh-TW/core/ai-instruction-standards.md +1 -1
- package/bundled/locales/zh-TW/core/anti-hallucination.md +38 -701
- package/bundled/locales/zh-TW/core/changelog-standards.md +1 -1
- package/bundled/locales/zh-TW/core/checkin-standards.md +18 -5
- package/bundled/locales/zh-TW/core/code-review-checklist.md +1 -1
- package/bundled/locales/zh-TW/core/commit-message-guide.md +1 -1
- package/bundled/locales/zh-TW/core/developer-memory.md +576 -0
- package/bundled/locales/zh-TW/core/documentation-structure.md +115 -22
- package/bundled/locales/zh-TW/core/documentation-writing-standards.md +126 -5
- package/bundled/locales/zh-TW/core/forward-derivation-standards.md +2 -2
- package/bundled/locales/zh-TW/core/git-workflow.md +38 -812
- package/bundled/locales/zh-TW/core/guides/anti-hallucination-guide.md +779 -0
- package/bundled/locales/zh-TW/core/guides/git-workflow-guide.md +1016 -0
- package/bundled/locales/zh-TW/core/guides/refactoring-guide.md +864 -0
- package/bundled/locales/zh-TW/core/guides/testing-guide.md +2280 -0
- package/bundled/locales/zh-TW/core/logging-standards.md +159 -4
- package/bundled/locales/zh-TW/core/project-structure.md +102 -9
- package/bundled/locales/zh-TW/core/refactoring-standards.md +37 -823
- package/bundled/locales/zh-TW/core/reverse-engineering-standards.md +6 -6
- package/bundled/locales/zh-TW/core/spec-driven-development.md +17 -268
- package/bundled/locales/zh-TW/core/test-completeness-dimensions.md +128 -14
- package/bundled/locales/zh-TW/core/test-driven-development.md +20 -983
- package/bundled/locales/zh-TW/core/testing-standards.md +120 -2105
- package/bundled/locales/zh-TW/core/versioning.md +13 -55
- package/bundled/locales/zh-TW/docs/AI-AGENT-ROADMAP.md +145 -46
- package/bundled/locales/zh-TW/docs/CHEATSHEET.md +184 -0
- package/bundled/locales/zh-TW/docs/CLI-FLOW.md +239 -0
- package/bundled/locales/zh-TW/docs/FEATURE-REFERENCE.md +320 -0
- package/bundled/locales/zh-TW/docs/MIGRATION-V5.md +71 -0
- package/bundled/locales/zh-TW/docs/OPERATION-WORKFLOW.md +42 -42
- package/bundled/locales/zh-TW/docs/STANDARDS-REFERENCE.md +440 -0
- package/bundled/locales/zh-TW/docs/USAGE-MODES-COMPARISON.md +1 -1
- package/bundled/locales/zh-TW/docs/WINDOWS-GUIDE.md +1 -1
- package/bundled/locales/zh-TW/integrations/claude-code/README.md +44 -0
- package/bundled/locales/zh-TW/integrations/gemini-cli/GEMINI.md +35 -3
- package/bundled/locales/zh-TW/integrations/github-copilot/COPILOT-CHAT-REFERENCE.md +89 -3
- package/bundled/locales/zh-TW/integrations/github-copilot/copilot-instructions.md +3 -3
- package/bundled/locales/zh-TW/integrations/github-copilot/skills-mapping.md +23 -7
- package/bundled/locales/zh-TW/integrations/opencode/skills-mapping.md +22 -10
- package/bundled/locales/zh-TW/methodologies/guides/sdd-guide.md +338 -0
- package/bundled/locales/zh-TW/methodologies/guides/tdd-guide.md +1055 -0
- package/bundled/locales/zh-TW/options/commit-message/bilingual.md +1 -1
- package/bundled/locales/zh-TW/options/commit-message/english.md +1 -1
- package/bundled/locales/zh-TW/options/commit-message/traditional-chinese.md +1 -1
- package/bundled/locales/zh-TW/options/git-workflow/gitflow.md +1 -1
- package/bundled/locales/zh-TW/options/git-workflow/github-flow.md +1 -1
- package/bundled/locales/zh-TW/options/git-workflow/merge-commit.md +1 -1
- package/bundled/locales/zh-TW/options/git-workflow/rebase-ff.md +1 -1
- package/bundled/locales/zh-TW/options/git-workflow/squash-merge.md +1 -1
- package/bundled/locales/zh-TW/options/git-workflow/trunk-based.md +1 -1
- package/bundled/locales/zh-TW/options/project-structure/dotnet.md +1 -1
- package/bundled/locales/zh-TW/options/project-structure/go.md +1 -1
- package/bundled/locales/zh-TW/options/project-structure/java.md +1 -1
- package/bundled/locales/zh-TW/options/project-structure/nodejs.md +1 -1
- package/bundled/locales/zh-TW/options/project-structure/python.md +1 -1
- package/bundled/locales/zh-TW/options/testing/e2e-testing.md +1 -1
- package/bundled/locales/zh-TW/options/testing/integration-testing.md +1 -1
- package/bundled/locales/zh-TW/options/testing/system-testing.md +1 -1
- package/bundled/locales/zh-TW/options/testing/unit-testing.md +1 -1
- package/bundled/locales/zh-TW/skills/{claude-code/CONTRIBUTING.template.md → CONTRIBUTING.template.md} +2 -2
- package/bundled/locales/zh-TW/skills/README.md +131 -79
- package/bundled/locales/zh-TW/skills/agents/README.md +281 -0
- package/bundled/locales/zh-TW/skills/{claude-code/ai-collaboration-standards → ai-collaboration-standards}/SKILL.md +7 -7
- package/bundled/locales/zh-TW/skills/{claude-code/ai-collaboration-standards → ai-collaboration-standards}/anti-hallucination.md +8 -8
- package/bundled/locales/zh-TW/skills/{claude-code/ai-collaboration-standards → ai-collaboration-standards}/certainty-labels.md +8 -8
- package/bundled/locales/zh-TW/skills/ai-friendly-architecture/SKILL.md +221 -0
- package/bundled/locales/zh-TW/skills/ai-instruction-standards/SKILL.md +214 -0
- package/bundled/locales/zh-TW/skills/atdd-assistant/SKILL.md +71 -0
- package/bundled/locales/zh-TW/skills/atdd-assistant/acceptance-criteria-guide.md +428 -0
- package/bundled/locales/zh-TW/skills/atdd-assistant/atdd-workflow.md +484 -0
- package/bundled/locales/zh-TW/skills/atdd-assistant/guide.md +368 -0
- package/bundled/locales/zh-TW/skills/bdd-assistant/SKILL.md +68 -0
- package/bundled/locales/zh-TW/skills/bdd-assistant/bdd-workflow.md +406 -0
- package/bundled/locales/zh-TW/skills/bdd-assistant/gherkin-guide.md +454 -0
- package/bundled/locales/zh-TW/skills/bdd-assistant/guide.md +324 -0
- package/bundled/locales/zh-TW/skills/changelog-guide/SKILL.md +64 -0
- package/bundled/locales/zh-TW/skills/{claude-code/changelog-guide/SKILL.md → changelog-guide/guide.md} +6 -7
- package/bundled/locales/zh-TW/skills/checkin-assistant/SKILL.md +56 -0
- package/bundled/locales/zh-TW/skills/{claude-code/checkin-assistant/SKILL.md → checkin-assistant/guide.md} +6 -7
- package/bundled/locales/zh-TW/skills/code-review-assistant/SKILL.md +56 -0
- package/bundled/locales/zh-TW/skills/{claude-code/code-review-assistant → code-review-assistant}/checkin-checklist.md +4 -4
- package/bundled/locales/zh-TW/skills/{claude-code/code-review-assistant/SKILL.md → code-review-assistant/guide.md} +2 -3
- package/bundled/locales/zh-TW/skills/{claude-code/code-review-assistant → code-review-assistant}/review-checklist.md +4 -4
- package/bundled/locales/zh-TW/skills/{claude-code/commands → commands}/bdd.md +2 -2
- package/bundled/locales/zh-TW/skills/{claude-code/commands → commands}/methodology.md +3 -3
- package/bundled/locales/zh-TW/skills/{claude-code/commands → commands}/refactor.md +3 -3
- package/bundled/locales/zh-TW/skills/commit-standards/SKILL.md +61 -0
- package/bundled/locales/zh-TW/skills/{claude-code/commit-standards → commit-standards}/conventional-commits.md +4 -4
- package/bundled/locales/zh-TW/skills/{claude-code/commit-standards/SKILL.md → commit-standards/guide.md} +5 -6
- package/bundled/locales/zh-TW/skills/{claude-code/commit-standards → commit-standards}/language-options.md +3 -3
- package/bundled/locales/zh-TW/skills/docs-generator/SKILL.md +59 -0
- package/bundled/locales/zh-TW/skills/docs-generator/guide.md +262 -0
- package/bundled/locales/zh-TW/skills/{claude-code/documentation-guide → documentation-guide}/SKILL.md +7 -8
- package/bundled/locales/zh-TW/skills/{claude-code/documentation-guide → documentation-guide}/documentation-structure.md +4 -4
- package/bundled/locales/zh-TW/skills/{claude-code/documentation-guide → documentation-guide}/readme-template.md +3 -3
- package/bundled/locales/zh-TW/skills/{claude-code/error-code-guide → error-code-guide}/SKILL.md +6 -6
- package/bundled/locales/zh-TW/skills/forward-derivation/SKILL.md +62 -0
- package/bundled/locales/zh-TW/skills/{claude-code/forward-derivation/SKILL.md → forward-derivation/guide.md} +24 -19
- package/bundled/locales/zh-TW/skills/{claude-code/git-workflow-guide → git-workflow-guide}/SKILL.md +3 -3
- package/bundled/locales/zh-TW/skills/{claude-code/git-workflow-guide → git-workflow-guide}/branch-naming.md +3 -3
- package/bundled/locales/zh-TW/skills/{claude-code/git-workflow-guide → git-workflow-guide}/git-workflow.md +4 -4
- package/bundled/locales/zh-TW/skills/{claude-code/logging-guide → logging-guide}/SKILL.md +6 -6
- package/bundled/locales/zh-TW/skills/methodology-system/SKILL.md +78 -0
- package/bundled/locales/zh-TW/skills/{claude-code/methodology-system → methodology-system}/create-methodology.md +2 -2
- package/bundled/locales/zh-TW/skills/{claude-code/methodology-system/SKILL.md → methodology-system/guide.md} +2 -2
- package/bundled/locales/zh-TW/skills/{claude-code/methodology-system → methodology-system}/runtime.md +3 -3
- package/bundled/locales/zh-TW/skills/project-discovery/SKILL.md +66 -0
- package/bundled/locales/zh-TW/skills/project-discovery/guide.md +371 -0
- package/bundled/locales/zh-TW/skills/project-discovery/workflow.md +574 -0
- package/bundled/locales/zh-TW/skills/{claude-code/project-structure-guide → project-structure-guide}/SKILL.md +4 -4
- package/bundled/locales/zh-TW/skills/{claude-code/project-structure-guide → project-structure-guide}/language-patterns.md +1 -1
- package/bundled/locales/zh-TW/skills/refactoring-assistant/SKILL.md +67 -0
- package/bundled/locales/zh-TW/skills/{claude-code/refactoring-assistant/SKILL.md → refactoring-assistant/guide.md} +7 -8
- package/bundled/locales/zh-TW/skills/release-standards/SKILL.md +64 -0
- package/bundled/locales/zh-TW/skills/{claude-code/release-standards → release-standards}/changelog-format.md +3 -3
- package/bundled/locales/zh-TW/skills/{claude-code/release-standards/SKILL.md → release-standards/guide.md} +2 -3
- package/bundled/locales/zh-TW/skills/{claude-code/release-standards → release-standards}/release-workflow.md +60 -28
- package/bundled/locales/zh-TW/skills/{claude-code/release-standards → release-standards}/semantic-versioning.md +3 -3
- package/bundled/locales/zh-TW/skills/requirement-assistant/SKILL.md +67 -0
- package/bundled/locales/zh-TW/skills/{claude-code/requirement-assistant/SKILL.md → requirement-assistant/guide.md} +2 -3
- package/bundled/locales/zh-TW/skills/{claude-code/requirement-assistant → requirement-assistant}/requirement-checklist.md +3 -3
- package/bundled/locales/zh-TW/skills/{claude-code/requirement-assistant → requirement-assistant}/requirement-writing.md +3 -3
- package/bundled/locales/zh-TW/skills/reverse-engineer/SKILL.md +67 -0
- package/bundled/locales/zh-TW/skills/{claude-code/reverse-engineer → reverse-engineer}/bdd-extraction.md +2 -2
- package/bundled/locales/zh-TW/skills/{claude-code/reverse-engineer/SKILL.md → reverse-engineer/guide.md} +17 -18
- package/bundled/locales/zh-TW/skills/{claude-code/reverse-engineer → reverse-engineer}/tdd-analysis.md +2 -2
- package/bundled/locales/zh-TW/skills/{claude-code/reverse-engineer → reverse-engineer}/workflow.md +3 -3
- package/bundled/locales/zh-TW/skills/spec-driven-dev/SKILL.md +75 -0
- package/bundled/locales/zh-TW/skills/{claude-code/spec-driven-dev/SKILL.md → spec-driven-dev/guide.md} +9 -10
- package/bundled/locales/zh-TW/skills/tdd-assistant/SKILL.md +66 -0
- package/bundled/locales/zh-TW/skills/{claude-code/tdd-assistant/SKILL.md → tdd-assistant/guide.md} +9 -10
- package/bundled/locales/zh-TW/skills/{claude-code/tdd-assistant → tdd-assistant}/language-examples.md +3 -3
- package/bundled/locales/zh-TW/skills/{claude-code/tdd-assistant → tdd-assistant}/tdd-workflow.md +3 -3
- package/bundled/locales/zh-TW/skills/test-coverage-assistant/SKILL.md +65 -0
- package/bundled/locales/zh-TW/skills/{claude-code/test-coverage-assistant/SKILL.md → test-coverage-assistant/guide.md} +27 -24
- package/bundled/locales/zh-TW/skills/{claude-code/testing-guide → testing-guide}/SKILL.md +6 -6
- package/bundled/locales/zh-TW/skills/{claude-code/testing-guide → testing-guide}/testing-pyramid.md +4 -4
- package/bundled/locales/zh-TW/skills/{cline → tools/cline}/README.md +1 -1
- package/bundled/locales/zh-TW/skills/{copilot → tools/copilot}/README.md +1 -1
- package/bundled/locales/zh-TW/skills/{copilot → tools/copilot}/copilot-instructions.md +1 -1
- package/bundled/locales/zh-TW/skills/{cursor → tools/cursor}/README.md +1 -1
- package/bundled/locales/zh-TW/skills/{windsurf → tools/windsurf}/README.md +1 -1
- package/bundled/skills/INTEGRATION-GUIDE.md +210 -0
- package/bundled/skills/README.md +95 -0
- package/bundled/skills/_shared/README.md +60 -0
- package/bundled/skills/agents/README.md +305 -0
- package/bundled/skills/agents/code-architect.md +259 -0
- package/bundled/skills/agents/doc-writer.md +406 -0
- package/bundled/skills/agents/reviewer.md +353 -0
- package/bundled/skills/agents/spec-analyst.md +374 -0
- package/bundled/skills/agents/test-specialist.md +364 -0
- package/bundled/skills/{claude-code/ai-collaboration-standards → ai-collaboration-standards}/SKILL.md +28 -5
- package/bundled/skills/{claude-code/ai-collaboration-standards → ai-collaboration-standards}/anti-hallucination.md +24 -5
- package/bundled/skills/{claude-code/ai-collaboration-standards → ai-collaboration-standards}/certainty-labels.md +31 -6
- package/bundled/skills/ai-friendly-architecture/SKILL.md +216 -0
- package/bundled/skills/ai-instruction-standards/SKILL.md +209 -0
- package/bundled/skills/atdd-assistant/SKILL.md +74 -0
- package/bundled/skills/{claude-code/atdd-assistant → atdd-assistant}/acceptance-criteria-guide.md +1 -1
- package/bundled/skills/{claude-code/atdd-assistant → atdd-assistant}/atdd-workflow.md +1 -1
- package/bundled/skills/{claude-code/atdd-assistant/SKILL.md → atdd-assistant/guide.md} +11 -11
- package/bundled/skills/bdd-assistant/SKILL.md +70 -0
- package/bundled/skills/{claude-code/bdd-assistant → bdd-assistant}/bdd-workflow.md +1 -1
- package/bundled/skills/{claude-code/bdd-assistant → bdd-assistant}/gherkin-guide.md +1 -1
- package/bundled/skills/{claude-code/bdd-assistant/SKILL.md → bdd-assistant/guide.md} +11 -11
- package/bundled/skills/changelog-guide/SKILL.md +66 -0
- package/bundled/skills/{claude-code/changelog-guide/SKILL.md → changelog-guide/guide.md} +8 -6
- package/bundled/skills/checkin-assistant/SKILL.md +52 -0
- package/bundled/skills/{claude-code/checkin-assistant/SKILL.md → checkin-assistant/guide.md} +6 -6
- package/bundled/skills/code-review-assistant/SKILL.md +53 -0
- package/bundled/skills/{claude-code/code-review-assistant → code-review-assistant}/checkin-checklist.md +3 -3
- package/bundled/skills/{claude-code/code-review-assistant/SKILL.md → code-review-assistant/guide.md} +7 -5
- package/bundled/skills/{claude-code/code-review-assistant → code-review-assistant}/review-checklist.md +3 -3
- package/bundled/skills/commands/COMMAND-FAMILY-OVERVIEW.md +290 -0
- package/bundled/skills/{claude-code/commands → commands}/README.md +13 -3
- package/bundled/skills/{claude-code/commands → commands}/atdd.md +3 -3
- package/bundled/skills/{claude-code/commands → commands}/bdd.md +2 -2
- package/bundled/skills/commands/changelog.md +58 -0
- package/bundled/skills/{claude-code/commands → commands}/check.md +1 -1
- package/bundled/skills/commands/checkin.md +53 -0
- package/bundled/skills/{claude-code/commands → commands}/commit.md +3 -3
- package/bundled/skills/{claude-code/commands → commands}/config.md +1 -1
- package/bundled/skills/{claude-code/commands → commands}/coverage.md +5 -4
- package/bundled/skills/commands/derive-all.md +53 -0
- package/bundled/skills/commands/derive-atdd.md +49 -0
- package/bundled/skills/commands/derive-bdd.md +47 -0
- package/bundled/skills/commands/derive-tdd.md +48 -0
- package/bundled/skills/commands/derive.md +72 -0
- package/bundled/skills/commands/discover.md +80 -0
- package/bundled/skills/commands/docgen.md +61 -0
- package/bundled/skills/commands/docs.md +59 -0
- package/bundled/skills/commands/guide.md +44 -0
- package/bundled/skills/{claude-code/commands → commands}/init.md +2 -2
- package/bundled/skills/{claude-code/commands → commands}/methodology.md +32 -16
- package/bundled/skills/{claude-code/commands → commands}/refactor.md +2 -2
- package/bundled/skills/commands/release.md +56 -0
- package/bundled/skills/{claude-code/commands → commands}/requirement.md +3 -3
- package/bundled/skills/commands/reverse-bdd.md +47 -0
- package/bundled/skills/commands/reverse-sdd.md +51 -0
- package/bundled/skills/commands/reverse-tdd.md +51 -0
- package/bundled/skills/commands/reverse.md +63 -0
- package/bundled/skills/{claude-code/commands → commands}/review.md +3 -3
- package/bundled/skills/commands/sdd.md +135 -0
- package/bundled/skills/{claude-code/commands → commands}/tdd.md +3 -3
- package/bundled/skills/{claude-code/commands → commands}/update.md +2 -2
- package/bundled/skills/commit-standards/SKILL.md +60 -0
- package/bundled/skills/{claude-code/commit-standards → commit-standards}/conventional-commits.md +3 -3
- package/bundled/skills/{claude-code/commit-standards/SKILL.md → commit-standards/guide.md} +17 -5
- package/bundled/skills/{claude-code/commit-standards → commit-standards}/language-options.md +2 -2
- package/bundled/skills/docs-generator/SKILL.md +69 -0
- package/bundled/skills/docs-generator/guide.md +258 -0
- package/bundled/skills/{claude-code/documentation-guide → documentation-guide}/SKILL.md +7 -7
- package/bundled/skills/{claude-code/documentation-guide → documentation-guide}/documentation-structure.md +3 -3
- package/bundled/skills/{claude-code/documentation-guide → documentation-guide}/readme-template.md +2 -2
- package/bundled/skills/{claude-code/error-code-guide → error-code-guide}/SKILL.md +7 -5
- package/bundled/skills/forward-derivation/SKILL.md +61 -0
- package/bundled/skills/{claude-code/forward-derivation/SKILL.md → forward-derivation/guide.md} +44 -29
- package/bundled/skills/{claude-code/git-workflow-guide → git-workflow-guide}/SKILL.md +7 -5
- package/bundled/skills/{claude-code/git-workflow-guide → git-workflow-guide}/branch-naming.md +2 -2
- package/bundled/skills/{claude-code/git-workflow-guide → git-workflow-guide}/git-workflow.md +3 -3
- package/bundled/skills/{claude-code/logging-guide → logging-guide}/SKILL.md +7 -5
- package/bundled/skills/methodology-system/SKILL.md +75 -0
- package/bundled/skills/{claude-code/methodology-system → methodology-system}/create-methodology.md +1 -1
- package/bundled/skills/{claude-code/methodology-system/SKILL.md → methodology-system/guide.md} +51 -16
- package/bundled/skills/methodology-system/integrated-flow.md +454 -0
- package/bundled/skills/{claude-code/methodology-system → methodology-system}/runtime.md +2 -2
- package/bundled/skills/project-discovery/SKILL.md +63 -0
- package/bundled/skills/project-discovery/guide.md +367 -0
- package/bundled/skills/project-discovery/workflow.md +566 -0
- package/bundled/skills/{claude-code/project-structure-guide → project-structure-guide}/SKILL.md +14 -4
- package/bundled/skills/refactoring-assistant/SKILL.md +78 -0
- package/bundled/skills/{claude-code/refactoring-assistant/SKILL.md → refactoring-assistant/guide.md} +7 -7
- package/bundled/skills/release-standards/SKILL.md +61 -0
- package/bundled/skills/{claude-code/release-standards → release-standards}/changelog-format.md +2 -2
- package/bundled/skills/{claude-code/release-standards/SKILL.md → release-standards/guide.md} +7 -5
- package/bundled/skills/{claude-code/release-standards → release-standards}/release-workflow.md +59 -24
- package/bundled/skills/{claude-code/release-standards → release-standards}/semantic-versioning.md +2 -2
- package/bundled/skills/requirement-assistant/SKILL.md +66 -0
- package/bundled/skills/{claude-code/requirement-assistant/SKILL.md → requirement-assistant/guide.md} +14 -6
- package/bundled/skills/{claude-code/requirement-assistant → requirement-assistant}/requirement-checklist.md +2 -2
- package/bundled/skills/{claude-code/requirement-assistant → requirement-assistant}/requirement-writing.md +2 -2
- package/bundled/skills/reverse-engineer/SKILL.md +64 -0
- package/bundled/skills/{claude-code/reverse-engineer → reverse-engineer}/bdd-extraction.md +1 -1
- package/bundled/skills/{claude-code/reverse-engineer/SKILL.md → reverse-engineer/guide.md} +21 -18
- package/bundled/skills/{claude-code/reverse-engineer → reverse-engineer}/tdd-analysis.md +1 -1
- package/bundled/skills/{claude-code/reverse-engineer → reverse-engineer}/workflow.md +2 -2
- package/bundled/skills/spec-driven-dev/SKILL.md +80 -0
- package/bundled/skills/{claude-code/spec-driven-dev/SKILL.md → spec-driven-dev/guide.md} +50 -8
- package/bundled/skills/tdd-assistant/SKILL.md +65 -0
- package/bundled/skills/{claude-code/tdd-assistant/SKILL.md → tdd-assistant/guide.md} +10 -10
- package/bundled/skills/{claude-code/tdd-assistant → tdd-assistant}/language-examples.md +3 -3
- package/bundled/skills/{claude-code/tdd-assistant → tdd-assistant}/tdd-workflow.md +2 -2
- package/bundled/skills/test-coverage-assistant/SKILL.md +63 -0
- package/bundled/skills/{claude-code/test-coverage-assistant/SKILL.md → test-coverage-assistant/guide.md} +39 -24
- package/bundled/skills/{claude-code/testing-guide → testing-guide}/SKILL.md +12 -7
- package/bundled/skills/{claude-code/testing-guide → testing-guide}/testing-pyramid.md +3 -3
- package/bundled/skills/testing-guide/testing-theory.md +2291 -0
- package/bundled/skills/tools/cline/.clinerules +79 -0
- package/bundled/skills/tools/cline/README.md +50 -0
- package/bundled/skills/tools/copilot/README.md +99 -0
- package/bundled/skills/tools/copilot/copilot-instructions.md +71 -0
- package/bundled/skills/tools/cursor/.cursorrules +101 -0
- package/bundled/skills/tools/cursor/README.md +50 -0
- package/bundled/skills/tools/windsurf/.windsurfrules +76 -0
- package/bundled/skills/tools/windsurf/README.md +51 -0
- package/bundled/skills/workflows/README.md +303 -0
- package/bundled/skills/workflows/code-review.workflow.yaml +186 -0
- package/bundled/skills/workflows/feature-dev.workflow.yaml +174 -0
- package/bundled/skills/workflows/integrated-flow.workflow.yaml +238 -0
- package/bundled/skills/workflows/large-codebase-analysis.workflow.yaml +226 -0
- package/bundled/skills/workflows/release.workflow.yaml +893 -0
- package/package.json +14 -1
- package/src/commands/agent.js +417 -0
- package/src/commands/ai-context.js +552 -0
- package/src/commands/check.js +196 -131
- package/src/commands/config.js +1262 -0
- package/src/commands/configure.js +3 -950
- package/src/commands/fix.js +53 -0
- package/src/commands/hitl.js +19 -0
- package/src/commands/init.js +320 -1027
- package/src/commands/list.js +1 -1
- package/src/commands/simulate.js +61 -0
- package/src/commands/spec.js +288 -0
- package/src/commands/start.js +373 -0
- package/src/commands/sweep.js +142 -0
- package/src/commands/update.js +136 -19
- package/src/commands/workflow.js +689 -0
- package/src/config/ai-agent-paths.js +292 -28
- package/src/core/constants.js +520 -0
- package/src/core/errors.js +398 -0
- package/src/core/manifest.js +474 -0
- package/src/core/paths.js +398 -0
- package/src/flows/init-flow.js +243 -0
- package/src/hitl/checkpoint.js +80 -0
- package/src/hitl/classifier.js +54 -0
- package/src/hitl/manager.js +88 -0
- package/src/i18n/messages.js +907 -99
- package/src/index.js +1 -0
- package/src/installers/integration-installer.js +237 -0
- package/src/installers/manifest-installer.js +131 -0
- package/src/installers/skills-installer.js +286 -0
- package/src/installers/standards-installer.js +193 -0
- package/src/missions/MissionManager.js +501 -0
- package/src/prompts/init.js +235 -135
- package/src/prompts/integrations.js +13 -1
- package/src/schemas/standard.schema.json +117 -0
- package/src/utils/agent-adapter.js +320 -0
- package/src/utils/agents-installer.js +393 -0
- package/src/utils/config-loader.js +47 -0
- package/src/utils/config-manager.js +108 -0
- package/src/utils/config-merger.js +47 -0
- package/src/utils/context-chunker.js +467 -0
- package/src/utils/copier.js +59 -99
- package/src/utils/github.js +22 -18
- package/src/utils/hasher.js +2 -16
- package/src/utils/inquirer-patch.js +98 -0
- package/src/utils/integration-generator.js +420 -110
- package/src/utils/reference-sync.js +69 -19
- package/src/utils/skills-installer.js +6 -3
- package/src/utils/standard-fixer.js +141 -0
- package/src/utils/standard-validator.js +329 -0
- package/src/utils/workflow-executor.js +886 -0
- package/src/utils/workflow-state.js +404 -0
- package/src/utils/workflows-installer.js +545 -0
- package/src/vibe/auto-sweep.js +349 -0
- package/src/vibe/micro-spec.js +428 -0
- package/standards-registry.json +429 -107
- package/bundled/locales/zh-CN/skills/claude-code/README.md +0 -174
- package/bundled/locales/zh-CN/skills/claude-code/test-coverage-assistant/SKILL.md +0 -282
- package/bundled/locales/zh-TW/skills/claude-code/README.md +0 -174
- package/bundled/skills/claude-code/README.md +0 -207
- package/bundled/skills/claude-code/commands/changelog.md +0 -57
- package/bundled/skills/claude-code/commands/derive-all.md +0 -214
- package/bundled/skills/claude-code/commands/derive-atdd.md +0 -177
- package/bundled/skills/claude-code/commands/derive-bdd.md +0 -158
- package/bundled/skills/claude-code/commands/derive-tdd.md +0 -259
- package/bundled/skills/claude-code/commands/docs.md +0 -75
- package/bundled/skills/claude-code/commands/release.md +0 -50
- package/bundled/skills/claude-code/commands/reverse-bdd.md +0 -264
- package/bundled/skills/claude-code/commands/reverse-spec.md +0 -185
- package/bundled/skills/claude-code/commands/reverse-tdd.md +0 -351
- package/bundled/skills/claude-code/commands/spec.md +0 -69
- package/bundled/skills/claude-code/methodology-system/integrated-flow.md +0 -322
- /package/bundled/skills/{claude-code/CONTRIBUTING.template.md → CONTRIBUTING.template.md} +0 -0
- /package/bundled/skills/{claude-code/ai → ai}/standards/checkin.ai.yaml +0 -0
- /package/bundled/skills/{claude-code/ai → ai}/standards/commit.ai.yaml +0 -0
- /package/bundled/skills/{claude-code/ai → ai}/standards/refactoring.ai.yaml +0 -0
- /package/bundled/skills/{claude-code/ai → ai}/standards/testing.ai.yaml +0 -0
- /package/bundled/skills/{claude-code/project-structure-guide → project-structure-guide}/language-patterns.md +0 -0
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Chunker Utility (RLM-inspired)
|
|
3
|
+
*
|
|
4
|
+
* Provides intelligent chunking of code and text content for large context handling.
|
|
5
|
+
* Based on RLM (Recursive Language Model) principles for optimal AI processing.
|
|
6
|
+
*
|
|
7
|
+
* Key features:
|
|
8
|
+
* - Semantic-aware chunking (preserves code structure)
|
|
9
|
+
* - Configurable overlap for context continuity
|
|
10
|
+
* - Metadata generation for chunk tracking
|
|
11
|
+
*
|
|
12
|
+
* @version 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Default configuration for context chunking
|
|
17
|
+
*/
|
|
18
|
+
export const DEFAULT_CONFIG = {
|
|
19
|
+
maxChunkSize: 50000, // Maximum tokens per chunk
|
|
20
|
+
overlap: 500, // Token overlap between chunks
|
|
21
|
+
mode: 'adaptive', // full | chunked | adaptive
|
|
22
|
+
analysisPattern: 'hierarchical' // hierarchical | parallel | sequential
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Token estimation ratio (characters to tokens)
|
|
27
|
+
* Average ratio for code is ~4 characters per token
|
|
28
|
+
*/
|
|
29
|
+
const CHARS_PER_TOKEN = 4;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Estimate token count for a string
|
|
33
|
+
* @param {string} text - Text to estimate
|
|
34
|
+
* @returns {number} Estimated token count
|
|
35
|
+
*/
|
|
36
|
+
export function estimateTokens(text) {
|
|
37
|
+
if (!text || typeof text !== 'string') {
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
return Math.ceil(text.length / CHARS_PER_TOKEN);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Estimate character count from token count
|
|
45
|
+
* @param {number} tokens - Token count
|
|
46
|
+
* @returns {number} Estimated character count
|
|
47
|
+
*/
|
|
48
|
+
export function tokensToChars(tokens) {
|
|
49
|
+
return tokens * CHARS_PER_TOKEN;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Semantic boundary markers for different content types
|
|
54
|
+
*/
|
|
55
|
+
const BOUNDARY_PATTERNS = {
|
|
56
|
+
// JavaScript/TypeScript
|
|
57
|
+
js: [
|
|
58
|
+
/^(?:export\s+)?(?:async\s+)?function\s+\w+/m, // function declarations
|
|
59
|
+
/^(?:export\s+)?class\s+\w+/m, // class declarations
|
|
60
|
+
/^(?:export\s+)?const\s+\w+\s*=\s*(?:async\s+)?\(/m, // arrow function exports
|
|
61
|
+
/^(?:export\s+)?(?:default\s+)?{/m, // object exports
|
|
62
|
+
/^\/\*\*[\s\S]*?\*\//m, // JSDoc blocks
|
|
63
|
+
/^\/\/\s*={3,}/m, // section dividers
|
|
64
|
+
],
|
|
65
|
+
// Python
|
|
66
|
+
py: [
|
|
67
|
+
/^(?:async\s+)?def\s+\w+/m, // function definitions
|
|
68
|
+
/^class\s+\w+/m, // class definitions
|
|
69
|
+
/^@\w+/m, // decorators
|
|
70
|
+
/^#{3,}/m, // section comments
|
|
71
|
+
/^"""[\s\S]*?"""/m, // docstrings
|
|
72
|
+
],
|
|
73
|
+
// Go
|
|
74
|
+
go: [
|
|
75
|
+
/^func\s+(?:\([^)]+\)\s+)?\w+/m, // function definitions
|
|
76
|
+
/^type\s+\w+\s+struct/m, // struct definitions
|
|
77
|
+
/^type\s+\w+\s+interface/m, // interface definitions
|
|
78
|
+
/^\/\/\s*-{3,}/m, // section dividers
|
|
79
|
+
],
|
|
80
|
+
// Markdown
|
|
81
|
+
md: [
|
|
82
|
+
/^#{1,6}\s+/m, // headings
|
|
83
|
+
/^---+$/m, // horizontal rules
|
|
84
|
+
/^```/m, // code blocks
|
|
85
|
+
],
|
|
86
|
+
// Generic fallback
|
|
87
|
+
generic: [
|
|
88
|
+
/^\s*$/m, // empty lines
|
|
89
|
+
/^[/#*-]{3,}/m, // dividers
|
|
90
|
+
]
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Detect content type from file extension or content
|
|
95
|
+
* @param {string} content - Content to analyze
|
|
96
|
+
* @param {string} [filename] - Optional filename for extension-based detection
|
|
97
|
+
* @returns {string} Content type key
|
|
98
|
+
*/
|
|
99
|
+
export function detectContentType(content, filename = '') {
|
|
100
|
+
// Extension-based detection
|
|
101
|
+
const ext = filename.split('.').pop()?.toLowerCase();
|
|
102
|
+
const extMap = {
|
|
103
|
+
'js': 'js', 'mjs': 'js', 'jsx': 'js', 'ts': 'js', 'tsx': 'js',
|
|
104
|
+
'py': 'py', 'pyw': 'py',
|
|
105
|
+
'go': 'go',
|
|
106
|
+
'md': 'md', 'markdown': 'md'
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
if (ext && extMap[ext]) {
|
|
110
|
+
return extMap[ext];
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Content-based detection
|
|
114
|
+
if (content.includes('function ') || content.includes('const ') || content.includes('import ')) {
|
|
115
|
+
return 'js';
|
|
116
|
+
}
|
|
117
|
+
if (content.includes('def ') || content.includes('import ') && content.includes(':')) {
|
|
118
|
+
return 'py';
|
|
119
|
+
}
|
|
120
|
+
if (content.includes('func ') || content.includes('package ')) {
|
|
121
|
+
return 'go';
|
|
122
|
+
}
|
|
123
|
+
if (content.match(/^#{1,6}\s+/m)) {
|
|
124
|
+
return 'md';
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return 'generic';
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Find semantic boundary positions in content
|
|
132
|
+
* @param {string} content - Content to analyze
|
|
133
|
+
* @param {string} contentType - Content type key
|
|
134
|
+
* @returns {number[]} Array of character positions where boundaries occur
|
|
135
|
+
*/
|
|
136
|
+
export function findSemanticBoundaries(content, contentType = 'generic') {
|
|
137
|
+
const patterns = BOUNDARY_PATTERNS[contentType] || BOUNDARY_PATTERNS.generic;
|
|
138
|
+
const boundaries = new Set([0]); // Always include start
|
|
139
|
+
|
|
140
|
+
for (const pattern of patterns) {
|
|
141
|
+
let match;
|
|
142
|
+
const regex = new RegExp(pattern.source, 'gm');
|
|
143
|
+
while ((match = regex.exec(content)) !== null) {
|
|
144
|
+
boundaries.add(match.index);
|
|
145
|
+
// Prevent infinite loop on zero-length matches (e.g., /^\s*$/gm matching empty lines)
|
|
146
|
+
if (match[0].length === 0) {
|
|
147
|
+
regex.lastIndex++;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Sort and return as array
|
|
153
|
+
return Array.from(boundaries).sort((a, b) => a - b);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Find the best split point near target position
|
|
158
|
+
* @param {string} content - Content to split
|
|
159
|
+
* @param {number} targetPos - Target character position
|
|
160
|
+
* @param {number[]} boundaries - Pre-computed boundary positions
|
|
161
|
+
* @param {number} tolerance - How far to search from target (in characters)
|
|
162
|
+
* @returns {number} Best split position
|
|
163
|
+
*/
|
|
164
|
+
function findBestSplitPoint(content, targetPos, boundaries, tolerance = 2000) {
|
|
165
|
+
// Find boundaries within tolerance range
|
|
166
|
+
const minPos = Math.max(0, targetPos - tolerance);
|
|
167
|
+
const maxPos = Math.min(content.length, targetPos + tolerance);
|
|
168
|
+
|
|
169
|
+
const candidateBoundaries = boundaries.filter(b => b >= minPos && b <= maxPos);
|
|
170
|
+
|
|
171
|
+
if (candidateBoundaries.length === 0) {
|
|
172
|
+
// No semantic boundaries found, fall back to line boundary
|
|
173
|
+
const lineEnd = content.lastIndexOf('\n', targetPos);
|
|
174
|
+
if (lineEnd > minPos) {
|
|
175
|
+
return lineEnd + 1;
|
|
176
|
+
}
|
|
177
|
+
return targetPos;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Find the boundary closest to target
|
|
181
|
+
let bestBoundary = candidateBoundaries[0];
|
|
182
|
+
let minDistance = Math.abs(bestBoundary - targetPos);
|
|
183
|
+
|
|
184
|
+
for (const boundary of candidateBoundaries) {
|
|
185
|
+
const distance = Math.abs(boundary - targetPos);
|
|
186
|
+
if (distance < minDistance) {
|
|
187
|
+
minDistance = distance;
|
|
188
|
+
bestBoundary = boundary;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
return bestBoundary;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Create metadata for a chunk
|
|
197
|
+
* @param {string} chunk - Chunk content
|
|
198
|
+
* @param {number} index - Chunk index
|
|
199
|
+
* @param {number} startPos - Start position in original content
|
|
200
|
+
* @param {number} endPos - End position in original content
|
|
201
|
+
* @param {number} totalChunks - Total number of chunks
|
|
202
|
+
* @param {string} contentType - Content type
|
|
203
|
+
* @returns {Object} Chunk metadata
|
|
204
|
+
*/
|
|
205
|
+
function createChunkMetadata(chunk, index, startPos, endPos, totalChunks, contentType) {
|
|
206
|
+
const lines = chunk.split('\n');
|
|
207
|
+
const firstLine = lines[0]?.trim() || '';
|
|
208
|
+
const lastLine = lines[lines.length - 1]?.trim() || '';
|
|
209
|
+
|
|
210
|
+
return {
|
|
211
|
+
index,
|
|
212
|
+
totalChunks,
|
|
213
|
+
startPosition: startPos,
|
|
214
|
+
endPosition: endPos,
|
|
215
|
+
tokenEstimate: estimateTokens(chunk),
|
|
216
|
+
lineCount: lines.length,
|
|
217
|
+
contentType,
|
|
218
|
+
preview: {
|
|
219
|
+
first: firstLine.substring(0, 100),
|
|
220
|
+
last: lastLine.substring(0, 100)
|
|
221
|
+
},
|
|
222
|
+
// Detect if chunk starts/ends with incomplete structures
|
|
223
|
+
continuity: {
|
|
224
|
+
startsWithIncomplete: /^[^{[(]*[}\])]/.test(chunk),
|
|
225
|
+
endsWithIncomplete: /[{[(][^}\])]*$/.test(chunk)
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Chunk content using adaptive strategy
|
|
232
|
+
* @param {string} content - Content to chunk
|
|
233
|
+
* @param {Object} [config] - Configuration options
|
|
234
|
+
* @param {number} [config.maxChunkSize=50000] - Maximum tokens per chunk
|
|
235
|
+
* @param {number} [config.overlap=500] - Token overlap between chunks
|
|
236
|
+
* @param {string} [filename] - Optional filename for type detection
|
|
237
|
+
* @returns {Object} Chunking result with chunks and metadata
|
|
238
|
+
*/
|
|
239
|
+
export function chunkContent(content, config = {}, filename = '') {
|
|
240
|
+
const { maxChunkSize = DEFAULT_CONFIG.maxChunkSize, overlap = DEFAULT_CONFIG.overlap } = config;
|
|
241
|
+
|
|
242
|
+
// Handle empty content
|
|
243
|
+
if (!content || typeof content !== 'string') {
|
|
244
|
+
return {
|
|
245
|
+
chunks: [],
|
|
246
|
+
metadata: {
|
|
247
|
+
totalChunks: 0,
|
|
248
|
+
totalTokens: 0,
|
|
249
|
+
contentType: 'unknown',
|
|
250
|
+
mode: 'empty'
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
const totalTokens = estimateTokens(content);
|
|
256
|
+
const contentType = detectContentType(content, filename);
|
|
257
|
+
|
|
258
|
+
// If content fits in one chunk, return as-is
|
|
259
|
+
if (totalTokens <= maxChunkSize) {
|
|
260
|
+
return {
|
|
261
|
+
chunks: [{
|
|
262
|
+
content,
|
|
263
|
+
metadata: createChunkMetadata(content, 0, 0, content.length, 1, contentType)
|
|
264
|
+
}],
|
|
265
|
+
metadata: {
|
|
266
|
+
totalChunks: 1,
|
|
267
|
+
totalTokens,
|
|
268
|
+
contentType,
|
|
269
|
+
mode: 'full'
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// Calculate chunking parameters
|
|
275
|
+
const maxChunkChars = tokensToChars(maxChunkSize);
|
|
276
|
+
const overlapChars = tokensToChars(overlap);
|
|
277
|
+
const boundaries = findSemanticBoundaries(content, contentType);
|
|
278
|
+
|
|
279
|
+
const chunks = [];
|
|
280
|
+
let currentPos = 0;
|
|
281
|
+
let chunkIndex = 0;
|
|
282
|
+
|
|
283
|
+
while (currentPos < content.length) {
|
|
284
|
+
// Calculate target end position
|
|
285
|
+
const targetEnd = currentPos + maxChunkChars;
|
|
286
|
+
|
|
287
|
+
// Find best split point
|
|
288
|
+
let endPos;
|
|
289
|
+
if (targetEnd >= content.length) {
|
|
290
|
+
endPos = content.length;
|
|
291
|
+
} else {
|
|
292
|
+
endPos = findBestSplitPoint(content, targetEnd, boundaries);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// Extract chunk
|
|
296
|
+
const chunk = content.substring(currentPos, endPos);
|
|
297
|
+
const metadata = createChunkMetadata(chunk, chunkIndex, currentPos, endPos, -1, contentType); // -1 placeholder
|
|
298
|
+
|
|
299
|
+
chunks.push({
|
|
300
|
+
content: chunk,
|
|
301
|
+
metadata
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
// Move position (with overlap)
|
|
305
|
+
currentPos = Math.max(currentPos + 1, endPos - overlapChars);
|
|
306
|
+
chunkIndex++;
|
|
307
|
+
|
|
308
|
+
// Safety check to prevent infinite loops
|
|
309
|
+
if (chunkIndex > 1000) {
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
// Update total chunks count in metadata
|
|
315
|
+
for (const chunk of chunks) {
|
|
316
|
+
chunk.metadata.totalChunks = chunks.length;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
return {
|
|
320
|
+
chunks,
|
|
321
|
+
metadata: {
|
|
322
|
+
totalChunks: chunks.length,
|
|
323
|
+
totalTokens,
|
|
324
|
+
contentType,
|
|
325
|
+
mode: 'chunked',
|
|
326
|
+
config: { maxChunkSize, overlap }
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Chunk multiple files with dependency awareness
|
|
333
|
+
* @param {Array<{path: string, content: string}>} files - Files to chunk
|
|
334
|
+
* @param {Object} [config] - Configuration options
|
|
335
|
+
* @returns {Object} Chunking result for all files
|
|
336
|
+
*/
|
|
337
|
+
export function chunkFiles(files, config = {}) {
|
|
338
|
+
const results = {
|
|
339
|
+
files: [],
|
|
340
|
+
metadata: {
|
|
341
|
+
totalFiles: files.length,
|
|
342
|
+
totalChunks: 0,
|
|
343
|
+
totalTokens: 0
|
|
344
|
+
}
|
|
345
|
+
};
|
|
346
|
+
|
|
347
|
+
for (const file of files) {
|
|
348
|
+
const result = chunkContent(file.content, config, file.path);
|
|
349
|
+
results.files.push({
|
|
350
|
+
path: file.path,
|
|
351
|
+
...result
|
|
352
|
+
});
|
|
353
|
+
results.metadata.totalChunks += result.metadata.totalChunks;
|
|
354
|
+
results.metadata.totalTokens += result.metadata.totalTokens;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
return results;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Determine optimal chunking mode based on content
|
|
362
|
+
* @param {string} content - Content to analyze
|
|
363
|
+
* @param {Object} [config] - Configuration options
|
|
364
|
+
* @returns {Object} Recommended configuration
|
|
365
|
+
*/
|
|
366
|
+
export function recommendChunkingMode(content, config = {}) {
|
|
367
|
+
const totalTokens = estimateTokens(content);
|
|
368
|
+
const { maxChunkSize = DEFAULT_CONFIG.maxChunkSize } = config;
|
|
369
|
+
|
|
370
|
+
if (totalTokens <= maxChunkSize) {
|
|
371
|
+
return {
|
|
372
|
+
mode: 'full',
|
|
373
|
+
reason: 'Content fits in single chunk',
|
|
374
|
+
estimatedChunks: 1
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
const contentType = detectContentType(content);
|
|
379
|
+
const boundaries = findSemanticBoundaries(content, contentType);
|
|
380
|
+
const boundaryDensity = boundaries.length / (content.length / 1000); // per 1000 chars
|
|
381
|
+
|
|
382
|
+
if (boundaryDensity > 5) {
|
|
383
|
+
return {
|
|
384
|
+
mode: 'adaptive',
|
|
385
|
+
analysisPattern: 'parallel',
|
|
386
|
+
reason: 'High structure density allows parallel processing',
|
|
387
|
+
estimatedChunks: Math.ceil(totalTokens / maxChunkSize)
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
return {
|
|
392
|
+
mode: 'chunked',
|
|
393
|
+
analysisPattern: 'sequential',
|
|
394
|
+
reason: 'Low structure density requires sequential processing',
|
|
395
|
+
estimatedChunks: Math.ceil(totalTokens / maxChunkSize)
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
/**
|
|
400
|
+
* Merge chunk results back together
|
|
401
|
+
* @param {Array<{content: string, metadata: Object}>} chunks - Chunks to merge
|
|
402
|
+
* @param {Object} [options] - Merge options
|
|
403
|
+
* @param {boolean} [options.removeDuplicates=true] - Remove overlapping content
|
|
404
|
+
* @returns {string} Merged content
|
|
405
|
+
*/
|
|
406
|
+
export function mergeChunks(chunks, options = {}) {
|
|
407
|
+
const { removeDuplicates = true } = options;
|
|
408
|
+
|
|
409
|
+
if (!chunks || chunks.length === 0) {
|
|
410
|
+
return '';
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
if (chunks.length === 1) {
|
|
414
|
+
return chunks[0].content;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
if (!removeDuplicates) {
|
|
418
|
+
return chunks.map(c => c.content).join('\n');
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
// Smart merge: detect and remove overlapping content
|
|
422
|
+
let result = chunks[0].content;
|
|
423
|
+
|
|
424
|
+
for (let i = 1; i < chunks.length; i++) {
|
|
425
|
+
const current = chunks[i].content;
|
|
426
|
+
const overlap = findOverlap(result, current);
|
|
427
|
+
|
|
428
|
+
if (overlap > 0) {
|
|
429
|
+
result += current.substring(overlap);
|
|
430
|
+
} else {
|
|
431
|
+
result += '\n' + current;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
return result;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Find overlapping content between two strings
|
|
440
|
+
* @param {string} prev - Previous content
|
|
441
|
+
* @param {string} next - Next content
|
|
442
|
+
* @returns {number} Number of overlapping characters at the junction
|
|
443
|
+
*/
|
|
444
|
+
function findOverlap(prev, next) {
|
|
445
|
+
const maxCheck = Math.min(prev.length, next.length, 5000); // Limit check size
|
|
446
|
+
|
|
447
|
+
for (let len = maxCheck; len > 0; len--) {
|
|
448
|
+
const tail = prev.substring(prev.length - len);
|
|
449
|
+
if (next.startsWith(tail)) {
|
|
450
|
+
return len;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
return 0;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
export default {
|
|
458
|
+
DEFAULT_CONFIG,
|
|
459
|
+
estimateTokens,
|
|
460
|
+
tokensToChars,
|
|
461
|
+
detectContentType,
|
|
462
|
+
findSemanticBoundaries,
|
|
463
|
+
chunkContent,
|
|
464
|
+
chunkFiles,
|
|
465
|
+
recommendChunkingMode,
|
|
466
|
+
mergeChunks
|
|
467
|
+
};
|
package/src/utils/copier.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, copyFileSync
|
|
1
|
+
import { existsSync, mkdirSync, copyFileSync } from 'fs';
|
|
2
2
|
import { dirname, join, basename } from 'path';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
4
|
import { downloadStandard, downloadIntegration } from './github.js';
|
|
5
|
+
import { PathResolver } from '../core/paths.js';
|
|
6
|
+
import { success, failure, ERROR_CODES } from '../core/errors.js';
|
|
5
7
|
|
|
6
8
|
const __filename = fileURLToPath(import.meta.url);
|
|
7
9
|
const __dirname = dirname(__filename);
|
|
@@ -12,32 +14,20 @@ const CLI_ROOT = join(__dirname, '../..');
|
|
|
12
14
|
// Bundled files directory (for npm-installed CLI)
|
|
13
15
|
const BUNDLED_ROOT = join(CLI_ROOT, 'bundled');
|
|
14
16
|
|
|
15
|
-
// Root of
|
|
17
|
+
// Root of universal-dev-standards repository (for local development)
|
|
16
18
|
const REPO_ROOT = join(CLI_ROOT, '..');
|
|
17
19
|
|
|
18
20
|
/**
|
|
19
|
-
* Get
|
|
20
|
-
* @param {string} sourcePath - Relative path
|
|
21
|
-
* @returns {string|null} Absolute path
|
|
21
|
+
* Get source file path (legacy compatibility)
|
|
22
|
+
* @param {string} sourcePath - Relative path
|
|
23
|
+
* @returns {string|null} Absolute path or null
|
|
22
24
|
*/
|
|
23
25
|
function getSourcePath(sourcePath) {
|
|
24
|
-
|
|
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;
|
|
26
|
+
return PathResolver.getStandardSource(sourcePath);
|
|
37
27
|
}
|
|
38
28
|
|
|
39
29
|
/**
|
|
40
|
-
* Copy a standard file to
|
|
30
|
+
* Copy a standard file to target project
|
|
41
31
|
* Falls back to downloading from GitHub if local file not found
|
|
42
32
|
* @param {string} sourcePath - Relative path from repo root (e.g., 'core/anti-hallucination.md')
|
|
43
33
|
* @param {string} targetDir - Target directory (usually '.standards')
|
|
@@ -45,46 +35,46 @@ function getSourcePath(sourcePath) {
|
|
|
45
35
|
* @returns {Promise<Object>} Result with success status and copied path
|
|
46
36
|
*/
|
|
47
37
|
export async function copyStandard(sourcePath, targetDir, projectPath) {
|
|
48
|
-
|
|
49
|
-
|
|
38
|
+
try {
|
|
39
|
+
const targetFolder = join(projectPath, targetDir);
|
|
40
|
+
const targetFile = join(targetFolder, basename(sourcePath));
|
|
50
41
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
42
|
+
// Ensure target directory exists
|
|
43
|
+
if (!existsSync(targetFolder)) {
|
|
44
|
+
mkdirSync(targetFolder, { recursive: true });
|
|
45
|
+
}
|
|
55
46
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
try {
|
|
47
|
+
// Try local copy first (bundled or repo)
|
|
48
|
+
const source = getSourcePath(sourcePath);
|
|
49
|
+
if (source) {
|
|
60
50
|
copyFileSync(source, targetFile);
|
|
61
|
-
return {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
};
|
|
66
|
-
} catch (error) {
|
|
67
|
-
return {
|
|
68
|
-
success: false,
|
|
69
|
-
error: error.message,
|
|
70
|
-
path: null
|
|
71
|
-
};
|
|
51
|
+
return success(targetFile, {
|
|
52
|
+
source: 'local',
|
|
53
|
+
sourcePath,
|
|
54
|
+
targetFile
|
|
55
|
+
});
|
|
72
56
|
}
|
|
73
|
-
}
|
|
74
57
|
|
|
75
|
-
|
|
76
|
-
|
|
58
|
+
// Fall back to downloading from GitHub
|
|
59
|
+
const result = await downloadStandard(sourcePath, targetDir, projectPath);
|
|
77
60
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
61
|
+
// If download failed, provide a more helpful error message
|
|
62
|
+
if (!result.success && result.error?.includes('404')) {
|
|
63
|
+
return failure(
|
|
64
|
+
`File not available: ${sourcePath}. This may be a beta version issue - try updating the CLI first.`,
|
|
65
|
+
ERROR_CODES.FILE_NOT_FOUND,
|
|
66
|
+
{ sourcePath, targetDir }
|
|
67
|
+
);
|
|
68
|
+
}
|
|
86
69
|
|
|
87
|
-
|
|
70
|
+
return result;
|
|
71
|
+
} catch (error) {
|
|
72
|
+
return failure(
|
|
73
|
+
error.message,
|
|
74
|
+
ERROR_CODES.FILE_COPY_FAILED,
|
|
75
|
+
{ sourcePath, targetDir, projectPath }
|
|
76
|
+
);
|
|
77
|
+
}
|
|
88
78
|
}
|
|
89
79
|
|
|
90
80
|
/**
|
|
@@ -97,7 +87,7 @@ export async function copyStandard(sourcePath, targetDir, projectPath) {
|
|
|
97
87
|
*/
|
|
98
88
|
export async function copyIntegration(sourcePath, targetPath, projectPath) {
|
|
99
89
|
const target = join(projectPath, targetPath);
|
|
100
|
-
|
|
90
|
+
|
|
101
91
|
// Ensure target directory exists
|
|
102
92
|
const targetDir = dirname(target);
|
|
103
93
|
if (!existsSync(targetDir)) {
|
|
@@ -139,52 +129,7 @@ export async function copyIntegration(sourcePath, targetPath, projectPath) {
|
|
|
139
129
|
}
|
|
140
130
|
|
|
141
131
|
/**
|
|
142
|
-
*
|
|
143
|
-
* @param {Object} manifest - Manifest data
|
|
144
|
-
* @param {string} projectPath - Project root path
|
|
145
|
-
*/
|
|
146
|
-
export function writeManifest(manifest, projectPath) {
|
|
147
|
-
const manifestPath = join(projectPath, '.standards', 'manifest.json');
|
|
148
|
-
const manifestDir = dirname(manifestPath);
|
|
149
|
-
|
|
150
|
-
if (!existsSync(manifestDir)) {
|
|
151
|
-
mkdirSync(manifestDir, { recursive: true });
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
|
|
155
|
-
return manifestPath;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* Read the manifest file
|
|
160
|
-
* @param {string} projectPath - Project root path
|
|
161
|
-
* @returns {Object|null} Manifest data or null if not found
|
|
162
|
-
*/
|
|
163
|
-
export function readManifest(projectPath) {
|
|
164
|
-
const manifestPath = join(projectPath, '.standards', 'manifest.json');
|
|
165
|
-
|
|
166
|
-
if (!existsSync(manifestPath)) {
|
|
167
|
-
return null;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
try {
|
|
171
|
-
return JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
172
|
-
} catch {
|
|
173
|
-
return null;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Check if standards are already initialized
|
|
179
|
-
* @param {string} projectPath - Project root path
|
|
180
|
-
* @returns {boolean} True if initialized
|
|
181
|
-
*/
|
|
182
|
-
export function isInitialized(projectPath) {
|
|
183
|
-
return existsSync(join(projectPath, '.standards', 'manifest.json'));
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Get the repository root path (bundled or repo, whichever is available)
|
|
132
|
+
* Get repository root path (bundled or repo, whichever is available)
|
|
188
133
|
* @returns {string} Repository root path
|
|
189
134
|
*/
|
|
190
135
|
export function getRepoRoot() {
|
|
@@ -194,3 +139,18 @@ export function getRepoRoot() {
|
|
|
194
139
|
}
|
|
195
140
|
return REPO_ROOT;
|
|
196
141
|
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Get bundled files directory path
|
|
145
|
+
* @returns {string} Bundled root path
|
|
146
|
+
*/
|
|
147
|
+
export function getBundledRoot() {
|
|
148
|
+
return BUNDLED_ROOT;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Re-export manifest functions from core module for backward compatibility
|
|
152
|
+
export {
|
|
153
|
+
writeManifest,
|
|
154
|
+
readManifest,
|
|
155
|
+
manifestExists as isInitialized
|
|
156
|
+
} from '../core/manifest.js';
|