universal-dev-standards 3.5.1-beta.1 → 3.5.1-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/uds.js +2 -0
- package/bundled/core/ai-instruction-standards.md +205 -0
- package/bundled/core/anti-hallucination.md +684 -0
- package/bundled/core/changelog-standards.md +556 -0
- package/bundled/core/checkin-standards.md +935 -0
- package/bundled/core/code-review-checklist.md +684 -0
- package/bundled/core/commit-message-guide.md +915 -0
- package/bundled/core/documentation-structure.md +1117 -0
- package/bundled/core/documentation-writing-standards.md +487 -0
- package/bundled/core/error-code-standards.md +382 -0
- package/bundled/core/git-workflow.md +859 -0
- package/bundled/core/logging-standards.md +323 -0
- package/bundled/core/project-structure.md +354 -0
- package/bundled/core/refactoring-standards.md +636 -0
- package/bundled/core/spec-driven-development.md +207 -0
- package/bundled/core/test-completeness-dimensions.md +536 -0
- package/bundled/core/test-driven-development.md +995 -0
- package/bundled/core/testing-standards.md +3061 -0
- package/bundled/core/versioning.md +902 -0
- package/bundled/locales/README.md +88 -0
- package/bundled/locales/zh-CN/CHANGELOG.md +705 -0
- package/bundled/locales/zh-CN/CLAUDE.md +213 -0
- package/bundled/locales/zh-CN/MAINTENANCE.md +689 -0
- package/bundled/locales/zh-CN/README.md +707 -0
- package/bundled/locales/zh-CN/STANDARDS-MAPPING.md +177 -0
- package/bundled/locales/zh-CN/adoption/ADOPTION-GUIDE.md +392 -0
- package/bundled/locales/zh-CN/adoption/STATIC-DYNAMIC-GUIDE.md +302 -0
- package/bundled/locales/zh-CN/adoption/checklists/enterprise.md +332 -0
- package/bundled/locales/zh-CN/adoption/checklists/minimal.md +141 -0
- package/bundled/locales/zh-CN/adoption/checklists/recommended.md +272 -0
- package/bundled/locales/zh-CN/ai/MAINTENANCE.md +739 -0
- package/bundled/locales/zh-CN/ai/options/changelog/auto-generated.ai.yaml +76 -0
- package/bundled/locales/zh-CN/ai/options/changelog/keep-a-changelog.ai.yaml +99 -0
- package/bundled/locales/zh-CN/ai/options/code-review/automated-review.ai.yaml +120 -0
- package/bundled/locales/zh-CN/ai/options/code-review/pair-programming.ai.yaml +109 -0
- package/bundled/locales/zh-CN/ai/options/code-review/pr-review.ai.yaml +104 -0
- package/bundled/locales/zh-CN/ai/options/commit-message/bilingual.ai.yaml +105 -0
- package/bundled/locales/zh-CN/ai/options/commit-message/english.ai.yaml +79 -0
- package/bundled/locales/zh-CN/ai/options/commit-message/traditional-chinese.ai.yaml +100 -0
- package/bundled/locales/zh-CN/ai/options/documentation/api-docs.ai.yaml +140 -0
- package/bundled/locales/zh-CN/ai/options/documentation/markdown-docs.ai.yaml +89 -0
- package/bundled/locales/zh-CN/ai/options/documentation/wiki-style.ai.yaml +119 -0
- package/bundled/locales/zh-CN/ai/options/git-workflow/gitflow.ai.yaml +133 -0
- package/bundled/locales/zh-CN/ai/options/git-workflow/github-flow.ai.yaml +73 -0
- package/bundled/locales/zh-CN/ai/options/git-workflow/merge-commit.ai.yaml +88 -0
- package/bundled/locales/zh-CN/ai/options/git-workflow/rebase-ff.ai.yaml +113 -0
- package/bundled/locales/zh-CN/ai/options/git-workflow/squash-merge.ai.yaml +85 -0
- package/bundled/locales/zh-CN/ai/options/git-workflow/trunk-based.ai.yaml +117 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/dotnet.ai.yaml +108 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/go.ai.yaml +115 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/java.ai.yaml +113 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/kotlin.ai.yaml +123 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/nodejs.ai.yaml +101 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/php.ai.yaml +147 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/python.ai.yaml +116 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/ruby.ai.yaml +140 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/rust.ai.yaml +117 -0
- package/bundled/locales/zh-CN/ai/options/project-structure/swift.ai.yaml +143 -0
- package/bundled/locales/zh-CN/ai/options/testing/contract-testing.ai.yaml +254 -0
- package/bundled/locales/zh-CN/ai/options/testing/e2e-testing.ai.yaml +116 -0
- package/bundled/locales/zh-CN/ai/options/testing/industry-pyramid.ai.yaml +144 -0
- package/bundled/locales/zh-CN/ai/options/testing/integration-testing.ai.yaml +90 -0
- package/bundled/locales/zh-CN/ai/options/testing/istqb-framework.ai.yaml +108 -0
- package/bundled/locales/zh-CN/ai/options/testing/performance-testing.ai.yaml +272 -0
- package/bundled/locales/zh-CN/ai/options/testing/security-testing.ai.yaml +160 -0
- package/bundled/locales/zh-CN/ai/options/testing/system-testing.ai.yaml +101 -0
- package/bundled/locales/zh-CN/ai/options/testing/unit-testing.ai.yaml +82 -0
- package/bundled/locales/zh-CN/ai/standards/anti-hallucination.ai.yaml +145 -0
- package/bundled/locales/zh-CN/ai/standards/changelog.ai.yaml +146 -0
- package/bundled/locales/zh-CN/ai/standards/checkin-standards.ai.yaml +170 -0
- package/bundled/locales/zh-CN/ai/standards/code-review.ai.yaml +148 -0
- package/bundled/locales/zh-CN/ai/standards/commit-message.ai.yaml +175 -0
- package/bundled/locales/zh-CN/ai/standards/documentation-structure.ai.yaml +124 -0
- package/bundled/locales/zh-CN/ai/standards/documentation-writing-standards.ai.yaml +190 -0
- package/bundled/locales/zh-CN/ai/standards/error-codes.ai.yaml +139 -0
- package/bundled/locales/zh-CN/ai/standards/git-workflow.ai.yaml +95 -0
- package/bundled/locales/zh-CN/ai/standards/logging.ai.yaml +128 -0
- package/bundled/locales/zh-CN/ai/standards/project-structure.ai.yaml +134 -0
- package/bundled/locales/zh-CN/ai/standards/spec-driven-development.ai.yaml +169 -0
- package/bundled/locales/zh-CN/ai/standards/test-completeness-dimensions.ai.yaml +220 -0
- package/bundled/locales/zh-CN/ai/standards/testing.ai.yaml +137 -0
- package/bundled/locales/zh-CN/ai/standards/versioning.ai.yaml +211 -0
- package/bundled/locales/zh-CN/core/ai-instruction-standards.md +213 -0
- package/bundled/locales/zh-CN/core/anti-hallucination.md +691 -0
- package/bundled/locales/zh-CN/core/changelog-standards.md +147 -0
- package/bundled/locales/zh-CN/core/checkin-standards.md +943 -0
- package/bundled/locales/zh-CN/core/code-review-guide.md +693 -0
- package/bundled/locales/zh-CN/core/commit-message-guide.md +129 -0
- package/bundled/locales/zh-CN/core/documentation-structure.md +173 -0
- package/bundled/locales/zh-CN/core/documentation-writing-standards.md +495 -0
- package/bundled/locales/zh-CN/core/error-code-standards.md +180 -0
- package/bundled/locales/zh-CN/core/git-workflow.md +193 -0
- package/bundled/locales/zh-CN/core/logging-standards.md +174 -0
- package/bundled/locales/zh-CN/core/project-structure.md +184 -0
- package/bundled/locales/zh-CN/core/refactoring-standards.md +642 -0
- package/bundled/locales/zh-CN/core/spec-driven-development.md +215 -0
- package/bundled/locales/zh-CN/core/test-completeness-dimensions.md +544 -0
- package/bundled/locales/zh-CN/core/test-driven-development.md +1002 -0
- package/bundled/locales/zh-CN/core/testing-standards.md +170 -0
- package/bundled/locales/zh-CN/core/versioning.md +177 -0
- package/bundled/locales/zh-CN/docs/AI-AGENT-ROADMAP.md +303 -0
- package/bundled/locales/zh-CN/docs/CLI-INIT-OPTIONS.md +990 -0
- package/bundled/locales/zh-CN/docs/OPERATION-WORKFLOW.md +1064 -0
- package/bundled/locales/zh-CN/docs/USAGE-MODES-COMPARISON.md +333 -0
- package/bundled/locales/zh-CN/docs/WINDOWS-GUIDE.md +215 -0
- package/bundled/locales/zh-CN/integrations/codex/AGENTS.md +115 -0
- package/bundled/locales/zh-CN/integrations/codex/README.md +67 -0
- package/bundled/locales/zh-CN/integrations/gemini-cli/GEMINI.md +102 -0
- package/bundled/locales/zh-CN/integrations/gemini-cli/README.md +140 -0
- package/bundled/locales/zh-CN/integrations/github-copilot/COPILOT-CHAT-REFERENCE.md +269 -0
- package/bundled/locales/zh-CN/integrations/github-copilot/README.md +167 -0
- package/bundled/locales/zh-CN/integrations/github-copilot/copilot-instructions.md +263 -0
- package/bundled/locales/zh-CN/integrations/github-copilot/skills-mapping.md +192 -0
- package/bundled/locales/zh-CN/integrations/google-antigravity/INSTRUCTIONS.md +61 -0
- package/bundled/locales/zh-CN/integrations/google-antigravity/README.md +84 -0
- package/bundled/locales/zh-CN/integrations/opencode/AGENTS.md +111 -0
- package/bundled/locales/zh-CN/integrations/opencode/README.md +176 -0
- package/bundled/locales/zh-CN/integrations/opencode/skills-mapping.md +396 -0
- package/bundled/locales/zh-CN/integrations/openspec/AGENTS.md +301 -0
- package/bundled/locales/zh-CN/integrations/openspec/README.md +43 -0
- package/bundled/locales/zh-CN/integrations/spec-kit/AGENTS.md +184 -0
- package/bundled/locales/zh-CN/integrations/spec-kit/README.md +43 -0
- package/bundled/locales/zh-CN/options/commit-message/bilingual.md +161 -0
- package/bundled/locales/zh-CN/options/commit-message/english.md +137 -0
- package/bundled/locales/zh-CN/options/commit-message/traditional-chinese.md +162 -0
- package/bundled/locales/zh-CN/options/git-workflow/gitflow.md +147 -0
- package/bundled/locales/zh-CN/options/git-workflow/github-flow.md +124 -0
- package/bundled/locales/zh-CN/options/git-workflow/merge-commit.md +124 -0
- package/bundled/locales/zh-CN/options/git-workflow/rebase-ff.md +160 -0
- package/bundled/locales/zh-CN/options/git-workflow/squash-merge.md +117 -0
- package/bundled/locales/zh-CN/options/git-workflow/trunk-based.md +125 -0
- package/bundled/locales/zh-CN/options/project-structure/dotnet.md +183 -0
- package/bundled/locales/zh-CN/options/project-structure/go.md +226 -0
- package/bundled/locales/zh-CN/options/project-structure/java.md +213 -0
- package/bundled/locales/zh-CN/options/project-structure/nodejs.md +185 -0
- package/bundled/locales/zh-CN/options/project-structure/python.md +229 -0
- package/bundled/locales/zh-CN/options/testing/e2e-testing.md +207 -0
- package/bundled/locales/zh-CN/options/testing/integration-testing.md +230 -0
- package/bundled/locales/zh-CN/options/testing/system-testing.md +183 -0
- package/bundled/locales/zh-CN/options/testing/unit-testing.md +165 -0
- package/bundled/locales/zh-CN/skills/INTEGRATION-GUIDE.md +218 -0
- package/bundled/locales/zh-CN/skills/README.md +134 -0
- package/bundled/locales/zh-CN/skills/_shared/README.md +68 -0
- package/bundled/locales/zh-CN/skills/claude-code/CONTRIBUTING.template.md +151 -0
- package/bundled/locales/zh-CN/skills/claude-code/README.md +174 -0
- package/bundled/locales/zh-CN/skills/claude-code/ai-collaboration-standards/SKILL.md +175 -0
- package/bundled/locales/zh-CN/skills/claude-code/ai-collaboration-standards/anti-hallucination.md +223 -0
- package/bundled/locales/zh-CN/skills/claude-code/ai-collaboration-standards/certainty-labels.md +132 -0
- package/bundled/locales/zh-CN/skills/claude-code/changelog-guide/SKILL.md +237 -0
- package/bundled/locales/zh-CN/skills/claude-code/checkin-assistant/SKILL.md +407 -0
- package/bundled/locales/zh-CN/skills/claude-code/code-review-assistant/SKILL.md +154 -0
- package/bundled/locales/zh-CN/skills/claude-code/code-review-assistant/checkin-checklist.md +257 -0
- package/bundled/locales/zh-CN/skills/claude-code/code-review-assistant/review-checklist.md +246 -0
- package/bundled/locales/zh-CN/skills/claude-code/commands/bdd.md +142 -0
- package/bundled/locales/zh-CN/skills/claude-code/commands/methodology.md +274 -0
- package/bundled/locales/zh-CN/skills/claude-code/commit-standards/SKILL.md +191 -0
- package/bundled/locales/zh-CN/skills/claude-code/commit-standards/conventional-commits.md +264 -0
- package/bundled/locales/zh-CN/skills/claude-code/commit-standards/language-options.md +172 -0
- package/bundled/locales/zh-CN/skills/claude-code/documentation-guide/SKILL.md +421 -0
- package/bundled/locales/zh-CN/skills/claude-code/documentation-guide/documentation-structure.md +357 -0
- package/bundled/locales/zh-CN/skills/claude-code/documentation-guide/readme-template.md +412 -0
- package/bundled/locales/zh-CN/skills/claude-code/error-code-guide/SKILL.md +269 -0
- package/bundled/locales/zh-CN/skills/claude-code/git-workflow-guide/SKILL.md +218 -0
- package/bundled/locales/zh-CN/skills/claude-code/git-workflow-guide/branch-naming.md +220 -0
- package/bundled/locales/zh-CN/skills/claude-code/git-workflow-guide/git-workflow.md +321 -0
- package/bundled/locales/zh-CN/skills/claude-code/logging-guide/SKILL.md +285 -0
- package/bundled/locales/zh-CN/skills/claude-code/methodology-system/SKILL.md +131 -0
- package/bundled/locales/zh-CN/skills/claude-code/methodology-system/create-methodology.md +350 -0
- package/bundled/locales/zh-CN/skills/claude-code/methodology-system/runtime.md +279 -0
- package/bundled/locales/zh-CN/skills/claude-code/project-structure-guide/SKILL.md +143 -0
- package/bundled/locales/zh-CN/skills/claude-code/project-structure-guide/language-patterns.md +271 -0
- package/bundled/locales/zh-CN/skills/claude-code/refactoring-assistant/SKILL.md +162 -0
- package/bundled/locales/zh-CN/skills/claude-code/release-standards/SKILL.md +191 -0
- package/bundled/locales/zh-CN/skills/claude-code/release-standards/changelog-format.md +247 -0
- package/bundled/locales/zh-CN/skills/claude-code/release-standards/release-workflow.md +345 -0
- package/bundled/locales/zh-CN/skills/claude-code/release-standards/semantic-versioning.md +250 -0
- package/bundled/locales/zh-CN/skills/claude-code/requirement-assistant/SKILL.md +227 -0
- package/bundled/locales/zh-CN/skills/claude-code/requirement-assistant/requirement-checklist.md +325 -0
- package/bundled/locales/zh-CN/skills/claude-code/requirement-assistant/requirement-writing.md +399 -0
- package/bundled/locales/zh-CN/skills/claude-code/spec-driven-dev/SKILL.md +243 -0
- package/bundled/locales/zh-CN/skills/claude-code/tdd-assistant/SKILL.md +332 -0
- package/bundled/locales/zh-CN/skills/claude-code/tdd-assistant/language-examples.md +639 -0
- package/bundled/locales/zh-CN/skills/claude-code/tdd-assistant/tdd-workflow.md +486 -0
- package/bundled/locales/zh-CN/skills/claude-code/test-coverage-assistant/SKILL.md +282 -0
- package/bundled/locales/zh-CN/skills/claude-code/testing-guide/SKILL.md +234 -0
- package/bundled/locales/zh-CN/skills/claude-code/testing-guide/testing-pyramid.md +448 -0
- package/bundled/locales/zh-CN/skills/cline/README.md +58 -0
- package/bundled/locales/zh-CN/skills/copilot/README.md +61 -0
- package/bundled/locales/zh-CN/skills/copilot/copilot-instructions.md +79 -0
- package/bundled/locales/zh-CN/skills/cursor/README.md +58 -0
- package/bundled/locales/zh-CN/skills/windsurf/README.md +59 -0
- package/bundled/locales/zh-TW/CHANGELOG.md +707 -0
- package/bundled/locales/zh-TW/CLAUDE.md +213 -0
- package/bundled/locales/zh-TW/MAINTENANCE.md +683 -0
- package/bundled/locales/zh-TW/README.md +687 -0
- package/bundled/locales/zh-TW/STANDARDS-MAPPING.md +177 -0
- package/bundled/locales/zh-TW/adoption/ADOPTION-GUIDE.md +392 -0
- package/bundled/locales/zh-TW/adoption/STATIC-DYNAMIC-GUIDE.md +299 -0
- package/bundled/locales/zh-TW/adoption/checklists/enterprise.md +332 -0
- package/bundled/locales/zh-TW/adoption/checklists/minimal.md +141 -0
- package/bundled/locales/zh-TW/adoption/checklists/recommended.md +272 -0
- package/bundled/locales/zh-TW/ai/MAINTENANCE.md +754 -0
- package/bundled/locales/zh-TW/ai/options/changelog/auto-generated.ai.yaml +76 -0
- package/bundled/locales/zh-TW/ai/options/changelog/keep-a-changelog.ai.yaml +99 -0
- package/bundled/locales/zh-TW/ai/options/code-review/automated-review.ai.yaml +120 -0
- package/bundled/locales/zh-TW/ai/options/code-review/pair-programming.ai.yaml +109 -0
- package/bundled/locales/zh-TW/ai/options/code-review/pr-review.ai.yaml +104 -0
- package/bundled/locales/zh-TW/ai/options/commit-message/bilingual.ai.yaml +105 -0
- package/bundled/locales/zh-TW/ai/options/commit-message/english.ai.yaml +79 -0
- package/bundled/locales/zh-TW/ai/options/commit-message/traditional-chinese.ai.yaml +100 -0
- package/bundled/locales/zh-TW/ai/options/documentation/api-docs.ai.yaml +140 -0
- package/bundled/locales/zh-TW/ai/options/documentation/markdown-docs.ai.yaml +89 -0
- package/bundled/locales/zh-TW/ai/options/documentation/wiki-style.ai.yaml +119 -0
- package/bundled/locales/zh-TW/ai/options/git-workflow/gitflow.ai.yaml +133 -0
- package/bundled/locales/zh-TW/ai/options/git-workflow/github-flow.ai.yaml +73 -0
- package/bundled/locales/zh-TW/ai/options/git-workflow/merge-commit.ai.yaml +88 -0
- package/bundled/locales/zh-TW/ai/options/git-workflow/rebase-ff.ai.yaml +113 -0
- package/bundled/locales/zh-TW/ai/options/git-workflow/squash-merge.ai.yaml +85 -0
- package/bundled/locales/zh-TW/ai/options/git-workflow/trunk-based.ai.yaml +117 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/dotnet.ai.yaml +108 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/go.ai.yaml +115 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/java.ai.yaml +113 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/kotlin.ai.yaml +123 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/nodejs.ai.yaml +101 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/php.ai.yaml +147 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/python.ai.yaml +116 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/ruby.ai.yaml +140 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/rust.ai.yaml +117 -0
- package/bundled/locales/zh-TW/ai/options/project-structure/swift.ai.yaml +143 -0
- package/bundled/locales/zh-TW/ai/options/testing/contract-testing.ai.yaml +254 -0
- package/bundled/locales/zh-TW/ai/options/testing/e2e-testing.ai.yaml +116 -0
- package/bundled/locales/zh-TW/ai/options/testing/industry-pyramid.ai.yaml +144 -0
- package/bundled/locales/zh-TW/ai/options/testing/integration-testing.ai.yaml +90 -0
- package/bundled/locales/zh-TW/ai/options/testing/istqb-framework.ai.yaml +108 -0
- package/bundled/locales/zh-TW/ai/options/testing/performance-testing.ai.yaml +272 -0
- package/bundled/locales/zh-TW/ai/options/testing/security-testing.ai.yaml +160 -0
- package/bundled/locales/zh-TW/ai/options/testing/system-testing.ai.yaml +101 -0
- package/bundled/locales/zh-TW/ai/options/testing/unit-testing.ai.yaml +82 -0
- package/bundled/locales/zh-TW/ai/standards/anti-hallucination.ai.yaml +145 -0
- package/bundled/locales/zh-TW/ai/standards/changelog.ai.yaml +146 -0
- package/bundled/locales/zh-TW/ai/standards/checkin-standards.ai.yaml +170 -0
- package/bundled/locales/zh-TW/ai/standards/code-review.ai.yaml +148 -0
- package/bundled/locales/zh-TW/ai/standards/commit-message.ai.yaml +175 -0
- package/bundled/locales/zh-TW/ai/standards/documentation-structure.ai.yaml +124 -0
- package/bundled/locales/zh-TW/ai/standards/documentation-writing-standards.ai.yaml +190 -0
- package/bundled/locales/zh-TW/ai/standards/error-codes.ai.yaml +139 -0
- package/bundled/locales/zh-TW/ai/standards/git-workflow.ai.yaml +95 -0
- package/bundled/locales/zh-TW/ai/standards/logging.ai.yaml +128 -0
- package/bundled/locales/zh-TW/ai/standards/project-structure.ai.yaml +134 -0
- package/bundled/locales/zh-TW/ai/standards/spec-driven-development.ai.yaml +169 -0
- package/bundled/locales/zh-TW/ai/standards/test-completeness-dimensions.ai.yaml +220 -0
- package/bundled/locales/zh-TW/ai/standards/testing.ai.yaml +137 -0
- package/bundled/locales/zh-TW/ai/standards/versioning.ai.yaml +211 -0
- package/bundled/locales/zh-TW/core/ai-instruction-standards.md +213 -0
- package/bundled/locales/zh-TW/core/anti-hallucination.md +691 -0
- package/bundled/locales/zh-TW/core/changelog-standards.md +564 -0
- package/bundled/locales/zh-TW/core/checkin-standards.md +943 -0
- package/bundled/locales/zh-TW/core/code-review-checklist.md +693 -0
- package/bundled/locales/zh-TW/core/commit-message-guide.md +809 -0
- package/bundled/locales/zh-TW/core/documentation-structure.md +1125 -0
- package/bundled/locales/zh-TW/core/documentation-writing-standards.md +495 -0
- package/bundled/locales/zh-TW/core/error-code-standards.md +384 -0
- package/bundled/locales/zh-TW/core/git-workflow.md +860 -0
- package/bundled/locales/zh-TW/core/logging-standards.md +325 -0
- package/bundled/locales/zh-TW/core/project-structure.md +362 -0
- package/bundled/locales/zh-TW/core/refactoring-standards.md +642 -0
- package/bundled/locales/zh-TW/core/spec-driven-development.md +215 -0
- package/bundled/locales/zh-TW/core/test-completeness-dimensions.md +544 -0
- package/bundled/locales/zh-TW/core/test-driven-development.md +1004 -0
- package/bundled/locales/zh-TW/core/testing-standards.md +2158 -0
- package/bundled/locales/zh-TW/core/versioning.md +909 -0
- package/bundled/locales/zh-TW/docs/AI-AGENT-ROADMAP.md +303 -0
- package/bundled/locales/zh-TW/docs/CLI-INIT-OPTIONS.md +990 -0
- package/bundled/locales/zh-TW/docs/OPERATION-WORKFLOW.md +1064 -0
- package/bundled/locales/zh-TW/docs/USAGE-MODES-COMPARISON.md +333 -0
- package/bundled/locales/zh-TW/docs/WINDOWS-GUIDE.md +215 -0
- package/bundled/locales/zh-TW/integrations/codex/AGENTS.md +115 -0
- package/bundled/locales/zh-TW/integrations/codex/README.md +113 -0
- package/bundled/locales/zh-TW/integrations/gemini-cli/GEMINI.md +102 -0
- package/bundled/locales/zh-TW/integrations/gemini-cli/README.md +140 -0
- package/bundled/locales/zh-TW/integrations/github-copilot/COPILOT-CHAT-REFERENCE.md +269 -0
- package/bundled/locales/zh-TW/integrations/github-copilot/README.md +167 -0
- package/bundled/locales/zh-TW/integrations/github-copilot/copilot-instructions.md +263 -0
- package/bundled/locales/zh-TW/integrations/github-copilot/skills-mapping.md +192 -0
- package/bundled/locales/zh-TW/integrations/google-antigravity/INSTRUCTIONS.md +61 -0
- package/bundled/locales/zh-TW/integrations/google-antigravity/README.md +84 -0
- package/bundled/locales/zh-TW/integrations/opencode/AGENTS.md +111 -0
- package/bundled/locales/zh-TW/integrations/opencode/README.md +176 -0
- package/bundled/locales/zh-TW/integrations/opencode/skills-mapping.md +396 -0
- package/bundled/locales/zh-TW/integrations/openspec/AGENTS.md +301 -0
- package/bundled/locales/zh-TW/integrations/openspec/README.md +43 -0
- package/bundled/locales/zh-TW/integrations/spec-kit/AGENTS.md +184 -0
- package/bundled/locales/zh-TW/integrations/spec-kit/README.md +43 -0
- package/bundled/locales/zh-TW/options/commit-message/bilingual.md +161 -0
- package/bundled/locales/zh-TW/options/commit-message/english.md +137 -0
- package/bundled/locales/zh-TW/options/commit-message/traditional-chinese.md +162 -0
- package/bundled/locales/zh-TW/options/git-workflow/gitflow.md +147 -0
- package/bundled/locales/zh-TW/options/git-workflow/github-flow.md +124 -0
- package/bundled/locales/zh-TW/options/git-workflow/merge-commit.md +124 -0
- package/bundled/locales/zh-TW/options/git-workflow/rebase-ff.md +160 -0
- package/bundled/locales/zh-TW/options/git-workflow/squash-merge.md +117 -0
- package/bundled/locales/zh-TW/options/git-workflow/trunk-based.md +125 -0
- package/bundled/locales/zh-TW/options/project-structure/dotnet.md +183 -0
- package/bundled/locales/zh-TW/options/project-structure/go.md +226 -0
- package/bundled/locales/zh-TW/options/project-structure/java.md +213 -0
- package/bundled/locales/zh-TW/options/project-structure/nodejs.md +185 -0
- package/bundled/locales/zh-TW/options/project-structure/python.md +229 -0
- package/bundled/locales/zh-TW/options/testing/e2e-testing.md +207 -0
- package/bundled/locales/zh-TW/options/testing/integration-testing.md +230 -0
- package/bundled/locales/zh-TW/options/testing/system-testing.md +183 -0
- package/bundled/locales/zh-TW/options/testing/unit-testing.md +165 -0
- package/bundled/locales/zh-TW/skills/INTEGRATION-GUIDE.md +218 -0
- package/bundled/locales/zh-TW/skills/README.md +132 -0
- package/bundled/locales/zh-TW/skills/_shared/README.md +68 -0
- package/bundled/locales/zh-TW/skills/claude-code/CONTRIBUTING.template.md +151 -0
- package/bundled/locales/zh-TW/skills/claude-code/README.md +174 -0
- package/bundled/locales/zh-TW/skills/claude-code/ai-collaboration-standards/SKILL.md +175 -0
- package/bundled/locales/zh-TW/skills/claude-code/ai-collaboration-standards/anti-hallucination.md +223 -0
- package/bundled/locales/zh-TW/skills/claude-code/ai-collaboration-standards/certainty-labels.md +132 -0
- package/bundled/locales/zh-TW/skills/claude-code/changelog-guide/SKILL.md +237 -0
- package/bundled/locales/zh-TW/skills/claude-code/checkin-assistant/SKILL.md +407 -0
- package/bundled/locales/zh-TW/skills/claude-code/code-review-assistant/SKILL.md +154 -0
- package/bundled/locales/zh-TW/skills/claude-code/code-review-assistant/checkin-checklist.md +257 -0
- package/bundled/locales/zh-TW/skills/claude-code/code-review-assistant/review-checklist.md +246 -0
- package/bundled/locales/zh-TW/skills/claude-code/commands/bdd.md +142 -0
- package/bundled/locales/zh-TW/skills/claude-code/commands/methodology.md +274 -0
- package/bundled/locales/zh-TW/skills/claude-code/commit-standards/SKILL.md +191 -0
- package/bundled/locales/zh-TW/skills/claude-code/commit-standards/conventional-commits.md +264 -0
- package/bundled/locales/zh-TW/skills/claude-code/commit-standards/language-options.md +172 -0
- package/bundled/locales/zh-TW/skills/claude-code/documentation-guide/SKILL.md +421 -0
- package/bundled/locales/zh-TW/skills/claude-code/documentation-guide/documentation-structure.md +357 -0
- package/bundled/locales/zh-TW/skills/claude-code/documentation-guide/readme-template.md +412 -0
- package/bundled/locales/zh-TW/skills/claude-code/error-code-guide/SKILL.md +269 -0
- package/bundled/locales/zh-TW/skills/claude-code/git-workflow-guide/SKILL.md +218 -0
- package/bundled/locales/zh-TW/skills/claude-code/git-workflow-guide/branch-naming.md +220 -0
- package/bundled/locales/zh-TW/skills/claude-code/git-workflow-guide/git-workflow.md +321 -0
- package/bundled/locales/zh-TW/skills/claude-code/logging-guide/SKILL.md +285 -0
- package/bundled/locales/zh-TW/skills/claude-code/methodology-system/SKILL.md +131 -0
- package/bundled/locales/zh-TW/skills/claude-code/methodology-system/create-methodology.md +350 -0
- package/bundled/locales/zh-TW/skills/claude-code/methodology-system/runtime.md +279 -0
- package/bundled/locales/zh-TW/skills/claude-code/project-structure-guide/SKILL.md +143 -0
- package/bundled/locales/zh-TW/skills/claude-code/project-structure-guide/language-patterns.md +271 -0
- package/bundled/locales/zh-TW/skills/claude-code/refactoring-assistant/SKILL.md +162 -0
- package/bundled/locales/zh-TW/skills/claude-code/release-standards/SKILL.md +191 -0
- package/bundled/locales/zh-TW/skills/claude-code/release-standards/changelog-format.md +247 -0
- package/bundled/locales/zh-TW/skills/claude-code/release-standards/release-workflow.md +345 -0
- package/bundled/locales/zh-TW/skills/claude-code/release-standards/semantic-versioning.md +250 -0
- package/bundled/locales/zh-TW/skills/claude-code/requirement-assistant/SKILL.md +227 -0
- package/bundled/locales/zh-TW/skills/claude-code/requirement-assistant/requirement-checklist.md +325 -0
- package/bundled/locales/zh-TW/skills/claude-code/requirement-assistant/requirement-writing.md +399 -0
- package/bundled/locales/zh-TW/skills/claude-code/spec-driven-dev/SKILL.md +243 -0
- package/bundled/locales/zh-TW/skills/claude-code/tdd-assistant/SKILL.md +332 -0
- package/bundled/locales/zh-TW/skills/claude-code/tdd-assistant/language-examples.md +639 -0
- package/bundled/locales/zh-TW/skills/claude-code/tdd-assistant/tdd-workflow.md +486 -0
- package/bundled/locales/zh-TW/skills/claude-code/test-coverage-assistant/SKILL.md +282 -0
- package/bundled/locales/zh-TW/skills/claude-code/testing-guide/SKILL.md +234 -0
- package/bundled/locales/zh-TW/skills/claude-code/testing-guide/testing-pyramid.md +448 -0
- package/bundled/locales/zh-TW/skills/cline/README.md +58 -0
- package/bundled/locales/zh-TW/skills/copilot/README.md +61 -0
- package/bundled/locales/zh-TW/skills/copilot/copilot-instructions.md +79 -0
- package/bundled/locales/zh-TW/skills/cursor/README.md +58 -0
- package/bundled/locales/zh-TW/skills/windsurf/README.md +59 -0
- package/bundled/skills/claude-code/CONTRIBUTING.template.md +141 -0
- package/bundled/skills/claude-code/README.md +196 -0
- package/bundled/skills/claude-code/ai/standards/checkin.ai.yaml +21 -0
- package/bundled/skills/claude-code/ai/standards/commit.ai.yaml +20 -0
- package/bundled/skills/claude-code/ai/standards/refactoring.ai.yaml +34 -0
- package/bundled/skills/claude-code/ai/standards/testing.ai.yaml +41 -0
- package/bundled/skills/claude-code/ai-collaboration-standards/SKILL.md +175 -0
- package/bundled/skills/claude-code/ai-collaboration-standards/anti-hallucination.md +215 -0
- package/bundled/skills/claude-code/ai-collaboration-standards/certainty-labels.md +124 -0
- package/bundled/skills/claude-code/changelog-guide/SKILL.md +232 -0
- package/bundled/skills/claude-code/checkin-assistant/SKILL.md +402 -0
- package/bundled/skills/claude-code/code-review-assistant/SKILL.md +220 -0
- package/bundled/skills/claude-code/code-review-assistant/checkin-checklist.md +249 -0
- package/bundled/skills/claude-code/code-review-assistant/review-checklist.md +238 -0
- package/bundled/skills/claude-code/commands/README.md +78 -0
- package/bundled/skills/claude-code/commands/bdd.md +142 -0
- package/bundled/skills/claude-code/commands/changelog.md +57 -0
- package/bundled/skills/claude-code/commands/check.md +91 -0
- package/bundled/skills/claude-code/commands/commit.md +48 -0
- package/bundled/skills/claude-code/commands/config.md +97 -0
- package/bundled/skills/claude-code/commands/coverage.md +58 -0
- package/bundled/skills/claude-code/commands/docs.md +75 -0
- package/bundled/skills/claude-code/commands/init.md +88 -0
- package/bundled/skills/claude-code/commands/methodology.md +268 -0
- package/bundled/skills/claude-code/commands/release.md +50 -0
- package/bundled/skills/claude-code/commands/requirement.md +54 -0
- package/bundled/skills/claude-code/commands/review.md +50 -0
- package/bundled/skills/claude-code/commands/spec.md +69 -0
- package/bundled/skills/claude-code/commands/tdd.md +86 -0
- package/bundled/skills/claude-code/commands/update.md +122 -0
- package/bundled/skills/claude-code/commit-standards/SKILL.md +249 -0
- package/bundled/skills/claude-code/commit-standards/conventional-commits.md +256 -0
- package/bundled/skills/claude-code/commit-standards/language-options.md +164 -0
- package/bundled/skills/claude-code/documentation-guide/SKILL.md +416 -0
- package/bundled/skills/claude-code/documentation-guide/documentation-structure.md +349 -0
- package/bundled/skills/claude-code/documentation-guide/readme-template.md +404 -0
- package/bundled/skills/claude-code/error-code-guide/SKILL.md +264 -0
- package/bundled/skills/claude-code/git-workflow-guide/SKILL.md +226 -0
- package/bundled/skills/claude-code/git-workflow-guide/branch-naming.md +212 -0
- package/bundled/skills/claude-code/git-workflow-guide/git-workflow.md +313 -0
- package/bundled/skills/claude-code/logging-guide/SKILL.md +280 -0
- package/bundled/skills/claude-code/methodology-system/SKILL.md +215 -0
- package/bundled/skills/claude-code/methodology-system/create-methodology.md +450 -0
- package/bundled/skills/claude-code/methodology-system/runtime.md +271 -0
- package/bundled/skills/claude-code/project-structure-guide/SKILL.md +143 -0
- package/bundled/skills/claude-code/project-structure-guide/language-patterns.md +263 -0
- package/bundled/skills/claude-code/refactoring-assistant/SKILL.md +205 -0
- package/bundled/skills/claude-code/release-standards/SKILL.md +191 -0
- package/bundled/skills/claude-code/release-standards/changelog-format.md +239 -0
- package/bundled/skills/claude-code/release-standards/release-workflow.md +337 -0
- package/bundled/skills/claude-code/release-standards/semantic-versioning.md +242 -0
- package/bundled/skills/claude-code/requirement-assistant/SKILL.md +222 -0
- package/bundled/skills/claude-code/requirement-assistant/requirement-checklist.md +317 -0
- package/bundled/skills/claude-code/requirement-assistant/requirement-writing.md +391 -0
- package/bundled/skills/claude-code/spec-driven-dev/SKILL.md +238 -0
- package/bundled/skills/claude-code/tdd-assistant/SKILL.md +384 -0
- package/bundled/skills/claude-code/tdd-assistant/language-examples.md +1276 -0
- package/bundled/skills/claude-code/tdd-assistant/tdd-workflow.md +659 -0
- package/bundled/skills/claude-code/test-coverage-assistant/SKILL.md +277 -0
- package/bundled/skills/claude-code/testing-guide/SKILL.md +317 -0
- package/bundled/skills/claude-code/testing-guide/testing-pyramid.md +440 -0
- package/package.json +4 -2
- package/src/commands/check.js +38 -6
- package/src/commands/init.js +20 -6
- package/src/commands/list.js +7 -2
- package/src/commands/skills.js +0 -2
- package/src/commands/update.js +271 -0
- package/src/i18n/messages.js +161 -11
- package/src/utils/copier.js +63 -10
- package/src/utils/skills-installer.js +47 -11
- package/standards-registry.json +6 -3
|
@@ -0,0 +1,636 @@
|
|
|
1
|
+
# Refactoring Standards
|
|
2
|
+
|
|
3
|
+
> **Language**: English | [繁體中文](../locales/zh-TW/core/refactoring-standards.md)
|
|
4
|
+
|
|
5
|
+
**Version**: 1.0.0
|
|
6
|
+
**Last Updated**: 2026-01-12
|
|
7
|
+
**Applicability**: All software projects undertaking code improvement initiatives
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Purpose
|
|
12
|
+
|
|
13
|
+
This standard defines comprehensive guidelines for code refactoring, covering everything from daily TDD refactoring cycles to large-scale legacy system modernization. It ensures that refactoring efforts are safe, measurable, and aligned with business objectives.
|
|
14
|
+
|
|
15
|
+
**Key Benefits**:
|
|
16
|
+
- Systematic approach to improving code quality
|
|
17
|
+
- Reduced risk of introducing bugs during refactoring
|
|
18
|
+
- Clear decision framework for refactor vs. rewrite
|
|
19
|
+
- Measurable outcomes and ROI tracking
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Table of Contents
|
|
24
|
+
|
|
25
|
+
1. [Refactoring vs. Rewriting Decision Matrix](#refactoring-vs-rewriting-decision-matrix)
|
|
26
|
+
2. [Refactoring Strategies by Scale](#refactoring-strategies-by-scale)
|
|
27
|
+
3. [Legacy Code Strategies](#legacy-code-strategies)
|
|
28
|
+
4. [Large-Scale Refactoring Patterns](#large-scale-refactoring-patterns)
|
|
29
|
+
5. [Database Refactoring](#database-refactoring)
|
|
30
|
+
6. [Safe Refactoring Workflow](#safe-refactoring-workflow)
|
|
31
|
+
7. [Refactoring Metrics](#refactoring-metrics)
|
|
32
|
+
8. [Team Collaboration](#team-collaboration)
|
|
33
|
+
9. [Technical Debt Management](#technical-debt-management)
|
|
34
|
+
10. [Related Standards](#related-standards)
|
|
35
|
+
11. [References](#references)
|
|
36
|
+
12. [Version History](#version-history)
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Refactoring vs. Rewriting Decision Matrix
|
|
41
|
+
|
|
42
|
+
Before starting any large refactoring effort, evaluate whether refactoring or rewriting is more appropriate.
|
|
43
|
+
|
|
44
|
+
### Decision Flowchart
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
48
|
+
│ Refactor vs. Rewrite Decision Tree │
|
|
49
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
50
|
+
│ │
|
|
51
|
+
│ Is the code currently working in production? │
|
|
52
|
+
│ ├─ No → Consider rewrite (lower risk) │
|
|
53
|
+
│ └─ Yes ↓ │
|
|
54
|
+
│ │
|
|
55
|
+
│ Do you understand what the code does? │
|
|
56
|
+
│ ├─ No → Characterization tests first, then decide │
|
|
57
|
+
│ └─ Yes ↓ │
|
|
58
|
+
│ │
|
|
59
|
+
│ Is there adequate test coverage (>60%)? │
|
|
60
|
+
│ ├─ No → Add tests first, then decide │
|
|
61
|
+
│ └─ Yes ↓ │
|
|
62
|
+
│ │
|
|
63
|
+
│ Is the core architecture salvageable? │
|
|
64
|
+
│ ├─ No → Strangler Fig (gradual replacement) │
|
|
65
|
+
│ └─ Yes → Incremental Refactoring ✓ │
|
|
66
|
+
│ │
|
|
67
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Comparison Matrix
|
|
71
|
+
|
|
72
|
+
| Factor | Favor Refactoring | Favor Rewriting |
|
|
73
|
+
|--------|-------------------|-----------------|
|
|
74
|
+
| **Codebase size** | Large, complex | Small, isolated |
|
|
75
|
+
| **Test coverage** | Good (>60%) | Poor or none |
|
|
76
|
+
| **Business continuity** | Critical | Can tolerate downtime |
|
|
77
|
+
| **Team knowledge** | Team understands code | No institutional knowledge |
|
|
78
|
+
| **Core architecture** | Sound, just messy | Fundamentally flawed |
|
|
79
|
+
| **Time pressure** | Tight deadlines | Flexible timeline |
|
|
80
|
+
| **Risk tolerance** | Low | Higher |
|
|
81
|
+
|
|
82
|
+
### Warning: Second-System Effect
|
|
83
|
+
|
|
84
|
+
> "The second system is the most dangerous system a person ever designs." — Fred Brooks
|
|
85
|
+
|
|
86
|
+
When rewriting, teams often over-engineer. Avoid:
|
|
87
|
+
- Adding features not in the original
|
|
88
|
+
- Over-abstracting "for future flexibility"
|
|
89
|
+
- Ignoring lessons from the existing system
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Refactoring Strategies by Scale
|
|
94
|
+
|
|
95
|
+
### Small-Scale: TDD Refactor Phase (Minutes)
|
|
96
|
+
|
|
97
|
+
Part of the Red-Green-Refactor cycle. See [Test-Driven Development](test-driven-development.md) for details.
|
|
98
|
+
|
|
99
|
+
**Characteristics**:
|
|
100
|
+
- Duration: 5-15 minutes
|
|
101
|
+
- Scope: Single method or class
|
|
102
|
+
- Tests: Must remain green
|
|
103
|
+
|
|
104
|
+
**Common techniques**:
|
|
105
|
+
- Extract Method
|
|
106
|
+
- Rename
|
|
107
|
+
- Inline Variable
|
|
108
|
+
- Replace Magic Number with Constant
|
|
109
|
+
|
|
110
|
+
### Medium-Scale: Feature-Level Refactoring (Hours to Days)
|
|
111
|
+
|
|
112
|
+
Improving a specific feature or module without changing its external behavior.
|
|
113
|
+
|
|
114
|
+
**Characteristics**:
|
|
115
|
+
- Duration: Hours to days
|
|
116
|
+
- Scope: One feature or module
|
|
117
|
+
- Tests: Add characterization tests if missing
|
|
118
|
+
|
|
119
|
+
**Planning Checklist**:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
□ Define scope boundaries (what's in, what's out)
|
|
123
|
+
□ Identify all entry points to the module
|
|
124
|
+
□ Ensure test coverage > 80% for affected code
|
|
125
|
+
□ Plan incremental commits (each should be deployable)
|
|
126
|
+
□ Communicate with team (avoid merge conflicts)
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Large-Scale: Architecture-Level Refactoring (Weeks to Months)
|
|
130
|
+
|
|
131
|
+
Significant architectural changes like migrating from monolith to microservices.
|
|
132
|
+
|
|
133
|
+
**Characteristics**:
|
|
134
|
+
- Duration: Weeks to months
|
|
135
|
+
- Scope: Multiple modules or entire system
|
|
136
|
+
- Tests: Comprehensive integration tests required
|
|
137
|
+
|
|
138
|
+
**Patterns**: See [Large-Scale Refactoring Patterns](#large-scale-refactoring-patterns)
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Legacy Code Strategies
|
|
143
|
+
|
|
144
|
+
Based on Michael Feathers' "Working Effectively with Legacy Code".
|
|
145
|
+
|
|
146
|
+
### The Legacy Code Dilemma
|
|
147
|
+
|
|
148
|
+
**Definition**: Legacy code = code without tests (regardless of age)
|
|
149
|
+
|
|
150
|
+
**The Dilemma**:
|
|
151
|
+
- To change code safely, we need tests
|
|
152
|
+
- To add tests, we often need to change code
|
|
153
|
+
- Changing code without tests is risky
|
|
154
|
+
|
|
155
|
+
**Solution**: Use safe techniques to add tests before making changes.
|
|
156
|
+
|
|
157
|
+
### Characterization Tests
|
|
158
|
+
|
|
159
|
+
**Purpose**: Capture existing behavior (not verify correctness)
|
|
160
|
+
|
|
161
|
+
**Process**:
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
1. Call the code you want to understand
|
|
165
|
+
2. Write an assertion you expect to FAIL
|
|
166
|
+
3. Run the test and see what actually happens
|
|
167
|
+
4. Update the assertion to match actual behavior
|
|
168
|
+
5. Repeat until you've covered the behavior you need to change
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Example**:
|
|
172
|
+
|
|
173
|
+
```javascript
|
|
174
|
+
// Step 1: Initial (expected to fail)
|
|
175
|
+
test('calculateDiscount returns... something', () => {
|
|
176
|
+
const result = calculateDiscount(100, 'GOLD');
|
|
177
|
+
expect(result).toBe(0); // Guess - will probably fail
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
// Step 2: After running, update with actual value
|
|
181
|
+
test('calculateDiscount returns 15 for GOLD customers', () => {
|
|
182
|
+
const result = calculateDiscount(100, 'GOLD');
|
|
183
|
+
expect(result).toBe(15); // Actual behavior
|
|
184
|
+
});
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Finding Seams
|
|
188
|
+
|
|
189
|
+
**Definition**: A seam is a place where you can alter behavior without editing code.
|
|
190
|
+
|
|
191
|
+
| Seam Type | How It Works | Example |
|
|
192
|
+
|-----------|--------------|---------|
|
|
193
|
+
| **Object Seam** | Override via polymorphism | Inject test double via interface |
|
|
194
|
+
| **Preprocessing Seam** | Compile-time substitution | Conditional compilation, macros |
|
|
195
|
+
| **Link Seam** | Replace at link time | Dependency injection, module replacement |
|
|
196
|
+
|
|
197
|
+
### Sprout and Wrap Techniques
|
|
198
|
+
|
|
199
|
+
| Technique | When to Use | How |
|
|
200
|
+
|-----------|-------------|-----|
|
|
201
|
+
| **Sprout Method** | Adding new logic to existing method | Create new method, call from old |
|
|
202
|
+
| **Sprout Class** | New logic needs to evolve independently | Create new class, reference from old |
|
|
203
|
+
| **Wrap Method** | Need to add behavior before/after | Rename original, create wrapper |
|
|
204
|
+
| **Wrap Class** | Decorate existing class | Decorator pattern |
|
|
205
|
+
|
|
206
|
+
**Principle**: New code uses TDD; legacy code stays untouched until tested.
|
|
207
|
+
|
|
208
|
+
### Code Archaeology
|
|
209
|
+
|
|
210
|
+
Techniques for understanding undocumented code:
|
|
211
|
+
|
|
212
|
+
```
|
|
213
|
+
1. Scratch Refactoring
|
|
214
|
+
├─ Refactor to understand, not to keep
|
|
215
|
+
├─ Use git stash or branch
|
|
216
|
+
└─ Discard when done (git reset --hard)
|
|
217
|
+
|
|
218
|
+
2. Trace Variable Flow
|
|
219
|
+
├─ Follow data from input to output
|
|
220
|
+
├─ Mark key transformation points
|
|
221
|
+
└─ Document as you discover
|
|
222
|
+
|
|
223
|
+
3. Runtime Observation
|
|
224
|
+
├─ Add temporary logging
|
|
225
|
+
├─ Use debugger step-through
|
|
226
|
+
└─ Build mental model
|
|
227
|
+
|
|
228
|
+
4. Git Archaeology
|
|
229
|
+
├─ git log -p <file> (see all changes)
|
|
230
|
+
├─ git blame (find original author)
|
|
231
|
+
└─ Search commit messages for context
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Large-Scale Refactoring Patterns
|
|
237
|
+
|
|
238
|
+
### Strangler Fig Pattern
|
|
239
|
+
|
|
240
|
+
**Use when**: Gradually replacing a legacy system
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
244
|
+
│ Strangler Fig Pattern │
|
|
245
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
246
|
+
│ │
|
|
247
|
+
│ Phase 1: INTERCEPT │
|
|
248
|
+
│ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │
|
|
249
|
+
│ │ Request │────▶│ Facade │────▶│ Legacy (100%)│ │
|
|
250
|
+
│ └─────────┘ └─────────┘ └─────────────┘ │
|
|
251
|
+
│ │
|
|
252
|
+
│ Phase 2: MIGRATE │
|
|
253
|
+
│ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │
|
|
254
|
+
│ │ Request │────▶│ Facade │──┬─▶│ New (Feature A)│ │
|
|
255
|
+
│ └─────────┘ └─────────┘ │ └─────────────┘ │
|
|
256
|
+
│ └─▶│ Legacy (Rest) │ │
|
|
257
|
+
│ └─────────────┘ │
|
|
258
|
+
│ │
|
|
259
|
+
│ Phase 3: COMPLETE │
|
|
260
|
+
│ ┌─────────┐ ┌─────────────┐ │
|
|
261
|
+
│ │ Request │────▶│ New (100%) │ [Legacy decommissioned] │
|
|
262
|
+
│ └─────────┘ └─────────────┘ │
|
|
263
|
+
│ │
|
|
264
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**Checklist**:
|
|
268
|
+
- [ ] Identify interception point (API gateway, facade, proxy)
|
|
269
|
+
- [ ] Create event capture layer
|
|
270
|
+
- [ ] Implement first feature in new system
|
|
271
|
+
- [ ] Route traffic incrementally
|
|
272
|
+
- [ ] Monitor and compare results
|
|
273
|
+
- [ ] Decommission legacy component
|
|
274
|
+
|
|
275
|
+
### Branch by Abstraction
|
|
276
|
+
|
|
277
|
+
**Use when**: Refactoring shared code without long-lived branches
|
|
278
|
+
|
|
279
|
+
```
|
|
280
|
+
Step 1: Introduce Abstraction
|
|
281
|
+
Client → Abstraction (interface) → Old Implementation
|
|
282
|
+
|
|
283
|
+
Step 2: Add New Implementation
|
|
284
|
+
Client → Abstraction → Old Implementation
|
|
285
|
+
└─→ New Implementation (feature-toggled)
|
|
286
|
+
|
|
287
|
+
Step 3: Switch and Remove
|
|
288
|
+
Client → New Implementation
|
|
289
|
+
[Old Implementation removed]
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**Key Principles**:
|
|
293
|
+
- All changes on main/trunk (no long branches)
|
|
294
|
+
- Feature toggles control which implementation is active
|
|
295
|
+
- Both implementations can coexist during transition
|
|
296
|
+
|
|
297
|
+
### Parallel Change (Expand-Migrate-Contract)
|
|
298
|
+
|
|
299
|
+
**Use when**: Changing interfaces used by multiple clients
|
|
300
|
+
|
|
301
|
+
```
|
|
302
|
+
Phase 1: EXPAND
|
|
303
|
+
├─ Add new field/method alongside old
|
|
304
|
+
├─ New code uses new interface
|
|
305
|
+
└─ Old code still works
|
|
306
|
+
|
|
307
|
+
Phase 2: MIGRATE
|
|
308
|
+
├─ Update all clients to use new interface
|
|
309
|
+
├─ Verify all clients migrated
|
|
310
|
+
└─ Data migration (if needed)
|
|
311
|
+
|
|
312
|
+
Phase 3: CONTRACT
|
|
313
|
+
├─ Remove old field/method
|
|
314
|
+
├─ Clean up migration code
|
|
315
|
+
└─ Update documentation
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Database Refactoring
|
|
321
|
+
|
|
322
|
+
### Expand-Contract Pattern for Schema Changes
|
|
323
|
+
|
|
324
|
+
```
|
|
325
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
326
|
+
│ Database Refactoring (Expand-Contract) │
|
|
327
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
328
|
+
│ │
|
|
329
|
+
│ Phase 1: EXPAND (Add new, keep old) │
|
|
330
|
+
│ ├─ Add new column/table │
|
|
331
|
+
│ ├─ Application writes to BOTH old and new │
|
|
332
|
+
│ └─ Safe to rollback at this point │
|
|
333
|
+
│ │
|
|
334
|
+
│ Phase 2: MIGRATE (Move data) │
|
|
335
|
+
│ ├─ Copy data from old to new │
|
|
336
|
+
│ ├─ Verify data consistency │
|
|
337
|
+
│ └─ Application starts reading from new │
|
|
338
|
+
│ │
|
|
339
|
+
│ Phase 3: CONTRACT (Remove old) │
|
|
340
|
+
│ ├─ Confirm old column/table no longer read │
|
|
341
|
+
│ ├─ Remove old column/table │
|
|
342
|
+
│ └─ Clean up dual-write code │
|
|
343
|
+
│ │
|
|
344
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### Common Schema Refactoring Scenarios
|
|
348
|
+
|
|
349
|
+
| Scenario | Strategy | Risk Level |
|
|
350
|
+
|----------|----------|------------|
|
|
351
|
+
| **Rename column** | Add new → Migrate → Drop old | Medium |
|
|
352
|
+
| **Split table** | New table + FK → Migrate → Adjust app | High |
|
|
353
|
+
| **Merge tables** | New table → Merge data → Switch app | High |
|
|
354
|
+
| **Change data type** | New column → Convert → Switch app | Medium |
|
|
355
|
+
| **Add NOT NULL** | Fill defaults → Add constraint | Low |
|
|
356
|
+
|
|
357
|
+
### Database Migration Safety Checklist
|
|
358
|
+
|
|
359
|
+
```
|
|
360
|
+
Pre-Migration:
|
|
361
|
+
□ Full backup completed
|
|
362
|
+
□ Migration script tested in staging
|
|
363
|
+
□ Rollback script prepared
|
|
364
|
+
□ Migration time estimated (consider data volume)
|
|
365
|
+
□ Maintenance window communicated
|
|
366
|
+
|
|
367
|
+
During Migration:
|
|
368
|
+
□ Monitor database performance
|
|
369
|
+
□ Verify data integrity incrementally
|
|
370
|
+
□ Application health checks passing
|
|
371
|
+
|
|
372
|
+
Post-Migration:
|
|
373
|
+
□ Data consistency verification
|
|
374
|
+
□ Application functionality verification
|
|
375
|
+
□ Performance baseline comparison
|
|
376
|
+
□ Backup retained for rollback period
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
### Zero-Downtime Migration Techniques
|
|
380
|
+
|
|
381
|
+
| Technique | Description | Use Case |
|
|
382
|
+
|-----------|-------------|----------|
|
|
383
|
+
| **Online Schema Change** | pt-osc, gh-ost | MySQL large table changes |
|
|
384
|
+
| **Blue-Green Database** | Dual database switchover | High availability requirements |
|
|
385
|
+
| **Shadow Write** | Write to both DBs, compare | Verify migration correctness |
|
|
386
|
+
| **Feature Flag** | Control read source | Gradual cutover |
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## Safe Refactoring Workflow
|
|
391
|
+
|
|
392
|
+
### Before Refactoring
|
|
393
|
+
|
|
394
|
+
```
|
|
395
|
+
□ Define success criteria (measurable)
|
|
396
|
+
□ Ensure adequate test coverage (>80% recommended)
|
|
397
|
+
□ Commit/stash current work (clean working directory)
|
|
398
|
+
□ Create feature branch (or work on trunk with toggles)
|
|
399
|
+
□ Communicate with team to avoid conflicts
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
### During Refactoring
|
|
403
|
+
|
|
404
|
+
```
|
|
405
|
+
□ Make ONE small change at a time
|
|
406
|
+
□ Run tests after EVERY change
|
|
407
|
+
□ If tests fail, IMMEDIATELY revert
|
|
408
|
+
□ Commit frequently (every passing test is a save point)
|
|
409
|
+
□ Never add new functionality while refactoring
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
### After Refactoring
|
|
413
|
+
|
|
414
|
+
```
|
|
415
|
+
□ All tests pass (same as before)
|
|
416
|
+
□ Code is measurably better (complexity, duplication, etc.)
|
|
417
|
+
□ Documentation updated if needed
|
|
418
|
+
□ Team review completed
|
|
419
|
+
□ No new functionality added
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## Refactoring Metrics
|
|
425
|
+
|
|
426
|
+
### Code Quality Indicators
|
|
427
|
+
|
|
428
|
+
| Metric | Measurement | Target |
|
|
429
|
+
|--------|-------------|--------|
|
|
430
|
+
| **Cyclomatic Complexity** | Static analysis tools | < 10 per function |
|
|
431
|
+
| **Cognitive Complexity** | SonarQube, etc. | Lower is better |
|
|
432
|
+
| **Coupling** | Dependencies between modules | Reduce |
|
|
433
|
+
| **Cohesion** | LCOM metric | Increase |
|
|
434
|
+
| **Code Duplication** | Duplicate code percentage | < 3% |
|
|
435
|
+
| **Lines of Code** | Reference only | Fewer ≠ always better |
|
|
436
|
+
|
|
437
|
+
### Test Quality Indicators
|
|
438
|
+
|
|
439
|
+
| Metric | Target | Notes |
|
|
440
|
+
|--------|--------|-------|
|
|
441
|
+
| **Test Coverage** | ≥ 80% | Don't decrease during refactoring |
|
|
442
|
+
| **Test Speed** | Faster | Refactoring should improve testability |
|
|
443
|
+
| **Flaky Test Count** | Decrease | Stability improvement |
|
|
444
|
+
|
|
445
|
+
### Operational Indicators (DORA Metrics)
|
|
446
|
+
|
|
447
|
+
| Metric | Measurement | Expected Improvement |
|
|
448
|
+
|--------|-------------|----------------------|
|
|
449
|
+
| **Deployment Frequency** | CI/CD records | Increase (maintainability improved) |
|
|
450
|
+
| **Change Failure Rate** | Rollback count | Decrease |
|
|
451
|
+
| **Mean Time to Recovery** | Incident records | Decrease |
|
|
452
|
+
| **Lead Time** | Commit to deploy | Decrease |
|
|
453
|
+
|
|
454
|
+
### Team Efficiency Indicators
|
|
455
|
+
|
|
456
|
+
| Metric | Measurement | Notes |
|
|
457
|
+
|--------|-------------|-------|
|
|
458
|
+
| **Onboarding Time** | New hire ramp-up | Shorter = better readability |
|
|
459
|
+
| **PR Review Time** | Git records | Shorter = better understandability |
|
|
460
|
+
| **Bug Fix Time** | Issue tracking | Shorter = better maintainability |
|
|
461
|
+
|
|
462
|
+
### Refactoring ROI Framework
|
|
463
|
+
|
|
464
|
+
```
|
|
465
|
+
Cost:
|
|
466
|
+
├─ Development time × hourly rate
|
|
467
|
+
├─ Testing time
|
|
468
|
+
├─ Deployment risk cost
|
|
469
|
+
└─ Opportunity cost (features not built)
|
|
470
|
+
|
|
471
|
+
Benefits:
|
|
472
|
+
├─ Reduced maintenance time × future years
|
|
473
|
+
├─ Reduced bugs × fix cost
|
|
474
|
+
├─ Faster feature development
|
|
475
|
+
└─ Lower employee turnover cost
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
---
|
|
479
|
+
|
|
480
|
+
## Team Collaboration
|
|
481
|
+
|
|
482
|
+
### Refactoring Project Kickoff
|
|
483
|
+
|
|
484
|
+
```
|
|
485
|
+
Kickoff Meeting Agenda:
|
|
486
|
+
1. Scope Definition
|
|
487
|
+
├─ What modules/files are in scope
|
|
488
|
+
└─ What is explicitly excluded
|
|
489
|
+
|
|
490
|
+
2. Success Criteria Alignment
|
|
491
|
+
├─ Quantitative goals (complexity reduction X%)
|
|
492
|
+
└─ Functional goals (behavior unchanged)
|
|
493
|
+
|
|
494
|
+
3. Work Division
|
|
495
|
+
├─ By module (vertical slicing)
|
|
496
|
+
└─ By layer (horizontal slicing)
|
|
497
|
+
|
|
498
|
+
4. Risk Assessment
|
|
499
|
+
├─ Highest-risk areas
|
|
500
|
+
└─ Rollback strategy
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
### Division Strategies
|
|
504
|
+
|
|
505
|
+
| Strategy | Use When | Caution |
|
|
506
|
+
|----------|----------|---------|
|
|
507
|
+
| **Vertical Slicing** | Independent modules | Ensure interfaces unchanged |
|
|
508
|
+
| **Horizontal Slicing** | Cross-module refactoring (e.g., naming conventions) | Strict synchronization needed |
|
|
509
|
+
| **Strangler Division** | Large system replacement | One person per Strangler slice |
|
|
510
|
+
| **Mob Programming** | Core/high-risk areas | Entire team, reduces risk |
|
|
511
|
+
|
|
512
|
+
### Communication Mechanisms
|
|
513
|
+
|
|
514
|
+
```
|
|
515
|
+
Daily Communication:
|
|
516
|
+
├─ Sync refactoring progress in standup
|
|
517
|
+
├─ Shared Refactoring Board (Kanban)
|
|
518
|
+
└─ Dedicated channel (#refactoring-xxx)
|
|
519
|
+
|
|
520
|
+
PR Standards:
|
|
521
|
+
├─ [Refactor] prefix in title
|
|
522
|
+
├─ Explain what changed and why
|
|
523
|
+
├─ Include before/after complexity comparison
|
|
524
|
+
└─ Require Characterization Tests for legacy code
|
|
525
|
+
|
|
526
|
+
Conflict Resolution:
|
|
527
|
+
├─ Small scope: Resolve immediately
|
|
528
|
+
├─ Medium scope: Daily sync meeting
|
|
529
|
+
└─ Large scope: Consider Branch by Abstraction
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
### PR Size Guidelines
|
|
533
|
+
|
|
534
|
+
| Size | Lines Changed | Review Time |
|
|
535
|
+
|------|---------------|-------------|
|
|
536
|
+
| Small | < 200 | < 30 min |
|
|
537
|
+
| Medium | 200-500 | < 1 hour |
|
|
538
|
+
| Large | > 500 | **Should be split** |
|
|
539
|
+
|
|
540
|
+
**Principle**: Multiple small PRs > One large PR
|
|
541
|
+
|
|
542
|
+
---
|
|
543
|
+
|
|
544
|
+
## Technical Debt Management
|
|
545
|
+
|
|
546
|
+
### Technical Debt Quadrant
|
|
547
|
+
|
|
548
|
+
Based on Martin Fowler's Technical Debt Quadrant:
|
|
549
|
+
|
|
550
|
+
```
|
|
551
|
+
Deliberate
|
|
552
|
+
│
|
|
553
|
+
┌───────────────┼───────────────┐
|
|
554
|
+
│ │ │
|
|
555
|
+
│ Prudent │ Reckless │
|
|
556
|
+
│ "We know │ "We don't │
|
|
557
|
+
│ this is │ have time │
|
|
558
|
+
│ debt" │ for design" │
|
|
559
|
+
│ │ │
|
|
560
|
+
Prudent ├───────────────┼───────────────┤ Reckless
|
|
561
|
+
│ │ │
|
|
562
|
+
│ Prudent │ Reckless │
|
|
563
|
+
│ "Now we │ "What's │
|
|
564
|
+
│ know how │ layering?" │
|
|
565
|
+
│ we should │ │
|
|
566
|
+
│ have done it"│ │
|
|
567
|
+
│ │ │
|
|
568
|
+
└───────────────┼───────────────┘
|
|
569
|
+
│
|
|
570
|
+
Inadvertent
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
### Debt Prioritization
|
|
574
|
+
|
|
575
|
+
| Priority | Criteria | Action |
|
|
576
|
+
|----------|----------|--------|
|
|
577
|
+
| **High** | Blocks development, causes frequent bugs | Address immediately |
|
|
578
|
+
| **Medium** | Slows development, increases complexity | Plan for next sprint |
|
|
579
|
+
| **Low** | Minor annoyance, isolated impact | Address opportunistically |
|
|
580
|
+
|
|
581
|
+
### Tracking Technical Debt
|
|
582
|
+
|
|
583
|
+
```
|
|
584
|
+
For each debt item, record:
|
|
585
|
+
├─ Description: What is the issue?
|
|
586
|
+
├─ Impact: How does it affect development?
|
|
587
|
+
├─ Estimated Effort: How long to fix?
|
|
588
|
+
├─ Risk if Ignored: What happens if not addressed?
|
|
589
|
+
└─ Related Code: Links to affected files/modules
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
---
|
|
593
|
+
|
|
594
|
+
## Related Standards
|
|
595
|
+
|
|
596
|
+
- [Test-Driven Development](test-driven-development.md) - TDD cycle including refactoring phase
|
|
597
|
+
- [Code Review Checklist](code-review-checklist.md) - Refactoring PR review guidelines
|
|
598
|
+
- [Commit Message Guide](commit-message-guide.md) - `refactor` commit type
|
|
599
|
+
- [Code Check-in Standards](checkin-standards.md) - Pre-commit requirements
|
|
600
|
+
|
|
601
|
+
---
|
|
602
|
+
|
|
603
|
+
## References
|
|
604
|
+
|
|
605
|
+
### Books
|
|
606
|
+
|
|
607
|
+
- Martin Fowler - "Refactoring: Improving the Design of Existing Code" (2nd Edition, 2018)
|
|
608
|
+
- Michael Feathers - "Working Effectively with Legacy Code" (2004)
|
|
609
|
+
- Joshua Kerievsky - "Refactoring to Patterns" (2004)
|
|
610
|
+
|
|
611
|
+
### Articles
|
|
612
|
+
|
|
613
|
+
- Martin Fowler - [Strangler Fig Application](https://martinfowler.com/bliki/StranglerFigApplication.html)
|
|
614
|
+
- Martin Fowler - [Branch by Abstraction](https://martinfowler.com/bliki/BranchByAbstraction.html)
|
|
615
|
+
- Pete Hodgson - [Feature Toggles](https://martinfowler.com/articles/feature-toggles.html)
|
|
616
|
+
- Martin Fowler - [Technical Debt Quadrant](https://martinfowler.com/bliki/TechnicalDebtQuadrant.html)
|
|
617
|
+
|
|
618
|
+
### Tools
|
|
619
|
+
|
|
620
|
+
- [Refactoring Guru](https://refactoring.guru/) - Catalog of refactoring techniques
|
|
621
|
+
- [SonarQube](https://www.sonarqube.org/) - Code quality and complexity analysis
|
|
622
|
+
- [ApprovalTests](https://approvaltests.com/) - Golden Master testing
|
|
623
|
+
|
|
624
|
+
---
|
|
625
|
+
|
|
626
|
+
## Version History
|
|
627
|
+
|
|
628
|
+
| Version | Date | Changes |
|
|
629
|
+
|---------|------|---------|
|
|
630
|
+
| 1.0.0 | 2026-01-12 | Initial refactoring standards definition |
|
|
631
|
+
|
|
632
|
+
---
|
|
633
|
+
|
|
634
|
+
## License
|
|
635
|
+
|
|
636
|
+
This standard is released under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).
|