@bovinphang/craft-common 1.0.0 → 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 +10876 -211
  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,73 @@
1
+ ---
2
+ practiceCards:
3
+ - id: "cc-rust-async:cancellation"
4
+ level: "conditional"
5
+ sourceIds: ["tokio-join","rust-api"]
6
+ caseIds: ["EP-RS-01","EP-GO-01"]
7
+ evidence: "review-only"
8
+ - id: "cc-rust-async:guard-lifetime"
9
+ level: "recommended"
10
+ sourceIds: ["tokio-join","rust-api"]
11
+ caseIds: ["EP-RS-01"]
12
+ evidence: "review-only"
13
+ ---
14
+
15
+ # 本入口工程决策
16
+
17
+ 先定位项目角色、工具链及已有约定,再按需读取[公共原则](common/engineering-practices.md)。下列条件仅约束当前语言/场景;结构检查不证明全部语义或实际运行。
18
+
19
+ <a id="cc-rust-async:cancellation"></a>
20
+ ## 丢弃等待方不等于停止操作
21
+
22
+ 级别: conditional
23
+
24
+ ### 风险
25
+ 超时可能丢弃所属任务的管理,或留下部分写流。
26
+
27
+ ### 适用
28
+ 适用于实际async工作及项目已安装运行时;安全同步代码无需Tokio。
29
+
30
+ ### 决策
31
+ 明确spawn/cancel/join方,保留句柄、限制接单,并读取操作取消安全契约;先停接单再排空/取消,依赖释放前确认完成。
32
+
33
+ ### 例外
34
+ Tokio句柄drop会脱离管理;abort是请求,已运行阻塞工作可能不可停止;保留部分进度,报告未完成而非假装回滚。
35
+
36
+ ### 正反示意
37
+ 正例:等待所属任务退出,暴露部分写状态。反例:认为Arc加超时自动使脱离任务安全。
38
+
39
+ ### 验证
40
+ 在实际运行时用可控future/事件及短写注入;安全Result和Go例是关联证据,不是Rust-async执行结论。
41
+
42
+ ### 来源
43
+ tokio-join, rust-api — [来源与适用限制](common/engineering-practices.sources.json).
44
+
45
+ 证据标识: EP-RS-01, EP-GO-01; review-only. 执行状态及覆盖范围见实际记录;关联ID不证明该卡全部语义。
46
+
47
+ <a id="cc-rust-async:guard-lifetime"></a>
48
+ ## 限制临界区及阻塞工作
49
+
50
+ 级别: recommended
51
+
52
+ ### 风险
53
+ 阻塞guard跨挂起可能阻碍进展,掩盖锁顺序死锁。
54
+
55
+ ### 适用
56
+ future拥有锁、阻塞客户端或队列槽时适用,先查具体guard/操作类型。
57
+
58
+ ### 决策
59
+ 缩短持锁范围,复制必要已拥有状态,契约允许时在锁外await;不可避免阻塞放在既有有界运行时边界。
60
+
61
+ ### 例外
62
+ 不盲目把全部mutex换成async mutex;有意跨await保留guard时,证明调度/依赖假设并测试争用。
63
+
64
+ ### 正反示意
65
+ 正例:短元数据锁释放后等待I/O。反例:持锁await一个也需要此锁的任务。
66
+
67
+ ### 验证
68
+ 用确定性争用/关闭测试及调度测量;该建议不授权新运行时、edition或MSRV。
69
+
70
+ ### 来源
71
+ tokio-join, rust-api — [来源与适用限制](common/engineering-practices.sources.json).
72
+
73
+ 证据标识: EP-RS-01; review-only. 执行状态及覆盖范围见实际记录;关联ID不证明该卡全部语义。
@@ -0,0 +1,37 @@
1
+ # Rust 异步生命周期
2
+
3
+ ## 关键检查
4
+
5
+ 1. 识别运行时/版本、挂起点、资源拥有者和取消边界;依据实际 future 文档判断取消安全。
6
+
7
+ 2. 区分取消等待者与停止操作;超时写入可能已改变流,必须定义部分进展后的恢复。
8
+
9
+ 3. 管理任务句柄,限制队列和在途任务,传播错误;无限脱离任务不是停机方案。
10
+
11
+ 4. 不可避免阻塞操作放入适当且有界的边界,取消仍须尊重底层操作生命周期。
12
+
13
+ 5. 先停止接单,再排空/取消所拥有任务,定义期限与收尾完成条件;select 不提供业务幂等。
14
+
15
+ 6. 用可控调度、短写、取消和背压测试;报告实际运行的运行时及错误路径。
16
+
17
+ <a id="scope"></a>
18
+ ## 边界与案例
19
+
20
+ 适用场景:
21
+ - 修复 Tokio select 取消导致的部分写入
22
+ - 限制 Rust spawn 数量并管理 JoinHandle
23
+ - 设计 Rust 异步停机和取消
24
+ - 隔离异步执行器中的阻塞 I/O
25
+
26
+ 应用角色按实际证据区分;本语言模块可用于库、CLI、桌面或服务,框架问题另选专项。
27
+
28
+ ## 交付要求
29
+
30
+ - 已读取的工程/契约证据及变更作用域。
31
+ - 选用方案、关键不变量、资源/错误或失败边界。
32
+ - 实际运行的命令与结果,未运行项及不能证明的结论。
33
+ - 兼容、恢复/回滚或后续处理限制;评审结论须给可核实位置。
34
+
35
+ ## 权威资料
36
+
37
+ [相关官方/项目资料](https://docs.rs/tokio/latest/tokio/macro.select.html)(核验日期:2026-11-06)。实际使用时再匹配项目声明版本,不把参考页的最新版本当作升级授权。
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: cc-rust-project-standard
3
+ description: "用于rust 的模块、类型、资源所有权需要设计或审查,适用于库、CLI、桌面核心及服务;仅样式或图片任务不适用。"
4
+ ---
5
+
6
+ # Rust 工程规范
7
+
8
+ 本入口面向库、CLI、桌面核心及服务中的语言工程;应用角色由实际子工程证据决定,不由前端/后端产品名决定。
9
+
10
+ 先读 Cargo.toml、workspace 成员、edition、MSRV 与现有 alias;在所属 crate 内改动,不顺手升级整个工作区。
11
+
12
+ ## 执行与证据
13
+
14
+ 1. 定位实际工程、任务边界及已有契约;只加载当前需要的语言和领域资料。
15
+ 2. 应用[专业检查](references/practice.md),先核对输入证据,再决定最小改动。
16
+ 3. 使用仓库已有工具验证相关行为;缺少工具、环境或实际执行时明确报告,不能把计划当通过。
17
+ 4. 交付改动范围、专业决策、实际验证及剩余风险;仅评审任务保持只读。
18
+
19
+ ## 任务边界
20
+
21
+ 按[参考中的边界与案例](references/practice.md#scope)区分相邻能力,不扩展成未要求的框架迁移或全栈重写。
22
+
23
+ ## 工程实践
24
+
25
+ 按当前任务读取[本入口工程细则](references/engineering-practices.md),再按链接选择公共原则。规则级别与例外以实际项目契约为准;不因产品前后端标签限制语言或职责。
@@ -0,0 +1,7 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 3
4
+
5
+ [[package]]
6
+ name = "engineering-resource-boundary"
7
+ version = "0.0.0"
@@ -0,0 +1,8 @@
1
+ [package]
2
+ name = "engineering-resource-boundary"
3
+ version = "0.0.0"
4
+ edition = "2021"
5
+ rust-version = "1.70"
6
+
7
+ [lib]
8
+ path = "src/lib.rs"
@@ -0,0 +1,5 @@
1
+ # Result与资源边界 — EP-RS-01
2
+
3
+ 复制目录到可写位置。已有Rust环境先执行cargo test --offline --locked --no-run;PowerShell设$env:CRAFT_ENGINEERING_DEFECTIVE为1,运行cargo test --offline --locked,failure_releases_and_preserves_cause应因释放次数断言失败。设为0(默认)后相同两个测试通过;POSIX可在命令前设置环境变量。
4
+
5
+ 无需外部crate或父仓源码。mem::forget是故意保留的缺陷分支,默认不启用;真实I/O cause和Drop计数展示Result/RAII,不证明async取消、unsafe/FFI或GUI。target及日志置于可写副本;声明MSRV需单独验证,不能以较新工具链运行推断最低版本通过。
@@ -0,0 +1,43 @@
1
+ use std::error::Error;
2
+ use std::fmt;
3
+ use std::sync::{Arc, atomic::{AtomicUsize, Ordering}};
4
+
5
+ struct Lease(Arc<AtomicUsize>);
6
+ impl Drop for Lease { fn drop(&mut self) { self.0.fetch_add(1, Ordering::SeqCst); } }
7
+
8
+ #[derive(Debug)]
9
+ pub struct BoundaryError { cause: std::io::Error }
10
+ impl fmt::Display for BoundaryError {
11
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "opening payload failed") }
12
+ }
13
+ impl Error for BoundaryError { fn source(&self) -> Option<&(dyn Error + 'static)> { Some(&self.cause) } }
14
+
15
+ /// Own only the acquired lease; the caller retains the counter used to observe release.
16
+ pub fn open_payload(fail: bool, releases: Arc<AtomicUsize>) -> Result<(), BoundaryError> {
17
+ let lease = Lease(releases);
18
+ if fail {
19
+ if std::env::var("CRAFT_ENGINEERING_DEFECTIVE").as_deref() == Ok("1") {
20
+ std::mem::forget(lease); // Deliberate faulty branch: leak ownership on failure.
21
+ }
22
+ return Err(BoundaryError { cause: std::io::Error::new(std::io::ErrorKind::Other, "payload unavailable") });
23
+ }
24
+ Ok(())
25
+ }
26
+
27
+ #[cfg(test)]
28
+ mod tests {
29
+ use super::*;
30
+ #[test]
31
+ fn failure_releases_and_preserves_cause() {
32
+ let count = Arc::new(AtomicUsize::new(0));
33
+ let error = open_payload(true, count.clone()).unwrap_err();
34
+ assert_eq!(error.source().unwrap().to_string(), "payload unavailable");
35
+ assert_eq!(count.load(Ordering::SeqCst), 1, "EP-RS-01 acquired lease must be released");
36
+ }
37
+ #[test]
38
+ fn success_releases_owned_lease() {
39
+ let count = Arc::new(AtomicUsize::new(0));
40
+ open_payload(false, count.clone()).unwrap();
41
+ assert_eq!(count.load(Ordering::SeqCst), 1);
42
+ }
43
+ }