@bovinphang/frontend-craft 2.9.0 → 3.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 (579) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +403 -378
  4. package/CHANGELOG.zh-CN.md +402 -377
  5. package/CONTRIBUTING.md +381 -371
  6. package/CONTRIBUTING.zh-CN.md +383 -371
  7. package/README.md +605 -545
  8. package/README.openclaw.md +395 -359
  9. package/README.openclaw.zh-CN.md +395 -359
  10. package/README.zh-CN.md +605 -545
  11. package/agents/fec-typescript-reviewer.md +1 -1
  12. package/common-content.lock.json +3795 -0
  13. package/dist/bin/frontend-craft.js +353 -174
  14. package/docs/common-migration.md +61 -0
  15. package/docs/example-prompts.md +157 -157
  16. package/docs/ja-JP/README.md +588 -534
  17. package/docs/ko-KR/README.md +588 -534
  18. package/docs/project-structure.md +166 -151
  19. package/docs/review-and-diagram-workflows.md +5 -5
  20. package/docs/runtimes/antigravity.md +18 -18
  21. package/docs/runtimes/augment.md +18 -18
  22. package/docs/runtimes/claude.md +193 -191
  23. package/docs/runtimes/claude.zh-CN.md +191 -189
  24. package/docs/runtimes/cline.md +18 -18
  25. package/docs/runtimes/codebuddy.md +18 -18
  26. package/docs/runtimes/codex.md +18 -18
  27. package/docs/runtimes/compatibility.md +42 -27
  28. package/docs/runtimes/copilot.md +18 -18
  29. package/docs/runtimes/cursor.md +18 -18
  30. package/docs/runtimes/gemini.md +18 -18
  31. package/docs/runtimes/kilo.md +18 -18
  32. package/docs/runtimes/openclaw.md +18 -18
  33. package/docs/runtimes/opencode.md +18 -18
  34. package/docs/runtimes/qoder.md +18 -18
  35. package/docs/runtimes/trae.md +18 -18
  36. package/docs/runtimes/windsurf.md +18 -18
  37. package/docs/zh-CN/common-migration.md +57 -0
  38. package/docs/zh-CN/example-prompts.md +157 -157
  39. package/docs/zh-CN/project-structure.md +166 -148
  40. package/docs/zh-CN/review-and-diagram-workflows.md +5 -5
  41. package/docs/zh-TW/README.md +588 -534
  42. package/localized/zh-CN/agents/fec-typescript-reviewer.md +1 -1
  43. package/localized/zh-CN/skills/cc-c-project-standard/SKILL.md +25 -0
  44. package/localized/zh-CN/skills/cc-c-project-standard/examples/engineering/README.md +7 -0
  45. package/localized/zh-CN/skills/cc-c-project-standard/examples/engineering/boundary.c +26 -0
  46. package/localized/zh-CN/skills/cc-c-project-standard/examples/engineering/boundary.h +15 -0
  47. package/localized/zh-CN/skills/cc-c-project-standard/examples/engineering/boundary_test.c +73 -0
  48. package/localized/zh-CN/skills/cc-c-project-standard/references/common/engineering-practices.md +237 -0
  49. package/localized/zh-CN/skills/cc-c-project-standard/references/common/engineering-practices.rules.json +121 -0
  50. package/localized/zh-CN/skills/cc-c-project-standard/references/common/engineering-practices.sources.json +377 -0
  51. package/localized/zh-CN/skills/cc-c-project-standard/references/engineering-practices.md +106 -0
  52. package/localized/zh-CN/skills/cc-c-project-standard/references/practice.md +37 -0
  53. package/localized/zh-CN/skills/cc-cpp-project-standard/SKILL.md +25 -0
  54. package/localized/zh-CN/skills/cc-cpp-project-standard/examples/engineering/README.md +7 -0
  55. package/localized/zh-CN/skills/cc-cpp-project-standard/examples/engineering/boundary.cpp +26 -0
  56. package/localized/zh-CN/skills/cc-cpp-project-standard/examples/engineering/boundary.hpp +12 -0
  57. package/localized/zh-CN/skills/cc-cpp-project-standard/examples/engineering/boundary_test.cpp +38 -0
  58. package/localized/zh-CN/skills/cc-cpp-project-standard/references/common/engineering-practices.md +237 -0
  59. package/localized/zh-CN/skills/cc-cpp-project-standard/references/common/engineering-practices.rules.json +121 -0
  60. package/localized/zh-CN/skills/cc-cpp-project-standard/references/common/engineering-practices.sources.json +377 -0
  61. package/localized/zh-CN/skills/cc-cpp-project-standard/references/engineering-practices.md +106 -0
  62. package/localized/zh-CN/skills/cc-cpp-project-standard/references/practice.md +37 -0
  63. package/localized/zh-CN/skills/cc-debug-methodology/SKILL.md +8 -0
  64. package/localized/zh-CN/skills/cc-debug-methodology/references/method.md +13 -0
  65. package/localized/zh-CN/skills/cc-doc-sync-core/SKILL.md +8 -0
  66. package/localized/zh-CN/skills/cc-doc-sync-core/references/method.md +12 -0
  67. package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/SKILL.md +5 -5
  68. package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/references/flowchart-quality.md +1 -1
  69. package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/references/layout-and-export.md +9 -9
  70. package/localized/zh-CN/skills/cc-electron-project-standard/SKILL.md +21 -0
  71. package/localized/zh-CN/skills/cc-electron-project-standard/examples/engineering/README.md +7 -0
  72. package/localized/zh-CN/skills/cc-electron-project-standard/examples/engineering/ipc-lifecycle.cjs +44 -0
  73. package/localized/zh-CN/skills/cc-electron-project-standard/examples/engineering/ipc-lifecycle.test.cjs +44 -0
  74. package/localized/zh-CN/skills/cc-electron-project-standard/examples/engineering/package.json +8 -0
  75. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/README.md +9 -0
  76. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/boundary.cjs +19 -0
  77. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/boundary.test.cjs +7 -0
  78. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/index.html +1 -0
  79. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/main.cjs +20 -0
  80. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/package.json +9 -0
  81. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/preload.cjs +2 -0
  82. package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/renderer.js +4 -0
  83. package/localized/zh-CN/skills/cc-electron-project-standard/references/common/engineering-practices.md +237 -0
  84. package/localized/zh-CN/skills/cc-electron-project-standard/references/common/engineering-practices.rules.json +121 -0
  85. package/localized/zh-CN/skills/cc-electron-project-standard/references/common/engineering-practices.sources.json +377 -0
  86. package/localized/zh-CN/skills/cc-electron-project-standard/references/engineering-practices.md +73 -0
  87. package/localized/zh-CN/skills/cc-electron-project-standard/references/practice.md +19 -0
  88. package/localized/zh-CN/skills/cc-electron-project-standard/references/verification.md +17 -0
  89. package/localized/zh-CN/skills/cc-go-concurrency/SKILL.md +25 -0
  90. package/localized/zh-CN/skills/cc-go-concurrency/references/common/engineering-practices.md +237 -0
  91. package/localized/zh-CN/skills/cc-go-concurrency/references/common/engineering-practices.rules.json +121 -0
  92. package/localized/zh-CN/skills/cc-go-concurrency/references/common/engineering-practices.sources.json +377 -0
  93. package/localized/zh-CN/skills/cc-go-concurrency/references/engineering-practices.md +73 -0
  94. package/localized/zh-CN/skills/cc-go-concurrency/references/practice.md +37 -0
  95. package/localized/zh-CN/skills/cc-go-project-standard/SKILL.md +25 -0
  96. package/localized/zh-CN/skills/cc-go-project-standard/examples/engineering/README.md +7 -0
  97. package/localized/zh-CN/skills/cc-go-project-standard/examples/engineering/go.mod +3 -0
  98. package/localized/zh-CN/skills/cc-go-project-standard/examples/engineering/lifecycle.go +71 -0
  99. package/localized/zh-CN/skills/cc-go-project-standard/examples/engineering/lifecycle_test.go +22 -0
  100. package/localized/zh-CN/skills/cc-go-project-standard/references/common/engineering-practices.md +237 -0
  101. package/localized/zh-CN/skills/cc-go-project-standard/references/common/engineering-practices.rules.json +121 -0
  102. package/localized/zh-CN/skills/cc-go-project-standard/references/common/engineering-practices.sources.json +377 -0
  103. package/localized/zh-CN/skills/cc-go-project-standard/references/engineering-practices.md +106 -0
  104. package/localized/zh-CN/skills/cc-go-project-standard/references/practice.md +37 -0
  105. package/localized/zh-CN/skills/cc-java-project-standard/SKILL.md +25 -0
  106. package/localized/zh-CN/skills/cc-java-project-standard/examples/engineering/README.md +5 -0
  107. package/localized/zh-CN/skills/cc-java-project-standard/examples/engineering/ResourceBoundary.java +26 -0
  108. package/localized/zh-CN/skills/cc-java-project-standard/examples/engineering/ResourceBoundaryTest.java +41 -0
  109. package/localized/zh-CN/skills/cc-java-project-standard/references/common/engineering-practices.md +237 -0
  110. package/localized/zh-CN/skills/cc-java-project-standard/references/common/engineering-practices.rules.json +121 -0
  111. package/localized/zh-CN/skills/cc-java-project-standard/references/common/engineering-practices.sources.json +377 -0
  112. package/localized/zh-CN/skills/cc-java-project-standard/references/engineering-practices.md +106 -0
  113. package/localized/zh-CN/skills/cc-java-project-standard/references/practice.md +37 -0
  114. package/localized/zh-CN/skills/cc-java-runtime/SKILL.md +25 -0
  115. package/localized/zh-CN/skills/cc-java-runtime/references/common/engineering-practices.md +237 -0
  116. package/localized/zh-CN/skills/cc-java-runtime/references/common/engineering-practices.rules.json +121 -0
  117. package/localized/zh-CN/skills/cc-java-runtime/references/common/engineering-practices.sources.json +377 -0
  118. package/localized/zh-CN/skills/cc-java-runtime/references/engineering-practices.md +73 -0
  119. package/localized/zh-CN/skills/cc-java-runtime/references/practice.md +37 -0
  120. package/localized/zh-CN/skills/cc-native-memory-safety/SKILL.md +25 -0
  121. package/localized/zh-CN/skills/cc-native-memory-safety/references/common/engineering-practices.md +237 -0
  122. package/localized/zh-CN/skills/cc-native-memory-safety/references/common/engineering-practices.rules.json +121 -0
  123. package/localized/zh-CN/skills/cc-native-memory-safety/references/common/engineering-practices.sources.json +377 -0
  124. package/localized/zh-CN/skills/cc-native-memory-safety/references/engineering-practices.md +73 -0
  125. package/localized/zh-CN/skills/cc-native-memory-safety/references/practice.md +37 -0
  126. package/localized/zh-CN/skills/cc-python-async/SKILL.md +25 -0
  127. package/localized/zh-CN/skills/cc-python-async/references/common/engineering-practices.md +237 -0
  128. package/localized/zh-CN/skills/cc-python-async/references/common/engineering-practices.rules.json +121 -0
  129. package/localized/zh-CN/skills/cc-python-async/references/common/engineering-practices.sources.json +377 -0
  130. package/localized/zh-CN/skills/cc-python-async/references/engineering-practices.md +73 -0
  131. package/localized/zh-CN/skills/cc-python-async/references/practice.md +37 -0
  132. package/localized/zh-CN/skills/cc-python-project-standard/SKILL.md +25 -0
  133. package/localized/zh-CN/skills/cc-python-project-standard/examples/engineering/README.md +7 -0
  134. package/localized/zh-CN/skills/cc-python-project-standard/examples/engineering/resource_boundary.py +37 -0
  135. package/localized/zh-CN/skills/cc-python-project-standard/examples/engineering/test_resource_boundary.py +49 -0
  136. package/localized/zh-CN/skills/cc-python-project-standard/references/common/engineering-practices.md +237 -0
  137. package/localized/zh-CN/skills/cc-python-project-standard/references/common/engineering-practices.rules.json +121 -0
  138. package/localized/zh-CN/skills/cc-python-project-standard/references/common/engineering-practices.sources.json +377 -0
  139. package/localized/zh-CN/skills/cc-python-project-standard/references/engineering-practices.md +106 -0
  140. package/localized/zh-CN/skills/cc-python-project-standard/references/practice.md +37 -0
  141. package/localized/zh-CN/skills/cc-refactoring-core/SKILL.md +8 -0
  142. package/localized/zh-CN/skills/cc-refactoring-core/references/method.md +16 -0
  143. package/localized/zh-CN/skills/cc-rust-async/SKILL.md +25 -0
  144. package/localized/zh-CN/skills/cc-rust-async/references/common/engineering-practices.md +237 -0
  145. package/localized/zh-CN/skills/cc-rust-async/references/common/engineering-practices.rules.json +121 -0
  146. package/localized/zh-CN/skills/cc-rust-async/references/common/engineering-practices.sources.json +377 -0
  147. package/localized/zh-CN/skills/cc-rust-async/references/engineering-practices.md +73 -0
  148. package/localized/zh-CN/skills/cc-rust-async/references/practice.md +37 -0
  149. package/localized/zh-CN/skills/cc-rust-project-standard/SKILL.md +25 -0
  150. package/localized/zh-CN/skills/cc-rust-project-standard/examples/engineering/Cargo.lock +7 -0
  151. package/localized/zh-CN/skills/cc-rust-project-standard/examples/engineering/Cargo.toml +8 -0
  152. package/localized/zh-CN/skills/cc-rust-project-standard/examples/engineering/README.md +5 -0
  153. package/localized/zh-CN/skills/cc-rust-project-standard/examples/engineering/src/lib.rs +43 -0
  154. package/localized/zh-CN/skills/cc-rust-project-standard/references/common/engineering-practices.md +237 -0
  155. package/localized/zh-CN/skills/cc-rust-project-standard/references/common/engineering-practices.rules.json +121 -0
  156. package/localized/zh-CN/skills/cc-rust-project-standard/references/common/engineering-practices.sources.json +377 -0
  157. package/localized/zh-CN/skills/cc-rust-project-standard/references/engineering-practices.md +106 -0
  158. package/localized/zh-CN/skills/cc-rust-project-standard/references/practice.md +37 -0
  159. package/localized/zh-CN/skills/cc-source-driven-development/SKILL.md +8 -0
  160. package/localized/zh-CN/skills/cc-source-driven-development/references/method.md +19 -0
  161. package/localized/zh-CN/skills/cc-tauri-project-standard/SKILL.md +21 -0
  162. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/README.md +9 -0
  163. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/core/Cargo.lock +5 -0
  164. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/core/Cargo.toml +9 -0
  165. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/core/src/lib.rs +46 -0
  166. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/Cargo.toml +12 -0
  167. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/build.rs +5 -0
  168. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/capabilities/main.json +6 -0
  169. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/permissions/documents.toml +4 -0
  170. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/src/main.rs +22 -0
  171. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/tauri.conf.json +13 -0
  172. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/ui/app.js +5 -0
  173. package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/ui/index.html +1 -0
  174. package/localized/zh-CN/skills/cc-tauri-project-standard/references/common/engineering-practices.md +237 -0
  175. package/localized/zh-CN/skills/cc-tauri-project-standard/references/common/engineering-practices.rules.json +121 -0
  176. package/localized/zh-CN/skills/cc-tauri-project-standard/references/common/engineering-practices.sources.json +377 -0
  177. package/localized/zh-CN/skills/cc-tauri-project-standard/references/engineering-practices.md +73 -0
  178. package/localized/zh-CN/skills/cc-tauri-project-standard/references/practice.md +20 -0
  179. package/localized/zh-CN/skills/cc-tauri-project-standard/references/verification.md +18 -0
  180. package/localized/zh-CN/skills/cc-tdd-methodology/SKILL.md +8 -0
  181. package/localized/zh-CN/skills/cc-tdd-methodology/references/method.md +13 -0
  182. package/localized/zh-CN/skills/cc-technical-diagrams/SKILL.md +34 -0
  183. package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/assets/interactive-diagram.html +371 -371
  184. package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/README.md +14 -0
  185. package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/assets/quality-examples/sequence.mmd +21 -21
  186. package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/assets/quality-examples/workflow.mmd +7 -7
  187. package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/references/diagram-workflows.md +3 -3
  188. package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/references/html-technical-diagrams.md +7 -7
  189. package/localized/zh-CN/skills/cc-technical-diagrams/references/png-qa-autofix.md +37 -0
  190. package/{skills/fec-image-generation → localized/zh-CN/skills/cc-technical-diagrams}/scripts/diagram-browser.mjs +77 -14
  191. package/localized/zh-CN/skills/cc-technical-diagrams/scripts/diagram-layout.mjs +176 -0
  192. package/localized/zh-CN/skills/cc-technical-diagrams/scripts/png-qa.mjs +462 -0
  193. package/localized/zh-CN/skills/{fec-typescript-project-standard → cc-typescript-project-standard}/SKILL.md +10 -4
  194. package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/README.md +7 -0
  195. package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/boundary.test.ts +16 -0
  196. package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/input.ts +12 -0
  197. package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/package.json +12 -0
  198. package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/pnpm-lock.yaml +39 -0
  199. package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/pnpm-workspace.yaml +1 -0
  200. package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/tsconfig.json +8 -0
  201. package/localized/zh-CN/skills/cc-typescript-project-standard/references/common/engineering-practices.md +237 -0
  202. package/localized/zh-CN/skills/cc-typescript-project-standard/references/common/engineering-practices.rules.json +121 -0
  203. package/localized/zh-CN/skills/cc-typescript-project-standard/references/common/engineering-practices.sources.json +377 -0
  204. package/localized/zh-CN/skills/cc-typescript-project-standard/references/engineering-practices.md +106 -0
  205. package/localized/zh-CN/skills/{fec-typescript-project-standard → cc-typescript-project-standard}/references/type-safety-patterns.md +5 -34
  206. package/localized/zh-CN/skills/{fec-typescript-project-standard → cc-typescript-project-standard}/references/type-safety.md +6 -0
  207. package/localized/zh-CN/skills/eval_queries.json +741 -319
  208. package/localized/zh-CN/skills/fec-api-integration/SKILL.md +5 -1
  209. package/localized/zh-CN/skills/fec-api-integration/references/common/engineering-practices.md +237 -0
  210. package/localized/zh-CN/skills/fec-api-integration/references/common/engineering-practices.rules.json +121 -0
  211. package/localized/zh-CN/skills/fec-api-integration/references/common/engineering-practices.sources.json +377 -0
  212. package/localized/zh-CN/skills/fec-api-integration/references/engineering-practices.md +73 -0
  213. package/localized/zh-CN/skills/fec-code-review/SKILL.md +4 -0
  214. package/localized/zh-CN/skills/fec-code-review/references/common/engineering-practices.md +237 -0
  215. package/localized/zh-CN/skills/fec-code-review/references/common/engineering-practices.rules.json +121 -0
  216. package/localized/zh-CN/skills/fec-code-review/references/common/engineering-practices.sources.json +377 -0
  217. package/localized/zh-CN/skills/fec-code-review/references/engineering-practices.md +73 -0
  218. package/localized/zh-CN/skills/fec-data-fetching/SKILL.md +4 -0
  219. package/localized/zh-CN/skills/fec-data-fetching/references/common/engineering-practices.md +237 -0
  220. package/localized/zh-CN/skills/fec-data-fetching/references/common/engineering-practices.rules.json +121 -0
  221. package/localized/zh-CN/skills/fec-data-fetching/references/common/engineering-practices.sources.json +377 -0
  222. package/localized/zh-CN/skills/fec-data-fetching/references/engineering-practices.md +73 -0
  223. package/localized/zh-CN/skills/fec-debug-framework/SKILL.md +1 -50
  224. package/localized/zh-CN/skills/fec-debug-framework/references/common/debug.md +13 -0
  225. package/localized/zh-CN/skills/fec-dependency-upgrade/SKILL.md +4 -0
  226. package/localized/zh-CN/skills/fec-dependency-upgrade/references/common/engineering-practices.md +237 -0
  227. package/localized/zh-CN/skills/fec-dependency-upgrade/references/common/engineering-practices.rules.json +121 -0
  228. package/localized/zh-CN/skills/fec-dependency-upgrade/references/common/engineering-practices.sources.json +377 -0
  229. package/localized/zh-CN/skills/fec-dependency-upgrade/references/engineering-practices.md +73 -0
  230. package/localized/zh-CN/skills/fec-doc-sync/SKILL.md +7 -28
  231. package/localized/zh-CN/skills/fec-doc-sync/references/common/doc-sync.md +12 -0
  232. package/localized/zh-CN/skills/fec-image-generation/SKILL.md +7 -101
  233. package/localized/zh-CN/skills/fec-image-generation/references/png-qa-autofix.md +1 -1
  234. package/localized/zh-CN/skills/fec-image-generation/scripts/png-qa.mjs +1 -1
  235. package/localized/zh-CN/skills/fec-react-project-standard/SKILL.md +6 -0
  236. package/localized/zh-CN/skills/fec-react-project-standard/examples/engineering/README.md +7 -0
  237. package/localized/zh-CN/skills/fec-react-project-standard/examples/engineering/package.json +15 -0
  238. package/localized/zh-CN/skills/fec-react-project-standard/examples/engineering/pnpm-lock.yaml +662 -0
  239. package/localized/zh-CN/skills/fec-react-project-standard/examples/engineering/pnpm-workspace.yaml +1 -0
  240. package/localized/zh-CN/skills/fec-react-project-standard/examples/engineering/request-view.mjs +24 -0
  241. package/localized/zh-CN/skills/fec-react-project-standard/examples/engineering/request-view.test.mjs +33 -0
  242. package/localized/zh-CN/skills/fec-react-project-standard/references/common/engineering-practices.md +237 -0
  243. package/localized/zh-CN/skills/fec-react-project-standard/references/common/engineering-practices.rules.json +121 -0
  244. package/localized/zh-CN/skills/fec-react-project-standard/references/common/engineering-practices.sources.json +377 -0
  245. package/localized/zh-CN/skills/fec-react-project-standard/references/engineering-practices.md +73 -0
  246. package/localized/zh-CN/skills/fec-react-project-standard/references/generic-component-types.md +37 -0
  247. package/localized/zh-CN/skills/fec-react-project-standard/references/react-quality-patterns.md +3 -3
  248. package/localized/zh-CN/skills/fec-react-project-standard/references/react-runtime-patterns.md +1 -1
  249. package/localized/zh-CN/skills/fec-refactoring/SKILL.md +12 -70
  250. package/localized/zh-CN/skills/fec-refactoring/references/common/refactoring.md +16 -0
  251. package/localized/zh-CN/skills/fec-refactoring/references/principles.md +9 -39
  252. package/localized/zh-CN/skills/fec-refactoring/references/workflow.md +4 -56
  253. package/localized/zh-CN/skills/fec-security-review/SKILL.md +4 -0
  254. package/localized/zh-CN/skills/fec-security-review/references/common/engineering-practices.md +237 -0
  255. package/localized/zh-CN/skills/fec-security-review/references/common/engineering-practices.rules.json +121 -0
  256. package/localized/zh-CN/skills/fec-security-review/references/common/engineering-practices.sources.json +377 -0
  257. package/localized/zh-CN/skills/fec-security-review/references/engineering-practices.md +73 -0
  258. package/localized/zh-CN/skills/fec-tdd-workflow/SKILL.md +12 -43
  259. package/localized/zh-CN/skills/fec-tdd-workflow/references/common/tdd.md +13 -0
  260. package/localized/zh-CN/skills/fec-testing-strategy/SKILL.md +4 -0
  261. package/localized/zh-CN/skills/fec-testing-strategy/references/common/engineering-practices.md +237 -0
  262. package/localized/zh-CN/skills/fec-testing-strategy/references/common/engineering-practices.rules.json +121 -0
  263. package/localized/zh-CN/skills/fec-testing-strategy/references/common/engineering-practices.sources.json +377 -0
  264. package/localized/zh-CN/skills/fec-testing-strategy/references/engineering-practices.md +73 -0
  265. package/localized/zh-CN/skills/fec-vue3-project-standard/SKILL.md +4 -0
  266. package/localized/zh-CN/skills/fec-vue3-project-standard/references/common/engineering-practices.md +237 -0
  267. package/localized/zh-CN/skills/fec-vue3-project-standard/references/common/engineering-practices.rules.json +121 -0
  268. package/localized/zh-CN/skills/fec-vue3-project-standard/references/common/engineering-practices.sources.json +377 -0
  269. package/localized/zh-CN/skills/fec-vue3-project-standard/references/engineering-practices.md +73 -0
  270. package/localized/zh-CN/skills/fec-vue3-project-standard/references/vue3-project-structure.md +2 -2
  271. package/localized/zh-CN/skills/metadata.json +2246 -1008
  272. package/localized/zh-CN/skills/relations.json +501 -372
  273. package/localized/zh-CN/templates/shared/rules/fec-source-driven-development.md +3 -29
  274. package/localized/zh-CN/templates/shared/rules/fec-typescript.md +4 -4
  275. package/localized/zh-CN/templates/shared/rules/references/common/source-driven-development.md +19 -0
  276. package/openclaw.plugin.json +1 -1
  277. package/package.json +11 -4
  278. package/skills/cc-c-project-standard/SKILL.md +25 -0
  279. package/skills/cc-c-project-standard/examples/engineering/README.md +7 -0
  280. package/skills/cc-c-project-standard/examples/engineering/boundary.c +26 -0
  281. package/skills/cc-c-project-standard/examples/engineering/boundary.h +15 -0
  282. package/skills/cc-c-project-standard/examples/engineering/boundary_test.c +73 -0
  283. package/skills/cc-c-project-standard/references/common/engineering-practices.md +237 -0
  284. package/skills/cc-c-project-standard/references/common/engineering-practices.rules.json +121 -0
  285. package/skills/cc-c-project-standard/references/common/engineering-practices.sources.json +377 -0
  286. package/skills/cc-c-project-standard/references/engineering-practices.md +106 -0
  287. package/skills/cc-c-project-standard/references/practice.md +37 -0
  288. package/skills/cc-cpp-project-standard/SKILL.md +25 -0
  289. package/skills/cc-cpp-project-standard/examples/engineering/README.md +7 -0
  290. package/skills/cc-cpp-project-standard/examples/engineering/boundary.cpp +26 -0
  291. package/skills/cc-cpp-project-standard/examples/engineering/boundary.hpp +12 -0
  292. package/skills/cc-cpp-project-standard/examples/engineering/boundary_test.cpp +38 -0
  293. package/skills/cc-cpp-project-standard/references/common/engineering-practices.md +237 -0
  294. package/skills/cc-cpp-project-standard/references/common/engineering-practices.rules.json +121 -0
  295. package/skills/cc-cpp-project-standard/references/common/engineering-practices.sources.json +377 -0
  296. package/skills/cc-cpp-project-standard/references/engineering-practices.md +106 -0
  297. package/skills/cc-cpp-project-standard/references/practice.md +37 -0
  298. package/skills/cc-debug-methodology/SKILL.md +8 -0
  299. package/skills/cc-debug-methodology/references/method.md +13 -0
  300. package/skills/cc-doc-sync-core/SKILL.md +8 -0
  301. package/skills/cc-doc-sync-core/references/method.md +12 -0
  302. package/skills/{fec-drawio-studio → cc-drawio-studio}/SKILL.md +5 -5
  303. package/skills/{fec-drawio-studio → cc-drawio-studio}/references/flowchart-quality.md +1 -1
  304. package/skills/{fec-drawio-studio → cc-drawio-studio}/references/layout-and-export.md +9 -9
  305. package/skills/cc-electron-project-standard/SKILL.md +21 -0
  306. package/skills/cc-electron-project-standard/examples/engineering/README.md +7 -0
  307. package/skills/cc-electron-project-standard/examples/engineering/ipc-lifecycle.cjs +44 -0
  308. package/skills/cc-electron-project-standard/examples/engineering/ipc-lifecycle.test.cjs +44 -0
  309. package/skills/cc-electron-project-standard/examples/engineering/package.json +8 -0
  310. package/skills/cc-electron-project-standard/examples/minimal/README.md +9 -0
  311. package/skills/cc-electron-project-standard/examples/minimal/boundary.cjs +19 -0
  312. package/skills/cc-electron-project-standard/examples/minimal/boundary.test.cjs +7 -0
  313. package/skills/cc-electron-project-standard/examples/minimal/index.html +1 -0
  314. package/skills/cc-electron-project-standard/examples/minimal/main.cjs +20 -0
  315. package/skills/cc-electron-project-standard/examples/minimal/package.json +9 -0
  316. package/skills/cc-electron-project-standard/examples/minimal/preload.cjs +2 -0
  317. package/skills/cc-electron-project-standard/examples/minimal/renderer.js +4 -0
  318. package/skills/cc-electron-project-standard/references/common/engineering-practices.md +237 -0
  319. package/skills/cc-electron-project-standard/references/common/engineering-practices.rules.json +121 -0
  320. package/skills/cc-electron-project-standard/references/common/engineering-practices.sources.json +377 -0
  321. package/skills/cc-electron-project-standard/references/engineering-practices.md +73 -0
  322. package/skills/cc-electron-project-standard/references/practice.md +19 -0
  323. package/skills/cc-electron-project-standard/references/verification.md +17 -0
  324. package/skills/cc-go-concurrency/SKILL.md +25 -0
  325. package/skills/cc-go-concurrency/references/common/engineering-practices.md +237 -0
  326. package/skills/cc-go-concurrency/references/common/engineering-practices.rules.json +121 -0
  327. package/skills/cc-go-concurrency/references/common/engineering-practices.sources.json +377 -0
  328. package/skills/cc-go-concurrency/references/engineering-practices.md +73 -0
  329. package/skills/cc-go-concurrency/references/practice.md +37 -0
  330. package/skills/cc-go-project-standard/SKILL.md +25 -0
  331. package/skills/cc-go-project-standard/examples/engineering/README.md +7 -0
  332. package/skills/cc-go-project-standard/examples/engineering/go.mod +3 -0
  333. package/skills/cc-go-project-standard/examples/engineering/lifecycle.go +71 -0
  334. package/skills/cc-go-project-standard/examples/engineering/lifecycle_test.go +22 -0
  335. package/skills/cc-go-project-standard/references/common/engineering-practices.md +237 -0
  336. package/skills/cc-go-project-standard/references/common/engineering-practices.rules.json +121 -0
  337. package/skills/cc-go-project-standard/references/common/engineering-practices.sources.json +377 -0
  338. package/skills/cc-go-project-standard/references/engineering-practices.md +106 -0
  339. package/skills/cc-go-project-standard/references/practice.md +37 -0
  340. package/skills/cc-java-project-standard/SKILL.md +25 -0
  341. package/skills/cc-java-project-standard/examples/engineering/README.md +7 -0
  342. package/skills/cc-java-project-standard/examples/engineering/ResourceBoundary.java +26 -0
  343. package/skills/cc-java-project-standard/examples/engineering/ResourceBoundaryTest.java +41 -0
  344. package/skills/cc-java-project-standard/references/common/engineering-practices.md +237 -0
  345. package/skills/cc-java-project-standard/references/common/engineering-practices.rules.json +121 -0
  346. package/skills/cc-java-project-standard/references/common/engineering-practices.sources.json +377 -0
  347. package/skills/cc-java-project-standard/references/engineering-practices.md +106 -0
  348. package/skills/cc-java-project-standard/references/practice.md +35 -0
  349. package/skills/cc-java-runtime/SKILL.md +25 -0
  350. package/skills/cc-java-runtime/references/common/engineering-practices.md +237 -0
  351. package/skills/cc-java-runtime/references/common/engineering-practices.rules.json +121 -0
  352. package/skills/cc-java-runtime/references/common/engineering-practices.sources.json +377 -0
  353. package/skills/cc-java-runtime/references/engineering-practices.md +73 -0
  354. package/skills/cc-java-runtime/references/practice.md +37 -0
  355. package/skills/cc-native-memory-safety/SKILL.md +25 -0
  356. package/skills/cc-native-memory-safety/references/common/engineering-practices.md +237 -0
  357. package/skills/cc-native-memory-safety/references/common/engineering-practices.rules.json +121 -0
  358. package/skills/cc-native-memory-safety/references/common/engineering-practices.sources.json +377 -0
  359. package/skills/cc-native-memory-safety/references/engineering-practices.md +73 -0
  360. package/skills/cc-native-memory-safety/references/practice.md +37 -0
  361. package/skills/cc-python-async/SKILL.md +25 -0
  362. package/skills/cc-python-async/references/common/engineering-practices.md +237 -0
  363. package/skills/cc-python-async/references/common/engineering-practices.rules.json +121 -0
  364. package/skills/cc-python-async/references/common/engineering-practices.sources.json +377 -0
  365. package/skills/cc-python-async/references/engineering-practices.md +73 -0
  366. package/skills/cc-python-async/references/practice.md +37 -0
  367. package/skills/cc-python-project-standard/SKILL.md +25 -0
  368. package/skills/cc-python-project-standard/examples/engineering/README.md +7 -0
  369. package/skills/cc-python-project-standard/examples/engineering/resource_boundary.py +37 -0
  370. package/skills/cc-python-project-standard/examples/engineering/test_resource_boundary.py +49 -0
  371. package/skills/cc-python-project-standard/references/common/engineering-practices.md +237 -0
  372. package/skills/cc-python-project-standard/references/common/engineering-practices.rules.json +121 -0
  373. package/skills/cc-python-project-standard/references/common/engineering-practices.sources.json +377 -0
  374. package/skills/cc-python-project-standard/references/engineering-practices.md +106 -0
  375. package/skills/cc-python-project-standard/references/practice.md +37 -0
  376. package/skills/cc-refactoring-core/SKILL.md +8 -0
  377. package/skills/cc-refactoring-core/references/method.md +16 -0
  378. package/skills/cc-rust-async/SKILL.md +25 -0
  379. package/skills/cc-rust-async/references/common/engineering-practices.md +237 -0
  380. package/skills/cc-rust-async/references/common/engineering-practices.rules.json +121 -0
  381. package/skills/cc-rust-async/references/common/engineering-practices.sources.json +377 -0
  382. package/skills/cc-rust-async/references/engineering-practices.md +73 -0
  383. package/skills/cc-rust-async/references/practice.md +37 -0
  384. package/skills/cc-rust-project-standard/SKILL.md +25 -0
  385. package/skills/cc-rust-project-standard/examples/engineering/Cargo.lock +7 -0
  386. package/skills/cc-rust-project-standard/examples/engineering/Cargo.toml +8 -0
  387. package/skills/cc-rust-project-standard/examples/engineering/README.md +5 -0
  388. package/skills/cc-rust-project-standard/examples/engineering/src/lib.rs +43 -0
  389. package/skills/cc-rust-project-standard/references/common/engineering-practices.md +237 -0
  390. package/skills/cc-rust-project-standard/references/common/engineering-practices.rules.json +121 -0
  391. package/skills/cc-rust-project-standard/references/common/engineering-practices.sources.json +377 -0
  392. package/skills/cc-rust-project-standard/references/engineering-practices.md +106 -0
  393. package/skills/cc-rust-project-standard/references/practice.md +37 -0
  394. package/skills/cc-source-driven-development/SKILL.md +8 -0
  395. package/skills/cc-source-driven-development/references/method.md +19 -0
  396. package/skills/cc-tauri-project-standard/SKILL.md +21 -0
  397. package/skills/cc-tauri-project-standard/examples/minimal/README.md +9 -0
  398. package/skills/cc-tauri-project-standard/examples/minimal/core/Cargo.lock +5 -0
  399. package/skills/cc-tauri-project-standard/examples/minimal/core/Cargo.toml +9 -0
  400. package/skills/cc-tauri-project-standard/examples/minimal/core/src/lib.rs +46 -0
  401. package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/Cargo.toml +12 -0
  402. package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/build.rs +5 -0
  403. package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/capabilities/main.json +6 -0
  404. package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/permissions/documents.toml +4 -0
  405. package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/src/main.rs +22 -0
  406. package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/tauri.conf.json +13 -0
  407. package/skills/cc-tauri-project-standard/examples/minimal/ui/app.js +5 -0
  408. package/skills/cc-tauri-project-standard/examples/minimal/ui/index.html +1 -0
  409. package/skills/cc-tauri-project-standard/references/common/engineering-practices.md +237 -0
  410. package/skills/cc-tauri-project-standard/references/common/engineering-practices.rules.json +121 -0
  411. package/skills/cc-tauri-project-standard/references/common/engineering-practices.sources.json +377 -0
  412. package/skills/cc-tauri-project-standard/references/engineering-practices.md +73 -0
  413. package/skills/cc-tauri-project-standard/references/practice.md +20 -0
  414. package/skills/cc-tauri-project-standard/references/verification.md +18 -0
  415. package/skills/cc-tdd-methodology/SKILL.md +8 -0
  416. package/skills/cc-tdd-methodology/references/method.md +13 -0
  417. package/skills/cc-technical-diagrams/SKILL.md +34 -0
  418. package/skills/{fec-image-generation → cc-technical-diagrams}/assets/interactive-diagram.html +371 -371
  419. package/skills/{fec-image-generation → cc-technical-diagrams}/assets/quality-examples/README.md +5 -5
  420. package/skills/{fec-image-generation → cc-technical-diagrams}/assets/quality-examples/sequence.mmd +21 -21
  421. package/skills/{fec-image-generation → cc-technical-diagrams}/assets/quality-examples/workflow.mmd +7 -7
  422. package/skills/{fec-image-generation → cc-technical-diagrams}/references/diagram-workflows.md +3 -3
  423. package/skills/{fec-image-generation → cc-technical-diagrams}/references/html-technical-diagrams.md +7 -7
  424. package/skills/cc-technical-diagrams/references/png-qa-autofix.md +37 -0
  425. package/{localized/zh-CN/skills/fec-image-generation → skills/cc-technical-diagrams}/scripts/diagram-browser.mjs +77 -14
  426. package/skills/cc-technical-diagrams/scripts/diagram-layout.mjs +176 -0
  427. package/skills/cc-technical-diagrams/scripts/png-qa.mjs +462 -0
  428. package/skills/{fec-typescript-project-standard → cc-typescript-project-standard}/SKILL.md +10 -4
  429. package/skills/cc-typescript-project-standard/examples/engineering/README.md +9 -0
  430. package/skills/cc-typescript-project-standard/examples/engineering/boundary.test.ts +16 -0
  431. package/skills/cc-typescript-project-standard/examples/engineering/input.ts +12 -0
  432. package/skills/cc-typescript-project-standard/examples/engineering/package.json +12 -0
  433. package/skills/cc-typescript-project-standard/examples/engineering/pnpm-lock.yaml +39 -0
  434. package/skills/cc-typescript-project-standard/examples/engineering/pnpm-workspace.yaml +1 -0
  435. package/skills/cc-typescript-project-standard/examples/engineering/tsconfig.json +8 -0
  436. package/skills/cc-typescript-project-standard/references/common/engineering-practices.md +237 -0
  437. package/skills/cc-typescript-project-standard/references/common/engineering-practices.rules.json +121 -0
  438. package/skills/cc-typescript-project-standard/references/common/engineering-practices.sources.json +377 -0
  439. package/skills/cc-typescript-project-standard/references/engineering-practices.md +106 -0
  440. package/skills/{fec-typescript-project-standard → cc-typescript-project-standard}/references/type-safety-patterns.md +6 -35
  441. package/skills/{fec-typescript-project-standard → cc-typescript-project-standard}/references/type-safety.md +7 -1
  442. package/skills/eval_queries.json +741 -319
  443. package/skills/fec-api-integration/SKILL.md +5 -1
  444. package/skills/fec-api-integration/references/common/engineering-practices.md +237 -0
  445. package/skills/fec-api-integration/references/common/engineering-practices.rules.json +121 -0
  446. package/skills/fec-api-integration/references/common/engineering-practices.sources.json +377 -0
  447. package/skills/fec-api-integration/references/engineering-practices.md +73 -0
  448. package/skills/fec-code-review/SKILL.md +4 -0
  449. package/skills/fec-code-review/references/common/engineering-practices.md +237 -0
  450. package/skills/fec-code-review/references/common/engineering-practices.rules.json +121 -0
  451. package/skills/fec-code-review/references/common/engineering-practices.sources.json +377 -0
  452. package/skills/fec-code-review/references/engineering-practices.md +73 -0
  453. package/skills/fec-data-fetching/SKILL.md +4 -0
  454. package/skills/fec-data-fetching/references/common/engineering-practices.md +237 -0
  455. package/skills/fec-data-fetching/references/common/engineering-practices.rules.json +121 -0
  456. package/skills/fec-data-fetching/references/common/engineering-practices.sources.json +377 -0
  457. package/skills/fec-data-fetching/references/engineering-practices.md +73 -0
  458. package/skills/fec-debug-framework/SKILL.md +2 -51
  459. package/skills/fec-debug-framework/references/common/debug.md +13 -0
  460. package/skills/fec-dependency-upgrade/SKILL.md +4 -0
  461. package/skills/fec-dependency-upgrade/references/common/engineering-practices.md +237 -0
  462. package/skills/fec-dependency-upgrade/references/common/engineering-practices.rules.json +121 -0
  463. package/skills/fec-dependency-upgrade/references/common/engineering-practices.sources.json +377 -0
  464. package/skills/fec-dependency-upgrade/references/engineering-practices.md +73 -0
  465. package/skills/fec-doc-sync/SKILL.md +7 -28
  466. package/skills/fec-doc-sync/references/common/doc-sync.md +12 -0
  467. package/skills/fec-image-generation/SKILL.md +7 -102
  468. package/skills/fec-image-generation/references/png-qa-autofix.md +1 -1
  469. package/skills/fec-image-generation/scripts/png-qa.mjs +1 -1
  470. package/skills/fec-react-project-standard/SKILL.md +6 -0
  471. package/skills/fec-react-project-standard/examples/engineering/README.md +7 -0
  472. package/skills/fec-react-project-standard/examples/engineering/package.json +15 -0
  473. package/skills/fec-react-project-standard/examples/engineering/pnpm-lock.yaml +662 -0
  474. package/skills/fec-react-project-standard/examples/engineering/pnpm-workspace.yaml +1 -0
  475. package/skills/fec-react-project-standard/examples/engineering/request-view.mjs +24 -0
  476. package/skills/fec-react-project-standard/examples/engineering/request-view.test.mjs +33 -0
  477. package/skills/fec-react-project-standard/references/common/engineering-practices.md +237 -0
  478. package/skills/fec-react-project-standard/references/common/engineering-practices.rules.json +121 -0
  479. package/skills/fec-react-project-standard/references/common/engineering-practices.sources.json +377 -0
  480. package/skills/fec-react-project-standard/references/engineering-practices.md +73 -0
  481. package/skills/fec-react-project-standard/references/generic-component-types.md +37 -0
  482. package/skills/fec-react-project-standard/references/react-quality-patterns.md +3 -3
  483. package/skills/fec-react-project-standard/references/react-runtime-patterns.md +1 -1
  484. package/skills/fec-refactoring/SKILL.md +12 -70
  485. package/skills/fec-refactoring/references/common/refactoring.md +16 -0
  486. package/skills/fec-refactoring/references/principles.md +9 -56
  487. package/skills/fec-refactoring/references/workflow.md +4 -87
  488. package/skills/fec-security-review/SKILL.md +4 -0
  489. package/skills/fec-security-review/references/common/engineering-practices.md +237 -0
  490. package/skills/fec-security-review/references/common/engineering-practices.rules.json +121 -0
  491. package/skills/fec-security-review/references/common/engineering-practices.sources.json +377 -0
  492. package/skills/fec-security-review/references/engineering-practices.md +73 -0
  493. package/skills/fec-tdd-workflow/SKILL.md +13 -45
  494. package/skills/fec-tdd-workflow/references/common/tdd.md +13 -0
  495. package/skills/fec-testing-strategy/SKILL.md +4 -0
  496. package/skills/fec-testing-strategy/references/common/engineering-practices.md +237 -0
  497. package/skills/fec-testing-strategy/references/common/engineering-practices.rules.json +121 -0
  498. package/skills/fec-testing-strategy/references/common/engineering-practices.sources.json +377 -0
  499. package/skills/fec-testing-strategy/references/engineering-practices.md +73 -0
  500. package/skills/fec-vue3-project-standard/SKILL.md +4 -0
  501. package/skills/fec-vue3-project-standard/references/common/engineering-practices.md +237 -0
  502. package/skills/fec-vue3-project-standard/references/common/engineering-practices.rules.json +121 -0
  503. package/skills/fec-vue3-project-standard/references/common/engineering-practices.sources.json +377 -0
  504. package/skills/fec-vue3-project-standard/references/engineering-practices.md +73 -0
  505. package/skills/fec-vue3-project-standard/references/vue3-project-structure.md +2 -2
  506. package/skills/metadata.json +2246 -1008
  507. package/skills/relations.json +501 -372
  508. package/templates/shared/rules/fec-source-driven-development.md +3 -29
  509. package/templates/shared/rules/fec-typescript.md +4 -4
  510. package/templates/shared/rules/references/common/source-driven-development.md +19 -0
  511. package/localized/zh-CN/skills/fec-image-generation/assets/quality-examples/README.md +0 -14
  512. package/localized/zh-CN/skills/fec-source-driven-development/SKILL.md +0 -87
  513. package/skills/fec-source-driven-development/SKILL.md +0 -87
  514. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/data/THIRD_PARTY_NOTICES.md +0 -0
  515. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/data/brand-icons.json +0 -0
  516. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/data/shape-index.json +0 -0
  517. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/references/data-residency.md +0 -0
  518. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/references/diagram-patterns.md +0 -0
  519. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/references/troubleshooting.md +0 -0
  520. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/references/xml-and-mermaid.md +0 -0
  521. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/brand-symbols.mjs +0 -0
  522. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/diagram-lint.mjs +0 -0
  523. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/diagram-url.mjs +0 -0
  524. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/drawio-export.mjs +0 -0
  525. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/layout-graph.mjs +0 -0
  526. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/png-embed-fix.mjs +0 -0
  527. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-go-packages.mjs +0 -0
  528. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-js-modules.mjs +0 -0
  529. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-python-classes.mjs +0 -0
  530. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-python-modules.mjs +0 -0
  531. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-rust-modules.mjs +0 -0
  532. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-ts-modules.mjs +0 -0
  533. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/shape-query.mjs +0 -0
  534. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/studio-core.mjs +0 -0
  535. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/styles/built-in/corporate.json +0 -0
  536. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/styles/built-in/default.json +0 -0
  537. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/styles/built-in/handdrawn.json +0 -0
  538. /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/styles/schema.json +0 -0
  539. /package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/assets/quality-examples/architecture.json +0 -0
  540. /package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/assets/quality-examples/invalid-explicit.json +0 -0
  541. /package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/assets/quality-examples/sequence.json +0 -0
  542. /package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/assets/quality-examples/workflow.json +0 -0
  543. /package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/scripts/export-diagram.mjs +0 -0
  544. /package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/scripts/interactive-diagram-server.mjs +0 -0
  545. /package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/scripts/mermaid-render.mjs +0 -0
  546. /package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/scripts/tech-diagram-render.mjs +0 -0
  547. /package/skills/{fec-drawio-studio → cc-drawio-studio}/data/THIRD_PARTY_NOTICES.md +0 -0
  548. /package/skills/{fec-drawio-studio → cc-drawio-studio}/data/brand-icons.json +0 -0
  549. /package/skills/{fec-drawio-studio → cc-drawio-studio}/data/shape-index.json +0 -0
  550. /package/skills/{fec-drawio-studio → cc-drawio-studio}/references/data-residency.md +0 -0
  551. /package/skills/{fec-drawio-studio → cc-drawio-studio}/references/diagram-patterns.md +0 -0
  552. /package/skills/{fec-drawio-studio → cc-drawio-studio}/references/troubleshooting.md +0 -0
  553. /package/skills/{fec-drawio-studio → cc-drawio-studio}/references/xml-and-mermaid.md +0 -0
  554. /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/brand-symbols.mjs +0 -0
  555. /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/diagram-lint.mjs +0 -0
  556. /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/diagram-url.mjs +0 -0
  557. /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/drawio-export.mjs +0 -0
  558. /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/layout-graph.mjs +0 -0
  559. /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/png-embed-fix.mjs +0 -0
  560. /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-go-packages.mjs +0 -0
  561. /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-js-modules.mjs +0 -0
  562. /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-python-classes.mjs +0 -0
  563. /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-python-modules.mjs +0 -0
  564. /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-rust-modules.mjs +0 -0
  565. /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-ts-modules.mjs +0 -0
  566. /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/shape-query.mjs +0 -0
  567. /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/studio-core.mjs +0 -0
  568. /package/skills/{fec-drawio-studio → cc-drawio-studio}/styles/built-in/corporate.json +0 -0
  569. /package/skills/{fec-drawio-studio → cc-drawio-studio}/styles/built-in/default.json +0 -0
  570. /package/skills/{fec-drawio-studio → cc-drawio-studio}/styles/built-in/handdrawn.json +0 -0
  571. /package/skills/{fec-drawio-studio → cc-drawio-studio}/styles/schema.json +0 -0
  572. /package/skills/{fec-image-generation → cc-technical-diagrams}/assets/quality-examples/architecture.json +0 -0
  573. /package/skills/{fec-image-generation → cc-technical-diagrams}/assets/quality-examples/invalid-explicit.json +0 -0
  574. /package/skills/{fec-image-generation → cc-technical-diagrams}/assets/quality-examples/sequence.json +0 -0
  575. /package/skills/{fec-image-generation → cc-technical-diagrams}/assets/quality-examples/workflow.json +0 -0
  576. /package/skills/{fec-image-generation → cc-technical-diagrams}/scripts/export-diagram.mjs +0 -0
  577. /package/skills/{fec-image-generation → cc-technical-diagrams}/scripts/interactive-diagram-server.mjs +0 -0
  578. /package/skills/{fec-image-generation → cc-technical-diagrams}/scripts/mermaid-render.mjs +0 -0
  579. /package/skills/{fec-image-generation → cc-technical-diagrams}/scripts/tech-diagram-render.mjs +0 -0
