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.
Files changed (433) hide show
  1. package/bin/uds.js +2 -0
  2. package/bundled/core/ai-instruction-standards.md +205 -0
  3. package/bundled/core/anti-hallucination.md +684 -0
  4. package/bundled/core/changelog-standards.md +556 -0
  5. package/bundled/core/checkin-standards.md +935 -0
  6. package/bundled/core/code-review-checklist.md +684 -0
  7. package/bundled/core/commit-message-guide.md +915 -0
  8. package/bundled/core/documentation-structure.md +1117 -0
  9. package/bundled/core/documentation-writing-standards.md +487 -0
  10. package/bundled/core/error-code-standards.md +382 -0
  11. package/bundled/core/git-workflow.md +859 -0
  12. package/bundled/core/logging-standards.md +323 -0
  13. package/bundled/core/project-structure.md +354 -0
  14. package/bundled/core/refactoring-standards.md +636 -0
  15. package/bundled/core/spec-driven-development.md +207 -0
  16. package/bundled/core/test-completeness-dimensions.md +536 -0
  17. package/bundled/core/test-driven-development.md +995 -0
  18. package/bundled/core/testing-standards.md +3061 -0
  19. package/bundled/core/versioning.md +902 -0
  20. package/bundled/locales/README.md +88 -0
  21. package/bundled/locales/zh-CN/CHANGELOG.md +705 -0
  22. package/bundled/locales/zh-CN/CLAUDE.md +213 -0
  23. package/bundled/locales/zh-CN/MAINTENANCE.md +689 -0
  24. package/bundled/locales/zh-CN/README.md +707 -0
  25. package/bundled/locales/zh-CN/STANDARDS-MAPPING.md +177 -0
  26. package/bundled/locales/zh-CN/adoption/ADOPTION-GUIDE.md +392 -0
  27. package/bundled/locales/zh-CN/adoption/STATIC-DYNAMIC-GUIDE.md +302 -0
  28. package/bundled/locales/zh-CN/adoption/checklists/enterprise.md +332 -0
  29. package/bundled/locales/zh-CN/adoption/checklists/minimal.md +141 -0
  30. package/bundled/locales/zh-CN/adoption/checklists/recommended.md +272 -0
  31. package/bundled/locales/zh-CN/ai/MAINTENANCE.md +739 -0
  32. package/bundled/locales/zh-CN/ai/options/changelog/auto-generated.ai.yaml +76 -0
  33. package/bundled/locales/zh-CN/ai/options/changelog/keep-a-changelog.ai.yaml +99 -0
  34. package/bundled/locales/zh-CN/ai/options/code-review/automated-review.ai.yaml +120 -0
  35. package/bundled/locales/zh-CN/ai/options/code-review/pair-programming.ai.yaml +109 -0
  36. package/bundled/locales/zh-CN/ai/options/code-review/pr-review.ai.yaml +104 -0
  37. package/bundled/locales/zh-CN/ai/options/commit-message/bilingual.ai.yaml +105 -0
  38. package/bundled/locales/zh-CN/ai/options/commit-message/english.ai.yaml +79 -0
  39. package/bundled/locales/zh-CN/ai/options/commit-message/traditional-chinese.ai.yaml +100 -0
  40. package/bundled/locales/zh-CN/ai/options/documentation/api-docs.ai.yaml +140 -0
  41. package/bundled/locales/zh-CN/ai/options/documentation/markdown-docs.ai.yaml +89 -0
  42. package/bundled/locales/zh-CN/ai/options/documentation/wiki-style.ai.yaml +119 -0
  43. package/bundled/locales/zh-CN/ai/options/git-workflow/gitflow.ai.yaml +133 -0
  44. package/bundled/locales/zh-CN/ai/options/git-workflow/github-flow.ai.yaml +73 -0
  45. package/bundled/locales/zh-CN/ai/options/git-workflow/merge-commit.ai.yaml +88 -0
  46. package/bundled/locales/zh-CN/ai/options/git-workflow/rebase-ff.ai.yaml +113 -0
  47. package/bundled/locales/zh-CN/ai/options/git-workflow/squash-merge.ai.yaml +85 -0
  48. package/bundled/locales/zh-CN/ai/options/git-workflow/trunk-based.ai.yaml +117 -0
  49. package/bundled/locales/zh-CN/ai/options/project-structure/dotnet.ai.yaml +108 -0
  50. package/bundled/locales/zh-CN/ai/options/project-structure/go.ai.yaml +115 -0
  51. package/bundled/locales/zh-CN/ai/options/project-structure/java.ai.yaml +113 -0
  52. package/bundled/locales/zh-CN/ai/options/project-structure/kotlin.ai.yaml +123 -0
  53. package/bundled/locales/zh-CN/ai/options/project-structure/nodejs.ai.yaml +101 -0
  54. package/bundled/locales/zh-CN/ai/options/project-structure/php.ai.yaml +147 -0
  55. package/bundled/locales/zh-CN/ai/options/project-structure/python.ai.yaml +116 -0
  56. package/bundled/locales/zh-CN/ai/options/project-structure/ruby.ai.yaml +140 -0
  57. package/bundled/locales/zh-CN/ai/options/project-structure/rust.ai.yaml +117 -0
  58. package/bundled/locales/zh-CN/ai/options/project-structure/swift.ai.yaml +143 -0
  59. package/bundled/locales/zh-CN/ai/options/testing/contract-testing.ai.yaml +254 -0
  60. package/bundled/locales/zh-CN/ai/options/testing/e2e-testing.ai.yaml +116 -0
  61. package/bundled/locales/zh-CN/ai/options/testing/industry-pyramid.ai.yaml +144 -0
  62. package/bundled/locales/zh-CN/ai/options/testing/integration-testing.ai.yaml +90 -0
  63. package/bundled/locales/zh-CN/ai/options/testing/istqb-framework.ai.yaml +108 -0
  64. package/bundled/locales/zh-CN/ai/options/testing/performance-testing.ai.yaml +272 -0
  65. package/bundled/locales/zh-CN/ai/options/testing/security-testing.ai.yaml +160 -0
  66. package/bundled/locales/zh-CN/ai/options/testing/system-testing.ai.yaml +101 -0
  67. package/bundled/locales/zh-CN/ai/options/testing/unit-testing.ai.yaml +82 -0
  68. package/bundled/locales/zh-CN/ai/standards/anti-hallucination.ai.yaml +145 -0
  69. package/bundled/locales/zh-CN/ai/standards/changelog.ai.yaml +146 -0
  70. package/bundled/locales/zh-CN/ai/standards/checkin-standards.ai.yaml +170 -0
  71. package/bundled/locales/zh-CN/ai/standards/code-review.ai.yaml +148 -0
  72. package/bundled/locales/zh-CN/ai/standards/commit-message.ai.yaml +175 -0
  73. package/bundled/locales/zh-CN/ai/standards/documentation-structure.ai.yaml +124 -0
  74. package/bundled/locales/zh-CN/ai/standards/documentation-writing-standards.ai.yaml +190 -0
  75. package/bundled/locales/zh-CN/ai/standards/error-codes.ai.yaml +139 -0
  76. package/bundled/locales/zh-CN/ai/standards/git-workflow.ai.yaml +95 -0
  77. package/bundled/locales/zh-CN/ai/standards/logging.ai.yaml +128 -0
  78. package/bundled/locales/zh-CN/ai/standards/project-structure.ai.yaml +134 -0
  79. package/bundled/locales/zh-CN/ai/standards/spec-driven-development.ai.yaml +169 -0
  80. package/bundled/locales/zh-CN/ai/standards/test-completeness-dimensions.ai.yaml +220 -0
  81. package/bundled/locales/zh-CN/ai/standards/testing.ai.yaml +137 -0
  82. package/bundled/locales/zh-CN/ai/standards/versioning.ai.yaml +211 -0
  83. package/bundled/locales/zh-CN/core/ai-instruction-standards.md +213 -0
  84. package/bundled/locales/zh-CN/core/anti-hallucination.md +691 -0
  85. package/bundled/locales/zh-CN/core/changelog-standards.md +147 -0
  86. package/bundled/locales/zh-CN/core/checkin-standards.md +943 -0
  87. package/bundled/locales/zh-CN/core/code-review-guide.md +693 -0
  88. package/bundled/locales/zh-CN/core/commit-message-guide.md +129 -0
  89. package/bundled/locales/zh-CN/core/documentation-structure.md +173 -0
  90. package/bundled/locales/zh-CN/core/documentation-writing-standards.md +495 -0
  91. package/bundled/locales/zh-CN/core/error-code-standards.md +180 -0
  92. package/bundled/locales/zh-CN/core/git-workflow.md +193 -0
  93. package/bundled/locales/zh-CN/core/logging-standards.md +174 -0
  94. package/bundled/locales/zh-CN/core/project-structure.md +184 -0
  95. package/bundled/locales/zh-CN/core/refactoring-standards.md +642 -0
  96. package/bundled/locales/zh-CN/core/spec-driven-development.md +215 -0
  97. package/bundled/locales/zh-CN/core/test-completeness-dimensions.md +544 -0
  98. package/bundled/locales/zh-CN/core/test-driven-development.md +1002 -0
  99. package/bundled/locales/zh-CN/core/testing-standards.md +170 -0
  100. package/bundled/locales/zh-CN/core/versioning.md +177 -0
  101. package/bundled/locales/zh-CN/docs/AI-AGENT-ROADMAP.md +303 -0
  102. package/bundled/locales/zh-CN/docs/CLI-INIT-OPTIONS.md +990 -0
  103. package/bundled/locales/zh-CN/docs/OPERATION-WORKFLOW.md +1064 -0
  104. package/bundled/locales/zh-CN/docs/USAGE-MODES-COMPARISON.md +333 -0
  105. package/bundled/locales/zh-CN/docs/WINDOWS-GUIDE.md +215 -0
  106. package/bundled/locales/zh-CN/integrations/codex/AGENTS.md +115 -0
  107. package/bundled/locales/zh-CN/integrations/codex/README.md +67 -0
  108. package/bundled/locales/zh-CN/integrations/gemini-cli/GEMINI.md +102 -0
  109. package/bundled/locales/zh-CN/integrations/gemini-cli/README.md +140 -0
  110. package/bundled/locales/zh-CN/integrations/github-copilot/COPILOT-CHAT-REFERENCE.md +269 -0
  111. package/bundled/locales/zh-CN/integrations/github-copilot/README.md +167 -0
  112. package/bundled/locales/zh-CN/integrations/github-copilot/copilot-instructions.md +263 -0
  113. package/bundled/locales/zh-CN/integrations/github-copilot/skills-mapping.md +192 -0
  114. package/bundled/locales/zh-CN/integrations/google-antigravity/INSTRUCTIONS.md +61 -0
  115. package/bundled/locales/zh-CN/integrations/google-antigravity/README.md +84 -0
  116. package/bundled/locales/zh-CN/integrations/opencode/AGENTS.md +111 -0
  117. package/bundled/locales/zh-CN/integrations/opencode/README.md +176 -0
  118. package/bundled/locales/zh-CN/integrations/opencode/skills-mapping.md +396 -0
  119. package/bundled/locales/zh-CN/integrations/openspec/AGENTS.md +301 -0
  120. package/bundled/locales/zh-CN/integrations/openspec/README.md +43 -0
  121. package/bundled/locales/zh-CN/integrations/spec-kit/AGENTS.md +184 -0
  122. package/bundled/locales/zh-CN/integrations/spec-kit/README.md +43 -0
  123. package/bundled/locales/zh-CN/options/commit-message/bilingual.md +161 -0
  124. package/bundled/locales/zh-CN/options/commit-message/english.md +137 -0
  125. package/bundled/locales/zh-CN/options/commit-message/traditional-chinese.md +162 -0
  126. package/bundled/locales/zh-CN/options/git-workflow/gitflow.md +147 -0
  127. package/bundled/locales/zh-CN/options/git-workflow/github-flow.md +124 -0
  128. package/bundled/locales/zh-CN/options/git-workflow/merge-commit.md +124 -0
  129. package/bundled/locales/zh-CN/options/git-workflow/rebase-ff.md +160 -0
  130. package/bundled/locales/zh-CN/options/git-workflow/squash-merge.md +117 -0
  131. package/bundled/locales/zh-CN/options/git-workflow/trunk-based.md +125 -0
  132. package/bundled/locales/zh-CN/options/project-structure/dotnet.md +183 -0
  133. package/bundled/locales/zh-CN/options/project-structure/go.md +226 -0
  134. package/bundled/locales/zh-CN/options/project-structure/java.md +213 -0
  135. package/bundled/locales/zh-CN/options/project-structure/nodejs.md +185 -0
  136. package/bundled/locales/zh-CN/options/project-structure/python.md +229 -0
  137. package/bundled/locales/zh-CN/options/testing/e2e-testing.md +207 -0
  138. package/bundled/locales/zh-CN/options/testing/integration-testing.md +230 -0
  139. package/bundled/locales/zh-CN/options/testing/system-testing.md +183 -0
  140. package/bundled/locales/zh-CN/options/testing/unit-testing.md +165 -0
  141. package/bundled/locales/zh-CN/skills/INTEGRATION-GUIDE.md +218 -0
  142. package/bundled/locales/zh-CN/skills/README.md +134 -0
  143. package/bundled/locales/zh-CN/skills/_shared/README.md +68 -0
  144. package/bundled/locales/zh-CN/skills/claude-code/CONTRIBUTING.template.md +151 -0
  145. package/bundled/locales/zh-CN/skills/claude-code/README.md +174 -0
  146. package/bundled/locales/zh-CN/skills/claude-code/ai-collaboration-standards/SKILL.md +175 -0
  147. package/bundled/locales/zh-CN/skills/claude-code/ai-collaboration-standards/anti-hallucination.md +223 -0
  148. package/bundled/locales/zh-CN/skills/claude-code/ai-collaboration-standards/certainty-labels.md +132 -0
  149. package/bundled/locales/zh-CN/skills/claude-code/changelog-guide/SKILL.md +237 -0
  150. package/bundled/locales/zh-CN/skills/claude-code/checkin-assistant/SKILL.md +407 -0
  151. package/bundled/locales/zh-CN/skills/claude-code/code-review-assistant/SKILL.md +154 -0
  152. package/bundled/locales/zh-CN/skills/claude-code/code-review-assistant/checkin-checklist.md +257 -0
  153. package/bundled/locales/zh-CN/skills/claude-code/code-review-assistant/review-checklist.md +246 -0
  154. package/bundled/locales/zh-CN/skills/claude-code/commands/bdd.md +142 -0
  155. package/bundled/locales/zh-CN/skills/claude-code/commands/methodology.md +274 -0
  156. package/bundled/locales/zh-CN/skills/claude-code/commit-standards/SKILL.md +191 -0
  157. package/bundled/locales/zh-CN/skills/claude-code/commit-standards/conventional-commits.md +264 -0
  158. package/bundled/locales/zh-CN/skills/claude-code/commit-standards/language-options.md +172 -0
  159. package/bundled/locales/zh-CN/skills/claude-code/documentation-guide/SKILL.md +421 -0
  160. package/bundled/locales/zh-CN/skills/claude-code/documentation-guide/documentation-structure.md +357 -0
  161. package/bundled/locales/zh-CN/skills/claude-code/documentation-guide/readme-template.md +412 -0
  162. package/bundled/locales/zh-CN/skills/claude-code/error-code-guide/SKILL.md +269 -0
  163. package/bundled/locales/zh-CN/skills/claude-code/git-workflow-guide/SKILL.md +218 -0
  164. package/bundled/locales/zh-CN/skills/claude-code/git-workflow-guide/branch-naming.md +220 -0
  165. package/bundled/locales/zh-CN/skills/claude-code/git-workflow-guide/git-workflow.md +321 -0
  166. package/bundled/locales/zh-CN/skills/claude-code/logging-guide/SKILL.md +285 -0
  167. package/bundled/locales/zh-CN/skills/claude-code/methodology-system/SKILL.md +131 -0
  168. package/bundled/locales/zh-CN/skills/claude-code/methodology-system/create-methodology.md +350 -0
  169. package/bundled/locales/zh-CN/skills/claude-code/methodology-system/runtime.md +279 -0
  170. package/bundled/locales/zh-CN/skills/claude-code/project-structure-guide/SKILL.md +143 -0
  171. package/bundled/locales/zh-CN/skills/claude-code/project-structure-guide/language-patterns.md +271 -0
  172. package/bundled/locales/zh-CN/skills/claude-code/refactoring-assistant/SKILL.md +162 -0
  173. package/bundled/locales/zh-CN/skills/claude-code/release-standards/SKILL.md +191 -0
  174. package/bundled/locales/zh-CN/skills/claude-code/release-standards/changelog-format.md +247 -0
  175. package/bundled/locales/zh-CN/skills/claude-code/release-standards/release-workflow.md +345 -0
  176. package/bundled/locales/zh-CN/skills/claude-code/release-standards/semantic-versioning.md +250 -0
  177. package/bundled/locales/zh-CN/skills/claude-code/requirement-assistant/SKILL.md +227 -0
  178. package/bundled/locales/zh-CN/skills/claude-code/requirement-assistant/requirement-checklist.md +325 -0
  179. package/bundled/locales/zh-CN/skills/claude-code/requirement-assistant/requirement-writing.md +399 -0
  180. package/bundled/locales/zh-CN/skills/claude-code/spec-driven-dev/SKILL.md +243 -0
  181. package/bundled/locales/zh-CN/skills/claude-code/tdd-assistant/SKILL.md +332 -0
  182. package/bundled/locales/zh-CN/skills/claude-code/tdd-assistant/language-examples.md +639 -0
  183. package/bundled/locales/zh-CN/skills/claude-code/tdd-assistant/tdd-workflow.md +486 -0
  184. package/bundled/locales/zh-CN/skills/claude-code/test-coverage-assistant/SKILL.md +282 -0
  185. package/bundled/locales/zh-CN/skills/claude-code/testing-guide/SKILL.md +234 -0
  186. package/bundled/locales/zh-CN/skills/claude-code/testing-guide/testing-pyramid.md +448 -0
  187. package/bundled/locales/zh-CN/skills/cline/README.md +58 -0
  188. package/bundled/locales/zh-CN/skills/copilot/README.md +61 -0
  189. package/bundled/locales/zh-CN/skills/copilot/copilot-instructions.md +79 -0
  190. package/bundled/locales/zh-CN/skills/cursor/README.md +58 -0
  191. package/bundled/locales/zh-CN/skills/windsurf/README.md +59 -0
  192. package/bundled/locales/zh-TW/CHANGELOG.md +707 -0
  193. package/bundled/locales/zh-TW/CLAUDE.md +213 -0
  194. package/bundled/locales/zh-TW/MAINTENANCE.md +683 -0
  195. package/bundled/locales/zh-TW/README.md +687 -0
  196. package/bundled/locales/zh-TW/STANDARDS-MAPPING.md +177 -0
  197. package/bundled/locales/zh-TW/adoption/ADOPTION-GUIDE.md +392 -0
  198. package/bundled/locales/zh-TW/adoption/STATIC-DYNAMIC-GUIDE.md +299 -0
  199. package/bundled/locales/zh-TW/adoption/checklists/enterprise.md +332 -0
  200. package/bundled/locales/zh-TW/adoption/checklists/minimal.md +141 -0
  201. package/bundled/locales/zh-TW/adoption/checklists/recommended.md +272 -0
  202. package/bundled/locales/zh-TW/ai/MAINTENANCE.md +754 -0
  203. package/bundled/locales/zh-TW/ai/options/changelog/auto-generated.ai.yaml +76 -0
  204. package/bundled/locales/zh-TW/ai/options/changelog/keep-a-changelog.ai.yaml +99 -0
  205. package/bundled/locales/zh-TW/ai/options/code-review/automated-review.ai.yaml +120 -0
  206. package/bundled/locales/zh-TW/ai/options/code-review/pair-programming.ai.yaml +109 -0
  207. package/bundled/locales/zh-TW/ai/options/code-review/pr-review.ai.yaml +104 -0
  208. package/bundled/locales/zh-TW/ai/options/commit-message/bilingual.ai.yaml +105 -0
  209. package/bundled/locales/zh-TW/ai/options/commit-message/english.ai.yaml +79 -0
  210. package/bundled/locales/zh-TW/ai/options/commit-message/traditional-chinese.ai.yaml +100 -0
  211. package/bundled/locales/zh-TW/ai/options/documentation/api-docs.ai.yaml +140 -0
  212. package/bundled/locales/zh-TW/ai/options/documentation/markdown-docs.ai.yaml +89 -0
  213. package/bundled/locales/zh-TW/ai/options/documentation/wiki-style.ai.yaml +119 -0
  214. package/bundled/locales/zh-TW/ai/options/git-workflow/gitflow.ai.yaml +133 -0
  215. package/bundled/locales/zh-TW/ai/options/git-workflow/github-flow.ai.yaml +73 -0
  216. package/bundled/locales/zh-TW/ai/options/git-workflow/merge-commit.ai.yaml +88 -0
  217. package/bundled/locales/zh-TW/ai/options/git-workflow/rebase-ff.ai.yaml +113 -0
  218. package/bundled/locales/zh-TW/ai/options/git-workflow/squash-merge.ai.yaml +85 -0
  219. package/bundled/locales/zh-TW/ai/options/git-workflow/trunk-based.ai.yaml +117 -0
  220. package/bundled/locales/zh-TW/ai/options/project-structure/dotnet.ai.yaml +108 -0
  221. package/bundled/locales/zh-TW/ai/options/project-structure/go.ai.yaml +115 -0
  222. package/bundled/locales/zh-TW/ai/options/project-structure/java.ai.yaml +113 -0
  223. package/bundled/locales/zh-TW/ai/options/project-structure/kotlin.ai.yaml +123 -0
  224. package/bundled/locales/zh-TW/ai/options/project-structure/nodejs.ai.yaml +101 -0
  225. package/bundled/locales/zh-TW/ai/options/project-structure/php.ai.yaml +147 -0
  226. package/bundled/locales/zh-TW/ai/options/project-structure/python.ai.yaml +116 -0
  227. package/bundled/locales/zh-TW/ai/options/project-structure/ruby.ai.yaml +140 -0
  228. package/bundled/locales/zh-TW/ai/options/project-structure/rust.ai.yaml +117 -0
  229. package/bundled/locales/zh-TW/ai/options/project-structure/swift.ai.yaml +143 -0
  230. package/bundled/locales/zh-TW/ai/options/testing/contract-testing.ai.yaml +254 -0
  231. package/bundled/locales/zh-TW/ai/options/testing/e2e-testing.ai.yaml +116 -0
  232. package/bundled/locales/zh-TW/ai/options/testing/industry-pyramid.ai.yaml +144 -0
  233. package/bundled/locales/zh-TW/ai/options/testing/integration-testing.ai.yaml +90 -0
  234. package/bundled/locales/zh-TW/ai/options/testing/istqb-framework.ai.yaml +108 -0
  235. package/bundled/locales/zh-TW/ai/options/testing/performance-testing.ai.yaml +272 -0
  236. package/bundled/locales/zh-TW/ai/options/testing/security-testing.ai.yaml +160 -0
  237. package/bundled/locales/zh-TW/ai/options/testing/system-testing.ai.yaml +101 -0
  238. package/bundled/locales/zh-TW/ai/options/testing/unit-testing.ai.yaml +82 -0
  239. package/bundled/locales/zh-TW/ai/standards/anti-hallucination.ai.yaml +145 -0
  240. package/bundled/locales/zh-TW/ai/standards/changelog.ai.yaml +146 -0
  241. package/bundled/locales/zh-TW/ai/standards/checkin-standards.ai.yaml +170 -0
  242. package/bundled/locales/zh-TW/ai/standards/code-review.ai.yaml +148 -0
  243. package/bundled/locales/zh-TW/ai/standards/commit-message.ai.yaml +175 -0
  244. package/bundled/locales/zh-TW/ai/standards/documentation-structure.ai.yaml +124 -0
  245. package/bundled/locales/zh-TW/ai/standards/documentation-writing-standards.ai.yaml +190 -0
  246. package/bundled/locales/zh-TW/ai/standards/error-codes.ai.yaml +139 -0
  247. package/bundled/locales/zh-TW/ai/standards/git-workflow.ai.yaml +95 -0
  248. package/bundled/locales/zh-TW/ai/standards/logging.ai.yaml +128 -0
  249. package/bundled/locales/zh-TW/ai/standards/project-structure.ai.yaml +134 -0
  250. package/bundled/locales/zh-TW/ai/standards/spec-driven-development.ai.yaml +169 -0
  251. package/bundled/locales/zh-TW/ai/standards/test-completeness-dimensions.ai.yaml +220 -0
  252. package/bundled/locales/zh-TW/ai/standards/testing.ai.yaml +137 -0
  253. package/bundled/locales/zh-TW/ai/standards/versioning.ai.yaml +211 -0
  254. package/bundled/locales/zh-TW/core/ai-instruction-standards.md +213 -0
  255. package/bundled/locales/zh-TW/core/anti-hallucination.md +691 -0
  256. package/bundled/locales/zh-TW/core/changelog-standards.md +564 -0
  257. package/bundled/locales/zh-TW/core/checkin-standards.md +943 -0
  258. package/bundled/locales/zh-TW/core/code-review-checklist.md +693 -0
  259. package/bundled/locales/zh-TW/core/commit-message-guide.md +809 -0
  260. package/bundled/locales/zh-TW/core/documentation-structure.md +1125 -0
  261. package/bundled/locales/zh-TW/core/documentation-writing-standards.md +495 -0
  262. package/bundled/locales/zh-TW/core/error-code-standards.md +384 -0
  263. package/bundled/locales/zh-TW/core/git-workflow.md +860 -0
  264. package/bundled/locales/zh-TW/core/logging-standards.md +325 -0
  265. package/bundled/locales/zh-TW/core/project-structure.md +362 -0
  266. package/bundled/locales/zh-TW/core/refactoring-standards.md +642 -0
  267. package/bundled/locales/zh-TW/core/spec-driven-development.md +215 -0
  268. package/bundled/locales/zh-TW/core/test-completeness-dimensions.md +544 -0
  269. package/bundled/locales/zh-TW/core/test-driven-development.md +1004 -0
  270. package/bundled/locales/zh-TW/core/testing-standards.md +2158 -0
  271. package/bundled/locales/zh-TW/core/versioning.md +909 -0
  272. package/bundled/locales/zh-TW/docs/AI-AGENT-ROADMAP.md +303 -0
  273. package/bundled/locales/zh-TW/docs/CLI-INIT-OPTIONS.md +990 -0
  274. package/bundled/locales/zh-TW/docs/OPERATION-WORKFLOW.md +1064 -0
  275. package/bundled/locales/zh-TW/docs/USAGE-MODES-COMPARISON.md +333 -0
  276. package/bundled/locales/zh-TW/docs/WINDOWS-GUIDE.md +215 -0
  277. package/bundled/locales/zh-TW/integrations/codex/AGENTS.md +115 -0
  278. package/bundled/locales/zh-TW/integrations/codex/README.md +113 -0
  279. package/bundled/locales/zh-TW/integrations/gemini-cli/GEMINI.md +102 -0
  280. package/bundled/locales/zh-TW/integrations/gemini-cli/README.md +140 -0
  281. package/bundled/locales/zh-TW/integrations/github-copilot/COPILOT-CHAT-REFERENCE.md +269 -0
  282. package/bundled/locales/zh-TW/integrations/github-copilot/README.md +167 -0
  283. package/bundled/locales/zh-TW/integrations/github-copilot/copilot-instructions.md +263 -0
  284. package/bundled/locales/zh-TW/integrations/github-copilot/skills-mapping.md +192 -0
  285. package/bundled/locales/zh-TW/integrations/google-antigravity/INSTRUCTIONS.md +61 -0
  286. package/bundled/locales/zh-TW/integrations/google-antigravity/README.md +84 -0
  287. package/bundled/locales/zh-TW/integrations/opencode/AGENTS.md +111 -0
  288. package/bundled/locales/zh-TW/integrations/opencode/README.md +176 -0
  289. package/bundled/locales/zh-TW/integrations/opencode/skills-mapping.md +396 -0
  290. package/bundled/locales/zh-TW/integrations/openspec/AGENTS.md +301 -0
  291. package/bundled/locales/zh-TW/integrations/openspec/README.md +43 -0
  292. package/bundled/locales/zh-TW/integrations/spec-kit/AGENTS.md +184 -0
  293. package/bundled/locales/zh-TW/integrations/spec-kit/README.md +43 -0
  294. package/bundled/locales/zh-TW/options/commit-message/bilingual.md +161 -0
  295. package/bundled/locales/zh-TW/options/commit-message/english.md +137 -0
  296. package/bundled/locales/zh-TW/options/commit-message/traditional-chinese.md +162 -0
  297. package/bundled/locales/zh-TW/options/git-workflow/gitflow.md +147 -0
  298. package/bundled/locales/zh-TW/options/git-workflow/github-flow.md +124 -0
  299. package/bundled/locales/zh-TW/options/git-workflow/merge-commit.md +124 -0
  300. package/bundled/locales/zh-TW/options/git-workflow/rebase-ff.md +160 -0
  301. package/bundled/locales/zh-TW/options/git-workflow/squash-merge.md +117 -0
  302. package/bundled/locales/zh-TW/options/git-workflow/trunk-based.md +125 -0
  303. package/bundled/locales/zh-TW/options/project-structure/dotnet.md +183 -0
  304. package/bundled/locales/zh-TW/options/project-structure/go.md +226 -0
  305. package/bundled/locales/zh-TW/options/project-structure/java.md +213 -0
  306. package/bundled/locales/zh-TW/options/project-structure/nodejs.md +185 -0
  307. package/bundled/locales/zh-TW/options/project-structure/python.md +229 -0
  308. package/bundled/locales/zh-TW/options/testing/e2e-testing.md +207 -0
  309. package/bundled/locales/zh-TW/options/testing/integration-testing.md +230 -0
  310. package/bundled/locales/zh-TW/options/testing/system-testing.md +183 -0
  311. package/bundled/locales/zh-TW/options/testing/unit-testing.md +165 -0
  312. package/bundled/locales/zh-TW/skills/INTEGRATION-GUIDE.md +218 -0
  313. package/bundled/locales/zh-TW/skills/README.md +132 -0
  314. package/bundled/locales/zh-TW/skills/_shared/README.md +68 -0
  315. package/bundled/locales/zh-TW/skills/claude-code/CONTRIBUTING.template.md +151 -0
  316. package/bundled/locales/zh-TW/skills/claude-code/README.md +174 -0
  317. package/bundled/locales/zh-TW/skills/claude-code/ai-collaboration-standards/SKILL.md +175 -0
  318. package/bundled/locales/zh-TW/skills/claude-code/ai-collaboration-standards/anti-hallucination.md +223 -0
  319. package/bundled/locales/zh-TW/skills/claude-code/ai-collaboration-standards/certainty-labels.md +132 -0
  320. package/bundled/locales/zh-TW/skills/claude-code/changelog-guide/SKILL.md +237 -0
  321. package/bundled/locales/zh-TW/skills/claude-code/checkin-assistant/SKILL.md +407 -0
  322. package/bundled/locales/zh-TW/skills/claude-code/code-review-assistant/SKILL.md +154 -0
  323. package/bundled/locales/zh-TW/skills/claude-code/code-review-assistant/checkin-checklist.md +257 -0
  324. package/bundled/locales/zh-TW/skills/claude-code/code-review-assistant/review-checklist.md +246 -0
  325. package/bundled/locales/zh-TW/skills/claude-code/commands/bdd.md +142 -0
  326. package/bundled/locales/zh-TW/skills/claude-code/commands/methodology.md +274 -0
  327. package/bundled/locales/zh-TW/skills/claude-code/commit-standards/SKILL.md +191 -0
  328. package/bundled/locales/zh-TW/skills/claude-code/commit-standards/conventional-commits.md +264 -0
  329. package/bundled/locales/zh-TW/skills/claude-code/commit-standards/language-options.md +172 -0
  330. package/bundled/locales/zh-TW/skills/claude-code/documentation-guide/SKILL.md +421 -0
  331. package/bundled/locales/zh-TW/skills/claude-code/documentation-guide/documentation-structure.md +357 -0
  332. package/bundled/locales/zh-TW/skills/claude-code/documentation-guide/readme-template.md +412 -0
  333. package/bundled/locales/zh-TW/skills/claude-code/error-code-guide/SKILL.md +269 -0
  334. package/bundled/locales/zh-TW/skills/claude-code/git-workflow-guide/SKILL.md +218 -0
  335. package/bundled/locales/zh-TW/skills/claude-code/git-workflow-guide/branch-naming.md +220 -0
  336. package/bundled/locales/zh-TW/skills/claude-code/git-workflow-guide/git-workflow.md +321 -0
  337. package/bundled/locales/zh-TW/skills/claude-code/logging-guide/SKILL.md +285 -0
  338. package/bundled/locales/zh-TW/skills/claude-code/methodology-system/SKILL.md +131 -0
  339. package/bundled/locales/zh-TW/skills/claude-code/methodology-system/create-methodology.md +350 -0
  340. package/bundled/locales/zh-TW/skills/claude-code/methodology-system/runtime.md +279 -0
  341. package/bundled/locales/zh-TW/skills/claude-code/project-structure-guide/SKILL.md +143 -0
  342. package/bundled/locales/zh-TW/skills/claude-code/project-structure-guide/language-patterns.md +271 -0
  343. package/bundled/locales/zh-TW/skills/claude-code/refactoring-assistant/SKILL.md +162 -0
  344. package/bundled/locales/zh-TW/skills/claude-code/release-standards/SKILL.md +191 -0
  345. package/bundled/locales/zh-TW/skills/claude-code/release-standards/changelog-format.md +247 -0
  346. package/bundled/locales/zh-TW/skills/claude-code/release-standards/release-workflow.md +345 -0
  347. package/bundled/locales/zh-TW/skills/claude-code/release-standards/semantic-versioning.md +250 -0
  348. package/bundled/locales/zh-TW/skills/claude-code/requirement-assistant/SKILL.md +227 -0
  349. package/bundled/locales/zh-TW/skills/claude-code/requirement-assistant/requirement-checklist.md +325 -0
  350. package/bundled/locales/zh-TW/skills/claude-code/requirement-assistant/requirement-writing.md +399 -0
  351. package/bundled/locales/zh-TW/skills/claude-code/spec-driven-dev/SKILL.md +243 -0
  352. package/bundled/locales/zh-TW/skills/claude-code/tdd-assistant/SKILL.md +332 -0
  353. package/bundled/locales/zh-TW/skills/claude-code/tdd-assistant/language-examples.md +639 -0
  354. package/bundled/locales/zh-TW/skills/claude-code/tdd-assistant/tdd-workflow.md +486 -0
  355. package/bundled/locales/zh-TW/skills/claude-code/test-coverage-assistant/SKILL.md +282 -0
  356. package/bundled/locales/zh-TW/skills/claude-code/testing-guide/SKILL.md +234 -0
  357. package/bundled/locales/zh-TW/skills/claude-code/testing-guide/testing-pyramid.md +448 -0
  358. package/bundled/locales/zh-TW/skills/cline/README.md +58 -0
  359. package/bundled/locales/zh-TW/skills/copilot/README.md +61 -0
  360. package/bundled/locales/zh-TW/skills/copilot/copilot-instructions.md +79 -0
  361. package/bundled/locales/zh-TW/skills/cursor/README.md +58 -0
  362. package/bundled/locales/zh-TW/skills/windsurf/README.md +59 -0
  363. package/bundled/skills/claude-code/CONTRIBUTING.template.md +141 -0
  364. package/bundled/skills/claude-code/README.md +196 -0
  365. package/bundled/skills/claude-code/ai/standards/checkin.ai.yaml +21 -0
  366. package/bundled/skills/claude-code/ai/standards/commit.ai.yaml +20 -0
  367. package/bundled/skills/claude-code/ai/standards/refactoring.ai.yaml +34 -0
  368. package/bundled/skills/claude-code/ai/standards/testing.ai.yaml +41 -0
  369. package/bundled/skills/claude-code/ai-collaboration-standards/SKILL.md +175 -0
  370. package/bundled/skills/claude-code/ai-collaboration-standards/anti-hallucination.md +215 -0
  371. package/bundled/skills/claude-code/ai-collaboration-standards/certainty-labels.md +124 -0
  372. package/bundled/skills/claude-code/changelog-guide/SKILL.md +232 -0
  373. package/bundled/skills/claude-code/checkin-assistant/SKILL.md +402 -0
  374. package/bundled/skills/claude-code/code-review-assistant/SKILL.md +220 -0
  375. package/bundled/skills/claude-code/code-review-assistant/checkin-checklist.md +249 -0
  376. package/bundled/skills/claude-code/code-review-assistant/review-checklist.md +238 -0
  377. package/bundled/skills/claude-code/commands/README.md +78 -0
  378. package/bundled/skills/claude-code/commands/bdd.md +142 -0
  379. package/bundled/skills/claude-code/commands/changelog.md +57 -0
  380. package/bundled/skills/claude-code/commands/check.md +91 -0
  381. package/bundled/skills/claude-code/commands/commit.md +48 -0
  382. package/bundled/skills/claude-code/commands/config.md +97 -0
  383. package/bundled/skills/claude-code/commands/coverage.md +58 -0
  384. package/bundled/skills/claude-code/commands/docs.md +75 -0
  385. package/bundled/skills/claude-code/commands/init.md +88 -0
  386. package/bundled/skills/claude-code/commands/methodology.md +268 -0
  387. package/bundled/skills/claude-code/commands/release.md +50 -0
  388. package/bundled/skills/claude-code/commands/requirement.md +54 -0
  389. package/bundled/skills/claude-code/commands/review.md +50 -0
  390. package/bundled/skills/claude-code/commands/spec.md +69 -0
  391. package/bundled/skills/claude-code/commands/tdd.md +86 -0
  392. package/bundled/skills/claude-code/commands/update.md +122 -0
  393. package/bundled/skills/claude-code/commit-standards/SKILL.md +249 -0
  394. package/bundled/skills/claude-code/commit-standards/conventional-commits.md +256 -0
  395. package/bundled/skills/claude-code/commit-standards/language-options.md +164 -0
  396. package/bundled/skills/claude-code/documentation-guide/SKILL.md +416 -0
  397. package/bundled/skills/claude-code/documentation-guide/documentation-structure.md +349 -0
  398. package/bundled/skills/claude-code/documentation-guide/readme-template.md +404 -0
  399. package/bundled/skills/claude-code/error-code-guide/SKILL.md +264 -0
  400. package/bundled/skills/claude-code/git-workflow-guide/SKILL.md +226 -0
  401. package/bundled/skills/claude-code/git-workflow-guide/branch-naming.md +212 -0
  402. package/bundled/skills/claude-code/git-workflow-guide/git-workflow.md +313 -0
  403. package/bundled/skills/claude-code/logging-guide/SKILL.md +280 -0
  404. package/bundled/skills/claude-code/methodology-system/SKILL.md +215 -0
  405. package/bundled/skills/claude-code/methodology-system/create-methodology.md +450 -0
  406. package/bundled/skills/claude-code/methodology-system/runtime.md +271 -0
  407. package/bundled/skills/claude-code/project-structure-guide/SKILL.md +143 -0
  408. package/bundled/skills/claude-code/project-structure-guide/language-patterns.md +263 -0
  409. package/bundled/skills/claude-code/refactoring-assistant/SKILL.md +205 -0
  410. package/bundled/skills/claude-code/release-standards/SKILL.md +191 -0
  411. package/bundled/skills/claude-code/release-standards/changelog-format.md +239 -0
  412. package/bundled/skills/claude-code/release-standards/release-workflow.md +337 -0
  413. package/bundled/skills/claude-code/release-standards/semantic-versioning.md +242 -0
  414. package/bundled/skills/claude-code/requirement-assistant/SKILL.md +222 -0
  415. package/bundled/skills/claude-code/requirement-assistant/requirement-checklist.md +317 -0
  416. package/bundled/skills/claude-code/requirement-assistant/requirement-writing.md +391 -0
  417. package/bundled/skills/claude-code/spec-driven-dev/SKILL.md +238 -0
  418. package/bundled/skills/claude-code/tdd-assistant/SKILL.md +384 -0
  419. package/bundled/skills/claude-code/tdd-assistant/language-examples.md +1276 -0
  420. package/bundled/skills/claude-code/tdd-assistant/tdd-workflow.md +659 -0
  421. package/bundled/skills/claude-code/test-coverage-assistant/SKILL.md +277 -0
  422. package/bundled/skills/claude-code/testing-guide/SKILL.md +317 -0
  423. package/bundled/skills/claude-code/testing-guide/testing-pyramid.md +440 -0
  424. package/package.json +4 -2
  425. package/src/commands/check.js +38 -6
  426. package/src/commands/init.js +20 -6
  427. package/src/commands/list.js +7 -2
  428. package/src/commands/skills.js +0 -2
  429. package/src/commands/update.js +271 -0
  430. package/src/i18n/messages.js +161 -11
  431. package/src/utils/copier.js +63 -10
  432. package/src/utils/skills-installer.js +47 -11
  433. package/standards-registry.json +6 -3
