@bovinphang/craft-common 1.0.1 → 2.0.0

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 (323) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/CHANGELOG.zh-CN.md +39 -0
  3. package/README.md +17 -3
  4. package/dist/content/applicability.d.ts +17 -0
  5. package/dist/content/catalog.d.ts +1 -1
  6. package/dist/content/snapshot.d.ts +32 -0
  7. package/dist/index.d.ts +18 -0
  8. package/dist/index.js +10873 -208
  9. package/dist/install/file-transition.d.ts +10 -0
  10. package/dist/install/product/lifecycle.d.ts +17 -0
  11. package/dist/install/product/locks.d.ts +2 -0
  12. package/dist/install/product/ownership.d.ts +3 -0
  13. package/dist/install/product/paths.d.ts +17 -0
  14. package/dist/install/product/runtime-descriptors.d.ts +109 -0
  15. package/dist/install/product/session.d.ts +31 -0
  16. package/dist/install/product/shared-config/hash.d.ts +9 -0
  17. package/dist/install/product/shared-config/index.d.ts +16 -0
  18. package/dist/install/product/shared-config/json.d.ts +11 -0
  19. package/dist/install/product/shared-config/text.d.ts +5 -0
  20. package/dist/install/product/shared-config/toml.d.ts +7 -0
  21. package/dist/install/product/shared-config/types.d.ts +21 -0
  22. package/dist/install/product/transaction.d.ts +10 -0
  23. package/dist/install/product/types.d.ts +65 -0
  24. package/dist/project/discover.d.ts +2 -0
  25. package/dist/project/evidence.d.ts +37 -0
  26. package/dist/project/frameworks.d.ts +5 -0
  27. package/dist/project/recommend.d.ts +17 -0
  28. package/dist/project/types.d.ts +42 -0
  29. package/docs/consuming-common.md +65 -6
  30. package/docs/releases/2.0.0.md +58 -0
  31. package/localized/zh-CN/methods/engineering-practices.md +237 -0
  32. package/localized/zh-CN/methods/engineering-practices.rules.json +121 -0
  33. package/localized/zh-CN/methods/engineering-practices.sources.json +377 -0
  34. package/localized/zh-CN/skills/cc-c-project-standard/SKILL.md +25 -0
  35. package/localized/zh-CN/skills/cc-c-project-standard/examples/engineering/README.md +7 -0
  36. package/localized/zh-CN/skills/cc-c-project-standard/examples/engineering/boundary.c +26 -0
  37. package/localized/zh-CN/skills/cc-c-project-standard/examples/engineering/boundary.h +15 -0
  38. package/localized/zh-CN/skills/cc-c-project-standard/examples/engineering/boundary_test.c +73 -0
  39. package/localized/zh-CN/skills/cc-c-project-standard/references/common/engineering-practices.md +237 -0
  40. package/localized/zh-CN/skills/cc-c-project-standard/references/common/engineering-practices.rules.json +121 -0
  41. package/localized/zh-CN/skills/cc-c-project-standard/references/common/engineering-practices.sources.json +377 -0
  42. package/localized/zh-CN/skills/cc-c-project-standard/references/engineering-practices.md +106 -0
  43. package/localized/zh-CN/skills/cc-c-project-standard/references/practice.md +37 -0
  44. package/localized/zh-CN/skills/cc-cpp-project-standard/SKILL.md +25 -0
  45. package/localized/zh-CN/skills/cc-cpp-project-standard/examples/engineering/README.md +7 -0
  46. package/localized/zh-CN/skills/cc-cpp-project-standard/examples/engineering/boundary.cpp +26 -0
  47. package/localized/zh-CN/skills/cc-cpp-project-standard/examples/engineering/boundary.hpp +12 -0
  48. package/localized/zh-CN/skills/cc-cpp-project-standard/examples/engineering/boundary_test.cpp +38 -0
  49. package/localized/zh-CN/skills/cc-cpp-project-standard/references/common/engineering-practices.md +237 -0
  50. package/localized/zh-CN/skills/cc-cpp-project-standard/references/common/engineering-practices.rules.json +121 -0
  51. package/localized/zh-CN/skills/cc-cpp-project-standard/references/common/engineering-practices.sources.json +377 -0
  52. package/localized/zh-CN/skills/cc-cpp-project-standard/references/engineering-practices.md +106 -0
  53. package/localized/zh-CN/skills/cc-cpp-project-standard/references/practice.md +37 -0
  54. package/localized/zh-CN/skills/cc-electron-project-standard/SKILL.md +21 -0
  55. package/localized/zh-CN/skills/cc-electron-project-standard/examples/engineering/README.md +7 -0
  56. package/localized/zh-CN/skills/cc-electron-project-standard/examples/engineering/ipc-lifecycle.cjs +44 -0
  57. package/localized/zh-CN/skills/cc-electron-project-standard/examples/engineering/ipc-lifecycle.test.cjs +44 -0
  58. package/localized/zh-CN/skills/cc-electron-project-standard/examples/engineering/package.json +8 -0
  59. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/README.md +9 -0
  60. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/boundary.cjs +19 -0
  61. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/boundary.test.cjs +7 -0
  62. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/index.html +1 -0
  63. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/main.cjs +20 -0
  64. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/package.json +9 -0
  65. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/preload.cjs +2 -0
  66. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/renderer.js +4 -0
  67. package/localized/zh-CN/skills/cc-electron-project-standard/references/common/engineering-practices.md +237 -0
  68. package/localized/zh-CN/skills/cc-electron-project-standard/references/common/engineering-practices.rules.json +121 -0
  69. package/localized/zh-CN/skills/cc-electron-project-standard/references/common/engineering-practices.sources.json +377 -0
  70. package/localized/zh-CN/skills/cc-electron-project-standard/references/engineering-practices.md +73 -0
  71. package/localized/zh-CN/skills/cc-electron-project-standard/references/practice.md +19 -0
  72. package/localized/zh-CN/skills/cc-electron-project-standard/references/verification.md +17 -0
  73. package/localized/zh-CN/skills/cc-go-concurrency/SKILL.md +25 -0
  74. package/localized/zh-CN/skills/cc-go-concurrency/references/common/engineering-practices.md +237 -0
  75. package/localized/zh-CN/skills/cc-go-concurrency/references/common/engineering-practices.rules.json +121 -0
  76. package/localized/zh-CN/skills/cc-go-concurrency/references/common/engineering-practices.sources.json +377 -0
  77. package/localized/zh-CN/skills/cc-go-concurrency/references/engineering-practices.md +73 -0
  78. package/localized/zh-CN/skills/cc-go-concurrency/references/practice.md +37 -0
  79. package/localized/zh-CN/skills/cc-go-project-standard/SKILL.md +25 -0
  80. package/localized/zh-CN/skills/cc-go-project-standard/examples/engineering/README.md +7 -0
  81. package/localized/zh-CN/skills/cc-go-project-standard/examples/engineering/go.mod +3 -0
  82. package/localized/zh-CN/skills/cc-go-project-standard/examples/engineering/lifecycle.go +71 -0
  83. package/localized/zh-CN/skills/cc-go-project-standard/examples/engineering/lifecycle_test.go +22 -0
  84. package/localized/zh-CN/skills/cc-go-project-standard/references/common/engineering-practices.md +237 -0
  85. package/localized/zh-CN/skills/cc-go-project-standard/references/common/engineering-practices.rules.json +121 -0
  86. package/localized/zh-CN/skills/cc-go-project-standard/references/common/engineering-practices.sources.json +377 -0
  87. package/localized/zh-CN/skills/cc-go-project-standard/references/engineering-practices.md +106 -0
  88. package/localized/zh-CN/skills/cc-go-project-standard/references/practice.md +37 -0
  89. package/localized/zh-CN/skills/cc-java-project-standard/SKILL.md +25 -0
  90. package/localized/zh-CN/skills/cc-java-project-standard/examples/engineering/README.md +5 -0
  91. package/localized/zh-CN/skills/cc-java-project-standard/examples/engineering/ResourceBoundary.java +26 -0
  92. package/localized/zh-CN/skills/cc-java-project-standard/examples/engineering/ResourceBoundaryTest.java +41 -0
  93. package/localized/zh-CN/skills/cc-java-project-standard/references/common/engineering-practices.md +237 -0
  94. package/localized/zh-CN/skills/cc-java-project-standard/references/common/engineering-practices.rules.json +121 -0
  95. package/localized/zh-CN/skills/cc-java-project-standard/references/common/engineering-practices.sources.json +377 -0
  96. package/localized/zh-CN/skills/cc-java-project-standard/references/engineering-practices.md +106 -0
  97. package/localized/zh-CN/skills/cc-java-project-standard/references/practice.md +37 -0
  98. package/localized/zh-CN/skills/cc-java-runtime/SKILL.md +25 -0
  99. package/localized/zh-CN/skills/cc-java-runtime/references/common/engineering-practices.md +237 -0
  100. package/localized/zh-CN/skills/cc-java-runtime/references/common/engineering-practices.rules.json +121 -0
  101. package/localized/zh-CN/skills/cc-java-runtime/references/common/engineering-practices.sources.json +377 -0
  102. package/localized/zh-CN/skills/cc-java-runtime/references/engineering-practices.md +73 -0
  103. package/localized/zh-CN/skills/cc-java-runtime/references/practice.md +37 -0
  104. package/localized/zh-CN/skills/cc-native-memory-safety/SKILL.md +25 -0
  105. package/localized/zh-CN/skills/cc-native-memory-safety/references/common/engineering-practices.md +237 -0
  106. package/localized/zh-CN/skills/cc-native-memory-safety/references/common/engineering-practices.rules.json +121 -0
  107. package/localized/zh-CN/skills/cc-native-memory-safety/references/common/engineering-practices.sources.json +377 -0
  108. package/localized/zh-CN/skills/cc-native-memory-safety/references/engineering-practices.md +73 -0
  109. package/localized/zh-CN/skills/cc-native-memory-safety/references/practice.md +37 -0
  110. package/localized/zh-CN/skills/cc-python-async/SKILL.md +25 -0
  111. package/localized/zh-CN/skills/cc-python-async/references/common/engineering-practices.md +237 -0
  112. package/localized/zh-CN/skills/cc-python-async/references/common/engineering-practices.rules.json +121 -0
  113. package/localized/zh-CN/skills/cc-python-async/references/common/engineering-practices.sources.json +377 -0
  114. package/localized/zh-CN/skills/cc-python-async/references/engineering-practices.md +73 -0
  115. package/localized/zh-CN/skills/cc-python-async/references/practice.md +37 -0
  116. package/localized/zh-CN/skills/cc-python-project-standard/SKILL.md +25 -0
  117. package/localized/zh-CN/skills/cc-python-project-standard/examples/engineering/README.md +7 -0
  118. package/localized/zh-CN/skills/cc-python-project-standard/examples/engineering/resource_boundary.py +37 -0
  119. package/localized/zh-CN/skills/cc-python-project-standard/examples/engineering/test_resource_boundary.py +49 -0
  120. package/localized/zh-CN/skills/cc-python-project-standard/references/common/engineering-practices.md +237 -0
  121. package/localized/zh-CN/skills/cc-python-project-standard/references/common/engineering-practices.rules.json +121 -0
  122. package/localized/zh-CN/skills/cc-python-project-standard/references/common/engineering-practices.sources.json +377 -0
  123. package/localized/zh-CN/skills/cc-python-project-standard/references/engineering-practices.md +106 -0
  124. package/localized/zh-CN/skills/cc-python-project-standard/references/practice.md +37 -0
  125. package/localized/zh-CN/skills/cc-rust-async/SKILL.md +25 -0
  126. package/localized/zh-CN/skills/cc-rust-async/references/common/engineering-practices.md +237 -0
  127. package/localized/zh-CN/skills/cc-rust-async/references/common/engineering-practices.rules.json +121 -0
  128. package/localized/zh-CN/skills/cc-rust-async/references/common/engineering-practices.sources.json +377 -0
  129. package/localized/zh-CN/skills/cc-rust-async/references/engineering-practices.md +73 -0
  130. package/localized/zh-CN/skills/cc-rust-async/references/practice.md +37 -0
  131. package/localized/zh-CN/skills/cc-rust-project-standard/SKILL.md +25 -0
  132. package/localized/zh-CN/skills/cc-rust-project-standard/examples/engineering/Cargo.lock +7 -0
  133. package/localized/zh-CN/skills/cc-rust-project-standard/examples/engineering/Cargo.toml +8 -0
  134. package/localized/zh-CN/skills/cc-rust-project-standard/examples/engineering/README.md +5 -0
  135. package/localized/zh-CN/skills/cc-rust-project-standard/examples/engineering/src/lib.rs +43 -0
  136. package/localized/zh-CN/skills/cc-rust-project-standard/references/common/engineering-practices.md +237 -0
  137. package/localized/zh-CN/skills/cc-rust-project-standard/references/common/engineering-practices.rules.json +121 -0
  138. package/localized/zh-CN/skills/cc-rust-project-standard/references/common/engineering-practices.sources.json +377 -0
  139. package/localized/zh-CN/skills/cc-rust-project-standard/references/engineering-practices.md +106 -0
  140. package/localized/zh-CN/skills/cc-rust-project-standard/references/practice.md +37 -0
  141. package/localized/zh-CN/skills/cc-tauri-project-standard/SKILL.md +21 -0
  142. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/README.md +9 -0
  143. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/core/Cargo.lock +5 -0
  144. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/core/Cargo.toml +9 -0
  145. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/core/src/lib.rs +46 -0
  146. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/Cargo.toml +12 -0
  147. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/build.rs +5 -0
  148. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/capabilities/main.json +6 -0
  149. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/permissions/documents.toml +4 -0
  150. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/src/main.rs +22 -0
  151. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/tauri.conf.json +13 -0
  152. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/ui/app.js +5 -0
  153. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/ui/index.html +1 -0
  154. package/localized/zh-CN/skills/cc-tauri-project-standard/references/common/engineering-practices.md +237 -0
  155. package/localized/zh-CN/skills/cc-tauri-project-standard/references/common/engineering-practices.rules.json +121 -0
  156. package/localized/zh-CN/skills/cc-tauri-project-standard/references/common/engineering-practices.sources.json +377 -0
  157. package/localized/zh-CN/skills/cc-tauri-project-standard/references/engineering-practices.md +73 -0
  158. package/localized/zh-CN/skills/cc-tauri-project-standard/references/practice.md +20 -0
  159. package/localized/zh-CN/skills/cc-tauri-project-standard/references/verification.md +18 -0
  160. package/localized/zh-CN/skills/cc-typescript-project-standard/SKILL.md +60 -0
  161. package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/README.md +7 -0
  162. package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/boundary.test.ts +16 -0
  163. package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/input.ts +12 -0
  164. package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/package.json +12 -0
  165. package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/pnpm-lock.yaml +39 -0
  166. package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/pnpm-workspace.yaml +1 -0
  167. package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/tsconfig.json +8 -0
  168. package/localized/zh-CN/skills/cc-typescript-project-standard/references/common/engineering-practices.md +237 -0
  169. package/localized/zh-CN/skills/cc-typescript-project-standard/references/common/engineering-practices.rules.json +121 -0
  170. package/localized/zh-CN/skills/cc-typescript-project-standard/references/common/engineering-practices.sources.json +377 -0
  171. package/localized/zh-CN/skills/cc-typescript-project-standard/references/engineering-practices.md +106 -0
  172. package/localized/zh-CN/skills/cc-typescript-project-standard/references/type-safety-patterns.md +73 -0
  173. package/localized/zh-CN/skills/cc-typescript-project-standard/references/type-safety.md +154 -0
  174. package/localized/zh-CN/skills/eval_queries.json +336 -0
  175. package/localized/zh-CN/skills/metadata.json +545 -7
  176. package/localized/zh-CN/skills/relations.json +143 -0
  177. package/methods/engineering-practices.md +237 -0
  178. package/methods/engineering-practices.rules.json +121 -0
  179. package/methods/engineering-practices.sources.json +377 -0
  180. package/package.json +10 -2
  181. package/skills/cc-c-project-standard/SKILL.md +25 -0
  182. package/skills/cc-c-project-standard/examples/engineering/README.md +7 -0
  183. package/skills/cc-c-project-standard/examples/engineering/boundary.c +26 -0
  184. package/skills/cc-c-project-standard/examples/engineering/boundary.h +15 -0
  185. package/skills/cc-c-project-standard/examples/engineering/boundary_test.c +73 -0
  186. package/skills/cc-c-project-standard/references/common/engineering-practices.md +237 -0
  187. package/skills/cc-c-project-standard/references/common/engineering-practices.rules.json +121 -0
  188. package/skills/cc-c-project-standard/references/common/engineering-practices.sources.json +377 -0
  189. package/skills/cc-c-project-standard/references/engineering-practices.md +106 -0
  190. package/skills/cc-c-project-standard/references/practice.md +37 -0
  191. package/skills/cc-cpp-project-standard/SKILL.md +25 -0
  192. package/skills/cc-cpp-project-standard/examples/engineering/README.md +7 -0
  193. package/skills/cc-cpp-project-standard/examples/engineering/boundary.cpp +26 -0
  194. package/skills/cc-cpp-project-standard/examples/engineering/boundary.hpp +12 -0
  195. package/skills/cc-cpp-project-standard/examples/engineering/boundary_test.cpp +38 -0
  196. package/skills/cc-cpp-project-standard/references/common/engineering-practices.md +237 -0
  197. package/skills/cc-cpp-project-standard/references/common/engineering-practices.rules.json +121 -0
  198. package/skills/cc-cpp-project-standard/references/common/engineering-practices.sources.json +377 -0
  199. package/skills/cc-cpp-project-standard/references/engineering-practices.md +106 -0
  200. package/skills/cc-cpp-project-standard/references/practice.md +37 -0
  201. package/skills/cc-electron-project-standard/SKILL.md +21 -0
  202. package/skills/cc-electron-project-standard/examples/engineering/README.md +7 -0
  203. package/skills/cc-electron-project-standard/examples/engineering/ipc-lifecycle.cjs +44 -0
  204. package/skills/cc-electron-project-standard/examples/engineering/ipc-lifecycle.test.cjs +44 -0
  205. package/skills/cc-electron-project-standard/examples/engineering/package.json +8 -0
  206. package/skills/cc-electron-project-standard/examples/minimal/README.md +9 -0
  207. package/skills/cc-electron-project-standard/examples/minimal/boundary.cjs +19 -0
  208. package/skills/cc-electron-project-standard/examples/minimal/boundary.test.cjs +7 -0
  209. package/skills/cc-electron-project-standard/examples/minimal/index.html +1 -0
  210. package/skills/cc-electron-project-standard/examples/minimal/main.cjs +20 -0
  211. package/skills/cc-electron-project-standard/examples/minimal/package.json +9 -0
  212. package/skills/cc-electron-project-standard/examples/minimal/preload.cjs +2 -0
  213. package/skills/cc-electron-project-standard/examples/minimal/renderer.js +4 -0
  214. package/skills/cc-electron-project-standard/references/common/engineering-practices.md +237 -0
  215. package/skills/cc-electron-project-standard/references/common/engineering-practices.rules.json +121 -0
  216. package/skills/cc-electron-project-standard/references/common/engineering-practices.sources.json +377 -0
  217. package/skills/cc-electron-project-standard/references/engineering-practices.md +73 -0
  218. package/skills/cc-electron-project-standard/references/practice.md +19 -0
  219. package/skills/cc-electron-project-standard/references/verification.md +17 -0
  220. package/skills/cc-go-concurrency/SKILL.md +25 -0
  221. package/skills/cc-go-concurrency/references/common/engineering-practices.md +237 -0
  222. package/skills/cc-go-concurrency/references/common/engineering-practices.rules.json +121 -0
  223. package/skills/cc-go-concurrency/references/common/engineering-practices.sources.json +377 -0
  224. package/skills/cc-go-concurrency/references/engineering-practices.md +73 -0
  225. package/skills/cc-go-concurrency/references/practice.md +37 -0
  226. package/skills/cc-go-project-standard/SKILL.md +25 -0
  227. package/skills/cc-go-project-standard/examples/engineering/README.md +7 -0
  228. package/skills/cc-go-project-standard/examples/engineering/go.mod +3 -0
  229. package/skills/cc-go-project-standard/examples/engineering/lifecycle.go +71 -0
  230. package/skills/cc-go-project-standard/examples/engineering/lifecycle_test.go +22 -0
  231. package/skills/cc-go-project-standard/references/common/engineering-practices.md +237 -0
  232. package/skills/cc-go-project-standard/references/common/engineering-practices.rules.json +121 -0
  233. package/skills/cc-go-project-standard/references/common/engineering-practices.sources.json +377 -0
  234. package/skills/cc-go-project-standard/references/engineering-practices.md +106 -0
  235. package/skills/cc-go-project-standard/references/practice.md +37 -0
  236. package/skills/cc-java-project-standard/SKILL.md +25 -0
  237. package/skills/cc-java-project-standard/examples/engineering/README.md +7 -0
  238. package/skills/cc-java-project-standard/examples/engineering/ResourceBoundary.java +26 -0
  239. package/skills/cc-java-project-standard/examples/engineering/ResourceBoundaryTest.java +41 -0
  240. package/skills/cc-java-project-standard/references/common/engineering-practices.md +237 -0
  241. package/skills/cc-java-project-standard/references/common/engineering-practices.rules.json +121 -0
  242. package/skills/cc-java-project-standard/references/common/engineering-practices.sources.json +377 -0
  243. package/skills/cc-java-project-standard/references/engineering-practices.md +106 -0
  244. package/skills/cc-java-project-standard/references/practice.md +35 -0
  245. package/skills/cc-java-runtime/SKILL.md +25 -0
  246. package/skills/cc-java-runtime/references/common/engineering-practices.md +237 -0
  247. package/skills/cc-java-runtime/references/common/engineering-practices.rules.json +121 -0
  248. package/skills/cc-java-runtime/references/common/engineering-practices.sources.json +377 -0
  249. package/skills/cc-java-runtime/references/engineering-practices.md +73 -0
  250. package/skills/cc-java-runtime/references/practice.md +37 -0
  251. package/skills/cc-native-memory-safety/SKILL.md +25 -0
  252. package/skills/cc-native-memory-safety/references/common/engineering-practices.md +237 -0
  253. package/skills/cc-native-memory-safety/references/common/engineering-practices.rules.json +121 -0
  254. package/skills/cc-native-memory-safety/references/common/engineering-practices.sources.json +377 -0
  255. package/skills/cc-native-memory-safety/references/engineering-practices.md +73 -0
  256. package/skills/cc-native-memory-safety/references/practice.md +37 -0
  257. package/skills/cc-python-async/SKILL.md +25 -0
  258. package/skills/cc-python-async/references/common/engineering-practices.md +237 -0
  259. package/skills/cc-python-async/references/common/engineering-practices.rules.json +121 -0
  260. package/skills/cc-python-async/references/common/engineering-practices.sources.json +377 -0
  261. package/skills/cc-python-async/references/engineering-practices.md +73 -0
  262. package/skills/cc-python-async/references/practice.md +37 -0
  263. package/skills/cc-python-project-standard/SKILL.md +25 -0
  264. package/skills/cc-python-project-standard/examples/engineering/README.md +7 -0
  265. package/skills/cc-python-project-standard/examples/engineering/resource_boundary.py +37 -0
  266. package/skills/cc-python-project-standard/examples/engineering/test_resource_boundary.py +49 -0
  267. package/skills/cc-python-project-standard/references/common/engineering-practices.md +237 -0
  268. package/skills/cc-python-project-standard/references/common/engineering-practices.rules.json +121 -0
  269. package/skills/cc-python-project-standard/references/common/engineering-practices.sources.json +377 -0
  270. package/skills/cc-python-project-standard/references/engineering-practices.md +106 -0
  271. package/skills/cc-python-project-standard/references/practice.md +37 -0
  272. package/skills/cc-rust-async/SKILL.md +25 -0
  273. package/skills/cc-rust-async/references/common/engineering-practices.md +237 -0
  274. package/skills/cc-rust-async/references/common/engineering-practices.rules.json +121 -0
  275. package/skills/cc-rust-async/references/common/engineering-practices.sources.json +377 -0
  276. package/skills/cc-rust-async/references/engineering-practices.md +73 -0
  277. package/skills/cc-rust-async/references/practice.md +37 -0
  278. package/skills/cc-rust-project-standard/SKILL.md +25 -0
  279. package/skills/cc-rust-project-standard/examples/engineering/Cargo.lock +7 -0
  280. package/skills/cc-rust-project-standard/examples/engineering/Cargo.toml +8 -0
  281. package/skills/cc-rust-project-standard/examples/engineering/README.md +5 -0
  282. package/skills/cc-rust-project-standard/examples/engineering/src/lib.rs +43 -0
  283. package/skills/cc-rust-project-standard/references/common/engineering-practices.md +237 -0
  284. package/skills/cc-rust-project-standard/references/common/engineering-practices.rules.json +121 -0
  285. package/skills/cc-rust-project-standard/references/common/engineering-practices.sources.json +377 -0
  286. package/skills/cc-rust-project-standard/references/engineering-practices.md +106 -0
  287. package/skills/cc-rust-project-standard/references/practice.md +37 -0
  288. package/skills/cc-tauri-project-standard/SKILL.md +21 -0
  289. package/skills/cc-tauri-project-standard/examples/minimal/README.md +9 -0
  290. package/skills/cc-tauri-project-standard/examples/minimal/core/Cargo.lock +5 -0
  291. package/skills/cc-tauri-project-standard/examples/minimal/core/Cargo.toml +9 -0
  292. package/skills/cc-tauri-project-standard/examples/minimal/core/src/lib.rs +46 -0
  293. package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/Cargo.toml +12 -0
  294. package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/build.rs +5 -0
  295. package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/capabilities/main.json +6 -0
  296. package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/permissions/documents.toml +4 -0
  297. package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/src/main.rs +22 -0
  298. package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/tauri.conf.json +13 -0
  299. package/skills/cc-tauri-project-standard/examples/minimal/ui/app.js +5 -0
  300. package/skills/cc-tauri-project-standard/examples/minimal/ui/index.html +1 -0
  301. package/skills/cc-tauri-project-standard/references/common/engineering-practices.md +237 -0
  302. package/skills/cc-tauri-project-standard/references/common/engineering-practices.rules.json +121 -0
  303. package/skills/cc-tauri-project-standard/references/common/engineering-practices.sources.json +377 -0
  304. package/skills/cc-tauri-project-standard/references/engineering-practices.md +73 -0
  305. package/skills/cc-tauri-project-standard/references/practice.md +20 -0
  306. package/skills/cc-tauri-project-standard/references/verification.md +18 -0
  307. package/skills/cc-typescript-project-standard/SKILL.md +60 -0
  308. package/skills/cc-typescript-project-standard/examples/engineering/README.md +9 -0
  309. package/skills/cc-typescript-project-standard/examples/engineering/boundary.test.ts +16 -0
  310. package/skills/cc-typescript-project-standard/examples/engineering/input.ts +12 -0
  311. package/skills/cc-typescript-project-standard/examples/engineering/package.json +12 -0
  312. package/skills/cc-typescript-project-standard/examples/engineering/pnpm-lock.yaml +39 -0
  313. package/skills/cc-typescript-project-standard/examples/engineering/pnpm-workspace.yaml +1 -0
  314. package/skills/cc-typescript-project-standard/examples/engineering/tsconfig.json +8 -0
  315. package/skills/cc-typescript-project-standard/references/common/engineering-practices.md +237 -0
  316. package/skills/cc-typescript-project-standard/references/common/engineering-practices.rules.json +121 -0
  317. package/skills/cc-typescript-project-standard/references/common/engineering-practices.sources.json +377 -0
  318. package/skills/cc-typescript-project-standard/references/engineering-practices.md +106 -0
  319. package/skills/cc-typescript-project-standard/references/type-safety-patterns.md +73 -0
  320. package/skills/cc-typescript-project-standard/references/type-safety.md +154 -0
  321. package/skills/eval_queries.json +336 -0
  322. package/skills/metadata.json +545 -7
  323. package/skills/relations.json +143 -0
