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,659 @@
|
|
|
1
|
+
# TDD Workflow Guide
|
|
2
|
+
|
|
3
|
+
> **Language**: English | [繁體中文](../../../locales/zh-TW/skills/claude-code/tdd-assistant/tdd-workflow.md)
|
|
4
|
+
|
|
5
|
+
**Version**: 1.0.0
|
|
6
|
+
**Last Updated**: 2026-01-07
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Complete Workflow Diagram
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
14
|
+
│ Complete TDD Workflow │
|
|
15
|
+
├─────────────────────────────────────────────────────────────────────────────┤
|
|
16
|
+
│ │
|
|
17
|
+
│ ┌───────────────┐ │
|
|
18
|
+
│ │ 1. Understand │ Read requirement/spec/user story │
|
|
19
|
+
│ │ Requirement │ Identify acceptance criteria │
|
|
20
|
+
│ └───────┬───────┘ │
|
|
21
|
+
│ │ │
|
|
22
|
+
│ ▼ │
|
|
23
|
+
│ ┌───────────────┐ │
|
|
24
|
+
│ │ 2. List Test │ Brainstorm test cases │
|
|
25
|
+
│ │ Cases │ Happy path, edge cases, errors │
|
|
26
|
+
│ └───────┬───────┘ │
|
|
27
|
+
│ │ │
|
|
28
|
+
│ ▼ │
|
|
29
|
+
│ ┌───────────────┐ │
|
|
30
|
+
│ │ 3. Pick ONE │ Start with simplest case │
|
|
31
|
+
│ │ Test │ (usually happy path) │
|
|
32
|
+
│ └───────┬───────┘ │
|
|
33
|
+
│ │ │
|
|
34
|
+
│ ▼ │
|
|
35
|
+
│ ┌───────────────┐ │
|
|
36
|
+
│ │ 🔴 RED │ Write failing test │
|
|
37
|
+
│ │ (1-5 min) │ Verify it fails for right reason │
|
|
38
|
+
│ └───────┬───────┘ │
|
|
39
|
+
│ │ │
|
|
40
|
+
│ ▼ │
|
|
41
|
+
│ ┌───────────────┐ │
|
|
42
|
+
│ │ 🟢 GREEN │ Write minimum code to pass │
|
|
43
|
+
│ │ (1-10 min) │ "Fake it" is OK │
|
|
44
|
+
│ └───────┬───────┘ │
|
|
45
|
+
│ │ │
|
|
46
|
+
│ ▼ │
|
|
47
|
+
│ ┌───────────────┐ │
|
|
48
|
+
│ │ 🔵 REFACTOR │ Clean up code │
|
|
49
|
+
│ │ (5-15 min) │ Keep tests green │
|
|
50
|
+
│ └───────┬───────┘ │
|
|
51
|
+
│ │ │
|
|
52
|
+
│ ▼ │
|
|
53
|
+
│ ┌───────────────┐ ┌─────────────────┐ │
|
|
54
|
+
│ │ More tests? │─Yes─▶│ Return to │ │
|
|
55
|
+
│ │ │ │ Step 3 │ │
|
|
56
|
+
│ └───────┬───────┘ └─────────────────┘ │
|
|
57
|
+
│ │ No │
|
|
58
|
+
│ ▼ │
|
|
59
|
+
│ ┌───────────────┐ │
|
|
60
|
+
│ │ ✅ DONE │ All acceptance criteria met │
|
|
61
|
+
│ └───────────────┘ │
|
|
62
|
+
│ │
|
|
63
|
+
└─────────────────────────────────────────────────────────────────────────────┘
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Red Phase Deep Dive
|
|
69
|
+
|
|
70
|
+
### Goal
|
|
71
|
+
|
|
72
|
+
Write a test that:
|
|
73
|
+
- Describes expected behavior (not implementation)
|
|
74
|
+
- Fails for the **right** reason
|
|
75
|
+
- Has a clear, descriptive name
|
|
76
|
+
|
|
77
|
+
### Step-by-Step
|
|
78
|
+
|
|
79
|
+
1. **Choose what to test**
|
|
80
|
+
- Start with the simplest scenario
|
|
81
|
+
- Focus on ONE behavior
|
|
82
|
+
|
|
83
|
+
2. **Write test structure**
|
|
84
|
+
```typescript
|
|
85
|
+
test('should [expected behavior] when [condition]', () => {
|
|
86
|
+
// Arrange - Set up test data
|
|
87
|
+
|
|
88
|
+
// Act - Execute the behavior
|
|
89
|
+
|
|
90
|
+
// Assert - Verify the result
|
|
91
|
+
});
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
3. **Fill in the test**
|
|
95
|
+
- Arrange: Create test data and dependencies
|
|
96
|
+
- Act: Call the method/function being tested
|
|
97
|
+
- Assert: Verify the expected outcome
|
|
98
|
+
|
|
99
|
+
4. **Run the test**
|
|
100
|
+
- It should FAIL
|
|
101
|
+
- Verify the failure is for the right reason
|
|
102
|
+
|
|
103
|
+
### Common Mistakes
|
|
104
|
+
|
|
105
|
+
| Mistake | Example | Fix |
|
|
106
|
+
|---------|---------|-----|
|
|
107
|
+
| **Too many assertions** | Testing 5 things in one test | One behavior per test |
|
|
108
|
+
| **Vague test name** | `test('works')` | `test('should return sum of two numbers')` |
|
|
109
|
+
| **No assertion** | Missing `expect()` | Always assert expected outcome |
|
|
110
|
+
| **Testing implementation** | Checking private method calls | Test observable behavior |
|
|
111
|
+
| **Test already passes** | Test for existing behavior | Write for NEW behavior |
|
|
112
|
+
|
|
113
|
+
### Red Phase Checklist
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
□ Test name clearly describes the behavior
|
|
117
|
+
□ Test follows AAA pattern
|
|
118
|
+
□ Test has exactly ONE assertion (or related group)
|
|
119
|
+
□ Test FAILS when run
|
|
120
|
+
□ Failure message is clear
|
|
121
|
+
□ Failure is for the RIGHT reason (not syntax error)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Green Phase Deep Dive
|
|
127
|
+
|
|
128
|
+
### Goal
|
|
129
|
+
|
|
130
|
+
Write the **minimum** code to make the test pass.
|
|
131
|
+
|
|
132
|
+
### Step-by-Step
|
|
133
|
+
|
|
134
|
+
1. **Analyze the failure**
|
|
135
|
+
- What does the test expect?
|
|
136
|
+
- What's the simplest way to provide it?
|
|
137
|
+
|
|
138
|
+
2. **Write minimum code**
|
|
139
|
+
- Hardcoding is OK for first test
|
|
140
|
+
- Don't anticipate future requirements
|
|
141
|
+
|
|
142
|
+
3. **Run the test**
|
|
143
|
+
- It should PASS
|
|
144
|
+
- All other tests should still pass
|
|
145
|
+
|
|
146
|
+
### The "Fake It" Strategy
|
|
147
|
+
|
|
148
|
+
For the first test, it's perfectly fine to fake the implementation:
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
// Test: should return sum of 2 and 3
|
|
152
|
+
test('should return sum of two numbers', () => {
|
|
153
|
+
expect(add(2, 3)).toBe(5);
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
// First implementation (fake it!)
|
|
157
|
+
function add(a: number, b: number): number {
|
|
158
|
+
return 5; // Just return the expected value
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Then add more tests to force generalization:
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
// Second test forces real implementation
|
|
166
|
+
test('should return sum of 1 and 1', () => {
|
|
167
|
+
expect(add(1, 1)).toBe(2);
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
// Now we must generalize
|
|
171
|
+
function add(a: number, b: number): number {
|
|
172
|
+
return a + b;
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Common Mistakes
|
|
177
|
+
|
|
178
|
+
| Mistake | Example | Fix |
|
|
179
|
+
|---------|---------|-----|
|
|
180
|
+
| **Over-engineering** | Adding features not needed yet | Only code for current test |
|
|
181
|
+
| **Optimizing early** | Performance tuning | Make it work first |
|
|
182
|
+
| **Adding error handling** | Try-catch for untested cases | Only handle tested errors |
|
|
183
|
+
| **Copying large code blocks** | From other projects | Write minimal code |
|
|
184
|
+
|
|
185
|
+
### Green Phase Checklist
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
□ Wrote MINIMUM code to pass
|
|
189
|
+
□ Didn't add features not required by test
|
|
190
|
+
□ Current test passes
|
|
191
|
+
□ All other tests still pass
|
|
192
|
+
□ No premature optimization
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Refactor Phase Deep Dive
|
|
198
|
+
|
|
199
|
+
### Goal
|
|
200
|
+
|
|
201
|
+
Improve code quality while keeping all tests green.
|
|
202
|
+
|
|
203
|
+
### Step-by-Step
|
|
204
|
+
|
|
205
|
+
1. **Identify code smells**
|
|
206
|
+
- Duplication
|
|
207
|
+
- Long methods
|
|
208
|
+
- Poor names
|
|
209
|
+
- Complex conditionals
|
|
210
|
+
|
|
211
|
+
2. **Choose ONE improvement**
|
|
212
|
+
- Don't try to fix everything at once
|
|
213
|
+
|
|
214
|
+
3. **Make the change**
|
|
215
|
+
- Small, incremental changes
|
|
216
|
+
|
|
217
|
+
4. **Run tests immediately**
|
|
218
|
+
- If tests fail, revert immediately
|
|
219
|
+
|
|
220
|
+
5. **Repeat if needed**
|
|
221
|
+
|
|
222
|
+
### Common Refactorings
|
|
223
|
+
|
|
224
|
+
| Technique | When | Example |
|
|
225
|
+
|-----------|------|---------|
|
|
226
|
+
| **Extract Method** | Long method, repeated code | Pull 10 lines into `calculateTax()` |
|
|
227
|
+
| **Rename** | Unclear names | `x` → `totalAmount` |
|
|
228
|
+
| **Inline** | Unnecessary indirection | Remove wrapper function |
|
|
229
|
+
| **Extract Variable** | Complex expression | `const isEligible = age >= 18 && hasId` |
|
|
230
|
+
| **Replace Magic Number** | Hardcoded values | `7` → `DAYS_IN_WEEK` |
|
|
231
|
+
|
|
232
|
+
### Refactoring Safety Rules
|
|
233
|
+
|
|
234
|
+
```
|
|
235
|
+
1. Tests are GREEN before starting
|
|
236
|
+
2. Make ONE change at a time
|
|
237
|
+
3. Run tests after EVERY change
|
|
238
|
+
4. If tests FAIL → REVERT immediately
|
|
239
|
+
5. Never add new functionality while refactoring
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Common Mistakes
|
|
243
|
+
|
|
244
|
+
| Mistake | Example | Fix |
|
|
245
|
+
|---------|---------|-----|
|
|
246
|
+
| **Skipping this phase** | Moving to next test immediately | Always look for improvements |
|
|
247
|
+
| **Too many changes at once** | Refactoring 5 things | One change at a time |
|
|
248
|
+
| **Adding functionality** | "While I'm here..." | Only clean up existing code |
|
|
249
|
+
| **Not running tests** | Batch running at end | Run after every change |
|
|
250
|
+
|
|
251
|
+
### Refactor Phase Checklist
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
□ All tests GREEN before starting
|
|
255
|
+
□ Identified specific improvement
|
|
256
|
+
□ Made ONE small change
|
|
257
|
+
□ Tests still GREEN
|
|
258
|
+
□ Code is cleaner/simpler
|
|
259
|
+
□ No new functionality added
|
|
260
|
+
□ Repeated for other improvements
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## BDD Workflow
|
|
266
|
+
|
|
267
|
+
### Gherkin Syntax
|
|
268
|
+
|
|
269
|
+
```gherkin
|
|
270
|
+
Feature: [Feature name]
|
|
271
|
+
As a [role]
|
|
272
|
+
I want [goal]
|
|
273
|
+
So that [benefit]
|
|
274
|
+
|
|
275
|
+
Background:
|
|
276
|
+
Given [common setup for all scenarios]
|
|
277
|
+
|
|
278
|
+
Scenario: [Scenario name]
|
|
279
|
+
Given [initial context]
|
|
280
|
+
And [more context]
|
|
281
|
+
When [action]
|
|
282
|
+
And [more actions]
|
|
283
|
+
Then [expected outcome]
|
|
284
|
+
And [more outcomes]
|
|
285
|
+
|
|
286
|
+
Scenario Outline: [Parameterized scenario]
|
|
287
|
+
Given [context with <parameter>]
|
|
288
|
+
When [action]
|
|
289
|
+
Then [outcome with <expected>]
|
|
290
|
+
|
|
291
|
+
Examples:
|
|
292
|
+
| parameter | expected |
|
|
293
|
+
| value1 | result1 |
|
|
294
|
+
| value2 | result2 |
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### BDD Workflow Steps
|
|
298
|
+
|
|
299
|
+
```
|
|
300
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
301
|
+
│ BDD Workflow │
|
|
302
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
303
|
+
│ │
|
|
304
|
+
│ 1. Discovery Session │
|
|
305
|
+
│ ├─ Developers, BA, QA, stakeholders together │
|
|
306
|
+
│ ├─ Discuss user stories │
|
|
307
|
+
│ └─ Identify acceptance criteria │
|
|
308
|
+
│ │
|
|
309
|
+
│ 2. Formulation │
|
|
310
|
+
│ ├─ Write scenarios in Gherkin │
|
|
311
|
+
│ ├─ Each AC → one or more scenarios │
|
|
312
|
+
│ └─ Review with team │
|
|
313
|
+
│ │
|
|
314
|
+
│ 3. Automation │
|
|
315
|
+
│ ├─ Create step definitions │
|
|
316
|
+
│ ├─ Each step → code that executes the step │
|
|
317
|
+
│ └─ Use TDD for step implementations │
|
|
318
|
+
│ │
|
|
319
|
+
│ 4. Implementation │
|
|
320
|
+
│ ├─ Run scenarios (they fail - RED) │
|
|
321
|
+
│ ├─ Implement feature code (GREEN) │
|
|
322
|
+
│ └─ Refactor │
|
|
323
|
+
│ │
|
|
324
|
+
│ 5. Living Documentation │
|
|
325
|
+
│ └─ Scenarios serve as always-up-to-date documentation │
|
|
326
|
+
│ │
|
|
327
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### Step Definitions Example (JavaScript/Cucumber)
|
|
331
|
+
|
|
332
|
+
```javascript
|
|
333
|
+
const { Given, When, Then } = require('@cucumber/cucumber');
|
|
334
|
+
|
|
335
|
+
Given('I have a shopping cart with {int} items', async function (count) {
|
|
336
|
+
this.cart = new ShoppingCart();
|
|
337
|
+
for (let i = 0; i < count; i++) {
|
|
338
|
+
this.cart.addItem({ name: `Item ${i}`, price: 10 });
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
When('I apply discount code {string}', async function (code) {
|
|
343
|
+
this.result = await this.cart.applyDiscount(code);
|
|
344
|
+
});
|
|
345
|
+
|
|
346
|
+
Then('the cart total should be {float}', function (expectedTotal) {
|
|
347
|
+
expect(this.cart.getTotal()).toBeCloseTo(expectedTotal, 2);
|
|
348
|
+
});
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### BDD Best Practices
|
|
352
|
+
|
|
353
|
+
| Practice | Description |
|
|
354
|
+
|----------|-------------|
|
|
355
|
+
| **Declarative over Imperative** | Say WHAT, not HOW |
|
|
356
|
+
| **Business Language** | Avoid technical jargon |
|
|
357
|
+
| **Independent Scenarios** | Each scenario is self-contained |
|
|
358
|
+
| **Minimal Steps** | 5-10 steps per scenario |
|
|
359
|
+
| **Reusable Steps** | Write generic step definitions |
|
|
360
|
+
|
|
361
|
+
```gherkin
|
|
362
|
+
# ❌ Imperative (too detailed)
|
|
363
|
+
Scenario: Login
|
|
364
|
+
Given I navigate to "http://example.com/login"
|
|
365
|
+
And I click on the username field
|
|
366
|
+
And I type "john@example.com"
|
|
367
|
+
And I click on the password field
|
|
368
|
+
And I type "secret123"
|
|
369
|
+
And I click the "Login" button
|
|
370
|
+
Then I see "Welcome John"
|
|
371
|
+
|
|
372
|
+
# ✅ Declarative (behavior focused)
|
|
373
|
+
Scenario: Successful login
|
|
374
|
+
Given I am on the login page
|
|
375
|
+
When I login with valid credentials
|
|
376
|
+
Then I should see my dashboard
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
## ATDD Workflow
|
|
382
|
+
|
|
383
|
+
### Acceptance Criteria Format
|
|
384
|
+
|
|
385
|
+
```markdown
|
|
386
|
+
## User Story
|
|
387
|
+
|
|
388
|
+
**As a** [role]
|
|
389
|
+
**I want** [feature]
|
|
390
|
+
**So that** [benefit]
|
|
391
|
+
|
|
392
|
+
## Acceptance Criteria
|
|
393
|
+
|
|
394
|
+
### AC-1: [Criterion name]
|
|
395
|
+
**Given** [precondition]
|
|
396
|
+
**When** [action]
|
|
397
|
+
**Then** [expected result]
|
|
398
|
+
|
|
399
|
+
### AC-2: [Criterion name]
|
|
400
|
+
**Given** [precondition]
|
|
401
|
+
**When** [action]
|
|
402
|
+
**Then** [expected result]
|
|
403
|
+
|
|
404
|
+
## Out of Scope
|
|
405
|
+
- [Things explicitly not included]
|
|
406
|
+
|
|
407
|
+
## Technical Notes
|
|
408
|
+
- [Implementation hints, constraints]
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### ATDD Workflow Steps
|
|
412
|
+
|
|
413
|
+
```
|
|
414
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
415
|
+
│ ATDD Workflow │
|
|
416
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
417
|
+
│ │
|
|
418
|
+
│ 1. Specification Workshop │
|
|
419
|
+
│ ├─ Product Owner presents user story │
|
|
420
|
+
│ ├─ Team asks clarifying questions │
|
|
421
|
+
│ ├─ Define acceptance criteria together │
|
|
422
|
+
│ └─ Write examples for each AC │
|
|
423
|
+
│ │
|
|
424
|
+
│ 2. Distillation │
|
|
425
|
+
│ ├─ Convert examples to executable tests │
|
|
426
|
+
│ ├─ Remove ambiguity │
|
|
427
|
+
│ └─ Get sign-off from Product Owner │
|
|
428
|
+
│ │
|
|
429
|
+
│ 3. Development │
|
|
430
|
+
│ ├─ Acceptance tests are RED │
|
|
431
|
+
│ ├─ Use BDD for feature-level tests │
|
|
432
|
+
│ ├─ Use TDD for unit-level tests │
|
|
433
|
+
│ └─ Acceptance tests turn GREEN │
|
|
434
|
+
│ │
|
|
435
|
+
│ 4. Demo │
|
|
436
|
+
│ ├─ Show passing acceptance tests │
|
|
437
|
+
│ ├─ Product Owner validates │
|
|
438
|
+
│ └─ Accept or refine criteria │
|
|
439
|
+
│ │
|
|
440
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
### Mapping AC to Tests
|
|
444
|
+
|
|
445
|
+
| Acceptance Criteria | Test Level | Tool |
|
|
446
|
+
|---------------------|------------|------|
|
|
447
|
+
| User-facing behavior | Acceptance | FitNesse, Cucumber |
|
|
448
|
+
| Feature behavior | BDD | Cucumber, SpecFlow |
|
|
449
|
+
| Unit logic | TDD | Jest, xUnit |
|
|
450
|
+
| API contract | Integration | Supertest, REST Assured |
|
|
451
|
+
|
|
452
|
+
---
|
|
453
|
+
|
|
454
|
+
## Team Collaboration Patterns
|
|
455
|
+
|
|
456
|
+
### Pair Programming with TDD
|
|
457
|
+
|
|
458
|
+
#### Ping-Pong Pattern
|
|
459
|
+
|
|
460
|
+
```
|
|
461
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
462
|
+
│ Ping-Pong TDD │
|
|
463
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
464
|
+
│ │
|
|
465
|
+
│ Developer A Developer B │
|
|
466
|
+
│ ─────────── ─────────── │
|
|
467
|
+
│ 1. Writes failing test ─────────────────────▶ │
|
|
468
|
+
│ ◀───────────────────── 2. Makes it pass│
|
|
469
|
+
│ ◀───────────────────── 3. Writes test │
|
|
470
|
+
│ 4. Makes it pass ───────────────────────────▶ │
|
|
471
|
+
│ 5. Writes test ─────────────────────────────▶ │
|
|
472
|
+
│ ◀───────────────────── 6. Makes it pass│
|
|
473
|
+
│ │
|
|
474
|
+
│ Either can refactor at any time │
|
|
475
|
+
│ │
|
|
476
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
**Benefits**:
|
|
480
|
+
- Both engaged constantly
|
|
481
|
+
- Knowledge sharing
|
|
482
|
+
- Catches mistakes early
|
|
483
|
+
|
|
484
|
+
#### Driver-Navigator Pattern
|
|
485
|
+
|
|
486
|
+
```
|
|
487
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
488
|
+
│ Driver-Navigator TDD │
|
|
489
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
490
|
+
│ │
|
|
491
|
+
│ Driver (Keyboard) Navigator (Thinking) │
|
|
492
|
+
│ ───────────────── ─────────────────── │
|
|
493
|
+
│ - Types code - Thinks about design │
|
|
494
|
+
│ - Focuses on syntax - Considers test cases │
|
|
495
|
+
│ - Implements ideas - Reviews for mistakes │
|
|
496
|
+
│ - Asks questions - Suggests directions │
|
|
497
|
+
│ │
|
|
498
|
+
│ Switch roles every 15-30 minutes │
|
|
499
|
+
│ │
|
|
500
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
**Benefits**:
|
|
504
|
+
- Clear roles
|
|
505
|
+
- Navigator can think strategically
|
|
506
|
+
- Continuous review
|
|
507
|
+
|
|
508
|
+
### Mob Programming with TDD
|
|
509
|
+
|
|
510
|
+
```
|
|
511
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
512
|
+
│ Mob Programming TDD │
|
|
513
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
514
|
+
│ │
|
|
515
|
+
│ Team (3-6 people) │
|
|
516
|
+
│ ───────────────── │
|
|
517
|
+
│ - One Driver (types) │
|
|
518
|
+
│ - Multiple Navigators (guide) │
|
|
519
|
+
│ - Rotate Driver every 5-10 minutes │
|
|
520
|
+
│ │
|
|
521
|
+
│ TDD Process: │
|
|
522
|
+
│ 1. Team discusses next test │
|
|
523
|
+
│ 2. Driver writes test (navigators guide) │
|
|
524
|
+
│ 3. Team verifies test fails │
|
|
525
|
+
│ 4. Team discusses implementation │
|
|
526
|
+
│ 5. Driver implements (navigators guide) │
|
|
527
|
+
│ 6. Rotate driver │
|
|
528
|
+
│ 7. Next person refactors or writes next test │
|
|
529
|
+
│ │
|
|
530
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
**Benefits**:
|
|
534
|
+
- Whole team alignment
|
|
535
|
+
- Collective ownership
|
|
536
|
+
- Real-time knowledge transfer
|
|
537
|
+
|
|
538
|
+
---
|
|
539
|
+
|
|
540
|
+
## CI/CD Integration
|
|
541
|
+
|
|
542
|
+
### Pipeline Structure
|
|
543
|
+
|
|
544
|
+
```yaml
|
|
545
|
+
stages:
|
|
546
|
+
- test:unit # Fast (< 2 min)
|
|
547
|
+
- test:integration # Medium (< 10 min)
|
|
548
|
+
- test:e2e # Slow (< 30 min)
|
|
549
|
+
- coverage-check
|
|
550
|
+
- deploy
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
### Quality Gates
|
|
554
|
+
|
|
555
|
+
| Gate | Threshold | Action on Failure |
|
|
556
|
+
|------|-----------|-------------------|
|
|
557
|
+
| Unit test pass rate | 100% | Block merge |
|
|
558
|
+
| Integration test pass rate | 100% | Block merge |
|
|
559
|
+
| Code coverage | 80% | Warn / Block |
|
|
560
|
+
| New code coverage | 90% | Warn |
|
|
561
|
+
| Test execution time | < baseline | Warn |
|
|
562
|
+
|
|
563
|
+
### Example CI Configuration
|
|
564
|
+
|
|
565
|
+
```yaml
|
|
566
|
+
# GitHub Actions
|
|
567
|
+
name: TDD Pipeline
|
|
568
|
+
|
|
569
|
+
on:
|
|
570
|
+
push:
|
|
571
|
+
branches: [main, develop]
|
|
572
|
+
pull_request:
|
|
573
|
+
branches: [main]
|
|
574
|
+
|
|
575
|
+
jobs:
|
|
576
|
+
unit-tests:
|
|
577
|
+
runs-on: ubuntu-latest
|
|
578
|
+
steps:
|
|
579
|
+
- uses: actions/checkout@v4
|
|
580
|
+
- uses: actions/setup-node@v4
|
|
581
|
+
- run: npm ci
|
|
582
|
+
- run: npm run test:unit -- --coverage
|
|
583
|
+
- uses: codecov/codecov-action@v4
|
|
584
|
+
|
|
585
|
+
integration-tests:
|
|
586
|
+
needs: unit-tests
|
|
587
|
+
runs-on: ubuntu-latest
|
|
588
|
+
services:
|
|
589
|
+
postgres:
|
|
590
|
+
image: postgres:15
|
|
591
|
+
env:
|
|
592
|
+
POSTGRES_PASSWORD: test
|
|
593
|
+
steps:
|
|
594
|
+
- uses: actions/checkout@v4
|
|
595
|
+
- run: npm run test:integration
|
|
596
|
+
|
|
597
|
+
e2e-tests:
|
|
598
|
+
needs: integration-tests
|
|
599
|
+
runs-on: ubuntu-latest
|
|
600
|
+
steps:
|
|
601
|
+
- uses: actions/checkout@v4
|
|
602
|
+
- run: npm run test:e2e
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
### Test Reporting
|
|
606
|
+
|
|
607
|
+
```yaml
|
|
608
|
+
# Add test reporting
|
|
609
|
+
- name: Test Report
|
|
610
|
+
uses: dorny/test-reporter@v1
|
|
611
|
+
if: success() || failure()
|
|
612
|
+
with:
|
|
613
|
+
name: Test Results
|
|
614
|
+
path: reports/junit.xml
|
|
615
|
+
reporter: jest-junit
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
---
|
|
619
|
+
|
|
620
|
+
## Quick Decision Guide
|
|
621
|
+
|
|
622
|
+
### Which Test to Write?
|
|
623
|
+
|
|
624
|
+
```
|
|
625
|
+
What are you implementing?
|
|
626
|
+
│
|
|
627
|
+
├─ New feature
|
|
628
|
+
│ └─ Start with acceptance criteria → BDD → TDD
|
|
629
|
+
│
|
|
630
|
+
├─ Bug fix
|
|
631
|
+
│ └─ Write failing test that reproduces bug → TDD
|
|
632
|
+
│
|
|
633
|
+
├─ Refactoring
|
|
634
|
+
│ └─ Ensure existing tests cover behavior → Refactor
|
|
635
|
+
│
|
|
636
|
+
├─ Performance improvement
|
|
637
|
+
│ └─ Write performance test → Implement → Verify
|
|
638
|
+
│
|
|
639
|
+
└─ New API endpoint
|
|
640
|
+
└─ TDD for logic + Integration test for HTTP
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
### Test Granularity
|
|
644
|
+
|
|
645
|
+
```
|
|
646
|
+
How specific should this test be?
|
|
647
|
+
│
|
|
648
|
+
├─ Testing public API → One test per behavior
|
|
649
|
+
├─ Testing internal logic → Group related assertions
|
|
650
|
+
└─ Testing edge cases → One test per edge case
|
|
651
|
+
```
|
|
652
|
+
|
|
653
|
+
---
|
|
654
|
+
|
|
655
|
+
## Related Documents
|
|
656
|
+
|
|
657
|
+
- [SKILL.md](./SKILL.md) - TDD Assistant overview
|
|
658
|
+
- [Language Examples](./language-examples.md) - Language-specific TDD
|
|
659
|
+
- [TDD Core Standard](../../../core/test-driven-development.md) - Full TDD standard
|