universal-dev-standards 4.2.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 +165 -5
- 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 +2 -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 +2 -2
- 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-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 +90 -51
- 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/README.md +3 -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 +18 -6
- 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 +13 -7
- 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-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 +90 -51
- 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/github-copilot/copilot-instructions.md +3 -3
- package/bundled/locales/zh-TW/integrations/github-copilot/skills-mapping.md +18 -6
- 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/{claude-code/agents → agents}/README.md +2 -2
- package/bundled/skills/{claude-code/agents → agents}/code-architect.md +1 -1
- package/bundled/skills/{claude-code/agents → agents}/doc-writer.md +1 -1
- package/bundled/skills/{claude-code/agents → agents}/reviewer.md +1 -1
- package/bundled/skills/{claude-code/agents → agents}/spec-analyst.md +1 -1
- package/bundled/skills/{claude-code/agents → agents}/test-specialist.md +1 -1
- 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/{claude-code/workflows → workflows}/README.md +1 -1
- package/bundled/skills/workflows/release.workflow.yaml +893 -0
- package/package.json +4 -1
- package/src/commands/check.js +195 -130
- 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 -1030
- 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 +265 -1
- package/src/config/ai-agent-paths.js +89 -29
- package/src/core/constants.js +7 -1
- package/src/core/manifest.js +1 -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 +228 -130
- package/src/prompts/integrations.js +13 -1
- package/src/schemas/standard.schema.json +117 -0
- package/src/utils/agents-installer.js +2 -2
- 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/github.js +22 -18
- package/src/utils/inquirer-patch.js +98 -0
- package/src/utils/integration-generator.js +392 -58
- 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 +2 -2
- package/src/vibe/auto-sweep.js +349 -0
- package/src/vibe/micro-spec.js +428 -0
- package/standards-registry.json +278 -102
- 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 -215
- 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
- /package/bundled/skills/{claude-code/workflows → workflows}/code-review.workflow.yaml +0 -0
- /package/bundled/skills/{claude-code/workflows → workflows}/feature-dev.workflow.yaml +0 -0
- /package/bundled/skills/{claude-code/workflows → workflows}/integrated-flow.workflow.yaml +0 -0
- /package/bundled/skills/{claude-code/workflows → workflows}/large-codebase-analysis.workflow.yaml +0 -0
|
@@ -0,0 +1,1016 @@
|
|
|
1
|
+
---
|
|
2
|
+
source: ../../core/git-workflow.md
|
|
3
|
+
source_version: 1.3.0
|
|
4
|
+
translation_version: 1.3.0
|
|
5
|
+
last_synced: 2026-01-24
|
|
6
|
+
status: current
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Git 工作流程標準
|
|
10
|
+
|
|
11
|
+
> **語言**: [English](../../../../core/git-workflow.md) | 繁體中文
|
|
12
|
+
|
|
13
|
+
**版本**: 1.3.0
|
|
14
|
+
**最後更新**: 2026-01-24
|
|
15
|
+
**適用範圍**: 所有使用 Git 版本控制的專案
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 目的
|
|
20
|
+
|
|
21
|
+
本標準定義 Git 分支策略與工作流程,確保團隊與專案間的一致、可預測的協作模式。
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 工作流程策略選擇
|
|
26
|
+
|
|
27
|
+
**專案必須選擇一種**工作流程策略並明確記錄。
|
|
28
|
+
|
|
29
|
+
### 決策樹
|
|
30
|
+
|
|
31
|
+
使用此流程圖來選擇適當的工作流程:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
┌─────────────────────────────────────┐
|
|
35
|
+
│ How often do you deploy to │
|
|
36
|
+
│ production? │
|
|
37
|
+
│ 您多常部署到正式環境? │
|
|
38
|
+
└───────────────┬─────────────────────┘
|
|
39
|
+
│
|
|
40
|
+
┌───────────────────────┼───────────────────────┐
|
|
41
|
+
▼ ▼ ▼
|
|
42
|
+
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
|
|
43
|
+
│ Multiple times │ │ Weekly to │ │ Monthly or │
|
|
44
|
+
│ per day │ │ bi-weekly │ │ longer │
|
|
45
|
+
│ 每天多次 │ │ 每週或雙週 │ │ 每月或更久 │
|
|
46
|
+
└───────┬────────┘ └───────┬────────┘ └───────┬────────┘
|
|
47
|
+
│ │ │
|
|
48
|
+
▼ ▼ ▼
|
|
49
|
+
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
|
|
50
|
+
│ Trunk-Based │ │ GitHub Flow │ │ GitFlow │
|
|
51
|
+
│ Development │ │ │ │ │
|
|
52
|
+
└────────────────┘ └────────────────┘ └────────────────┘
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 選擇矩陣
|
|
56
|
+
|
|
57
|
+
| 因素 | GitFlow | GitHub Flow | Trunk-Based |
|
|
58
|
+
|------|---------|-------------|-------------|
|
|
59
|
+
| **發布頻率** | 每月以上 | 每週 | 每天多次 |
|
|
60
|
+
| **團隊規模** | 大型 (10+) | 中型 (5-15) | 小到中型 (3-10) |
|
|
61
|
+
| **CI/CD 成熟度** | 基礎 | 中等 | 進階 |
|
|
62
|
+
| **功能開關** | 選用 | 選用 | 必需 |
|
|
63
|
+
| **緊急修復流程** | 專用分支 | 與功能相同 | 與功能相同 |
|
|
64
|
+
| **複雜度** | 高 | 低 | 中 |
|
|
65
|
+
|
|
66
|
+
### 快速選擇指南
|
|
67
|
+
|
|
68
|
+
**選擇 GitFlow 當**:
|
|
69
|
+
- 您有固定的發布週期(每月、每季)
|
|
70
|
+
- 您同時維護多個正式版本
|
|
71
|
+
- 您有獨立的開發團隊和發布管理團隊
|
|
72
|
+
|
|
73
|
+
**選擇 GitHub Flow 當**:
|
|
74
|
+
- 您每週或按需部署到正式環境
|
|
75
|
+
- 您只有單一正式版本
|
|
76
|
+
- 您想要簡單且有良好追溯性的流程
|
|
77
|
+
|
|
78
|
+
**選擇 Trunk-Based 當**:
|
|
79
|
+
- 您有成熟的 CI/CD 和自動化測試
|
|
80
|
+
- 您的團隊實踐持續整合
|
|
81
|
+
- 您習慣使用功能開關控制未完成的功能
|
|
82
|
+
|
|
83
|
+
### 工作流程選擇流程
|
|
84
|
+
|
|
85
|
+
**誰來決定**:技術主管或工程經理,與團隊協商。
|
|
86
|
+
|
|
87
|
+
**何時決定**:
|
|
88
|
+
|
|
89
|
+
| 專案階段 | 動作 |
|
|
90
|
+
|---------|------|
|
|
91
|
+
| 專案啟動 | 根據團隊規模和發布計畫選擇初始工作流程 |
|
|
92
|
+
| 第一次發布 | 審查並確認選擇;鎖定至少一個發布週期 |
|
|
93
|
+
| 重大團隊變動 | 如果團隊規模翻倍或減半,重新評估 |
|
|
94
|
+
| 發布節奏變更 | 如果從每月改為每週或反之,重新評估 |
|
|
95
|
+
|
|
96
|
+
**如何記錄**:
|
|
97
|
+
|
|
98
|
+
1. **記錄在專案 README** 或 CONTRIBUTING.md 中:
|
|
99
|
+
```markdown
|
|
100
|
+
## Git 工作流程
|
|
101
|
+
本專案使用 **GitHub Flow**。
|
|
102
|
+
- 決定日期:2025-01-15
|
|
103
|
+
- 決定者:@techlead
|
|
104
|
+
- 理由:每週部署,單一正式版本
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
2. **設定分支保護**規則以強制執行所選的工作流程。
|
|
108
|
+
|
|
109
|
+
3. **更新新人入職文件**以參考工作流程選擇。
|
|
110
|
+
|
|
111
|
+
**變更工作流程**:工作流程變更應視為破壞性變更。至少提前一個衝刺週期宣布,並提供遷移文件。
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 策略 A: GitFlow
|
|
116
|
+
|
|
117
|
+
**最適合**:
|
|
118
|
+
定期發布(每月、每季)、同時維護多個正式版本、開發與正式環境明確分離、大型團隊與正式發布流程
|
|
119
|
+
|
|
120
|
+
### 分支結構
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
main ─●────────●─────────●── (Production releases: v1.0, v2.0)
|
|
124
|
+
╱ ╲ ╲
|
|
125
|
+
develop ────●────●──────●─────────●── (Development mainline)
|
|
126
|
+
╱ ╲ ╲
|
|
127
|
+
feature/* ─●────────● ╲ (Feature branches)
|
|
128
|
+
╲
|
|
129
|
+
release/* ●───● (Release preparation)
|
|
130
|
+
╱
|
|
131
|
+
hotfix/* ────● (Emergency fixes)
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 分支類型
|
|
135
|
+
|
|
136
|
+
| 分支類型 | 目的 | 基礎分支 | 合併目標 | 生命週期 |
|
|
137
|
+
|---------|------|---------|----------|---------|
|
|
138
|
+
| `main` | 正式環境程式碼 | - | - | 永久 |
|
|
139
|
+
| `develop` | 整合分支 | - | - | 永久 |
|
|
140
|
+
| `feature/*` | 新功能 | `develop` | `develop` | 暫時 |
|
|
141
|
+
| `release/*` | 發布準備 | `develop` | `main` + `develop` | 暫時 |
|
|
142
|
+
| `hotfix/*` | 緊急修復 | `main` | `main` + `develop` | 暫時 |
|
|
143
|
+
|
|
144
|
+
### 工作流程步驟
|
|
145
|
+
|
|
146
|
+
#### 1. 功能開發
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# Create feature branch from develop
|
|
150
|
+
git checkout develop
|
|
151
|
+
git pull origin develop
|
|
152
|
+
git checkout -b feature/oauth-login
|
|
153
|
+
|
|
154
|
+
# Work on feature
|
|
155
|
+
git add .
|
|
156
|
+
git commit -m "feat(auth): add OAuth2 login"
|
|
157
|
+
|
|
158
|
+
# Push to remote
|
|
159
|
+
git push -u origin feature/oauth-login
|
|
160
|
+
|
|
161
|
+
# Create pull request to develop
|
|
162
|
+
# After review approval, merge to develop
|
|
163
|
+
git checkout develop
|
|
164
|
+
git merge --no-ff feature/oauth-login
|
|
165
|
+
git push origin develop
|
|
166
|
+
|
|
167
|
+
# Delete feature branch
|
|
168
|
+
git branch -d feature/oauth-login
|
|
169
|
+
git push origin --delete feature/oauth-login
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
#### 2. 發布準備
|
|
173
|
+
|
|
174
|
+
> **變更日誌更新**:將 `[Unreleased]` 的條目移至新版本區段並加上發布日期。詳細指南請參閱 [changelog-standards.md](../../../../core/changelog-standards.md)。
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Create release branch from develop
|
|
178
|
+
git checkout develop
|
|
179
|
+
git pull origin develop
|
|
180
|
+
git checkout -b release/v1.2.0
|
|
181
|
+
|
|
182
|
+
# Prepare release (version bump, changelog, etc.)
|
|
183
|
+
# 1. Update CHANGELOG.md: move [Unreleased] to [1.2.0] - YYYY-MM-DD
|
|
184
|
+
# 2. Update version in package.json (or equivalent)
|
|
185
|
+
npm version 1.2.0
|
|
186
|
+
git add package.json CHANGELOG.md
|
|
187
|
+
git commit -m "chore(release): prepare v1.2.0"
|
|
188
|
+
|
|
189
|
+
# Merge to main
|
|
190
|
+
git checkout main
|
|
191
|
+
git merge --no-ff release/v1.2.0
|
|
192
|
+
git tag -a v1.2.0 -m "Release version 1.2.0"
|
|
193
|
+
git push origin main --tags
|
|
194
|
+
|
|
195
|
+
# Merge back to develop
|
|
196
|
+
git checkout develop
|
|
197
|
+
git merge --no-ff release/v1.2.0
|
|
198
|
+
git push origin develop
|
|
199
|
+
|
|
200
|
+
# Delete release branch
|
|
201
|
+
git branch -d release/v1.2.0
|
|
202
|
+
git push origin --delete release/v1.2.0
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
#### 3. 緊急修復
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
# Create hotfix branch from main
|
|
209
|
+
git checkout main
|
|
210
|
+
git pull origin main
|
|
211
|
+
git checkout -b hotfix/critical-security-fix
|
|
212
|
+
|
|
213
|
+
# Fix the issue
|
|
214
|
+
git add .
|
|
215
|
+
git commit -m "fix(security): patch SQL injection vulnerability"
|
|
216
|
+
|
|
217
|
+
# Merge to main
|
|
218
|
+
git checkout main
|
|
219
|
+
git merge --no-ff hotfix/critical-security-fix
|
|
220
|
+
git tag -a v1.2.1 -m "Hotfix version 1.2.1"
|
|
221
|
+
git push origin main --tags
|
|
222
|
+
|
|
223
|
+
# Merge to develop
|
|
224
|
+
git checkout develop
|
|
225
|
+
git merge --no-ff hotfix/critical-security-fix
|
|
226
|
+
git push origin develop
|
|
227
|
+
|
|
228
|
+
# Delete hotfix branch
|
|
229
|
+
git branch -d hotfix/critical-security-fix
|
|
230
|
+
git push origin --delete hotfix/critical-security-fix
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## 策略 B: GitHub Flow
|
|
236
|
+
|
|
237
|
+
**最適合**:
|
|
238
|
+
持續部署、Web 應用程式、中小型團隊、快速迭代週期
|
|
239
|
+
|
|
240
|
+
### 分支結構
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
main ────●─────────●──────●── (Always deployable)
|
|
244
|
+
╲ ╱ ╱
|
|
245
|
+
feature/* ●───●───● ╱ (Feature + PR)
|
|
246
|
+
╱
|
|
247
|
+
bugfix/* ────● (Bug fixes)
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### 分支類型
|
|
251
|
+
|
|
252
|
+
| 分支類型 | 目的 | 基礎分支 | 合併目標 | 生命週期 |
|
|
253
|
+
|---------|------|---------|----------|---------|
|
|
254
|
+
| `main` | 正式環境程式碼 | - | - | 永久 |
|
|
255
|
+
| `feature/*` | 新功能 | `main` | `main` | 暫時 |
|
|
256
|
+
| `bugfix/*` | Bug 修復 | `main` | `main` | 暫時 |
|
|
257
|
+
| `hotfix/*` | 緊急修復 | `main` | `main` | 暫時 |
|
|
258
|
+
|
|
259
|
+
### 工作流程步驟
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
# 1. Create feature branch from main
|
|
263
|
+
git checkout main
|
|
264
|
+
git pull origin main
|
|
265
|
+
git checkout -b feature/user-profile
|
|
266
|
+
|
|
267
|
+
# 2. Work and commit frequently
|
|
268
|
+
git add .
|
|
269
|
+
git commit -m "feat(profile): add avatar upload"
|
|
270
|
+
git push -u origin feature/user-profile
|
|
271
|
+
|
|
272
|
+
# 3. Open pull request to main
|
|
273
|
+
# Use GitHub/GitLab UI to create PR
|
|
274
|
+
|
|
275
|
+
# 4. After CI passes and review approval, merge to main
|
|
276
|
+
# (Usually done via GitHub/GitLab UI with "Squash and merge")
|
|
277
|
+
|
|
278
|
+
# 5. Deploy main to production
|
|
279
|
+
git checkout main
|
|
280
|
+
git pull origin main
|
|
281
|
+
# Trigger deployment pipeline
|
|
282
|
+
|
|
283
|
+
# 6. Delete feature branch (auto-deleted by GitHub/GitLab)
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### 關鍵原則
|
|
287
|
+
|
|
288
|
+
1. **`main` 永遠可部署**
|
|
289
|
+
2. **從 `main` 分支**
|
|
290
|
+
3. **透過 PR 合併到 `main`**
|
|
291
|
+
4. **合併後立即部署**
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## 策略 C: Trunk-Based Development
|
|
296
|
+
|
|
297
|
+
**最適合**:
|
|
298
|
+
成熟的 CI/CD 管道、高信任度且經驗豐富的團隊、頻繁整合(每天多次)、使用功能開關控制未完成功能
|
|
299
|
+
|
|
300
|
+
### 分支結構
|
|
301
|
+
|
|
302
|
+
```
|
|
303
|
+
main ────●─●─●─●─●─●─●──► (Single long-lived branch)
|
|
304
|
+
╲│╱ ╲│╱ ╲│╱
|
|
305
|
+
feature/* ● ● ● (Very short-lived, ≤2 days)
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### 分支類型
|
|
309
|
+
|
|
310
|
+
| 分支類型 | 目的 | 基礎分支 | 合併目標 | 生命週期 |
|
|
311
|
+
|---------|------|---------|----------|---------|
|
|
312
|
+
| `main` | 主幹 | - | - | 永久 |
|
|
313
|
+
| `feature/*` | 小型變更 | `main` | `main` | ≤2 天 |
|
|
314
|
+
|
|
315
|
+
### 工作流程步驟
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
# 1. Create short-lived branch
|
|
319
|
+
git checkout main
|
|
320
|
+
git pull origin main
|
|
321
|
+
git checkout -b feature/add-validation
|
|
322
|
+
|
|
323
|
+
# 2. Make small, atomic change
|
|
324
|
+
git add .
|
|
325
|
+
git commit -m "feat(validation): add email format check"
|
|
326
|
+
|
|
327
|
+
# 3. Push and create PR (same day)
|
|
328
|
+
git push -u origin feature/add-validation
|
|
329
|
+
|
|
330
|
+
# 4. Merge quickly after review (within hours)
|
|
331
|
+
# Prefer rebase to keep linear history
|
|
332
|
+
git checkout main
|
|
333
|
+
git pull origin main
|
|
334
|
+
git rebase main feature/add-validation
|
|
335
|
+
git checkout main
|
|
336
|
+
git merge --ff-only feature/add-validation
|
|
337
|
+
git push origin main
|
|
338
|
+
|
|
339
|
+
# 5. Delete branch immediately
|
|
340
|
+
git branch -d feature/add-validation
|
|
341
|
+
git push origin --delete feature/add-validation
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### 關鍵原則
|
|
345
|
+
|
|
346
|
+
1. **頻繁整合**(每天多次)
|
|
347
|
+
2. **保持分支短命**(≤2 天)
|
|
348
|
+
3. **使用功能開關**控制未完成功能
|
|
349
|
+
4. **自動化一切**(測試、建置、部署)
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
## Trunk-Based Development 與功能開關
|
|
354
|
+
|
|
355
|
+
### 為何功能開關不可或缺
|
|
356
|
+
|
|
357
|
+
功能開關使 trunk-based development 能夠將**部署**與**發布**解耦:
|
|
358
|
+
|
|
359
|
+
```
|
|
360
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
361
|
+
│ 程式碼生命週期 │
|
|
362
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
363
|
+
│ 合併到 main 部署到正式環境 對使用者啟用 │
|
|
364
|
+
│ │ │ │ │
|
|
365
|
+
│ ▼ ▼ ▼ │
|
|
366
|
+
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
|
367
|
+
│ │ 提交 │─────►│ 部署 │───────►│ 發布 │ │
|
|
368
|
+
│ │ (程式碼) │ │ (二進位) │ │ (使用者) │ │
|
|
369
|
+
│ └─────────┘ └─────────┘ └─────────┘ │
|
|
370
|
+
│ └────── 功能開關 ──────┘ │
|
|
371
|
+
│ (解耦) │
|
|
372
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### 功能開關生命週期
|
|
376
|
+
|
|
377
|
+
| 階段 | 開關狀態 | 動作 |
|
|
378
|
+
|------|---------|------|
|
|
379
|
+
| 開發 | 關閉 | 程式碼已合併但隱藏 |
|
|
380
|
+
| 內部測試 | 對團隊開啟 | QA 和 dogfooding |
|
|
381
|
+
| Beta | 對 beta 使用者開啟 | 收集回饋 |
|
|
382
|
+
| 逐步推出 | 1% → 10% → 50% → 100% | 監控指標 |
|
|
383
|
+
| 完整發布 | 對所有人開啟 | 預設行為 |
|
|
384
|
+
| 清理 | 移除開關 | 技術債清理 |
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## Ship/Show/Ask 決策模型
|
|
389
|
+
|
|
390
|
+
### 概述
|
|
391
|
+
|
|
392
|
+
並非所有變更都需要相同的審查流程。Ship/Show/Ask 模型幫助團隊決定:
|
|
393
|
+
|
|
394
|
+
| 模式 | 說明 | 適用時機 |
|
|
395
|
+
|------|------|---------|
|
|
396
|
+
| **SHIP** | 直接推送到 main | 低風險、高信心 |
|
|
397
|
+
| **SHOW** | 合併後通知團隊 | 中等風險、需要知會 |
|
|
398
|
+
| **ASK** | 開 PR,等待審批 | 高風險、需要討論 |
|
|
399
|
+
|
|
400
|
+
### 何時 Ship(直接推送)
|
|
401
|
+
|
|
402
|
+
- 文件中的錯字修正
|
|
403
|
+
- 新增除錯日誌
|
|
404
|
+
- 更新依賴(CI 通過時)
|
|
405
|
+
- 明顯的 bug 修復(有測試)
|
|
406
|
+
|
|
407
|
+
### 何時 Ask(PR 加阻塞審查)
|
|
408
|
+
|
|
409
|
+
- 架構決策
|
|
410
|
+
- 重大變更
|
|
411
|
+
- 安全敏感程式碼
|
|
412
|
+
- 共用函式庫的變更
|
|
413
|
+
|
|
414
|
+
---
|
|
415
|
+
|
|
416
|
+
## 堆疊式 PR 工作流程
|
|
417
|
+
|
|
418
|
+
### 什麼是堆疊式 PR?
|
|
419
|
+
|
|
420
|
+
堆疊式 PR 將大型功能拆分為可漸進審查的較小、相依的 pull request:
|
|
421
|
+
|
|
422
|
+
```
|
|
423
|
+
main ────●─────────────────────────────────────────►
|
|
424
|
+
╲
|
|
425
|
+
PR #1 (資料庫 schema) ────●
|
|
426
|
+
╲
|
|
427
|
+
PR #2 (API) ────●
|
|
428
|
+
╲
|
|
429
|
+
PR #3 (UI) ●
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### 何時使用堆疊式 PR
|
|
433
|
+
|
|
434
|
+
| 情境 | 推薦使用堆疊式 PR |
|
|
435
|
+
|------|-----------------|
|
|
436
|
+
| 功能 > 500 行 | ✅ 是 |
|
|
437
|
+
| 多個邏輯元件 | ✅ 是 |
|
|
438
|
+
| 需要早期回饋 | ✅ 是 |
|
|
439
|
+
| 簡單 bug 修復 | ❌ 否,使用單一 PR |
|
|
440
|
+
|
|
441
|
+
---
|
|
442
|
+
|
|
443
|
+
## 傳統式 PR 標題
|
|
444
|
+
|
|
445
|
+
### 格式
|
|
446
|
+
|
|
447
|
+
PR 標題應遵循與 commit 訊息相同的格式:
|
|
448
|
+
|
|
449
|
+
```
|
|
450
|
+
<type>(<scope>): <subject>
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
### 類型參考
|
|
454
|
+
|
|
455
|
+
| 類型 | 用途 | 範例 |
|
|
456
|
+
|------|------|------|
|
|
457
|
+
| `feat` | 新功能 | `feat(auth): 新增 OAuth2 登入` |
|
|
458
|
+
| `fix` | Bug 修復 | `fix(api): 處理空值回應` |
|
|
459
|
+
| `docs` | 文件 | `docs(readme): 更新安裝步驟` |
|
|
460
|
+
| `refactor` | 重構 | `refactor(utils): 抽取驗證邏輯` |
|
|
461
|
+
| `test` | 新增測試 | `test(auth): 新增登入單元測試` |
|
|
462
|
+
| `chore` | 維護 | `chore(deps): 更新 lodash 到 4.17.21` |
|
|
463
|
+
|
|
464
|
+
### 重大變更
|
|
465
|
+
|
|
466
|
+
用 `!` 在類型後面表示重大變更:
|
|
467
|
+
|
|
468
|
+
```
|
|
469
|
+
feat(api)!: 變更使用者端點的回應格式
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
## 開新分支前檢查清單
|
|
475
|
+
|
|
476
|
+
開始新功能開發前,完成以下檢查以避免常見問題。
|
|
477
|
+
|
|
478
|
+
### 適用於 GitFlow 和 GitHub Flow
|
|
479
|
+
|
|
480
|
+
#### 1. 確認無未合併分支
|
|
481
|
+
|
|
482
|
+
```bash
|
|
483
|
+
git branch --no-merged main
|
|
484
|
+
# For GitFlow, also check:
|
|
485
|
+
git branch --no-merged develop
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
- **如有未合併分支,必須先處理**(合併或關閉)
|
|
489
|
+
- **禁止在有未合併分支的情況下開新功能分支**
|
|
490
|
+
|
|
491
|
+
#### 2. 同步最新程式碼
|
|
492
|
+
|
|
493
|
+
```bash
|
|
494
|
+
git checkout main # or develop for GitFlow
|
|
495
|
+
git pull origin main
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
#### 3. 確認測試通過
|
|
499
|
+
|
|
500
|
+
```bash
|
|
501
|
+
# Run your project's test suite
|
|
502
|
+
npm test # Node.js
|
|
503
|
+
pytest # Python
|
|
504
|
+
./gradlew test # Java/Kotlin
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
#### 4. 建立分支
|
|
508
|
+
|
|
509
|
+
```bash
|
|
510
|
+
git checkout -b feature/description
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
### 為什麼重要
|
|
514
|
+
|
|
515
|
+
| 跳過檢查的後果 | 影響 |
|
|
516
|
+
|--------------|------|
|
|
517
|
+
| 修復散落各處 | `main` 仍有 bug |
|
|
518
|
+
| 功能互相依賴 | 新分支缺少前一個功能的程式碼 |
|
|
519
|
+
| 合併順序混亂 | 衝突變多、歷史難追蹤 |
|
|
520
|
+
| 測試不完整 | 每個分支只測自己的部分 |
|
|
521
|
+
|
|
522
|
+
### 適用於 Trunk-Based Development
|
|
523
|
+
|
|
524
|
+
Trunk-Based Development 因其短命分支特性(≤2 天)有**不同的要求**:
|
|
525
|
+
|
|
526
|
+
| 檢查項目 | 適用性 | 說明 |
|
|
527
|
+
|---------|-------|------|
|
|
528
|
+
| 確認無未合併分支 | ⚠️ **較不適用** | 設計上分支不應存在超過 2 天 |
|
|
529
|
+
| 同步最新程式碼 | ✅ **關鍵** | 因頻繁整合,更為重要 |
|
|
530
|
+
| 確認測試通過 | ✅ **關鍵** | 自動化是此工作流程的核心 |
|
|
531
|
+
|
|
532
|
+
**關鍵差異**:若在 Trunk-Based Development 中有超過 2 天的未合併分支,這本身就違反了工作流程原則。重點應放在**頻繁整合**而非檢查未合併分支。
|
|
533
|
+
|
|
534
|
+
---
|
|
535
|
+
|
|
536
|
+
## 分支命名慣例
|
|
537
|
+
|
|
538
|
+
### 標準格式
|
|
539
|
+
|
|
540
|
+
```
|
|
541
|
+
<type>/<short-description>
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
### 類型
|
|
545
|
+
|
|
546
|
+
| 類型 | 用途 | 範例 |
|
|
547
|
+
|------|------|------|
|
|
548
|
+
| `feature/` | 新功能 | `feature/oauth-login` |
|
|
549
|
+
| `fix/` 或 `bugfix/` | Bug 修復 | `fix/memory-leak` |
|
|
550
|
+
| `hotfix/` | 緊急正式環境修復 | `hotfix/security-patch` |
|
|
551
|
+
| `refactor/` | 程式碼重構 | `refactor/extract-service` |
|
|
552
|
+
| `docs/` | 僅文件更新 | `docs/api-reference` |
|
|
553
|
+
| `test/` | 測試新增 | `test/integration-tests` |
|
|
554
|
+
| `chore/` | 維護任務 | `chore/update-dependencies` |
|
|
555
|
+
| `release/` | 發布準備 (僅 GitFlow) | `release/v1.2.0` |
|
|
556
|
+
|
|
557
|
+
### 命名規則
|
|
558
|
+
|
|
559
|
+
1. **使用小寫**
|
|
560
|
+
2. **使用連字號分隔單詞**
|
|
561
|
+
3. **具描述性但簡潔**
|
|
562
|
+
4. **避免僅用 issue 編號**
|
|
563
|
+
|
|
564
|
+
**良好範例**:
|
|
565
|
+
```
|
|
566
|
+
feature/user-authentication
|
|
567
|
+
fix/null-pointer-in-payment
|
|
568
|
+
hotfix/critical-data-loss
|
|
569
|
+
refactor/database-connection-pool
|
|
570
|
+
docs/update-installation-guide
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
**不良範例**:
|
|
574
|
+
```
|
|
575
|
+
feature/123 # ❌ 沒有描述性
|
|
576
|
+
Fix-Bug # ❌ 非小寫,過於籠統
|
|
577
|
+
feature/add_new_feature # ❌ 使用底線,過於籠統
|
|
578
|
+
myFeature # ❌ 駝峰式命名,無類型前綴
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
---
|
|
582
|
+
|
|
583
|
+
## 合併策略
|
|
584
|
+
|
|
585
|
+
**專案必須為每種分支類型選擇一種**。
|
|
586
|
+
|
|
587
|
+
### 選項 1: 合併提交 (--no-ff)
|
|
588
|
+
|
|
589
|
+
**保留分支歷史**
|
|
590
|
+
|
|
591
|
+
```bash
|
|
592
|
+
git merge --no-ff feature/user-auth
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
**優點**:
|
|
596
|
+
- ✅ 完整保留歷史
|
|
597
|
+
- ✅ 易於還原整個功能
|
|
598
|
+
- ✅ 清楚的功能邊界
|
|
599
|
+
|
|
600
|
+
**缺點**:
|
|
601
|
+
- ❌ Git 日誌雜亂
|
|
602
|
+
- ❌ 複雜的圖形視覺化
|
|
603
|
+
|
|
604
|
+
**最適合**: GitFlow、長期功能分支
|
|
605
|
+
|
|
606
|
+
---
|
|
607
|
+
|
|
608
|
+
### 選項 2: 壓縮合併
|
|
609
|
+
|
|
610
|
+
**將所有提交合併為一個**
|
|
611
|
+
|
|
612
|
+
```bash
|
|
613
|
+
git merge --squash feature/user-auth
|
|
614
|
+
git commit -m "feat(auth): add user authentication"
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
**優點**:
|
|
618
|
+
- ✅ 乾淨、線性的歷史
|
|
619
|
+
- ✅ 每個功能一個提交
|
|
620
|
+
- ✅ 易於閱讀的 git 日誌
|
|
621
|
+
|
|
622
|
+
**缺點**:
|
|
623
|
+
- ❌ 失去詳細歷史
|
|
624
|
+
- ❌ 無法精選個別提交
|
|
625
|
+
|
|
626
|
+
**最適合**: GitHub Flow、功能分支
|
|
627
|
+
|
|
628
|
+
---
|
|
629
|
+
|
|
630
|
+
### 選項 3: 變基與快轉
|
|
631
|
+
|
|
632
|
+
**在目標分支上重播提交**
|
|
633
|
+
|
|
634
|
+
```bash
|
|
635
|
+
git rebase main feature/user-auth
|
|
636
|
+
git checkout main
|
|
637
|
+
git merge --ff-only feature/user-auth
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
**優點**:
|
|
641
|
+
- ✅ 線性、乾淨的歷史
|
|
642
|
+
- ✅ 保留個別提交
|
|
643
|
+
- ✅ 無合併提交
|
|
644
|
+
|
|
645
|
+
**缺點**:
|
|
646
|
+
- ❌ 改寫歷史(不要用於共享分支)
|
|
647
|
+
- ❌ 解決衝突可能繁瑣
|
|
648
|
+
|
|
649
|
+
**最適合**: Trunk-Based Development、短期分支
|
|
650
|
+
|
|
651
|
+
---
|
|
652
|
+
|
|
653
|
+
## 衝突解決
|
|
654
|
+
|
|
655
|
+
### 預防
|
|
656
|
+
|
|
657
|
+
1. **頻繁同步**
|
|
658
|
+
```bash
|
|
659
|
+
git checkout main
|
|
660
|
+
git pull origin main
|
|
661
|
+
git checkout feature/my-feature
|
|
662
|
+
git merge main # or git rebase main
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
2. **保持分支小型化**
|
|
666
|
+
- 避免長期功能分支
|
|
667
|
+
- 將大型功能拆分為小型 PR
|
|
668
|
+
|
|
669
|
+
3. **溝通**
|
|
670
|
+
- 宣告重大重構
|
|
671
|
+
- 協調共享檔案的修改
|
|
672
|
+
|
|
673
|
+
### 解決步驟
|
|
674
|
+
|
|
675
|
+
```bash
|
|
676
|
+
# 1. Attempt merge
|
|
677
|
+
git checkout main
|
|
678
|
+
git pull origin main
|
|
679
|
+
git checkout feature/my-feature
|
|
680
|
+
git merge main
|
|
681
|
+
|
|
682
|
+
# 2. Conflicts occur - Git marks them in files
|
|
683
|
+
# Open files and resolve conflicts:
|
|
684
|
+
# <<<<<<< HEAD
|
|
685
|
+
# Current branch changes
|
|
686
|
+
# =======
|
|
687
|
+
# Incoming changes
|
|
688
|
+
# >>>>>>> main
|
|
689
|
+
|
|
690
|
+
# 3. After resolving, stage files
|
|
691
|
+
git add resolved-file.js
|
|
692
|
+
|
|
693
|
+
# 4. Complete the merge
|
|
694
|
+
git commit -m "chore: resolve merge conflicts with main"
|
|
695
|
+
|
|
696
|
+
# 5. Test thoroughly
|
|
697
|
+
npm test
|
|
698
|
+
|
|
699
|
+
# 6. Push
|
|
700
|
+
git push origin feature/my-feature
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
---
|
|
704
|
+
|
|
705
|
+
## 標籤與發布
|
|
706
|
+
|
|
707
|
+
### 語義化版本
|
|
708
|
+
|
|
709
|
+
遵循 [Semantic Versioning 2.0.0](https://semver.org/):
|
|
710
|
+
|
|
711
|
+
```
|
|
712
|
+
MAJOR.MINOR.PATCH
|
|
713
|
+
|
|
714
|
+
例如: v2.3.1
|
|
715
|
+
```
|
|
716
|
+
|
|
717
|
+
- **MAJOR**: 重大變更(不相容的 API 變更)
|
|
718
|
+
- **MINOR**: 新功能(向後相容)
|
|
719
|
+
- **PATCH**: Bug 修復(向後相容)
|
|
720
|
+
|
|
721
|
+
### 建立標籤
|
|
722
|
+
|
|
723
|
+
```bash
|
|
724
|
+
# Annotated tag (recommended)
|
|
725
|
+
git tag -a v1.2.0 -m "Release version 1.2.0: Add OAuth2 support"
|
|
726
|
+
|
|
727
|
+
# Push tag to remote
|
|
728
|
+
git push origin v1.2.0
|
|
729
|
+
|
|
730
|
+
# Push all tags
|
|
731
|
+
git push origin --tags
|
|
732
|
+
|
|
733
|
+
# List tags
|
|
734
|
+
git tag -l
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
### 預發布版本
|
|
738
|
+
|
|
739
|
+
```
|
|
740
|
+
v1.2.0-alpha.1 # Alpha release
|
|
741
|
+
v1.2.0-beta.2 # Beta release
|
|
742
|
+
v1.2.0-rc.1 # Release candidate
|
|
743
|
+
```
|
|
744
|
+
|
|
745
|
+
---
|
|
746
|
+
|
|
747
|
+
## 保護分支
|
|
748
|
+
|
|
749
|
+
設定分支保護規則:
|
|
750
|
+
|
|
751
|
+
### 建議的 `main`/`develop` 保護:
|
|
752
|
+
|
|
753
|
+
- ✅ **需要 pull request 審查** (1-2 位審查者)
|
|
754
|
+
- ✅ **需要狀態檢查通過** (CI 測試、linting)
|
|
755
|
+
- ✅ **需要分支保持最新** 才能合併
|
|
756
|
+
- ✅ **管理員也受限制**
|
|
757
|
+
- ❌ **不允許強制推送**
|
|
758
|
+
- ❌ **不允許刪除**
|
|
759
|
+
|
|
760
|
+
**設定範例 (GitHub)**:
|
|
761
|
+
```
|
|
762
|
+
Settings → Branches → Branch protection rules
|
|
763
|
+
|
|
764
|
+
Rule: main
|
|
765
|
+
☑ Require pull request before merging
|
|
766
|
+
☑ Require approvals: 1
|
|
767
|
+
☑ Require status checks before merging
|
|
768
|
+
☑ Require branches to be up to date
|
|
769
|
+
☑ Status checks: CI/Build, Lint, Tests
|
|
770
|
+
☑ Do not allow bypassing the above settings
|
|
771
|
+
☐ Allow force pushes
|
|
772
|
+
☐ Allow deletions
|
|
773
|
+
```
|
|
774
|
+
|
|
775
|
+
---
|
|
776
|
+
|
|
777
|
+
## Pull Request 工作流程
|
|
778
|
+
|
|
779
|
+
### PR 建立檢查清單
|
|
780
|
+
|
|
781
|
+
- [ ] **標題遵循提交慣例** (例如 `feat(auth): add OAuth2`)
|
|
782
|
+
- [ ] **描述說明原因** (不只是做了什麼)
|
|
783
|
+
- [ ] **連結到 issue** (例如 "Closes #123")
|
|
784
|
+
- [ ] **新功能包含測試**
|
|
785
|
+
- [ ] **必要時更新文件**
|
|
786
|
+
- [ ] **在描述中標示重大變更**
|
|
787
|
+
- [ ] **UI 變更包含截圖/GIF**
|
|
788
|
+
|
|
789
|
+
### PR 描述範本
|
|
790
|
+
|
|
791
|
+
```markdown
|
|
792
|
+
## What
|
|
793
|
+
|
|
794
|
+
[簡短描述此 PR 做了什麼]
|
|
795
|
+
|
|
796
|
+
## Why
|
|
797
|
+
|
|
798
|
+
[說明為什麼需要此變更]
|
|
799
|
+
|
|
800
|
+
## Changes
|
|
801
|
+
|
|
802
|
+
- [主要變更的條列清單]
|
|
803
|
+
- [用 ⚠️ 標記重大變更]
|
|
804
|
+
|
|
805
|
+
## Testing
|
|
806
|
+
|
|
807
|
+
- [ ] 已新增/更新單元測試
|
|
808
|
+
- [ ] 整合測試通過
|
|
809
|
+
- [ ] 已執行手動測試
|
|
810
|
+
|
|
811
|
+
## Screenshots (if applicable)
|
|
812
|
+
|
|
813
|
+
[為 UI 變更新增截圖]
|
|
814
|
+
|
|
815
|
+
## Related Issues
|
|
816
|
+
|
|
817
|
+
Closes #123
|
|
818
|
+
Refs #456
|
|
819
|
+
```
|
|
820
|
+
|
|
821
|
+
---
|
|
822
|
+
|
|
823
|
+
## Git 指令參考
|
|
824
|
+
|
|
825
|
+
### 日常操作
|
|
826
|
+
|
|
827
|
+
```bash
|
|
828
|
+
# Check status
|
|
829
|
+
git status
|
|
830
|
+
|
|
831
|
+
# View changes
|
|
832
|
+
git diff
|
|
833
|
+
git diff --staged
|
|
834
|
+
|
|
835
|
+
# Stage changes
|
|
836
|
+
git add file.js
|
|
837
|
+
git add .
|
|
838
|
+
|
|
839
|
+
# Commit
|
|
840
|
+
git commit -m "feat: add feature"
|
|
841
|
+
|
|
842
|
+
# Push
|
|
843
|
+
git push origin feature/my-feature
|
|
844
|
+
|
|
845
|
+
# Pull latest
|
|
846
|
+
git pull origin main
|
|
847
|
+
|
|
848
|
+
# View history
|
|
849
|
+
git log --oneline --graph --all
|
|
850
|
+
```
|
|
851
|
+
|
|
852
|
+
### 分支操作
|
|
853
|
+
|
|
854
|
+
```bash
|
|
855
|
+
# List branches
|
|
856
|
+
git branch -a
|
|
857
|
+
|
|
858
|
+
# Create branch
|
|
859
|
+
git checkout -b feature/new-feature
|
|
860
|
+
|
|
861
|
+
# Switch branch
|
|
862
|
+
git checkout main
|
|
863
|
+
|
|
864
|
+
# Delete local branch
|
|
865
|
+
git branch -d feature/old-feature
|
|
866
|
+
|
|
867
|
+
# Delete remote branch
|
|
868
|
+
git push origin --delete feature/old-feature
|
|
869
|
+
|
|
870
|
+
# Rename branch
|
|
871
|
+
git branch -m old-name new-name
|
|
872
|
+
```
|
|
873
|
+
|
|
874
|
+
### 進階操作
|
|
875
|
+
|
|
876
|
+
```bash
|
|
877
|
+
# Stash changes
|
|
878
|
+
git stash
|
|
879
|
+
git stash pop
|
|
880
|
+
|
|
881
|
+
# Cherry-pick commit
|
|
882
|
+
git cherry-pick <commit-hash>
|
|
883
|
+
|
|
884
|
+
# Revert commit
|
|
885
|
+
git revert <commit-hash>
|
|
886
|
+
|
|
887
|
+
# Reset to previous commit (dangerous!)
|
|
888
|
+
git reset --hard <commit-hash>
|
|
889
|
+
|
|
890
|
+
# Amend last commit
|
|
891
|
+
git commit --amend
|
|
892
|
+
|
|
893
|
+
# Interactive rebase (clean up commits)
|
|
894
|
+
git rebase -i HEAD~3
|
|
895
|
+
```
|
|
896
|
+
|
|
897
|
+
---
|
|
898
|
+
|
|
899
|
+
## 專案設定範本
|
|
900
|
+
|
|
901
|
+
在 `CONTRIBUTING.md` 中記錄您的工作流程:
|
|
902
|
+
|
|
903
|
+
```markdown
|
|
904
|
+
## Git Workflow
|
|
905
|
+
|
|
906
|
+
### Branching Strategy
|
|
907
|
+
This project uses **[GitFlow / GitHub Flow / Trunk-Based Development]**.
|
|
908
|
+
|
|
909
|
+
### Branch Types
|
|
910
|
+
- `main`: Production code
|
|
911
|
+
- `develop`: Development mainline (GitFlow only)
|
|
912
|
+
- `feature/*`: New features
|
|
913
|
+
- `fix/*`: Bug fixes
|
|
914
|
+
- `hotfix/*`: Urgent production fixes
|
|
915
|
+
|
|
916
|
+
### Branch Naming
|
|
917
|
+
Format: `<type>/<description>`
|
|
918
|
+
Example: `feature/oauth-login`, `fix/memory-leak`
|
|
919
|
+
|
|
920
|
+
### Merge Strategy
|
|
921
|
+
- Feature branches: **[Squash / Merge commit / Rebase]**
|
|
922
|
+
- Release branches: Merge commit (--no-ff)
|
|
923
|
+
- Hotfix branches: Merge commit (--no-ff)
|
|
924
|
+
|
|
925
|
+
### Protected Branches
|
|
926
|
+
- `main`: Requires 1 review, CI must pass
|
|
927
|
+
- `develop`: Requires 1 review (if using GitFlow)
|
|
928
|
+
|
|
929
|
+
### Pull Request Process
|
|
930
|
+
1. Create branch from `[main/develop]`
|
|
931
|
+
2. Make changes and push
|
|
932
|
+
3. Open PR with description
|
|
933
|
+
4. Wait for review approval
|
|
934
|
+
5. Ensure CI passes
|
|
935
|
+
6. Merge using **[strategy]**
|
|
936
|
+
```
|
|
937
|
+
|
|
938
|
+
---
|
|
939
|
+
|
|
940
|
+
## 疑難排解
|
|
941
|
+
|
|
942
|
+
### 不小心提交到錯誤的分支
|
|
943
|
+
|
|
944
|
+
```bash
|
|
945
|
+
# Undo last commit but keep changes
|
|
946
|
+
git reset --soft HEAD~1
|
|
947
|
+
|
|
948
|
+
# Switch to correct branch
|
|
949
|
+
git checkout correct-branch
|
|
950
|
+
|
|
951
|
+
# Commit changes
|
|
952
|
+
git add .
|
|
953
|
+
git commit -m "feat: add feature"
|
|
954
|
+
```
|
|
955
|
+
|
|
956
|
+
### 需要從 main 更新分支
|
|
957
|
+
|
|
958
|
+
```bash
|
|
959
|
+
# Option 1: Merge (preserves history)
|
|
960
|
+
git checkout feature/my-feature
|
|
961
|
+
git merge main
|
|
962
|
+
|
|
963
|
+
# Option 2: Rebase (cleaner history)
|
|
964
|
+
git checkout feature/my-feature
|
|
965
|
+
git rebase main
|
|
966
|
+
```
|
|
967
|
+
|
|
968
|
+
### 不小心強制推送到保護分支
|
|
969
|
+
|
|
970
|
+
```bash
|
|
971
|
+
# ⚠️ Contact team immediately
|
|
972
|
+
# ⚠️ Check if branch protection was enabled
|
|
973
|
+
# ⚠️ Restore from reflog if needed:
|
|
974
|
+
git reflog
|
|
975
|
+
git reset --hard <previous-commit-hash>
|
|
976
|
+
```
|
|
977
|
+
|
|
978
|
+
---
|
|
979
|
+
|
|
980
|
+
## 相關標準
|
|
981
|
+
|
|
982
|
+
- [Commit Message Guide](../../../../core/commit-message-guide.md) - Commit 訊息規範
|
|
983
|
+
- [Code Check-in Standards](../../../../core/checkin-standards.md) - 程式碼簽入標準
|
|
984
|
+
- [Versioning Standard](../../../../core/versioning.md) - 語義化版本標準
|
|
985
|
+
- [Changelog Standards](../../../../core/changelog-standards.md) - 變更日誌標準
|
|
986
|
+
|
|
987
|
+
---
|
|
988
|
+
|
|
989
|
+
## 版本歷史
|
|
990
|
+
|
|
991
|
+
| 版本 | 日期 | 變更 |
|
|
992
|
+
|------|------|------|
|
|
993
|
+
| 1.3.0 | 2026-01-24 | 新增:Trunk-Based + 功能開關整合、Ship/Show/Ask 決策模型、堆疊式 PR、傳統式 PR 標題 |
|
|
994
|
+
| 1.2.1 | 2025-12-24 | 新增:相關標準區段 |
|
|
995
|
+
| 1.2.0 | 2025-12-16 | 新增:工作流程策略決策樹、選擇矩陣和快速選擇指南 |
|
|
996
|
+
| 1.1.0 | 2025-12-08 | 新增:開分支前檢查清單區段,含工作流程特定指引 |
|
|
997
|
+
| 1.0.0 | 2025-11-12 | 初始 Git 工作流程標準 |
|
|
998
|
+
|
|
999
|
+
---
|
|
1000
|
+
|
|
1001
|
+
## 參考資料
|
|
1002
|
+
|
|
1003
|
+
- [GitFlow Original Article](https://nvie.com/posts/a-successful-git-branching-model/)
|
|
1004
|
+
- [GitHub Flow Guide](https://guides.github.com/introduction/flow/)
|
|
1005
|
+
- [Trunk-Based Development](https://trunkbaseddevelopment.com/)
|
|
1006
|
+
- [Semantic Versioning](https://semver.org/)
|
|
1007
|
+
- [Ship/Show/Ask](https://martinfowler.com/articles/ship-show-ask.html) - Rouan Wilsenach 的程式碼變更決策模型
|
|
1008
|
+
- [功能開關最佳實踐](https://launchdarkly.com/blog/best-practices-feature-flags/) - LaunchDarkly 的全面指南
|
|
1009
|
+
- [堆疊式 Diffs](https://graphite.dev/guides/stacked-diffs) - Graphite 的堆疊式 PR 工作流程指南
|
|
1010
|
+
- [傳統式 Commits](https://www.conventionalcommits.org/) - Commit 訊息規範
|
|
1011
|
+
|
|
1012
|
+
---
|
|
1013
|
+
|
|
1014
|
+
## 授權
|
|
1015
|
+
|
|
1016
|
+
本標準以 [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) 授權發布。
|