@@ -0,0 +1,377 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "sources": [
4
+ {
5
+ "id": "google-review",
6
+ "publisher": "Google",
7
+ "title": "Code review standard",
8
+ "url": "https://google.github.io/eng-practices/review/reviewer/standard.html",
9
+ "section": "Engineering principles and code health",
10
+ "checkedAt": "2026-11-08",
11
+ "versionScope": "Living public guidance; revision unknown",
12
+ "licenseStatus": "unknown",
13
+ "adoption": "adopt",
14
+ "limits": "Use evidence and project standards; personal preference alone is not a blocker."
15
+ },
16
+ {
17
+ "id": "ms-playbook",
18
+ "publisher": "Microsoft ISE",
19
+ "title": "Test planning",
20
+ "url": "https://microsoft.github.io/code-with-engineering-playbook/automated-testing/test-planning/",
21
+ "section": "Risk, test scope and responsibilities",
22
+ "checkedAt": "2026-11-08",
23
+ "versionScope": "Living ISE playbook; revision unknown",
24
+ "licenseStatus": "unknown",
25
+ "adoption": "adopt",
26
+ "limits": "Team practice, not a company-wide mandate; retain existing tools."
27
+ },
28
+ {
29
+ "id": "ms-faults",
30
+ "publisher": "Microsoft ISE",
31
+ "title": "Fault injection testing",
32
+ "url": "https://microsoft.github.io/code-with-engineering-playbook/automated-testing/fault-injection-testing/",
33
+ "section": "Controlled failure and observations",
34
+ "checkedAt": "2026-11-08",
35
+ "versionScope": "Living ISE playbook; revision unknown",
36
+ "licenseStatus": "unknown",
37
+ "adoption": "adopt",
38
+ "limits": "Run scoped, controlled failures; do not infer production reliability from a small example."
39
+ },
40
+ {
41
+ "id": "google-ts",
42
+ "publisher": "Google",
43
+ "title": "TS/JS style guide",
44
+ "url": "https://google.github.io/styleguide/tsguide.html",
45
+ "section": "Environment caveat; types and exceptions",
46
+ "checkedAt": "2026-11-08",
47
+ "versionScope": "Public guide; revision unknown",
48
+ "licenseStatus": "unknown",
49
+ "adoption": "conditional",
50
+ "limits": "Google explicitly notes internal constraints differ; no blanket ban overriding a justified project convention."
51
+ },
52
+ {
53
+ "id": "typescript-publishing",
54
+ "publisher": "TypeScript",
55
+ "title": "Publishing declaration files",
56
+ "url": "https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html",
57
+ "section": "Types and declaration dependencies",
58
+ "checkedAt": "2026-11-08",
59
+ "versionScope": "Living handbook; check installed compiler/module resolution",
60
+ "licenseStatus": "unknown",
61
+ "adoption": "adopt",
62
+ "limits": "Validate the actual packed consumer; do not upgrade compiler or module mode on this basis."
63
+ },
64
+ {
65
+ "id": "rust-api",
66
+ "publisher": "Rust library team",
67
+ "title": "Rust API Guidelines",
68
+ "url": "https://rust-lang.github.io/api-guidelines/",
69
+ "section": "Type safety, dependability and future proofing",
70
+ "checkedAt": "2026-11-08",
71
+ "versionScope": "Living recommendations; revision unknown",
72
+ "licenseStatus": "unknown",
73
+ "adoption": "adopt",
74
+ "limits": "Guidance rather than language law; preserve edition and MSRV."
75
+ },
76
+ {
77
+ "id": "tokio-join",
78
+ "publisher": "Tokio project",
79
+ "title": "JoinHandle",
80
+ "url": "https://docs.rs/tokio/latest/tokio/task/struct.JoinHandle.html",
81
+ "section": "Drop, abort and completion",
82
+ "checkedAt": "2026-11-08",
83
+ "versionScope": "Page observed 1.54.1; project runtime/version determines applicability",
84
+ "licenseStatus": "unknown",
85
+ "adoption": "conditional",
86
+ "limits": "Tokio-specific mechanics only when Tokio is already used; no new runtime dependency."
87
+ },
88
+ {
89
+ "id": "uber-go",
90
+ "publisher": "Uber",
91
+ "title": "Go Style Guide",
92
+ "url": "https://github.com/uber-go/guide/blob/master/style.md",
93
+ "section": "Errors, interfaces and goroutine lifetime",
94
+ "checkedAt": "2026-11-08",
95
+ "versionScope": "Living master; revision unknown",
96
+ "licenseStatus": "unknown",
97
+ "adoption": "adopt",
98
+ "limits": "Do not import Uber dependencies or turn buffer-size style into a correctness theorem."
99
+ },
100
+ {
101
+ "id": "go-context",
102
+ "publisher": "Go project",
103
+ "title": "context package",
104
+ "url": "https://pkg.go.dev/context",
105
+ "section": "Cancellation propagation and ownership",
106
+ "checkedAt": "2026-11-08",
107
+ "versionScope": "Standard library; check owning go.mod/toolchain",
108
+ "licenseStatus": "unknown",
109
+ "adoption": "adopt",
110
+ "limits": "A cancellation signal alone does not confirm worker exit."
111
+ },
112
+ {
113
+ "id": "google-java",
114
+ "publisher": "Google",
115
+ "title": "Java Style Guide",
116
+ "url": "https://google.github.io/styleguide/javaguide.html",
117
+ "section": "Source structure and exception handling",
118
+ "checkedAt": "2026-11-08",
119
+ "versionScope": "Living public style; revision unknown",
120
+ "licenseStatus": "unknown",
121
+ "adoption": "conditional",
122
+ "limits": "Naming/layout follows local standard; style is distinct from runtime correctness."
123
+ },
124
+ {
125
+ "id": "oracle-resources",
126
+ "publisher": "Oracle",
127
+ "title": "Try-with-resources",
128
+ "url": "https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html",
129
+ "section": "Closing resources and suppressed exceptions",
130
+ "checkedAt": "2026-11-08",
131
+ "versionScope": "JDK8 tutorial; not a source for newer runtime features",
132
+ "licenseStatus": "unknown",
133
+ "adoption": "adopt",
134
+ "limits": "Preserve primary cause and borrowed-resource ownership; check actual API contract."
135
+ },
136
+ {
137
+ "id": "java-executor",
138
+ "publisher": "Oracle",
139
+ "title": "ExecutorService",
140
+ "url": "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ExecutorService.html",
141
+ "section": "Shutdown, termination and awaitTermination",
142
+ "checkedAt": "2026-11-08",
143
+ "versionScope": "Java SE17 documentation",
144
+ "licenseStatus": "unknown",
145
+ "adoption": "conditional",
146
+ "limits": "Check target JDK; no automatic virtual-thread or JDK migration."
147
+ },
148
+ {
149
+ "id": "google-python",
150
+ "publisher": "Google",
151
+ "title": "Python Style Guide",
152
+ "url": "https://google.github.io/styleguide/pyguide.html",
153
+ "section": "Imports, exceptions and mutable state",
154
+ "checkedAt": "2026-11-08",
155
+ "versionScope": "Living public guide; revision unknown",
156
+ "licenseStatus": "unknown",
157
+ "adoption": "conditional",
158
+ "limits": "Keep current formatter/type checker and library responsibilities."
159
+ },
160
+ {
161
+ "id": "python-asyncio",
162
+ "publisher": "Python project",
163
+ "title": "Coroutines and tasks",
164
+ "url": "https://docs.python.org/3/library/asyncio-task.html",
165
+ "section": "Cancellation and task ownership",
166
+ "checkedAt": "2026-11-08",
167
+ "versionScope": "Page observed 3.15.2; feature availability follows project Python",
168
+ "licenseStatus": "unknown",
169
+ "adoption": "conditional",
170
+ "limits": "Newer TaskGroup/timeout features require a supported project version; no upgrade implied."
171
+ },
172
+ {
173
+ "id": "cert-c",
174
+ "publisher": "CMU SEI",
175
+ "title": "MEM00-C allocation and release",
176
+ "url": "https://cmu-sei.github.io/secure-coding-standards/sei-cert-c-coding-standard/recommendations/memory-management-mem/mem00-c/",
177
+ "section": "MEM00-C memory responsibility",
178
+ "checkedAt": "2026-11-08",
179
+ "versionScope": "2016-edition standard family; MEM00-C is a recommendation",
180
+ "licenseStatus": "unknown",
181
+ "adoption": "adopt",
182
+ "limits": "Do not label recommendations as mandatory CERT rules or apply C++ ownership machinery to pure C."
183
+ },
184
+ {
185
+ "id": "cpp-core",
186
+ "publisher": "C++ Core Guidelines editors",
187
+ "title": "C++ Core Guidelines",
188
+ "url": "https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines",
189
+ "section": "Resource and lifetime interfaces",
190
+ "checkedAt": "2026-11-08",
191
+ "versionScope": "Page dated 2026-06-14, living release0.8",
192
+ "licenseStatus": "unknown",
193
+ "adoption": "adopt",
194
+ "limits": "Adapt to existing exception policy and compiler; borrowing does not imply ownership."
195
+ },
196
+ {
197
+ "id": "google-cpp",
198
+ "publisher": "Google",
199
+ "title": "C++ Style Guide",
200
+ "url": "https://google.github.io/styleguide/cppguide.html",
201
+ "section": "Exceptions and project consistency",
202
+ "checkedAt": "2026-11-08",
203
+ "versionScope": "Living public guide; revision unknown",
204
+ "licenseStatus": "unknown",
205
+ "adoption": "conditional",
206
+ "limits": "Its exception/standard policy is not universal; preserve the owning project policy and C ABI."
207
+ },
208
+ {
209
+ "id": "ms-sal",
210
+ "publisher": "Microsoft",
211
+ "title": "Understanding SAL",
212
+ "url": "https://learn.microsoft.com/en-us/cpp/code-quality/understanding-sal?view=msvc-170",
213
+ "section": "Parameter preconditions and output guarantees",
214
+ "checkedAt": "2026-11-08",
215
+ "versionScope": "MSVC170 documentation view",
216
+ "licenseStatus": "unknown",
217
+ "adoption": "conditional",
218
+ "limits": "SAL is an optional toolchain-specific expression, not a portable mandatory annotation."
219
+ },
220
+ {
221
+ "id": "aws-retry",
222
+ "publisher": "AWS",
223
+ "title": "Timeouts, retries and backoff with jitter",
224
+ "url": "https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/",
225
+ "section": "Timeouts, bounded retries and retry amplification",
226
+ "checkedAt": "2026-11-08",
227
+ "versionScope": "Article dated 2019-12-05; official Builder Center redirect",
228
+ "licenseStatus": "unknown",
229
+ "adoption": "adopt",
230
+ "limits": "Retry only semantically safe operations within a total budget; failure classes alone do not grant write replay."
231
+ },
232
+ {
233
+ "id": "aws-idempotency",
234
+ "publisher": "AWS",
235
+ "title": "Making retries safe with idempotent APIs",
236
+ "url": "https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/",
237
+ "section": "Caller intent, duplicate requests and atomic recording",
238
+ "checkedAt": "2026-11-08",
239
+ "versionScope": "Builders Library; revision unknown",
240
+ "licenseStatus": "unknown",
241
+ "adoption": "adopt",
242
+ "limits": "A process-local example does not establish database/multi-process exactly-once."
243
+ },
244
+ {
245
+ "id": "react-effects",
246
+ "publisher": "React project",
247
+ "title": "useEffect",
248
+ "url": "https://react.dev/reference/react/useEffect",
249
+ "section": "Cleanup and fetching race conditions",
250
+ "checkedAt": "2026-11-08",
251
+ "versionScope": "Page observed React19.3; use installed project API",
252
+ "licenseStatus": "unknown",
253
+ "adoption": "adopt",
254
+ "limits": "Abort and stale-result checks complement each other; no React upgrade implied."
255
+ },
256
+ {
257
+ "id": "react-act",
258
+ "publisher": "React project",
259
+ "title": "act",
260
+ "url": "https://react.dev/reference/react/act",
261
+ "section": "Applying updates before assertions",
262
+ "checkedAt": "2026-11-08",
263
+ "versionScope": "Page observed React19.3; verify sample versions",
264
+ "licenseStatus": "unknown",
265
+ "adoption": "adopt",
266
+ "limits": "DOM simulation is not browser E2E or native desktop execution."
267
+ },
268
+ {
269
+ "id": "vue-watchers",
270
+ "publisher": "Vue project",
271
+ "title": "Watchers",
272
+ "url": "https://vuejs.org/guide/essentials/watchers.html",
273
+ "section": "Side-effect cleanup",
274
+ "checkedAt": "2026-11-08",
275
+ "versionScope": "Vue3; onWatcherCleanup requires3.5+ and synchronous registration",
276
+ "licenseStatus": "unknown",
277
+ "adoption": "conditional",
278
+ "limits": "Use supported callback cleanup on older Vue3; no framework migration."
279
+ },
280
+ {
281
+ "id": "tauri-permissions",
282
+ "publisher": "Tauri project",
283
+ "title": "Permissions",
284
+ "url": "https://v2.tauri.app/security/permissions/",
285
+ "section": "Command allow/deny and capability scope",
286
+ "checkedAt": "2026-11-08",
287
+ "versionScope": "Tauri2 docs; check installed version/configuration",
288
+ "licenseStatus": "unknown",
289
+ "adoption": "conditional",
290
+ "limits": "Rust command-unit tests do not activate webview permissions or prove packaged GUI security."
291
+ },
292
+ {
293
+ "id": "electron-security",
294
+ "publisher": "Electron project",
295
+ "title": "Security",
296
+ "url": "https://www.electronjs.org/docs/latest/tutorial/security",
297
+ "section": "IPC sender checks and renderer trust",
298
+ "checkedAt": "2026-11-08",
299
+ "versionScope": "Living docs; match installed Electron",
300
+ "licenseStatus": "unknown",
301
+ "adoption": "conditional",
302
+ "limits": "Handler tests do not prove sandbox/context isolation is active in a packaged app."
303
+ },
304
+ {
305
+ "id": "spring-tests",
306
+ "publisher": "Spring project",
307
+ "title": "Testing Spring Boot applications",
308
+ "url": "https://docs.spring.io/spring-boot/3.5/reference/testing/spring-boot-applications.html",
309
+ "section": "Test slices and application tests",
310
+ "checkedAt": "2026-11-08",
311
+ "versionScope": "Boot3.5 docs observed3.5.16; preserve sample/project versions",
312
+ "licenseStatus": "unknown",
313
+ "adoption": "conditional",
314
+ "limits": "Test scope matters; MVC tests do not establish live DB/transaction or deployment behavior."
315
+ },
316
+ {
317
+ "id": "fastapi-lifespan",
318
+ "publisher": "FastAPI project",
319
+ "title": "Lifespan events",
320
+ "url": "https://fastapi.tiangolo.com/advanced/events/",
321
+ "section": "Acquire and release application resources",
322
+ "checkedAt": "2026-11-08",
323
+ "versionScope": "Living FastAPI documentation; match pinned dependencies",
324
+ "licenseStatus": "unknown",
325
+ "adoption": "conditional",
326
+ "limits": "Use actual lifespan execution in tests; import does not own a live connection."
327
+ },
328
+ {
329
+ "id": "gin-binding",
330
+ "publisher": "Gin project",
331
+ "title": "Binding",
332
+ "url": "https://gin-gonic.com/en/docs/binding/",
333
+ "section": "Binding errors and validation",
334
+ "checkedAt": "2026-11-08",
335
+ "versionScope": "Living Gin documentation; match pinned module",
336
+ "licenseStatus": "unknown",
337
+ "adoption": "conditional",
338
+ "limits": "Writing/aborting a response does not replace explicit control-flow return in the current handler."
339
+ },
340
+ {
341
+ "id": "axum-extractors",
342
+ "publisher": "Axum project",
343
+ "title": "Extractors",
344
+ "url": "https://docs.rs/axum/latest/axum/extract/",
345
+ "section": "Extractor order and rejections",
346
+ "checkedAt": "2026-11-08",
347
+ "versionScope": "Latest route observed0.8.9; fixed0.8.9 route unavailable via browser tool",
348
+ "licenseStatus": "unknown",
349
+ "adoption": "conditional",
350
+ "limits": "Pinned existing example is authoritative for compilation; do not assume source signatures across releases."
351
+ },
352
+ {
353
+ "id": "drogon-filters",
354
+ "publisher": "Drogon project",
355
+ "title": "Middleware and Filter",
356
+ "url": "https://github.com/drogonframework/drogon/wiki/ENG-05-Middleware-and-Filter",
357
+ "section": "Filter callbacks and continuation",
358
+ "checkedAt": "2026-11-08",
359
+ "versionScope": "Living wiki; match compiled example version",
360
+ "licenseStatus": "unknown",
361
+ "adoption": "conditional",
362
+ "limits": "Synthetic role headers are not authentication; callback lifetime must follow actual ownership."
363
+ },
364
+ {
365
+ "id": "node-typescript",
366
+ "publisher": "Node.js project",
367
+ "title": "Modules: TypeScript",
368
+ "url": "https://nodejs.org/api/typescript.html",
369
+ "section": "Type-stripping history, enabling, and separate type checking",
370
+ "checkedAt": "2026-11-08",
371
+ "versionScope": "Page observed26.13.0; sample>=22.18, actual24.14.1 tested; product Node>=22 unchanged",
372
+ "licenseStatus": "unknown",
373
+ "adoption": "conditional",
374
+ "limits": "Native stripping is not type checking and ignores tsconfig. Missing sample capability is MISSING, not a product runtime upgrade."
375
+ }
376
+ ]
377
+ }
@@ -0,0 +1,106 @@
1
+ ---
2
+ practiceCards:
3
+ - id: "cc-typescript-project-standard:input-validation"
4
+ level: "required"
5
+ sourceIds: ["google-ts"]
6
+ caseIds: ["EP-TS-01"]
7
+ evidence: "case"
8
+ - id: "cc-typescript-project-standard:async-errors"
9
+ level: "required"
10
+ sourceIds: ["google-ts","aws-idempotency"]
11
+ caseIds: ["EP-TS-01","EP-UI-01"]
12
+ evidence: "review-only"
13
+ - id: "cc-typescript-project-standard:package-contract"
14
+ level: "required"
15
+ sourceIds: ["typescript-publishing","google-ts"]
16
+ caseIds: ["EP-TS-01"]
17
+ evidence: "review-only"
18
+ ---
19
+
20
+ # Local engineering decisions
21
+
22
+ Locate the actual role, toolchain and existing conventions, then read relevant [shared principles](common/engineering-practices.md). These conditions apply to this entry, not every project. Structure checks do not prove all semantics or execution.
23
+
24
+ <a id="cc-typescript-project-standard:input-validation"></a>
25
+ ## Validate external data before effects
26
+
27
+ Level: required
28
+
29
+ ### Risk
30
+ A cast can move invalid JSON into a trusted domain value.
31
+
32
+ ### Applies
33
+ At network, IPC, file or plugin input; internal values with an established invariant need no duplicate schema.
34
+
35
+ ### Decision
36
+ Accept unknown, narrow using existing schema/type guards, then map protocol values to domain types before an effect. State amount units, enum handling and failure output.
37
+
38
+ ### Exceptions
39
+ A typed/generated client is useful but does not validate a remote response. A deliberately trusted boundary needs documented provenance.
40
+
41
+ ### Examples
42
+ Better: reject a string amount with zero effects. Worse: as Payment makes a charge callback accept malformed input.
43
+
44
+ ### Verification
45
+ Run the local invalid/success pair; add protocol-specific empty-body/enum tests in the consuming project.
46
+
47
+ ### Sources
48
+ google-ts — [registry and limits](common/engineering-practices.sources.json).
49
+
50
+ Evidence IDs: EP-TS-01; case. [Local runnable example](../examples/engineering/README.md). Execution status and scope require actual records; a related ID does not prove every decision on this card.
51
+
52
+ <a id="cc-typescript-project-standard:async-errors"></a>
53
+ ## Propagate failure through owned async work
54
+
55
+ Level: required
56
+
57
+ ### Risk
58
+ Floating work and swallowed rejection can publish success too early.
59
+
60
+ ### Applies
61
+ For promises and callbacks this unit creates; do not impose a UI hook on a generic library.
62
+
63
+ ### Decision
64
+ Return/await the owning promise, preserve unknown error context safely and expose explicit pending/failed/succeeded states. Handle detached work only through an intentional lifecycle owner.
65
+
66
+ ### Exceptions
67
+ Abort indicates caller interest ended, not that a remote write rolled back. Reconcile uncertain writes before retry; honor existing error types.
68
+
69
+ ### Examples
70
+ Better: pending confirmation after a committed-write timeout. Worse: catch returns an empty success value or silently retries a charge.
71
+
72
+ ### Verification
73
+ Inject rejection and late completion in the owning unit. The local TS case covers validation only; UI and service IDs denote separate evidence.
74
+
75
+ ### Sources
76
+ google-ts, aws-idempotency — [registry and limits](common/engineering-practices.sources.json).
77
+
78
+ Evidence IDs: EP-TS-01, EP-UI-01; review-only. Execution status and scope require actual records; a related ID does not prove every decision on this card.
79
+
80
+ <a id="cc-typescript-project-standard:package-contract"></a>
81
+ ## Verify declarations in the real consumer
82
+
83
+ Level: required
84
+
85
+ ### Risk
86
+ Workspace aliases or undeclared type dependencies can disappear after pack.
87
+
88
+ ### Applies
89
+ For libraries/SDKs/CLI exports; ordinary app-only modules need not become published packages.
90
+
91
+ ### Decision
92
+ Match exports, types, files and module resolution to declared consumers; test the tarball outside the workspace. Prefer existing strict settings, recording a scoped migration if changing them.
93
+
94
+ ### Exceptions
95
+ Google internal namespace/enum/assertion style is conditional. skipLibCheck may be a deliberate dependency policy; it cannot validate your own public boundary. exactOptionalPropertyTypes is separate from strict.
96
+
97
+ ### Examples
98
+ Better: a packed consumer resolves its declared type dependencies. Worse: switch every package to a new module mode to imitate a guide.
99
+
100
+ ### Verification
101
+ Run the existing type/build and artifact-consumer checks; validation sample evidence alone does not prove declaration compatibility.
102
+
103
+ ### Sources
104
+ typescript-publishing, google-ts — [registry and limits](common/engineering-practices.sources.json).
105
+
106
+ Evidence IDs: EP-TS-01; review-only. Execution status and scope require actual records; a related ID does not prove every decision on this card.
@@ -0,0 +1,73 @@
1
+ # Type safety mode
2
+
3
+ ## Type Boundary Review Checklist
4
+
5
+ - DTOs should correspond to external loads and be converted at API boundaries.
6
+ - Domain model or view model uses the consumer’s naming and stable union types.
7
+ - Component props need to be named clearly and exported only when reused outside this file.
8
+ - Public functions must have explicit parameter and return value types.
9
+ - External input must start from `unknown` and be gradually narrowed through schema verification or type guarding.
10
+ - Configure mapping tables using `as const` and `satisfies` first to avoid broad assertions.
11
+
12
+ ## Use the configuration mapping table of `satisfies`
13
+
14
+ ```ts
15
+ type Tone = "neutral" | "success" | "warning" | "danger";
16
+
17
+ const STATUS_TONE = {
18
+ draft: "neutral",
19
+ paid: "success",
20
+ overdue: "danger",
21
+ } as const satisfies Record<string, Tone>;
22
+
23
+ type InvoiceStatus = keyof typeof STATUS_TONE;
24
+ ```
25
+
26
+ This not only preserves the literal value, but also verifies that the mapping table conforms to the expected value range.
27
+
28
+ ## Mapping type used for form errors
29
+
30
+ ```ts
31
+ type FieldErrors<TValues extends Record<string, unknown>> = {
32
+ [Key in keyof TValues]?: string;
33
+ };
34
+
35
+ interface ProfileFormValues {
36
+ email: string;
37
+ displayName: string;
38
+ }
39
+
40
+ type ProfileFormErrors = FieldErrors<ProfileFormValues>;
41
+ ```
42
+
43
+ ## Template literal type is used for event naming
44
+
45
+ ```ts
46
+ interface AnalyticsPayloads {
47
+ checkoutStarted: { cartId: string };
48
+ checkoutCompleted: { orderId: string };
49
+ }
50
+
51
+ type AnalyticsEventName = keyof AnalyticsPayloads;
52
+ type AnalyticsHandlerName = `on${Capitalize<string & AnalyticsEventName>}`;
53
+ ```
54
+
55
+ Use this pattern when there is already an event naming convention in the project. Don't introduce it for one-time strings.
56
+
57
+ ## Generic selection contract
58
+
59
+ ```ts
60
+ interface Entity { id: string }
61
+ export function selectEntity<T extends Entity>(items: readonly T[], id: string): T | undefined {
62
+ return items.find(item => item.id === id);
63
+ }
64
+ ```
65
+
66
+ ## Type Review Feedback
67
+
68
+ When reporting a type safety issue, include:
69
+
70
+ - Type boundaries that are too broad, too narrow, or unreasonable.
71
+ - Behavior that may fail at runtime despite passing TypeScript.
72
+ - Minimal replacement type or guard scheme.
73
+ - Whether the change requires testing or type testing.