@@ -1,371 +1,383 @@
1
- # 贡献指南
2
-
3
- > **English:** [CONTRIBUTING.md](CONTRIBUTING.md)
4
-
5
- 感谢你对 `frontend-craft` 的关注。欢迎通过 Issue、Pull Request、文档修正、runtime 适配、示例补充等方式参与贡献。
6
-
7
- ## 开发环境
8
-
9
- - Node.js >= 22,用于通用安装器与 OpenClaw 包构建。
10
- - Git。
11
- - 本地开发前运行 `pnpm install`。
12
-
13
- 仅修改文档时,重点阅读语言与文档策略以及 Pull Request 自检。修改 skill 或 OpenClaw 时,请在提交 PR 前参考下方对应章节。
14
-
15
- 快速自检(最小推荐):
16
-
17
- ```bash
18
- pnpm test # 通用校验
19
- pnpm run pack:skills # Skill 变更
20
- pnpm run check:skills-publish # Skill 变更
21
- pnpm run typecheck:openclaw # OpenClaw 变更
22
- ```
23
-
24
- 完整的场景化命令请见后文 npm scripts 与 Pull Request 自检。
25
-
26
- ## 项目结构
27
-
28
- ```
29
- ├── agents/ # Agent 定义(Markdown + YAML frontmatter)
30
- ├── bin/ # CLI 入口 (frontend-craft.ts)
31
- ├── commands/ # 自定义命令定义 (fec-init, fec-review, fec-scaffold)
32
- ├── docs/ # 各 runtime 安装文档与多语言 README
33
- ├── hooks/ # Hook 配置 (hooks.json)
34
- ├── scripts/ # 源码运行的维护脚本(构建、打包、发布校验)
35
- ├── skills/ # Skill 定义 (SKILL.md + metadata.json)
36
- ├── src/ # 源代码
37
- │ ├── hooks/ # runtime hook 源码,打包到 dist/hooks/
38
- │ ├── install/ # 安装器核心 (CLI、交互式向导、各 runtime 转换器)
39
- │ └── openclaw/ # OpenClaw runtime TypeScript 源码
40
- ├── templates/ # 模板文件 (Claude/Codex/OpenClaw 配置 + 共享规则)
41
- ├── tests/ # 测试用例
42
- │ ├── converters/ # 转换器测试
43
- │ └── install/ # 安装器测试 (CLI、端到端、全 runtime dry-run)
44
- └── package.json # 项目配置与脚本
45
- ```
46
-
47
- ## 本地开发与调试
48
-
49
- ```bash
50
- # 1. 安装依赖
51
- pnpm install
52
-
53
- # 2. 构建 dist/bin 与 dist/hooks
54
- pnpm run build
55
-
56
- # 3. 本地安装到指定 runtime(如 claude)
57
- node dist/bin/frontend-craft.js install claude --local --dry-run # 先 dry-run 预览
58
- node dist/bin/frontend-craft.js install claude --local # 实际安装
59
-
60
- # 4. 安装到所有 runtime
61
- node dist/bin/frontend-craft.js install --all --dry-run
62
-
63
- # 5. 列出所有支持的 runtime
64
- node dist/bin/frontend-craft.js list
65
- ```
66
-
67
- `pnpm run build` 会依次运行 `clean`、`typecheck` 和 `scripts/build-dist.ts`。本地使用 `dist/bin/frontend-craft.js` 或打包后的 hook 脚本前,请先运行它。
68
-
69
- ## 测试指南
70
-
71
- 测试使用 Node.js 内置 `node:test` + `assert/strict`。
72
-
73
- ```bash
74
- # 运行所有测试
75
- pnpm test
76
-
77
- # 运行单个测试文件
78
- node --import tsx --test tests/install/cli.test.ts
79
-
80
- # 运行安装器相关测试
81
- node --import tsx --test tests/install/*.test.ts
82
-
83
- # 运行转换器相关测试
84
- node --import tsx --test tests/converters/*.test.ts
85
-
86
- # 运行全 runtime dry-run 测试
87
- node --import tsx --test tests/install/all-runtimes-dry.test.ts
88
- ```
89
-
90
- 测试交互式安装向导时,设置 `FRONTEND_CRAFT_FORCE_INTERACTIVE=1` 环境变量:
91
-
92
- ```bash
93
- FRONTEND_CRAFT_FORCE_INTERACTIVE=1 node --import tsx --test tests/install/cli.test.ts
94
- ```
95
-
96
- `pnpm test` 会先运行 `pnpm run build`,再通过 `tsx` 执行 `tests/` 下精选的 converter 与 installer 测试。
97
-
98
- ## OpenClaw 构建流程
99
-
100
- OpenClaw runtime 有独立的构建管线:
101
-
102
- ```bash
103
- pnpm run build:openclaw # 使用 esbuild 将 TypeScript 打包到 dist/openclaw/
104
- pnpm run typecheck:openclaw # TypeScript 类型检查
105
- pnpm run check:openclaw-dist # 验证 dist 完整性
106
- pnpm run pack:openclaw # 完整构建 + 验证 + 打包
107
- ```
108
-
109
- 源码路径:`src/openclaw/`(TypeScript)→ `dist/openclaw/index.js`(打包后的 ESM)。
110
- TypeScript 配置:`tsconfig.openclaw.json`。
111
-
112
- ## 独立 Skill 发布包
113
-
114
- Skill 的权威源文件位于 `skills/<skill-id>/`。不要手动修改 `skill-packages/` 下的生成产物。
115
-
116
- ```bash
117
- pnpm run pack:skills # 为每个 skill 生成独立发布包
118
- pnpm run check:skills-publish # 校验包元数据、索引和引用文件
119
- pnpm run pack:all # 构建 + 测试 + OpenClaw 包 + 独立 skill 包
120
- ```
121
-
122
- `pnpm run pack:skills` 会生成 `skill-packages/<skill-id>/`,其中包含 `SKILL.md`、该 skill 实际引用的 `references/` 文件、`metadata.json`、`package.json`、`README.md` 和 `LICENSE`。同时会生成 `skill-packages/index.json`,供平台索引或发布自动化使用。
123
-
124
- 修改 skill 时,请保持这些源文件一致:
125
-
126
- - `skills/<skill-id>/SKILL.md` — runtime 使用的权威说明。
127
- - `skills/metadata.json` — 发布元数据、分类、标签、关键词、目标平台和包版本。
128
- - `skills/eval_queries.json` — 用于路由质量检查的正向/负向触发样例。
129
- - 当公开 skill 列表或用户可见行为变化时,同步 `README.md` 和各语言 README 摘要。
130
-
131
- ## 开发 scripts
132
-
133
- 包管理器固定为 pnpm 12.4.1,唯一依赖锁文件为 pnpm-lock.yaml。通过 npm 安装 pnpm 需要 Node.js >=22.13;发布插件的运行要求仍为 Node.js >=22.0.0。使用 `pnpm install --frozen-lockfile` 安装依赖。pnpm-workspace.yaml 仅允许 esbuild 构建脚本,其余当前未使用的 SDK/原生初始化显式跳过。
134
-
135
- `pnpm lint` 检查代码和中英文内容声明;`pnpm format:check` 只检查变更的源码与配置,不修改文件。`pnpm test` 自动发现 tests 下的所有 *.test.ts,无需手动维护清单。
136
-
137
- 请把 `package.json` scripts 作为公开的开发入口。
138
-
139
- | Script | 用途 |
140
- | ------------------------------ | -------------------------------------------------------------------------- |
141
- | `pnpm run lint` | 检查代码和中英文内容声明。 |
142
- | `pnpm run format:check` | 检查变更源码的格式。 |
143
- | `pnpm run check:content` | 校验 YAML、名称、引用及本地化结构。 |
144
- | `pnpm run clean` | 删除 `dist/`。 |
145
- | `pnpm run typecheck` | 运行主项目 TypeScript 检查,并检查 skill 辅助脚本。 |
146
- | `pnpm run build` | 运行 `clean`、`typecheck`,并通过 `scripts/build-dist.ts` 打包 CLI/hooks。 |
147
- | `pnpm test` | 先构建,再通过 `tsx` 运行精选的 `node:test` 测试集。 |
148
- | `pnpm run build:openclaw` | 构建主项目,然后打包 OpenClaw runtime 输出。 |
149
- | `pnpm run audit:skills` | 构建后输出 skill 说明长度与描述重叠度信号。 |
150
- | `pnpm run typecheck:openclaw` | 使用 `tsconfig.openclaw.json` 检查 OpenClaw 类型。 |
151
- | `pnpm run check:openclaw-dist` | 校验生成的 OpenClaw dist 输出。 |
152
- | `pnpm run pack:openclaw` | 构建、校验并打包 OpenClaw 插件。 |
153
- | `pnpm run pack:skills` | 先构建,再在 `skill-packages/` 下生成独立 skill 包。 |
154
- | `pnpm run check:skills-publish` | 先构建,再校验独立 skill 包元数据与复制文件。 |
155
- | `pnpm run pack:all` | 构建、运行测试、打包 OpenClaw、打包 skills,并校验 skill 产物。 |
156
- | `pnpm run sync:version` | 同步发布清单中的 package 版本元数据。 |
157
- | `pnpm run version` | 运行 `sync:version` 同步版本元数据,不自动暂存文件。 |
158
- | `pnpm run prepack` | 在 `npm pack` 前构建。 |
159
- | `pnpm run prepublishOnly` | 在 npm publish 前同步版本并运行测试。 |
160
-
161
- 常见变更类型建议:
162
-
163
- - Skill 变更:运行 `pnpm test`、`pnpm run audit:skills`、`pnpm run pack:skills` 和 `pnpm run check:skills-publish`。
164
- - OpenClaw 变更:运行 `pnpm run typecheck:openclaw` 和 `pnpm run pack:openclaw`。
165
- - 发布打包:运行 `pnpm run pack:all`;`prepublishOnly` 也会在发布前执行版本同步和测试。
166
-
167
- ## 源码维护脚本
168
-
169
- 维护脚本位于 `scripts/`,通过 `tsx` 直接运行源码;它们不会以 `dist/scripts` 形式发布。
170
-
171
- | 文件 | 用途 |
172
- | ------------------------------------------ | ------------------------------ |
173
- | `scripts/audit-skills.ts` | Skill 大小与触发描述重叠度审计 |
174
- | `scripts/build-dist.ts` | CLI 与 runtime hook 打包 |
175
- | `scripts/clean-dist.mjs` | 删除生成的 `dist/` 输出 |
176
- | `scripts/sync-codex-agents-toml.ts` | 同步 Codex agents 配置 |
177
- | `scripts/sync-version.ts` | 同步发布版本元数据 |
178
- | `scripts/pack-skills.ts` | 独立 skill 包构建 |
179
- | `scripts/check-skills-publish.ts` | 独立 skill 包校验 |
180
- | `scripts/skill-packaging.ts` | skill 打包共享辅助函数 |
181
- | `scripts/openclaw/build.ts` | OpenClaw esbuild 打包 |
182
- | `scripts/openclaw/pack-openclaw.ts` | OpenClaw 打包 |
183
- | `scripts/openclaw/verify-openclaw-dist.ts` | 验证 OpenClaw dist 完整性 |
184
-
185
- ## Runtime Hook 脚本
186
-
187
- Hook 脚本位于 `src/hooks/`,发布时会打包到 `dist/hooks/` 供 runtime 使用。维护脚本位于 `scripts/`,通过 `tsx` 直接运行源码,不再发布为 `dist/scripts`。
188
-
189
- | 源文件 | 打包输出 | 用途 |
190
- | ---------------------------------- | ----------------------------------- | -------------- |
191
- | `src/hooks/cleanup-claude-cache.ts` | `dist/hooks/fec-cleanup-claude-cache.js` | 缓存清理 |
192
- | `src/hooks/run-tests.ts` | `dist/hooks/fec-run-tests.js` | 测试运行辅助 |
193
- | `src/hooks/format-changed-file.ts` | `dist/hooks/fec-format-changed-file.js` | 格式化变更文件 |
194
- | `src/hooks/security-check.ts` | `dist/hooks/fec-security-check.js` | 安全检查 |
195
- | `src/hooks/notify.ts` | `dist/hooks/fec-notify.js` | 通知脚本 |
196
- | `src/hooks/session-start.ts` | `dist/hooks/fec-session-start.js` | 会话初始化 |
197
-
198
- ## 架构概览
199
-
200
- 通用安装器的架构如下:
201
-
202
- ```
203
- bin/frontend-craft.ts
204
- └─ src/install/cli.ts # CLI 入口(解析命令:install/list/version/uninstall)
205
- ├─ src/install/registry.ts # runtime 注册表(名称 + 安装器映射)
206
- ├─ src/install/converters/ # 各 runtime 适配器(claude, codex, cursor, copilot 等)
207
- ├─ src/install/interactive.ts # 交互式安装向导(runtime/位置选择)
208
- ├─ src/install/runtime-homes.ts # 全局/本地目录约定
209
- └─ src/install/types.ts # 共享 TypeScript 类型
210
- ```
211
-
212
- `src/install/converters/` 下的每个 runtime 转换器都实现了 `types.ts` 中定义的 `InstallContext` 接口,将 skills、agents、commands、hooks 和模板写入目标 runtime 的配置目录。
213
-
214
- ## 分支策略
215
-
216
- - `main` — 稳定发布分支。
217
- - `develop` — 开发分支(如使用)。
218
- - `feature/<name>` — 新功能。
219
- - `fix/<name>` — Bug 修复。
220
- - `docs/<name>` — 文档更新。
221
-
222
- ## 提交规范
223
-
224
- 遵循 [Conventional Commits](https://www.conventionalcommits.org/):
225
-
226
- ```text
227
- <type>(<scope>): <description>
228
-
229
- [optional body]
230
- [optional footer]
231
- ```
232
-
233
- 常见类型:
234
-
235
- | Type | 含义 |
236
- | ---------- | ---------------- |
237
- | `feat` | 新功能 |
238
- | `fix` | Bug 修复 |
239
- | `docs` | 文档 |
240
- | `refactor` | 重构 |
241
- | `test` | 测试 |
242
- | `chore` | 构建、工具或维护 |
243
-
244
- 示例:
245
-
246
- ```text
247
- feat(skills): add e2e testing skill
248
- fix(hooks): resolve Windows path handling
249
- docs(readme): update installation steps
250
- ```
251
-
252
- ## 语言与文档策略
253
-
254
- 英文是公开项目治理、runtime 文档、发布说明和 GitHub 协作模板的**源语言**。多语言 README 应聚焦用户向摘要,并在贡献者或维护者细节上链接回英文文档。
255
-
256
- 当 Pull Request 修改公共行为、安装步骤、runtime、agent、skill、command 或 hook 时:
257
-
258
- - 优先更新 `README.md` 与 `CHANGELOG.md`(及对应的 [CHANGELOG.zh-CN.md](CHANGELOG.zh-CN.md) 若需同步中文读者)。
259
- - 若影响用户,需同步 `README.zh-CN.md`、`docs/zh-TW/README.md`、`docs/ja-JP/README.md` 和 `docs/ko-KR/README.md` 中的用户向摘要。
260
- - Claude Code Marketplace 的安装与更新说明以 [`docs/runtimes/claude.md`](docs/runtimes/claude.md) 与 [`docs/runtimes/claude.zh-CN.md`](docs/runtimes/claude.zh-CN.md) 为准;修改该流程时请更新这两份文件(根 README 与各语言 README 仅链向它们)。
261
- - 若同一 PR 无法完成翻译,请创建或链接后续 Issue,并在 PR 描述中说明。
262
- - 各语言版本中的代码示例、runtime 名称、命令名、文件路径和包名应保持一致。
263
-
264
- Issue 与 PR 使用英文最便于全球社区检索与 Review。若你更习惯中文,也欢迎提交;维护者可协助翻译标题和摘要。
265
-
266
- ## 如何添加 Skill
267
-
268
- 1. 在 `skills/` 下创建目录,例如 `skills/fec-my-skill/`。
269
- 2. 创建 `SKILL.md`,包含 YAML frontmatter 与简洁说明:
270
-
271
- ```markdown
272
- ---
273
- name: fec-my-skill
274
- description: Use when the user needs ...
275
- ---
276
-
277
- # Skill Title
278
-
279
- ## When to Use
280
-
281
- - ...
282
-
283
- ## Core Rules
284
-
285
- - ...
286
- ```
287
-
288
- 3. 在 `skills/metadata.json` 中新增条目,包括 `id`、展示名称 `name`、分类 `category`、`tags`、`summary`、发布元数据、`keywords` 和 `platforms`。其中 `version`、`license`、`homepage`、`repository` 应与 `package.json` 保持一致。
289
- 4. 在 `skills/eval_queries.json` 中补充正向和负向触发样例。
290
- 5. 在 `README.md` 的 Skills 表格中新增一行。
291
- 6. 若可见目录结构变化,同步 `README.md` 与各语言 README 的目录树。
292
- 7. 运行 `pnpm test`、`pnpm run pack:skills` 和 `pnpm run check:skills-publish`。
293
-
294
- ## 如何添加 Agent
295
-
296
- 1. 创建 `agents/my-agent.md`。
297
- 2. 定义 YAML frontmatter:
298
-
299
- ```markdown
300
- ---
301
- name: my-agent
302
- description: Use this agent when ...
303
- tools: Read, Edit, Write, Glob, Grep, Bash
304
- model: sonnet
305
- skills:
306
- - relevant-skill
307
- ---
308
- ```
309
-
310
- 3. 在 `README.md` 的 Agents 表格中新增一行。
311
- 4. 当数量或用户向描述变化时,同步 `README.zh-CN.md`、`docs/*/README.md` 与 `.claude-plugin/marketplace.json`。
312
-
313
- ## 如何添加 Command
314
-
315
- 1. 创建 `commands/my-command.md`。
316
- 2. 使用 YAML frontmatter 与 Markdown 描述执行步骤。
317
- 3. 在 `README.md` 的 Commands 表格中新增一行,并按需同步多语言用户向摘要。
318
-
319
- ## 如何添加 Rule 模板
320
-
321
- 1. 在 `templates/shared/rules/` 下创建 `my-rule.md`。
322
- 2. 在 `commands/fec-init.md` 的复制清单中新增该文件。
323
- 3. 在 `templates/claude/CLAUDE.md` 的规则导入示例中补充(如适用)。
324
-
325
- ## 多工具安装器
326
-
327
- - 入口:`bin/frontend-craft.ts`。
328
- - 实现目录:`src/install/`(安装器、注册表、路径辅助)。
329
- - 交互向导与输入解析:`src/install/interactive.ts`(测试可将 `FRONTEND_CRAFT_FORCE_INTERACTIVE` 设为 `1` 以模拟管道输入下的问答)。
330
- - 新增 runtime 时,在 `src/install/registry.ts` 注册。
331
- - 在 `src/install/converters/` 下添加 runtime 安装器。
332
- - 参考 `src/install/runtime-homes.ts` 中的全局目录约定。
333
- - 在 `tests/install/` 中新增或更新测试。
334
-
335
- ## 如何添加 Hook
336
-
337
- 1. 更新 `hooks/hooks.json`。
338
- 2. 如需 runtime hook 脚本,放在 `src/hooks/` 下,并优先使用跨平台 Node.js。
339
- 3. 在 `scripts/build-dist.ts` 中新增对应入口,确保 `pnpm run build` 会将其打包到 `dist/hooks/`。
340
- 4. 在 `hooks/hooks.json` 中,引用内置 hook 入口请使用 **`${CLAUDE_PLUGIN_ROOT}/dist/hooks/<script>.js`**(Claude Code 会在运行时替换根路径;见官方 [Plugins reference](https://code.claude.com/docs/en/plugins-reference))。本仓库的 Claude 安装器在将 `hooks.json` 写入 `.claude/` 时,也会把 **`${CLAUDE_PLUGIN_ROOT}`** 及旧占位符 **`${FRONTEND_CRAFT_ROOT}`** 展开为绝对路径。
341
- 5. 仓库维护脚本继续放在 `scripts/`,不要在 runtime hook 配置中直接引用它们。
342
- 6. 更新 `README.md` 的 Hooks 表格。
343
-
344
- ## Pull Request 自检
345
-
346
- 提交 PR 前请确认:
347
-
348
- - [ ] 变更范围清晰,描述明确。
349
- - [ ] `pnpm test` 通过。
350
- - [ ] 修改 skill 时,`pnpm run audit:skills`、`pnpm run pack:skills` 与 `pnpm run check:skills-publish` 通过。
351
- - [ ] 修改 OpenClaw 代码或模板时,`pnpm run typecheck:openclaw` 与 `pnpm run pack:openclaw` 通过。
352
- - [ ] 用户可见行为变化已更新 `README.md` 与 `CHANGELOG.md`(及 [CHANGELOG.zh-CN.md](CHANGELOG.zh-CN.md) 如适用)。
353
- - [ ] 多语言 README 已同步,或已链接后续翻译 Issue。
354
- - [ ] 新增 runtime、agent、skill、command、hook 或模板时,包含相关测试或 dry-run 覆盖。
355
- - [ ] 发布打包相关变更已通过 `pnpm run pack:all`,或已由 `prepublishOnly` 发布门禁覆盖。
356
- - [ ] 涉及安全敏感逻辑时,已按 [SECURITY.zh-CN.md](SECURITY.zh-CN.md) / [SECURITY.md](SECURITY.md) 检查。
357
-
358
- ## 代码风格
359
-
360
- - Markdown 使用稳定标题和清晰表格。
361
- - Skill 与 Agent 描述保持简洁,因为模型路由依赖这些描述。
362
- - 自动化脚本优先使用跨平台 Node.js。
363
- - 除非特定 runtime 明确需要,否则避免依赖某个 shell 的特性。
364
-
365
- ## 问题反馈
366
-
367
- 使用 [GitHub Issues](https://github.com/bovinphang/frontend-craft/issues) 提交 Bug 或功能建议。请尽量包含 runtime、操作系统、Node.js 版本、执行命令、预期行为和实际行为。
368
-
369
- **安全敏感漏洞**不要提交公开 Issue,请按 [SECURITY.zh-CN.md](SECURITY.zh-CN.md)(或 [SECURITY.md](SECURITY.md))处理。
370
-
371
- 修改审核或图表能力时,同步各语言 README 与运行时指南中的范围默认值、自然语言示例、工具前提、QA 边界和覆盖报告要求。参见 [审核范围与技术图交付](docs/zh-CN/review-and-diagram-workflows.md).
1
+ # 贡献指南
2
+
3
+ > **English:** [CONTRIBUTING.md](CONTRIBUTING.md)
4
+
5
+ 感谢你对 `frontend-craft` 的关注。欢迎通过 Issue、Pull Request、文档修正、runtime 适配、示例补充等方式参与贡献。
6
+
7
+ ## 开发环境
8
+
9
+ - Node.js >= 22,用于通用安装器与 OpenClaw 包构建。
10
+ - Git。
11
+ - pnpm 12.4.1(在 package.json 中固定);通过 npm 安装 pnpm 需要 Node.js >=22.13。已发布的插件仍支持 Node.js >=22.0.0。
12
+ - pnpm-lock.yaml 是唯一的依赖锁文件。pnpm-workspace.yaml 允许 esbuild 构建脚本,并显式跳过本项目未使用的可选 SDK/原生依赖安装。
13
+ - Windows 上请通过 Corepack(`corepack enable pnpm`)或 npm 安装 pnpm,不要使用 standalone 安装器;standalone 的 pnpm 10+ 会屏蔽安装固定版本原生二进制的 lifecycle 脚本,留下 Windows 无法执行的 shim。
14
+ - 本地开发前运行 `pnpm install --frozen-lockfile`。
15
+
16
+ 仅修改文档时,重点阅读语言与文档策略以及 Pull Request 自检。修改 skill 或 OpenClaw 时,请在提交 PR 前参考下方对应章节。
17
+
18
+ 快速自检(最小推荐):
19
+
20
+ ```bash
21
+ pnpm lint # ESLint + 内容一致性
22
+ pnpm typecheck # TypeScript + Skill 脚本类型检查
23
+ pnpm run check:common # 公共快照只读校验
24
+ pnpm test # 构建 + 全部测试
25
+ pnpm run pack:skills # Skill 变更
26
+ pnpm run check:skills-publish # Skill 变更
27
+ pnpm run typecheck:openclaw # OpenClaw 变更
28
+ ```
29
+
30
+ 完整的场景化命令请见后文 npm scripts 与 Pull Request 自检。
31
+
32
+ ## 项目结构
33
+
34
+ ```
35
+ ├── agents/ # Agent 定义(Markdown + YAML frontmatter)
36
+ ├── bin/ # CLI 入口 (frontend-craft.ts)
37
+ ├── commands/ # 自定义命令定义 (fec-init, fec-review, fec-scaffold)
38
+ ├── docs/ # 各 runtime 安装文档与多语言 README
39
+ ├── hooks/ # Hook 配置 (hooks.json)
40
+ ├── scripts/ # 源码运行的维护脚本(构建、打包、发布校验)
41
+ ├── skills/ # Skill 定义 (SKILL.md + metadata.json)
42
+ ├── src/ # 源代码
43
+ │ ├── hooks/ # runtime hook 源码,打包到 dist/hooks/
44
+ │ ├── install/ # 安装器核心 (CLI、交互式向导、各 runtime 转换器)
45
+ │ └── openclaw/ # OpenClaw runtime TypeScript 源码
46
+ ├── templates/ # 模板文件 (Claude/Codex/OpenClaw 配置 + 共享规则)
47
+ ├── tests/ # 测试用例
48
+ │ ├── converters/ # 转换器测试
49
+ │ └── install/ # 安装器测试 (CLI、端到端、全 runtime dry-run)
50
+ └── package.json # 项目配置与脚本
51
+ ```
52
+
53
+ ## 本地开发与调试
54
+
55
+ ```bash
56
+ # 1. 安装依赖
57
+ pnpm install
58
+
59
+ # 2. 构建 dist/bin 与 dist/hooks
60
+ pnpm run build
61
+
62
+ # 3. 本地安装到指定 runtime(如 claude)
63
+ node dist/bin/frontend-craft.js runtime install claude --local --dry-run # 先 dry-run 预览
64
+ node dist/bin/frontend-craft.js runtime install claude --local # 实际安装
65
+
66
+ # 4. 安装到所有 runtime
67
+ node dist/bin/frontend-craft.js runtime install --all --dry-run
68
+
69
+ # 5. 列出所有支持的 runtime
70
+ node dist/bin/frontend-craft.js list
71
+ ```
72
+
73
+ `pnpm run build` 会依次运行 `clean`、`typecheck` 和 `scripts/build-dist.ts`。本地使用 `dist/bin/frontend-craft.js` 或打包后的 hook 脚本前,请先运行它。
74
+
75
+ 源码检出不支持 CLI 自身管理。使用 `node dist/bin/frontend-craft.js runtime update --dry-run` 预览包内资源更新;顶层 update/uninstall 应通过隔离的 npm/pnpm 全局安装、假包管理器及临时 HOME 验证。顶层 `--dry-run` 必须保持只读。3.0 命令迁移见 README 迁移表。
76
+
77
+ ## 测试指南
78
+
79
+ 测试使用 Node.js 内置 `node:test` + `assert/strict`。
80
+
81
+ ```bash
82
+ # 运行所有测试
83
+ pnpm test
84
+
85
+ # 运行单个测试文件
86
+ node --import tsx --test tests/install/cli.test.ts
87
+
88
+ # 运行安装器相关测试
89
+ node --import tsx --test tests/install/*.test.ts
90
+
91
+ # 运行转换器相关测试
92
+ node --import tsx --test tests/converters/*.test.ts
93
+
94
+ # 运行全 runtime dry-run 测试
95
+ node --import tsx --test tests/install/all-runtimes-dry.test.ts
96
+ ```
97
+
98
+ 测试交互式安装向导时,设置 `FRONTEND_CRAFT_FORCE_INTERACTIVE=1` 环境变量:
99
+
100
+ ```bash
101
+ FRONTEND_CRAFT_FORCE_INTERACTIVE=1 node --import tsx --test tests/install/cli.test.ts
102
+ ```
103
+
104
+ `pnpm test` 会先运行 `pnpm run build`,再递归发现 `tests/**/*.test.ts`,通过 Node.js `node:test` 串行执行全部测试。已有构建时可使用 `pnpm run test:only`。
105
+
106
+ ## OpenClaw 构建流程
107
+
108
+ OpenClaw runtime 有独立的构建管线:
109
+
110
+ ```bash
111
+ pnpm run build:openclaw # 使用 esbuild 将 TypeScript 打包到 dist/openclaw/
112
+ pnpm run typecheck:openclaw # TypeScript 类型检查
113
+ pnpm run check:openclaw-dist # 验证 dist 完整性
114
+ pnpm run pack:openclaw # 完整构建 + 验证 + 打包
115
+ ```
116
+
117
+ 源码路径:`src/openclaw/`(TypeScript)→ `dist/openclaw/index.js`(打包后的 ESM)。
118
+ TypeScript 配置:`tsconfig.openclaw.json`。
119
+
120
+ ## 独立 Skill 发布包
121
+
122
+ Skill 的权威源文件位于 `skills/<skill-id>/`。不要手动修改 `skill-packages/` 下的生成产物。
123
+
124
+ ```bash
125
+ pnpm run pack:skills # 为每个 skill 生成独立发布包
126
+ pnpm run check:skills-publish # 校验包元数据、索引和引用文件
127
+ pnpm run pack:all # 构建 + 测试 + OpenClaw 包 + 独立 skill 包
128
+ ```
129
+
130
+ `pnpm run pack:skills` 会生成 `skill-packages/<skill-id>/`,其中包含 `SKILL.md`、实际引用的 `references/` 及运行所需的 scripts、assets、data、styles 等资源、`metadata.json`、`package.json`、`README.md` 和 `LICENSE`。同时会生成 `skill-packages/index.json`,供平台索引或发布自动化使用。
131
+
132
+ 修改 skill 时,请保持这些源文件一致:
133
+
134
+ - `skills/<skill-id>/SKILL.md` — runtime 使用的权威说明。
135
+ - `skills/metadata.json` — 发布元数据、分类、标签、关键词、目标平台和包版本。
136
+ - `skills/eval_queries.json` — 用于路由质量检查的正向/负向触发样例。
137
+ - 当公开 skill 列表或用户可见行为变化时,同步 `README.md` 和各语言 README 摘要。
138
+
139
+ ## 开发 scripts
140
+
141
+ 包管理器固定为 pnpm 12.4.1,唯一依赖锁文件为 pnpm-lock.yaml。通过 npm 安装 pnpm 需要 Node.js >=22.13;发布插件的运行要求仍为 Node.js >=22.0.0。使用 `pnpm install --frozen-lockfile` 安装依赖。pnpm-workspace.yaml 仅允许 esbuild 构建脚本,其余当前未使用的 SDK/原生初始化显式跳过。
142
+
143
+ `pnpm lint` 检查代码和中英文内容声明;`pnpm format:check` 只检查变更的源码与配置,不修改文件。`pnpm test` 自动发现 tests 下的所有 *.test.ts,无需手动维护清单。
144
+
145
+ 请把 `package.json` scripts 作为公开的开发入口。
146
+
147
+ | Script | 用途 |
148
+ | ------------------------------ | -------------------------------------------------------------------------- |
149
+ | `pnpm run lint` | 检查代码和中英文内容声明。 |
150
+ | `pnpm run format:check` | 检查变更源码的格式。 |
151
+ | `pnpm run check:content` | 校验 YAML、名称、引用及本地化结构。 |
152
+ | `pnpm run clean` | 删除 `dist/`。 |
153
+ | `pnpm run typecheck` | 运行主项目 TypeScript 检查,并检查 skill 辅助脚本。 |
154
+ | `pnpm run build` | 运行 `clean`、`typecheck`,并通过 `scripts/build-dist.ts` 打包 CLI/hooks。 |
155
+ | `pnpm test` | 先构建,再递归发现并执行全部 `node:test` 测试。 |
156
+ | `pnpm run build:openclaw` | 构建主项目,然后打包 OpenClaw runtime 输出。 |
157
+ | `pnpm run audit:skills` | 构建后输出 skill 说明长度与描述重叠度信号。 |
158
+ | `pnpm run typecheck:openclaw` | 使用 `tsconfig.openclaw.json` 检查 OpenClaw 类型。 |
159
+ | `pnpm run check:openclaw-dist` | 校验生成的 OpenClaw dist 输出。 |
160
+ | `pnpm run pack:openclaw` | 构建、校验并打包 OpenClaw 插件。 |
161
+ | `pnpm run pack:skills` | 先构建,再在 `skill-packages/` 下生成独立 skill 包。 |
162
+ | `pnpm run check:skills-publish` | 先构建,再校验独立 skill 包元数据与复制文件。 |
163
+ | `pnpm run pack:all` | 构建、运行测试、打包 OpenClaw、打包 skills,并校验 skill 产物。 |
164
+ | `pnpm run sync:version` | 同步发布清单中的 package 版本元数据。 |
165
+ | `pnpm run version` | 运行 `sync:version` 同步版本元数据,不自动暂存文件。 |
166
+ | `pnpm run prepack` | 在 `npm pack` 前构建。 |
167
+ | `pnpm run prepublishOnly` | 在 npm publish 前同步版本并运行测试。 |
168
+
169
+ 常见变更类型建议:
170
+
171
+ - Skill 变更:运行 `pnpm test`、`pnpm run audit:skills`、`pnpm run pack:skills` 和 `pnpm run check:skills-publish`。
172
+ - OpenClaw 变更:运行 `pnpm run typecheck:openclaw` 和 `pnpm run pack:openclaw`。
173
+ - 发布打包:运行 `pnpm run pack:all`;`prepublishOnly` 也会在发布前执行版本同步和测试。
174
+
175
+ ## 源码维护脚本
176
+
177
+ 维护脚本位于 `scripts/`,通过 `tsx` 直接运行源码;它们不会以 `dist/scripts` 形式发布。
178
+
179
+ | 文件 | 用途 |
180
+ | ------------------------------------------ | ------------------------------ |
181
+ | `scripts/audit-skills.ts` | Skill 大小与触发描述重叠度审计 |
182
+ | `scripts/build-dist.ts` | CLI 与 runtime hook 打包 |
183
+ | `scripts/clean-dist.mjs` | 删除生成的 `dist/` 输出 |
184
+ | `scripts/sync-codex-agents-toml.ts` | 同步 Codex agents 配置 |
185
+ | `scripts/sync-version.ts` | 同步发布版本元数据 |
186
+ | `scripts/pack-skills.ts` | 独立 skill 包构建 |
187
+ | `scripts/check-skills-publish.ts` | 独立 skill 包校验 |
188
+ | `scripts/skill-packaging.ts` | skill 打包共享辅助函数 |
189
+ | `scripts/openclaw/build.ts` | OpenClaw esbuild 打包 |
190
+ | `scripts/openclaw/pack-openclaw.ts` | OpenClaw 打包 |
191
+ | `scripts/openclaw/verify-openclaw-dist.ts` | 验证 OpenClaw dist 完整性 |
192
+
193
+ ## Runtime Hook 脚本
194
+
195
+ Hook 脚本位于 `src/hooks/`,发布时会打包到 `dist/hooks/` 供 runtime 使用。维护脚本位于 `scripts/`,通过 `tsx` 直接运行源码,不再发布为 `dist/scripts`。
196
+
197
+ | 源文件 | 打包输出 | 用途 |
198
+ | ---------------------------------- | ----------------------------------- | -------------- |
199
+ | `src/hooks/cleanup-claude-cache.ts` | `dist/hooks/fec-cleanup-claude-cache.js` | 缓存清理 |
200
+ | `src/hooks/run-tests.ts` | `dist/hooks/fec-run-tests.js` | 测试运行辅助 |
201
+ | `src/hooks/format-changed-file.ts` | `dist/hooks/fec-format-changed-file.js` | 格式化变更文件 |
202
+ | `src/hooks/security-check.ts` | `dist/hooks/fec-security-check.js` | 安全检查 |
203
+ | `src/hooks/notify.ts` | `dist/hooks/fec-notify.js` | 通知脚本 |
204
+ | `src/hooks/session-start.ts` | `dist/hooks/fec-session-start.js` | 会话初始化 |
205
+
206
+ ## 架构概览
207
+
208
+ 通用安装器的架构如下:
209
+
210
+ ```
211
+ bin/frontend-craft.ts
212
+ └─ src/install/cli.ts # CLI 入口(解析命令:install/list/version/uninstall)
213
+ ├─ src/install/registry.ts # runtime 注册表(名称 + 安装器映射)
214
+ ├─ src/install/converters/ # 各 runtime 适配器(claude, codex, cursor, copilot 等)
215
+ ├─ src/install/interactive.ts # 交互式安装向导(runtime/位置选择)
216
+ ├─ src/install/runtime-homes.ts # 全局/本地目录约定
217
+ └─ src/install/types.ts # 共享 TypeScript 类型
218
+ ```
219
+
220
+ `src/install/converters/` 下的每个 runtime 转换器都实现了 `types.ts` 中定义的 `InstallContext` 接口,将 skills、agents、commands、hooks 和模板写入目标 runtime 的配置目录。
221
+
222
+ ## 分支策略
223
+
224
+ - `main` — 稳定发布分支。
225
+ - `develop` — 开发分支(如使用)。
226
+ - `feature/<name>` — 新功能。
227
+ - `fix/<name>` — Bug 修复。
228
+ - `docs/<name>` — 文档更新。
229
+
230
+ ## 提交规范
231
+
232
+ 遵循 [Conventional Commits](https://www.conventionalcommits.org/):
233
+
234
+ ```text
235
+ <type>(<scope>): <description>
236
+
237
+ [optional body]
238
+ [optional footer]
239
+ ```
240
+
241
+ 常见类型:
242
+
243
+ | Type | 含义 |
244
+ | ---------- | ---------------- |
245
+ | `feat` | 新功能 |
246
+ | `fix` | Bug 修复 |
247
+ | `docs` | 文档 |
248
+ | `refactor` | 重构 |
249
+ | `test` | 测试 |
250
+ | `chore` | 构建、工具或维护 |
251
+
252
+ 示例:
253
+
254
+ ```text
255
+ feat(skills): add e2e testing skill
256
+ fix(hooks): resolve Windows path handling
257
+ docs(readme): update installation steps
258
+ ```
259
+
260
+ ## 语言与文档策略
261
+
262
+ 英文是公开项目治理、runtime 文档、发布说明和 GitHub 协作模板的**源语言**。多语言 README 应聚焦用户向摘要,并在贡献者或维护者细节上链接回英文文档。
263
+
264
+ 当 Pull Request 修改公共行为、安装步骤、runtime、agent、skill、command 或 hook 时:
265
+
266
+ - 优先更新 `README.md` 与 `CHANGELOG.md`(及对应的 [CHANGELOG.zh-CN.md](CHANGELOG.zh-CN.md) 若需同步中文读者)。
267
+ - 若影响用户,需同步 `README.zh-CN.md`、`docs/zh-TW/README.md`、`docs/ja-JP/README.md` 和 `docs/ko-KR/README.md` 中的用户向摘要。
268
+ - Claude Code Marketplace 的安装与更新说明以 [`docs/runtimes/claude.md`](docs/runtimes/claude.md) 与 [`docs/runtimes/claude.zh-CN.md`](docs/runtimes/claude.zh-CN.md) 为准;修改该流程时请更新这两份文件(根 README 与各语言 README 仅链向它们)。
269
+ - 若同一 PR 无法完成翻译,请创建或链接后续 Issue,并在 PR 描述中说明。
270
+ - 各语言版本中的代码示例、runtime 名称、命令名、文件路径和包名应保持一致。
271
+
272
+ Issue 与 PR 使用英文最便于全球社区检索与 Review。若你更习惯中文,也欢迎提交;维护者可协助翻译标题和摘要。
273
+
274
+ ## 如何添加 Skill
275
+
276
+ 1. 在 `skills/` 下创建目录,例如 `skills/fec-my-skill/`。
277
+ 2. 创建 `SKILL.md`,包含 YAML frontmatter 与简洁说明:
278
+
279
+ ```markdown
280
+ ---
281
+ name: fec-my-skill
282
+ description: Use when the user needs ...
283
+ ---
284
+
285
+ # Skill Title
286
+
287
+ ## When to Use
288
+
289
+ - ...
290
+
291
+ ## Core Rules
292
+
293
+ - ...
294
+ ```
295
+
296
+ 3. 在 `skills/metadata.json` 中新增条目,包括 `id`、展示名称 `name`、分类 `category`、`tags`、`summary`、发布元数据、`keywords` 和 `platforms`。其中 `version`、`license`、`homepage`、`repository` 应与 `package.json` 保持一致。
297
+ 4. 在 `skills/eval_queries.json` 中补充正向和负向触发样例。
298
+ 5. 在 `README.md` 的 Skills 表格中新增一行。
299
+ 6. 若可见目录结构变化,同步 `README.md` 与各语言 README 的目录树。
300
+ 7. 运行 `pnpm test`、`pnpm run pack:skills` 和 `pnpm run check:skills-publish`。
301
+
302
+ ## 如何添加 Agent
303
+
304
+ 1. 创建 `agents/my-agent.md`。
305
+ 2. 定义 YAML frontmatter:
306
+
307
+ ```markdown
308
+ ---
309
+ name: my-agent
310
+ description: Use this agent when ...
311
+ tools: Read, Edit, Write, Glob, Grep, Bash
312
+ model: sonnet
313
+ skills:
314
+ - relevant-skill
315
+ ---
316
+ ```
317
+
318
+ 3. 在 `README.md` 的 Agents 表格中新增一行。
319
+ 4. 当数量或用户向描述变化时,同步 `README.zh-CN.md`、`docs/*/README.md` 与 `.claude-plugin/marketplace.json`。
320
+
321
+ ## 如何添加 Command
322
+
323
+ 1. 创建 `commands/my-command.md`。
324
+ 2. 使用 YAML frontmatter 与 Markdown 描述执行步骤。
325
+ 3. 在 `README.md` 的 Commands 表格中新增一行,并按需同步多语言用户向摘要。
326
+
327
+ ## 如何添加 Rule 模板
328
+
329
+ 1. 在 `templates/shared/rules/` 下创建 `my-rule.md`。
330
+ 2. 在 `commands/fec-init.md` 的复制清单中新增该文件。
331
+ 3. 在 `templates/claude/CLAUDE.md` 的规则导入示例中补充(如适用)。
332
+
333
+ ## 多工具安装器
334
+
335
+ - 入口:`bin/frontend-craft.ts`。
336
+ - 实现目录:`src/install/`(安装器、注册表、路径辅助)。
337
+ - 交互向导与输入解析:`src/install/interactive.ts`(测试可将 `FRONTEND_CRAFT_FORCE_INTERACTIVE` 设为 `1` 以模拟管道输入下的问答)。
338
+ - 新增 runtime 时,在 `src/install/registry.ts` 注册。
339
+ - 在 `src/install/converters/` 下添加 runtime 安装器。
340
+ - 参考 `src/install/runtime-homes.ts` 中的全局目录约定。
341
+ - 在 `tests/install/` 中新增或更新测试。
342
+
343
+ ## 如何添加 Hook
344
+
345
+ 1. 更新 `hooks/hooks.json`。
346
+ 2. 如需 runtime hook 脚本,放在 `src/hooks/` 下,并优先使用跨平台 Node.js。
347
+ 3. 在 `scripts/build-dist.ts` 中新增对应入口,确保 `pnpm run build` 会将其打包到 `dist/hooks/`。
348
+ 4. 在 `hooks/hooks.json` 中,引用内置 hook 入口请使用 **`${CLAUDE_PLUGIN_ROOT}/dist/hooks/<script>.js`**(Claude Code 会在运行时替换根路径;见官方 [Plugins reference](https://code.claude.com/docs/en/plugins-reference))。本仓库的 Claude 安装器在将 CLI 管理的 hook 条目合并到 `.claude/settings.json` 时,也会把 **`${CLAUDE_PLUGIN_ROOT}`** 及旧占位符 **`${FRONTEND_CRAFT_ROOT}`** 展开为绝对路径。
349
+ 5. 仓库维护脚本继续放在 `scripts/`,不要在 runtime hook 配置中直接引用它们。
350
+ 6. 更新 `README.md` 的 Hooks 表格。
351
+
352
+ ## Pull Request 自检
353
+
354
+ 提交 PR 前请确认:
355
+
356
+ - [ ] 变更范围清晰,描述明确。
357
+ - [ ] `pnpm test` 通过。
358
+ - [ ] 修改 skill 时,`pnpm run audit:skills`、`pnpm run pack:skills` 与 `pnpm run check:skills-publish` 通过。
359
+ - [ ] 修改 OpenClaw 代码或模板时,`pnpm run typecheck:openclaw` 与 `pnpm run pack:openclaw` 通过。
360
+ - [ ] 用户可见行为变化已更新 `README.md` 与 `CHANGELOG.md`(及 [CHANGELOG.zh-CN.md](CHANGELOG.zh-CN.md) 如适用)。
361
+ - [ ] 多语言 README 已同步,或已链接后续翻译 Issue。
362
+ - [ ] 新增 runtime、agent、skill、command、hook 或模板时,包含相关测试或 dry-run 覆盖。
363
+ - [ ] 发布打包相关变更已通过 `pnpm run pack:all`,或已由 `prepublishOnly` 发布门禁覆盖。
364
+ - [ ] 涉及安全敏感逻辑时,已按 [SECURITY.zh-CN.md](SECURITY.zh-CN.md) / [SECURITY.md](SECURITY.md) 检查。
365
+
366
+ ## 代码风格
367
+
368
+ - Markdown 使用稳定标题和清晰表格。
369
+ - Skill 与 Agent 描述保持简洁,因为模型路由依赖这些描述。
370
+ - 自动化脚本优先使用跨平台 Node.js。
371
+ - 除非特定 runtime 明确需要,否则避免依赖某个 shell 的特性。
372
+
373
+ ## 问题反馈
374
+
375
+ 使用 [GitHub Issues](https://github.com/bovinphang/frontend-craft/issues) 提交 Bug 或功能建议。请尽量包含 runtime、操作系统、Node.js 版本、执行命令、预期行为和实际行为。
376
+
377
+ **安全敏感漏洞**不要提交公开 Issue,请按 [SECURITY.zh-CN.md](SECURITY.zh-CN.md)(或 [SECURITY.md](SECURITY.md))处理。
378
+
379
+ 修改审核或图表能力时,同步各语言 README 与运行时指南中的范围默认值、自然语言示例、工具前提、QA 边界和覆盖报告要求。参见 [审核范围与技术图交付](docs/zh-CN/review-and-diagram-workflows.md).
380
+
381
+ ## 公共内容维护
382
+
383
+ `cc-*` Skill 和内嵌公共方法由精确依赖 `@bovinphang/craft-common@2.0.0` 生成,禁止直接修改分发副本。先在 craft-common 修改并准备对应包,再运行 `pnpm run sync:common`,审阅 `common-content.lock.json` 与中英文快照,最后运行 `pnpm run check:common` 和 `pnpm lint`。前端领域 Skill、元数据及中文镜像仍在本仓库维护。完整目录和维护边界见[项目结构](docs/zh-CN/project-structure.md)与[公共能力迁移](docs/zh-CN/common-migration.md)。