@@ -0,0 +1,440 @@
1
+ # Testing Pyramid Guide
2
+
3
+ > **Language**: English | [繁體中文](../../../locales/zh-TW/skills/claude-code/testing-guide/testing-pyramid.md)
4
+
5
+ **Version**: 1.1.0
6
+ **Last Updated**: 2025-12-29
7
+ **Applicability**: Claude Code Skills
8
+
9
+ ---
10
+
11
+ ## Purpose
12
+
13
+ This document provides detailed guidelines for the testing pyramid and test writing best practices. It supports both ISTQB and Industry Pyramid frameworks.
14
+
15
+ ---
16
+
17
+ ## Framework Selection
18
+
19
+ | Framework | Levels | Best For |
20
+ |-----------|--------|----------|
21
+ | **ISTQB** | UT → IT/SIT → ST → AT/UAT | Enterprise, compliance, formal QA |
22
+ | **Industry Pyramid** | UT (70%) → IT (20%) → E2E (10%) | Agile, DevOps, CI/CD |
23
+
24
+ **Note on Integration Testing abbreviation:**
25
+ - **IT** (Integration Testing): Agile/DevOps communities
26
+ - **SIT** (System Integration Testing): Enterprise/ISTQB contexts
27
+ - Both refer to the same testing level
28
+
29
+ ---
30
+
31
+ ## Unit Testing (UT)
32
+
33
+ ### Definition
34
+
35
+ Tests individual functions, methods, or classes in isolation from external dependencies.
36
+
37
+ ### Characteristics
38
+
39
+ - **Isolated**: No database, network, or file system access
40
+ - **Fast**: Each test < 100ms
41
+ - **Deterministic**: Same input always produces same output
42
+
43
+ ### Scope
44
+
45
+ ```
46
+ ✅ Single function/method
47
+ ✅ Single class
48
+ ✅ Pure business logic
49
+ ✅ Data transformations
50
+ ✅ Validation rules
51
+
52
+ ❌ Database queries
53
+ ❌ External API calls
54
+ ❌ File I/O operations
55
+ ❌ Multi-class interactions
56
+ ```
57
+
58
+ ### Example
59
+
60
+ ```typescript
61
+ describe('UserValidator', () => {
62
+ let validator: UserValidator;
63
+
64
+ beforeEach(() => {
65
+ validator = new UserValidator();
66
+ });
67
+
68
+ it('should return true for valid email format', () => {
69
+ const result = validator.validateEmail('user@example.com');
70
+ expect(result).toBe(true);
71
+ });
72
+
73
+ it('should return false for invalid email format', () => {
74
+ const result = validator.validateEmail('invalid-email');
75
+ expect(result).toBe(false);
76
+ });
77
+ });
78
+ ```
79
+
80
+ ---
81
+
82
+ ## Integration Testing (IT/SIT)
83
+
84
+ ### Definition
85
+
86
+ Tests interactions between multiple components, modules, or external systems.
87
+
88
+ **Abbreviation Note:**
89
+ - **IT** (Integration Testing): Common in Agile/DevOps communities (Martin Fowler, Google)
90
+ - **SIT** (System Integration Testing): Common in Enterprise/ISTQB contexts
91
+ - Both terms refer to the same testing concept
92
+
93
+ ### When Integration Tests Are Required
94
+
95
+ | Scenario | Reason |
96
+ |----------|--------|
97
+ | Query predicates | Mocks cannot verify filter expressions |
98
+ | Entity relationships | Verify foreign key correctness |
99
+ | Composite keys | In-memory DB may differ from real DB |
100
+ | Field mapping | DTO ↔ Entity transformations |
101
+ | Pagination | Row ordering and counting |
102
+ | Transactions | Rollback behavior |
103
+
104
+ **Decision Rule**: If your unit test uses a wildcard matcher (`any()`, `It.IsAny<>`, `Arg.Any<>`) for a query/filter parameter, that functionality MUST have an integration test.
105
+
106
+ ### Characteristics
107
+
108
+ - **Component Integration**: Tests module boundaries
109
+ - **Real Dependencies**: Uses actual databases, APIs (often containerized)
110
+ - **Slower**: Each test typically 1-10 seconds
111
+
112
+ ### Scope
113
+
114
+ ```
115
+ ✅ Database CRUD operations
116
+ ✅ Repository + Database
117
+ ✅ Service + Repository
118
+ ✅ API endpoint + Service layer
119
+ ✅ Message queue producers/consumers
120
+ ✅ Cache read/write operations
121
+
122
+ ❌ Full user workflows
123
+ ❌ Cross-service communication
124
+ ❌ UI interactions
125
+ ```
126
+
127
+ ### Example
128
+
129
+ ```typescript
130
+ describe('UserRepository Integration', () => {
131
+ let repository: UserRepository;
132
+ let dbContext: TestDbContext;
133
+
134
+ beforeEach(async () => {
135
+ dbContext = await TestDbContext.create();
136
+ repository = new UserRepository(dbContext);
137
+ });
138
+
139
+ afterEach(async () => {
140
+ await dbContext.dispose();
141
+ });
142
+
143
+ it('should persist user to database', async () => {
144
+ const user = { name: 'Test User', email: 'test@example.com' };
145
+
146
+ await repository.create(user);
147
+ const saved = await repository.getById(user.id);
148
+
149
+ expect(saved).not.toBeNull();
150
+ expect(saved.name).toBe('Test User');
151
+ });
152
+ });
153
+ ```
154
+
155
+ ---
156
+
157
+ ## System Testing (ST)
158
+
159
+ ### Definition
160
+
161
+ Tests the complete integrated system to verify it meets specified requirements.
162
+
163
+ ### Characteristics
164
+
165
+ - **Complete System**: All components deployed and integrated
166
+ - **Requirement-Based**: Tests against functional specifications
167
+ - **Production-Like**: Uses environment similar to production
168
+
169
+ ### Scope
170
+
171
+ ```
172
+ ✅ Complete API workflows
173
+ ✅ Cross-service transactions
174
+ ✅ Data flow through entire system
175
+ ✅ Security requirements
176
+ ✅ Performance under load
177
+ ✅ Error handling & recovery
178
+
179
+ ❌ UI visual testing
180
+ ❌ User journey simulations
181
+ ❌ A/B testing scenarios
182
+ ```
183
+
184
+ ### Types
185
+
186
+ | Type | Description |
187
+ |------|-------------|
188
+ | Functional | Verify features work as specified |
189
+ | Performance | Load, stress, scalability testing |
190
+ | Security | Penetration, vulnerability scanning |
191
+ | Reliability | Failover, recovery, stability |
192
+
193
+ ---
194
+
195
+ ## End-to-End Testing (E2E)
196
+
197
+ ### Definition
198
+
199
+ Tests complete user workflows from the user interface through all system layers.
200
+
201
+ ### Characteristics
202
+
203
+ - **User Perspective**: Simulates real user interactions
204
+ - **Full Stack**: UI → API → Database → External Services
205
+ - **Slowest**: Each test typically 30 seconds to several minutes
206
+
207
+ ### Scope
208
+
209
+ ```
210
+ ✅ Critical user journeys
211
+ ✅ Login/Authentication flows
212
+ ✅ Core business transactions
213
+ ✅ Cross-browser functionality
214
+ ✅ Smoke tests for deployments
215
+
216
+ ❌ Every possible user path
217
+ ❌ Edge cases (use UT/IT)
218
+ ❌ Performance benchmarking
219
+ ```
220
+
221
+ ### Example (Playwright)
222
+
223
+ ```typescript
224
+ test.describe('User Registration Journey', () => {
225
+ test('should complete registration and login', async ({ page }) => {
226
+ // Navigate to registration
227
+ await page.goto('/register');
228
+
229
+ // Fill form
230
+ await page.fill('[data-testid="email"]', 'new@example.com');
231
+ await page.fill('[data-testid="password"]', 'SecurePass123!');
232
+ await page.click('[data-testid="register-button"]');
233
+
234
+ // Verify success
235
+ await expect(page.locator('[data-testid="success-message"]'))
236
+ .toContainText('Registration successful');
237
+
238
+ // Login with new account
239
+ await page.goto('/login');
240
+ await page.fill('[data-testid="email"]', 'new@example.com');
241
+ await page.fill('[data-testid="password"]', 'SecurePass123!');
242
+ await page.click('[data-testid="login-button"]');
243
+
244
+ // Verify dashboard
245
+ await expect(page).toHaveURL('/dashboard');
246
+ });
247
+ });
248
+ ```
249
+
250
+ ---
251
+
252
+ ## Test Environment Isolation
253
+
254
+ ### Virtual Environments
255
+
256
+ | Language | Tools | Lock File |
257
+ |----------|-------|----------|
258
+ | Python | venv, poetry | requirements.txt, poetry.lock |
259
+ | Node.js | nvm + npm | package-lock.json |
260
+ | Ruby | rbenv, bundler | Gemfile.lock |
261
+ | Java | SDKMAN, Maven | pom.xml |
262
+ | .NET | dotnet SDK | packages.lock.json |
263
+ | Go | go mod | go.sum |
264
+
265
+ ### Containerized Testing
266
+
267
+ | Test Level | Container Usage |
268
+ |------------|----------------|
269
+ | UT | ❌ Not needed - use mocks |
270
+ | IT | ✅ Testcontainers for DB, cache |
271
+ | ST | ✅ Docker Compose for full env |
272
+ | E2E | ✅ Full containerized stack |
273
+
274
+ ### Testcontainers Example
275
+
276
+ ```typescript
277
+ import { PostgreSqlContainer } from 'testcontainers';
278
+
279
+ describe('Database Integration', () => {
280
+ let container: PostgreSqlContainer;
281
+
282
+ beforeAll(async () => {
283
+ container = await new PostgreSqlContainer().start();
284
+ });
285
+
286
+ afterAll(async () => {
287
+ await container.stop();
288
+ });
289
+
290
+ test('should connect to database', async () => {
291
+ const connectionUrl = container.getConnectionUri();
292
+ // Use connectionUrl for tests
293
+ });
294
+ });
295
+ ```
296
+
297
+ ---
298
+
299
+ ## Mock Limitations
300
+
301
+ ### Query Predicate Verification
302
+
303
+ When mocking repository methods that accept query predicates (e.g., lambda expressions, filter functions), using wildcard matchers like `any()` ignores the actual query logic, allowing incorrect queries to pass unit tests.
304
+
305
+ ```typescript
306
+ // ❌ Jest mock ignores actual filter
307
+ jest.spyOn(repo, 'findBy').mockResolvedValue(users);
308
+
309
+ // ✓ Verify with integration test
310
+ ```
311
+
312
+ **Rule of Thumb**: If your unit test mocks a method that accepts a query/filter/predicate parameter, you MUST have a corresponding integration test to verify the query logic.
313
+
314
+ ---
315
+
316
+ ## Test Data Management
317
+
318
+ ### Principles
319
+
320
+ 1. **Isolation**: Each test manages its own data
321
+ 2. **Cleanup**: Tests clean up after themselves
322
+ 3. **Determinism**: Tests don't depend on shared state
323
+ 4. **Readability**: Test data clearly shows intent
324
+
325
+ ### Distinct Identifiers
326
+
327
+ When entities have both a surrogate key (auto-generated ID) and a business identifier (e.g., employee number, department code), test data MUST use different values for each.
328
+
329
+ ```typescript
330
+ // ❌ Wrong: id equals businessCode - mapping errors go undetected
331
+ const dept = { id: 1, businessCode: 1 };
332
+
333
+ // ✓ Correct: distinct values catch field mapping bugs
334
+ const dept = { id: 1, businessCode: 1001 };
335
+ ```
336
+
337
+ ### Composite Keys
338
+
339
+ For entities with composite primary keys, ensure each record has a unique key combination.
340
+
341
+ ```typescript
342
+ // ❌ Key collision - same (id, timestamp) combination
343
+ const record1 = { id: 0, timestamp: now };
344
+ const record2 = { id: 0, timestamp: now }; // Conflict!
345
+
346
+ // ✓ Unique combinations
347
+ const record1 = { id: 0, timestamp: addSeconds(now, 1) };
348
+ const record2 = { id: 0, timestamp: addSeconds(now, 2) };
349
+ ```
350
+
351
+ ### Builder Pattern
352
+
353
+ ```typescript
354
+ class UserBuilder {
355
+ private name = 'Default User';
356
+ private email = 'default@example.com';
357
+ private isActive = true;
358
+
359
+ withName(name: string): this {
360
+ this.name = name;
361
+ return this;
362
+ }
363
+
364
+ withEmail(email: string): this {
365
+ this.email = email;
366
+ return this;
367
+ }
368
+
369
+ inactive(): this {
370
+ this.isActive = false;
371
+ return this;
372
+ }
373
+
374
+ build(): User {
375
+ return { name: this.name, email: this.email, isActive: this.isActive };
376
+ }
377
+ }
378
+
379
+ // Usage
380
+ const activeUser = new UserBuilder().withName('Active').build();
381
+ const inactiveUser = new UserBuilder().inactive().build();
382
+ ```
383
+
384
+ ---
385
+
386
+ ## Quick Reference Card
387
+
388
+ ### Industry Pyramid (Recommended for Agile/DevOps)
389
+
390
+ ```
391
+ ┌──────────┬──────────────────────────────────────────┐
392
+ │ UT │ Single unit, isolated, mocked deps, < 100ms │
393
+ ├──────────┼──────────────────────────────────────────┤
394
+ │ IT/SIT │ Component integration, real DB, 1-10 sec │
395
+ ├──────────┼──────────────────────────────────────────┤
396
+ │ E2E │ User journeys, UI to DB, critical paths only │
397
+ └──────────┴──────────────────────────────────────────┘
398
+
399
+ Ratio: UT 70% | IT 20% | E2E 10%
400
+ ```
401
+
402
+ ### ISTQB Framework (For Enterprise/Compliance)
403
+
404
+ ```
405
+ ┌──────────┬──────────────────────────────────────────┐
406
+ │ UT │ Component testing, isolated units │
407
+ ├──────────┼──────────────────────────────────────────┤
408
+ │ IT/SIT │ Integration testing, component interactions │
409
+ ├──────────┼──────────────────────────────────────────┤
410
+ │ ST │ System testing, requirement validation │
411
+ ├──────────┼──────────────────────────────────────────┤
412
+ │ AT/UAT │ Acceptance testing, business validation │
413
+ └──────────┴──────────────────────────────────────────┘
414
+ ```
415
+
416
+ **Mock Rule**: If UT mocks query params → IT is REQUIRED
417
+
418
+ ---
419
+
420
+ ## Related Standards
421
+
422
+ - [Testing Standards](../../../core/testing-standards.md)
423
+ - [Code Review Checklist](../../../core/code-review-checklist.md)
424
+
425
+ ---
426
+
427
+ ## Version History
428
+
429
+ | Version | Date | Changes |
430
+ |---------|------|---------|
431
+ | 1.1.0 | 2025-12-29 | Added: Framework Selection (ISTQB/Industry Pyramid), IT/SIT abbreviation note |
432
+ | 1.0.0 | 2025-12-24 | Added: Standard sections (Purpose, Related Standards, Version History, License) |
433
+
434
+ ---
435
+
436
+ ## License
437
+
438
+ This document is released under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).
439
+
440
+ **Source**: [universal-dev-standards](https://github.com/AsiaOstrich/universal-dev-standards)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "universal-dev-standards",
3
- "version": "3.5.1-beta.1",
3
+ "version": "3.5.1-beta.11",
4
4
  "description": "CLI tool for adopting Universal Development Standards",
5
5
  "keywords": [
6
6
  "documentation",
@@ -29,6 +29,7 @@
29
29
  "files": [
30
30
  "bin",
31
31
  "src",
32
+ "bundled",
32
33
  "standards-registry.json",
33
34
  "README.md"
34
35
  ],
@@ -42,7 +43,8 @@
42
43
  "test:e2e": "vitest run tests/e2e/",
43
44
  "test:all": "vitest run && vitest run tests/e2e/",
44
45
  "lint": "eslint src/",
45
- "prepare": "node ../scripts/setup-husky.mjs"
46
+ "prepare": "node ../scripts/setup-husky.mjs",
47
+ "prepack": "node scripts/prepack.mjs"
46
48
  },
47
49
  "dependencies": {
48
50
  "chalk": "^5.3.0",
@@ -33,7 +33,7 @@ import {
33
33
  extractMarkedContent
34
34
  } from '../utils/integration-generator.js';
35
35
  import { checkForUpdates } from '../utils/npm-registry.js';
36
- import { t } from '../i18n/messages.js';
36
+ import { t, getLanguage } from '../i18n/messages.js';
37
37
 
38
38
  /**
39
39
  * Check command - verify adoption status
@@ -72,7 +72,12 @@ export async function checkCommand(options = {}) {
72
72
  console.log(chalk.green(msg.standardsInitialized));
73
73
  console.log();
74
74
  console.log(chalk.cyan(msg.adoptionStatus));
75
- console.log(chalk.gray(` ${common.level}: ${manifest.level} - ${levelInfo.name} (${levelInfo.nameZh})`));
75
+ const lang = getLanguage();
76
+ const zhName = lang === 'zh-cn' ? levelInfo.nameZhCn : levelInfo.nameZh;
77
+ const levelDisplay = lang === 'en'
78
+ ? `${manifest.level} - ${levelInfo.name}`
79
+ : `${manifest.level} - ${levelInfo.name} (${zhName})`;
80
+ console.log(chalk.gray(` ${common.level}: ${levelDisplay}`));
76
81
  console.log(chalk.gray(` ${msg.installed}: ${manifest.upstream.installed}`));
77
82
  console.log(chalk.gray(` ${common.version}: ${manifest.upstream.version}`));
78
83
  console.log();
@@ -240,7 +245,7 @@ export async function checkCommand(options = {}) {
240
245
  checkIntegrationFiles(manifest, projectPath, msg);
241
246
 
242
247
  // Skills status
243
- displaySkillsStatus(manifest, projectPath, msg);
248
+ const { missingSkills, missingCommands } = displaySkillsStatus(manifest, projectPath, msg);
244
249
 
245
250
  // Coverage report
246
251
  displayCoverageReport(manifest, msg, common);
@@ -253,6 +258,13 @@ export async function checkCommand(options = {}) {
253
258
  } else {
254
259
  console.log(chalk.yellow(msg.issuesDetected));
255
260
  }
261
+
262
+ // Show hint if Skills/Commands are missing (check is read-only, no installation)
263
+ if (missingSkills.length > 0 || missingCommands.length > 0) {
264
+ console.log();
265
+ console.log(chalk.cyan(msg.missingSkillsHint || 'Tip: Run `uds update` to install missing Skills/Commands'));
266
+ }
267
+
256
268
  console.log();
257
269
  }
258
270
 
@@ -643,18 +655,21 @@ async function migrateToHashBasedTracking(projectPath, manifest) {
643
655
  }
644
656
 
645
657
  /**
646
- * Display skills status
658
+ * Display skills status and return missing Skills/Commands info
659
+ * @returns {{missingSkills: Array, missingCommands: Array}}
647
660
  */
648
661
  function displaySkillsStatus(manifest, projectPath, msg) {
649
662
  console.log(chalk.cyan(msg.skillsStatus));
650
663
 
651
664
  const aiTools = manifest.aiTools || [];
665
+ const missingSkills = [];
666
+ const missingCommands = [];
652
667
 
653
668
  // If no AI tools configured, show basic info
654
669
  if (aiTools.length === 0) {
655
670
  console.log(chalk.gray(` ${msg.noAiToolsConfigured || 'No AI tools configured'}`));
656
671
  console.log();
657
- return;
672
+ return { missingSkills, missingCommands };
658
673
  }
659
674
 
660
675
  // Check for Marketplace installation (Claude Code specific)
@@ -696,7 +711,10 @@ function displaySkillsStatus(manifest, projectPath, msg) {
696
711
  const projectSkillsInfo = getInstalledSkillsInfoForAgent(tool, 'project', projectPath);
697
712
  const userSkillsInfo = getInstalledSkillsInfoForAgent(tool, 'user', projectPath);
698
713
 
699
- if (projectSkillsInfo?.installed || userSkillsInfo?.installed) {
714
+ // Check if using marketplace for Claude Code
715
+ const usingMarketplace = isMarketplace && tool === 'claude-code';
716
+
717
+ if (projectSkillsInfo?.installed || userSkillsInfo?.installed || usingMarketplace) {
700
718
  console.log(chalk.green(` ✓ Skills ${msg.installed || 'installed'}:`));
701
719
  if (userSkillsInfo?.installed) {
702
720
  console.log(chalk.gray(` - ${msg.skillsGlobal || 'User level'}: ${userSkillsInfo.path}`));
@@ -719,6 +737,12 @@ function displaySkillsStatus(manifest, projectPath, msg) {
719
737
  console.log(chalk.gray(` ${msg.canUseFallback || 'Can use fallback'}: ${config.fallbackSkillsPath}`));
720
738
  }
721
739
  }
740
+ // Track missing Skills
741
+ missingSkills.push({
742
+ agent: tool,
743
+ displayName,
744
+ paths: config.skills
745
+ });
722
746
  }
723
747
 
724
748
  // Check Commands installation for this agent
@@ -732,6 +756,12 @@ function displaySkillsStatus(manifest, projectPath, msg) {
732
756
  }
733
757
  } else {
734
758
  console.log(chalk.gray(` ○ Commands: ${msg.notInstalled || 'Not installed'}`));
759
+ // Track missing Commands
760
+ missingCommands.push({
761
+ agent: tool,
762
+ displayName,
763
+ path: config.commands.project
764
+ });
735
765
  }
736
766
  }
737
767
  }
@@ -753,6 +783,8 @@ function displaySkillsStatus(manifest, projectPath, msg) {
753
783
  }
754
784
 
755
785
  console.log();
786
+
787
+ return { missingSkills, missingCommands };
756
788
  }
757
789
 
758
790
  /**
@@ -384,6 +384,9 @@ export async function initCommand(options) {
384
384
  return k;
385
385
  });
386
386
 
387
+ // Assign normalized AI tools to manifest variable
388
+ aiTools = aiToolsNormalized;
389
+
387
390
  // Check if only skills-compatible tools are detected
388
391
  const hasSkillsCompatibleTool = aiToolsNormalized.some(t => t === 'claude-code' || t === 'opencode');
389
392
  const onlySkillsCompatibleTools = aiToolsNormalized.every(t => t === 'claude-code' || t === 'opencode');
@@ -462,6 +465,17 @@ export async function initCommand(options) {
462
465
  };
463
466
  }
464
467
  }
468
+
469
+ // Auto-install commands for detected agents that support commands
470
+ // This matches the interactive mode behavior where commands are checked by default
471
+ const commandsSupportedAgents = aiToolsNormalized.filter(tool => {
472
+ const config = getAgentConfig(tool);
473
+ return config?.commands !== null;
474
+ });
475
+
476
+ if (commandsSupportedAgents.length > 0) {
477
+ skillsConfig.commandsInstallations = commandsSupportedAgents;
478
+ }
465
479
  }
466
480
 
467
481
  // Configuration summary
@@ -912,13 +926,13 @@ export async function initCommand(options) {
912
926
  // Create manifest
913
927
  const repoInfo = getRepositoryInfo();
914
928
 
915
- // Only record options for standards that were actually copied
916
- const standardsToCopyIds = new Set(standardsToCopy.map(s => s.id));
929
+ // Always record options as user preferences (for Skills and future updates)
930
+ // Even when standards aren't copied locally (minimal scope), options should be preserved
917
931
  const manifestOptions = {
918
- workflow: standardsToCopyIds.has('git-workflow') ? (standardOptions.workflow || null) : null,
919
- merge_strategy: standardsToCopyIds.has('git-workflow') ? (standardOptions.merge_strategy || null) : null,
920
- commit_language: standardsToCopyIds.has('commit-message') ? (standardOptions.commit_language || null) : null,
921
- test_levels: standardsToCopyIds.has('testing') ? (standardOptions.test_levels || []) : []
932
+ workflow: standardOptions.workflow || null,
933
+ merge_strategy: standardOptions.merge_strategy || null,
934
+ commit_language: standardOptions.commit_language || null,
935
+ test_levels: standardOptions.test_levels || []
922
936
  };
923
937
 
924
938
  // Build integrationConfigs for manifest
@@ -7,7 +7,7 @@ import {
7
7
  getCategoryInfo,
8
8
  getRepositoryInfo
9
9
  } from '../utils/registry.js';
10
- import { t } from '../i18n/messages.js';
10
+ import { t, getLanguage } from '../i18n/messages.js';
11
11
 
12
12
  /**
13
13
  * List command - displays available standards
@@ -36,7 +36,12 @@ export function listCommand(options) {
36
36
  }
37
37
  standards = getStandardsByLevel(levelNum);
38
38
  const levelInfo = getLevelInfo(levelNum);
39
- console.log(chalk.cyan(`${msg.showingLevel} ${levelNum}: ${levelInfo.name} (${levelInfo.nameZh})`));
39
+ const lang = getLanguage();
40
+ const zhName = lang === 'zh-cn' ? levelInfo.nameZhCn : levelInfo.nameZh;
41
+ const levelDisplay = lang === 'en'
42
+ ? `${levelNum}: ${levelInfo.name}`
43
+ : `${levelNum}: ${levelInfo.name} (${zhName})`;
44
+ console.log(chalk.cyan(`${msg.showingLevel} ${levelDisplay}`));
40
45
  console.log(chalk.gray(levelInfo.description));
41
46
  console.log();
42
47
  } else if (category) {
@@ -9,8 +9,6 @@ import { t } from '../i18n/messages.js';
9
9
  const NON_SKILL_ITEMS = [
10
10
  'README.md',
11
11
  'CONTRIBUTING.template.md',
12
- 'install.sh',
13
- 'install.ps1',
14
12
  'universal-dev-standards',
15
13
  '.manifest.json',
16
14
  '.DS_Store'