@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,534 +1,588 @@
1
- <div align="center">
2
-
3
- <img src="../../assets/brand/frontend-craft.png" alt="frontend-craft logo" width="200" />
4
-
5
- # frontend-craft
6
-
7
- ### 하나의 툴킷. 모든 AI 코딩 어시스턴트. 프로덕션 수준의 프론트엔드 표준.
8
-
9
- [![Stars](https://img.shields.io/github/stars/bovinphang/frontend-craft?style=flat)](https://github.com/bovinphang/frontend-craft/stargazers)
10
- [![CI](https://github.com/bovinphang/frontend-craft/actions/workflows/ci.yml/badge.svg)](https://github.com/bovinphang/frontend-craft/actions/workflows/ci.yml)
11
- [![npm version](https://img.shields.io/npm/v/@bovinphang/frontend-craft)](https://www.npmjs.com/package/@bovinphang/frontend-craft)
12
- [![License](https://img.shields.io/badge/license-MIT-blue.svg)](../../LICENSE)
13
- ![Node](https://img.shields.io/badge/Node.js-22+-5FA04E?logo=node.js&logoColor=white)
14
- ![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?logo=typescript&logoColor=white)
15
- ![React](https://img.shields.io/badge/-React-61DAFB?logo=react&logoColor=black)
16
- ![Vue](https://img.shields.io/badge/-Vue-4FC08D?logo=vue.js&logoColor=white)
17
- ![Figma](https://img.shields.io/badge/-Figma-F24E1E?logo=figma&logoColor=white)
18
-
19
- **🌐 Language / 语言 / 語言 / 言語 / 언어**
20
-
21
- [English](../../README.md) · [简体中文](../../README.zh-CN.md) · [繁體中文](../zh-TW/README.md) · [日本語](../ja-JP/README.md) · [**한국어**](README.md)
22
-
23
- </div>
24
-
25
-
26
- [런타임 호환성 및 업그레이드](../runtimes/compatibility.md)
27
-
28
- ---
29
-
30
- `frontend-craft`는 다음 **15개의 AI 코딩 어시스턴트**에 통일된 프론트엔드 엔지니어링 표준을 제공하는 **범용 프론트엔드 플러그인**입니다:
31
-
32
- `claude` `codex` `cursor` `windsurf` `opencode`
33
- `kilo` `gemini` `copilot` `antigravity` `augment`
34
- `trae` `codebuddy` `cline` `openclaw` `qoder`
35
-
36
- 각 런타임의 경로와 주의사항은 [`docs/runtimes/`](../runtimes/)에 있습니다.
37
-
38
- **14개의 전문 에이전트**, **56개의 자동 활성화 스킬**, **11개의 슬래시 명령어**, **5개의 이벤트 기반 훅**, 6개 디자인 도구 엔드포인트를 위한 **MCP 통합**, 그리고 완전한 **규칙 라이브러리**를 하나의 설치 가능한 패키지로 묶었습니다. 명령어 하나만 실행하면, 팀의 모든 AI 세션이 React, Vue, Next.js, Nuxt를 같은 방식으로 작성합니다 — 타입 안전하고, 접근성 있고, 안전하며, 일관성 있게.
39
-
40
- ---
41
-
42
- ## 왜 frontend-craft인가?
43
-
44
- | 문제점 | frontend-craft의 해결책 |
45
- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
46
- | AI 어시스턴트가 일관성 없고, 타입 없고, 안전하지 않은 프론트엔드 코드를 작성 | **56개 스킬**이 팀 표준을 인코딩 — 해당 파일을 건드릴 때 자동 활성화 |
47
- | AI 도구마다 플러그인 형식이 다름 | **하나의 CLI**로 동일한 규칙, 에이전트, 훅을 15개 런타임에 설치 |
48
- | 디자인에서 코드로의 전달 과정에서 정보 손실 | **MCP 통합**이 Figma, Figma Desktop, Sketch, MasterGo, Pixso, 墨刀에서 더 풍부한 디자인 컨텍스트를 가져오기 |
49
- | 리뷰가 즉흥적이고 얕음 | **14개 에이전트**가 등급별 보고서 출력: 코드, 보안, 접근성, 성능, TS, UI 충실도 |
50
- | 아무도 lint와 테스트 실행을 기억하지 못함 | **이벤트 기반 훅**이 저장 시와 세션 종료 시 자동 검증 |
51
- | 새 프로젝트가 매번 처음부터 시작 | **`/fec-init`**이 몇 초 만에 CLAUDE.md, 규칙, 설정을 스캐폴드 |
52
-
53
- ---
54
-
55
- ## 설치
56
-
57
- **Node.js 22+**가 필요합니다. **Windows, macOS, Linux**에서 동작합니다(모든 훅과 스크립트는 Node.js로 구현).
58
-
59
- ### 방법 1: fec CLI 전역 설치 (권장)
60
-
61
- ```bash
62
- # 1. fec 명령어를 전역으로 설치
63
- npm install -g @bovinphang/frontend-craft@latest
64
-
65
- # 2. 프론트엔드 프로젝트로 이동
66
- cd your-project
67
-
68
- # 3. 연결할 AI 런타임을 대화형으로 선택
69
- fec setup
70
-
71
- # 4. 현재 프로젝트에 연결
72
- fec setup codex
73
- fec setup claude
74
- fec setup all
75
-
76
- # 5. 전역 연결, 모든 프로젝트에서 사용
77
- fec setup codex --global
78
- fec setup claude --global
79
- fec setup all --global
80
-
81
- # 6. 미리보기 / 조회
82
- fec install --all --dry-run --global
83
- fec list
84
- ```
85
-
86
- `npm install -g`는 `fec` 터미널 명령어만 설치합니다. `fec setup`은 frontend-craft를 프로젝트에 연결하는 터미널 CLI 명령어이며, AI 어시스턴트 안의 `/fec-init` 슬래시 명령어와는 다릅니다. 대화형 터미널에서 인자 없는 `fec setup`은 runtime 선택을 먼저 요청합니다. `fec setup <runtime>`과 `fec setup all`은 기본적으로 현재 프로젝트에 연결합니다. `--global`을 전달할 때만 선택한 AI 도구의 전역 설정 디렉터리에 연결되어 모든 프로젝트에서 사용할 수 있습니다.
87
-
88
- ### 방법 2: npx로 임시 실행 (전역 fec 불필요)
89
-
90
- ```bash
91
- # 1. 대화형 마법사
92
- npx @bovinphang/frontend-craft@latest
93
-
94
- # 2. 현재 프로젝트에 연결
95
- npx @bovinphang/frontend-craft@latest install --local codex
96
- npx @bovinphang/frontend-craft@latest install --local claude
97
- npx @bovinphang/frontend-craft@latest install --all --local
98
-
99
- # 3. 전역 연결, 모든 프로젝트에서 사용
100
- npx @bovinphang/frontend-craft@latest install --global codex
101
- npx @bovinphang/frontend-craft@latest install --global claude
102
- npx @bovinphang/frontend-craft@latest install --all --global
103
-
104
- # 4. 미리보기 / 조회
105
- npx @bovinphang/frontend-craft@latest install --all --dry-run --global
106
- npx @bovinphang/frontend-craft@latest list
107
- ```
108
-
109
- 전역 `fec` 명령어를 설치하고 싶지 않을 때는 `npx`를 사용합니다. 인자 없이 실행하면 대화형 마법사가 열립니다. 먼저 하나 이상의 런타임을 선택한 다음, 전역 또는 현재 프로젝트에 연결할지 결정합니다. 모든 runtime을 스크립트로 설치할 때는 `install --all --local` 또는 `install --all --global`을 사용하고, `install all`이라고 쓰지 않습니다. CI / 스크립트 환경에서는 항상 `--global` / `-g` 또는 `--local` / `-l`을 지정하세요. TTY가 아니고 미지정 시, CLI는 `claude --global`을 기본값으로 합니다.
110
-
111
- ### 방법 3: Claude Code Marketplace
112
-
113
- Claude Code 사용자라면 **Claude Code Marketplace**를 단일 소스 설치 방식으로 권장합니다. CLI를 Claude에 사용하는 것은 교차 런타임 설치, 스크립트/오프라인 파일 복사, 또는 비 Marketplace 환경이 필요한 경우에만 사용하세요.
114
-
115
- Marketplace가 이미 설치된 경우, `--force`를 사용해도 CLI는 두 번째 Claude 사본을 설치하거나 업데이트하지 않습니다. 대신 Claude Code Marketplace를 통해 업데이트하세요. 다른 스코프에 CLI 관리 Claude 설치본이 이미 있는 경우, 대화형 터미널에서는 해당 소스를 최신으로 유지할지, 제거 후 전환할지 묻습니다. 비대화형 터미널은 중단하고 실행할 `update`, `uninstall`, `install` 명령어를 정확히 출력합니다.
116
-
117
- 전체 Claude 전용 단계는 [docs/runtimes/claude.md](../runtimes/claude.md) · [简体中文](../runtimes/claude.zh-CN.md)에 있습니다.
118
-
119
- ---
120
-
121
- ## 빠른 시작
122
-
123
- 설치 후, 모든 AI 세션에서 완전한 프론트엔드 엔지니어링 툴킷을 사용할 수 있습니다:
124
-
125
- ```text
126
- 사용자: "Review my recent changes"
127
- → fec-code-reviewer 에이전트가 실행되어 reports/code-review-*.md 출력
128
-
129
- 사용자: "/fec-review"
130
- → 아키텍처, 타입, 렌더링, 스타일, 접근성 관점에서 구조화된 리뷰 실행
131
-
132
- 사용자: "이 Figma 링크로 결제 페이지를 구현해줘"
133
- → fec-figma-implementer 에이전트가 MCP를 통해 디자인을 읽고 컴포넌트와 보고서 출력
134
-
135
- 사용자: "/fec-scaffold dashboard feature"
136
- → 프로젝트 규칙에 따라 page / feature / component 디렉토리 트리 생성
137
-
138
- 사용자: "/fec-refactor-clean"
139
- → 데드 코드, 미사용 export, 스타일, 의존성을 분류하고 안전하게 제거
140
- ```
141
-
142
- 아래 슬래시 명령어는 **Claude Code**를 예로 든 것입니다; 다른 런타임도 각자의 명령어 시스템으로 동일한 기능을 제공합니다([`docs/runtimes/`](../runtimes/) 참조).
143
-
144
- ---
145
-
146
- ## 예시 프롬프트
147
-
148
- 시나리오별 전체 프롬프트 모음은 [docs/example-prompts.md](../example-prompts.md)를 참고하세요.
149
-
150
- ```text
151
- 사용자: "병합 전에 최근 변경사항을 리뷰해줘. 아키텍처, 타입 안전성, 렌더링 동작, 스타일, 접근성, 누락된 테스트를 중점적으로 봐줘."
152
- 사용자: "코딩하기 전에 계정 결제 기능을 계획해줘: 라우트 구조, 컴포넌트 경계, 데이터 흐름, 상태 소유권, 검증 흐름, 출시 리스크까지."
153
- 사용자: "다단계 등록 폼을 만들어줘. 프로젝트 프레임워크에 맞는 폼과 schema 검증 방식을 선택하고, 파일 업로드, 조건부 필드, 비동기 검증, 접근 가능한 오류를 포함해줘."
154
- 사용자: "Figma 노드 123:456을 기준으로 UI를 구현해줘. 기존 design token과 컴포넌트를 재사용하고, 간격과 반응형 상태를 맞추고, 가정도 문서화해줘."
155
- 사용자: "`/fec-refactor-clean` 이 모듈의 데드 코드를 정리해줘."
156
- ```
157
-
158
- ---
159
-
160
- ## 구성 내용
161
-
162
- ### 명령어
163
-
164
- 슬래시 명령어는 구조화된 워크플로의 주요 진입점입니다. 대부분 `reports/`에 타임스탬프가 찍힌 Markdown 보고서를 출력합니다.
165
-
166
- | 명령어 | 용도 | 보고서 |
167
- | --------------------- | -------------------------------------------------------------------- | -------------------------------------------------- |
168
- | `/fec-init` | 프로젝트 템플릿 초기화 (CLAUDE.md, 규칙, 설정) | — |
169
- | `/fec-review` | 기본은 전체 프로젝트 리뷰; 파일/디렉터리 또는 변경 범위 지정 가능 | `code-review-*.md` |
170
- | `/fec-scaffold` | 규칙에 따라 page / feature / component 보일러플레이트 생성 | — |
171
- | `/fec-plan` | 통합 계획: 구현 아키텍처 또는 테스트 전략 | `architecture-proposal-*.md` 또는 `test-plan-*.md` |
172
- | `/fec-tdd` | 빨강 → 초록 → 리팩토링 프론트엔드 TDD 루프 | — |
173
- | `/fec-debug` | 프론트엔드 문제 진단 및 수정: 빌드, 런타임, UI, API 장애 | `debug-*.md` |
174
- | `/fec-refactor-clean` | 데드 코드, 미사용 export, 스타일, 의존성을 분류하고 안전하게 제거 | `refactor-clean-*.md` |
175
- | `/fec-smell` | Diagnose code smells without editing | `refactoring/smell-*.md` |
176
- | `/fec-refactor-plan` | Plan behavior-preserving refactoring | `refactoring/plan-*.md` |
177
- | `/fec-refactor` | Execute validated behavior-preserving refactoring | `refactoring/refactoring-*.md` |
178
- | `/fec-doc-sync` | README, docs, 환경 변수, 스크립트, API/라우트 설명, 배포 문서 동기화 | — |
179
-
180
- ### 리뷰 범위
181
-
182
- `/fec-review`, 코드 / TypeScript / 보안 리뷰 에이전트와 스킬은 세 가지 모드를 사용합니다.
183
-
184
- - **변경 리뷰**: 최근 변경, 이번 수정, 스테이징 변경, PR/커밋을 명시하거나 현재 작업에서 변경 범위가 확정된 경우 리뷰합니다. 변경이 없으면 이를 알리고 최근 커밋으로 자동 전환하지 않습니다.
185
- - **지정 범위 리뷰**: 파일이나 디렉터리를 지정하면 변경되지 않은 기존 코드도 리뷰합니다. Git diff가 필요하지 않습니다.
186
- - **전체 프로젝트 리뷰(기본)**: 범위나 변경 맥락이 없거나 전체 프로젝트를 요청하면 프로젝트 소유 프런트엔드 코드, 관련 테스트, 설정, 의존성 선언을 목록화하고 모듈별로 리뷰합니다.
187
-
188
- 파일/디렉터리만 지정하면 전체 내용을 리뷰합니다. 차이만 리뷰하려면 변경을 명시하세요. 변경이 있어도 `/fec-review`만 호출하면 전체 프로젝트를 리뷰합니다. 시작 시 모드와 범위를 알리고 수정 후 자동 위임에는 이번 변경 범위를 명시합니다.
189
-
190
- 예: `/fec-review`,`/fec-review 최근 변경 리뷰`, `/fec-review src/components/Button.tsx 리뷰`, `/fec-review src/features/ 리뷰`, `/fec-review 전체 프로젝트 리뷰`. 이는 자연어 지시이며 CLI 옵션이 아닙니다. 명시한 범위가 기본 모드보다 우선합니다.
191
-
192
- 의존성 디렉터리, 빌드 산출물, 캐시, 생성 파일, 외부 코드는 기본적으로 제외합니다. 보고서에 모드, 대상 범위, 리뷰한 파일/모듈, 제외 항목, 미검토 범위, 완료 상태, 검증 결과를 기록합니다. 범위가 남으면 부분 완료로 표시합니다. 호출 코드 참조나 전체 lint/타입 검사는 수동 리뷰 완료를 의미하지 않습니다. 변경 리뷰는 병합 권고를, 지정 범위와 전체 리뷰는 검토한 범위의 위험 평가를 제공합니다. 백엔드 감사를 대체하지 않으며 수정 요청 없이는 비즈니스 코드를 변경하지 않습니다.
193
-
194
- ### 스킬 (자동 활성화)
195
-
196
- 스킬은 파일 패턴, 프레임워크, 또는 작업 컨텍스트에 기반하여 **자동으로 활성화**되는 워크플로 정의입니다. 리뷰 관점, 출력 규칙, 보고서 형식을 인코딩합니다.
197
-
198
- 아래 스킬은 사용 사례별로 묶여 있어 프로젝트 표준, 구현, 테스트, 리뷰, 디자인, 마이그레이션, 프로젝트 진화, 문서 유지보수 워크플로를 빠르게 찾을 수 있습니다.
199
-
200
- **프로젝트 표준** — 해당 프레임워크가 감지되면 자동 적용:
201
-
202
- | 스킬 | 범위 |
203
- | --------------------------------- | ------------------------------------------------------------ |
204
- | `fec-react-project-standard` | React + TypeScript (구조, 컴포넌트, 라우팅, 상태, API 계층) |
205
- | `fec-vue3-project-standard` | Vue 3 + TypeScript (구조, 컴포넌트, 라우팅, Pinia, API 계층) |
206
- | `fec-nextjs-project-standard` | Next.js 14+ App Router, SSR/SSG, 스트리밍, 메타데이터 |
207
- | `fec-nuxt-project-standard` | Nuxt 3 SSR/SSG, Composition API, 데이터 페칭, 미들웨어 |
208
- | `fec-vite-project-standard` | Vite 설정, 환경 변수 안전, HMR, 개발 프록시, 빌드 최적화 |
209
- | `fec-monorepo-project-standard` | pnpm workspace, Turborepo, Nx 구조 및 태스크 오케스트레이션 |
210
- | `fec-typescript-project-standard` | TypeScript 설정, 공개 API 타입, 선언 파일, DTO, 제네릭 |
211
-
212
- **구현 기능** — 특정 프론트엔드 기능을 구축할 때 활성화:
213
-
214
- | 스킬 | 범위 |
215
- | ------------------------- | ------------------------------------------------------------- |
216
- | `fec-data-fetching` | 서버 상태 페칭, 캐시, 무효화, SSR, 무한 로딩 |
217
- | `fec-api-integration` | Typed API client, 인증 refresh, 업로드, 실시간 통합 |
218
- | `fec-state-management` | 상태 소유권, 스토어 선택, URL 상태, 서버/폼/로컬 상태 경계 |
219
- | `fec-form-handling` | 프레임워크별 폼 선택, schema 검증, 동적 필드, 업로드 |
220
- | `fec-browser-storage` | localStorage / sessionStorage / IndexedDB / Cookies 선택 |
221
- | `fec-route-protection` | React Router, Next.js, Vue Router, Nuxt의 인증 및 권한 라우팅 |
222
- | `fec-pwa-implementation` | 매니페스트, 서비스 워커, 오프라인 캐시, 설치 프롬프트 |
223
- | `fec-web-workers` | Web Worker, Transferable, Comlink, 워커 풀 |
224
- | `fec-canvas-threejs` | Canvas 2D, Three.js, React Three Fiber, WebGL |
225
- | `fec-svg-animation` | CSS / Framer Motion / GSAP SVG 애니메이션과 reduced-motion |
226
- | `fec-list-virtualization` | 프레임워크별 대규모 리스트 가상화, 측정, 그리드, 무한 스크롤 |
227
-
228
- **테스트** — 프론트엔드 테스트 범위를 계획하거나 작성할 때 활성화:
229
-
230
- | 스킬 | 범위 |
231
- | ----------------------- | ------------------------------------------------------ |
232
- | `fec-testing-strategy` | 정적, 단위, 컴포넌트, 통합, E2E, 시각 테스트 계층 선택 |
233
- | `fec-component-testing` | React Testing Library / Vue Test Utils와 회귀 시나리오 |
234
- | `fec-e2e-testing` | Playwright / Cypress E2E와 Page Object, CI 통합 |
235
- | `fec-tdd-workflow` | 테스트 우선 프론트엔드 구현, 빨강-초록 리팩토링 |
236
-
237
- **리뷰 및 품질** — 리뷰, 검증, 정리 워크플로에서 활성화:
238
-
239
- | 스킬 | 범위 |
240
- | ------------------------------ | --------------------------------------------------------------- |
241
- | `fec-code-review` | 아키텍처, 타입, 렌더링, 스타일, 접근성 리뷰 |
242
- | `fec-debug-framework` | 빌드, 런타임, UI, API/데이터 장애의 체계적 진단 |
243
- | `fec-security-review` | XSS, CSRF, 민감 데이터 유출, 입력 검증 |
244
- | `fec-accessibility-check` | WCAG 2.2, 키보드, 포커스, 터치, 스크린 리더 동작 |
245
- | `fec-dependency-upgrade` | 의존성 업그레이드, lockfile 리뷰, CVE 수정, 마이그레이션 검증 |
246
- | `fec-validation-fix` | lint, type-check, test, build를 한 번에 실행하고 수정 |
247
- | `fec-performance-optimization` | Core Web Vitals, 번들, 렌더링, 메모리, 네트워크, 성능 예산 리뷰 |
248
- | `fec-refactor-clean` | 데드 코드, 미사용 export, 스타일, 라우트, 의존성의 안전한 정리 |
249
-
250
- **Refactoring**
251
-
252
- | Skill | Scope |
253
- | --- | --- |
254
- | `fec-refactoring` | Behavior-preserving refactoring capability |
255
- | `fec-code-smells` | Behavior-preserving refactoring capability |
256
- | `fec-refactoring-catalog` | Behavior-preserving refactoring capability |
257
- | `fec-refactoring-functions` | Behavior-preserving refactoring capability |
258
- | `fec-refactoring-encapsulation` | Behavior-preserving refactoring capability |
259
- | `fec-refactoring-move-features` | Behavior-preserving refactoring capability |
260
- | `fec-refactoring-data` | Behavior-preserving refactoring capability |
261
- | `fec-refactoring-control` | Behavior-preserving refactoring capability |
262
- | `fec-refactoring-api` | Behavior-preserving refactoring capability |
263
- | `fec-refactoring-inheritance` | Behavior-preserving refactoring capability |
264
- | `fec-refactoring-validation` | Behavior-preserving refactoring capability |
265
-
266
- **디자인 UI** — 디자인 구현, 디자인 시스템, 시각적 마무리에서 활성화:
267
-
268
- | 스킬 | 범위 |
269
- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
270
- | `fec-ui-design` | 제품 맥락 UI 방향, 반템플릿 디자인 다이얼, 미디어 전략, 상태, visual QA |
271
- | `fec-image-generation` | 시스템 블루프린트, 프로세스 워크플로, 인터랙티브 라이브 다이어그램, HTML/SVG/PNG 내보내기, 이미지 생성/편집, 비주얼 에셋, PNG QA |
272
- | `fec-drawio-studio` | 편집 가능한 draw.io / diagrams.net 기술 다이어그램, XML/Mermaid/CSV URL 핸드오프, shape 검색, 자동 레이아웃, 코드 구조도 |
273
- | `fec-web-video-presentation` | 글, 스크립트, 레슨, demo를 녹화 가능한 16:9 step-driven 웹 프레젠테이션으로 변환 |
274
- | `fec-tailwind-design-system` | Tailwind token, 테마 확장, variants, class 관리, dark mode |
275
- | `fec-responsive-layout` | 모바일 우선, container queries, 데이터 밀집 responsive UI |
276
- | `fec-motion-interaction` | 맥락 기반 motion 강도, 페이지 전환, 스크롤 animation, reduced-motion |
277
- | `fec-implement-from-design` | 디자인 도구, 스크린샷 또는 section 단위 시각 참조에서 UI 구현 |
278
- | `fec-storybook-component-doc` | Storybook 컴포넌트 문서, 디자인 시스템 표시, 격리 상태 미리보기 |
279
-
280
- 기술 다이어그램 품질: 표준 시퀀스와 흐름도는 로컬 Mermaid, 편집 가능한 아키텍처는 draw.io를 우선합니다. 도구가 없으면 JSON/HTML을 사용합니다. PNG 배율에 맞는 실제 측정 manifest로 QA를 실행하고 최종 이미지를 직접 확인합니다. 기본 수정은 두 번이며 남은 문제를 보고합니다.
281
-
282
- [리뷰 및 기술 다이어그램 가이드](../review-and-diagram-workflows.md).
283
-
284
- **레거시 마이그레이션** — 현대화 작업에서 활성화:
285
-
286
- | 스킬 | 범위 |
287
- | -------------------------------- | --------------------------------------------------------- |
288
- | `fec-legacy-web-standard` | JS + jQuery + HTML 레거시 프로젝트 개발 및 유지보수 기준 |
289
- | `fec-legacy-to-modern-migration` | 레거시 프론트엔드 현대화, 대상 스택 선택, 단계별 워크플로 |
290
-
291
- **프로젝트 진화** — 참조 시스템을 프로젝트 네이티브 개선으로 흡수할 때 활성화:
292
-
293
- | 스킬 | 범위 |
294
- | ------------- | --------------------------------------------------------- |
295
- | `fec-alchemy` | 참조 시스템 역량을 독창적인 프로젝트 네이티브 설계로 흡수 |
296
-
297
- **문서 유지보수** — 문서 작업에서 활성화:
298
-
299
- | 스킬 | 범위 |
300
- | ---------------------------------- | ------------------------------------------------------------------------------------ |
301
- | `fec-backend-requirements-handoff` | Frontend-to-backend handoff for UI data needs, actions, states, rules, and questions |
302
- | `fec-doc-sync` | 프론트엔드 문서를 코드, 설정, 스크립트, 라우트, API, 환경 변수, 배포 사실과 동기화 |
303
- | `fec-source-driven-development` | 프로젝트 사실과 공식 소스로 버전 의존 결정을 검증 |
304
-
305
- ### 에이전트
306
-
307
- 에이전트는 메인 어시스턴트에서 호출되는 전문 서브 에이전트로, 특정 작업에 집중하여 구조화된 보고서를 반환합니다.
308
-
309
- | 에이전트 | 초점 | 보고서 |
310
- | --------------------------- | ----------------------------------------------------------------- | ---------------------------- |
311
- | `fec-code-reviewer` | React/Vue/Next/Nuxt, TS, 스타일, 클라이언트 측 보안 (신뢰도 기반) | `code-review-*.md` |
312
- | `fec-typescript-reviewer` | 타입 안전성, 비동기 정확성, 관용적 패턴 (보고서만) | `typescript-review-*.md` |
313
- | `fec-security-reviewer` | XSS, 클라이언트 시크릿, 위험한 DOM/API, CSP, 의존성 감사 | `security-review-*.md` |
314
- | `fec-performance-optimizer` | 번들 크기, 렌더링 성능, 네트워크 병목 | `performance-review-*.md` |
315
- | `fec-architect` | 페이지 분할, 컴포넌트 아키텍처, 상태 흐름, 디렉토리 계획 | `architecture-proposal-*.md` |
316
- | `fec-test-planner` | 위험→계층 매트릭스: 정적, 단위, 컴포넌트, E2E, 시각, 접근성, 보안 | `test-plan-*.md` |
317
- | `fec-debugger` | 빌드, 런타임, UI, API 장애에 대한 복잡한 프론트엔드 진단 | `debug-*.md` |
318
- | `fec-refactor-cleaner` | 미사용 코드, export, 스타일, 라우트, 의존성 분류 및 안전한 제거 | `refactor-clean-*.md` |
319
- | `fec-refactoring-expert` | Behavior-preserving refactoring orchestration | `refactoring/refactoring-*.md` |
320
- | `fec-e2e-runner` | E2E 작성 및 실행 (Playwright/Cypress), flaky 격리, 트레이스 | `e2e-summary-*.md` |
321
- | `fec-doc-updater` | README, 런타임 문서, 구조, 기능 표, 메타데이터 동기화 | — |
322
- | `fec-ui-checker` | 시각적 문제 디버깅 및 디자인 충실도 평가 | `ui-fidelity-review-*.md` |
323
- | `fec-figma-implementer` | Figma/Sketch/MasterGo/Pixso/墨刀 디자인에서 정확한 UI 구현 | `design-implementation-*.md` |
324
- | `fec-design-token-mapper` | 디자인 변수를 프로젝트 Design Token에 매핑 | `token-mapping-*.md` |
325
-
326
- ### 훅 (이벤트 기반)
327
-
328
- 훅은 AI 어시스턴트 이벤트에서 **자동 실행**됩니다. 호출 불필요.
329
-
330
- | 이벤트 | 동작 |
331
- | ------------------------- | ----------------------------------------------------------------- |
332
- | `SessionStart` | Claude 캐시를 정리한 뒤 프로젝트 프레임워크 및 패키지 매니저 감지 |
333
- | `PreToolUse(Bash)` | 위험한 명령어 차단 (`rm -rf`, force push 등) |
334
- | `PostToolUse(Write/Edit)` | 변경된 파일에 자동 Prettier 실행 |
335
- | `Stop` | 세션 종료 시 lint, type-check, test, build 실행 |
336
- | `Notification` | 크로스 플랫폼 데스크톱 알림 (macOS / Linux / Windows) |
337
-
338
- ### MCP 통합
339
-
340
- AI 어시스턴트를 디자인 도구에 연결하여 더 풍부한 디자인 컨텍스트를 갖춘 디자인→코드 워크플로를 구현합니다.
341
-
342
- | 서비스 | 기능 |
343
- | ----------------- | --------------------------------------------------- |
344
- | **Figma** | 디자인 컨텍스트 및 변수 정의 읽기 |
345
- | **Figma Desktop** | Figma 데스크톱 클라이언트 통합 |
346
- | **Sketch** | 디자인 선택 스크린샷 읽기 |
347
- | **MasterGo** | DSL 구조, 컴포넌트 계층, 스타일 읽기 |
348
- | **Pixso** | 로컬 MCP: 프레임 데이터, 코드 스니펫, 이미지 리소스 |
349
- | **墨刀** | 프로토타입 데이터, 디자인 설명, HTML 가져오기 |
350
- | **摹客** | 스크린샷/주석/CSS 내보내기 워크플로 (MCP 없음) |
351
-
352
- ### 프로젝트 템플릿 (`/fec-init`)
353
-
354
- `/fec-init`을 실행하면 즉시 사용 가능한 규칙 라이브러리와 프로젝트 설정을 `.claude/`에 스캐폴드합니다:
355
-
356
- <details>
357
- <summary>전체 20개 템플릿 파일 보기</summary>
358
-
359
- | 파일 | 용도 |
360
- | ---------------------------------------- | --------------------------------------------------------------------- |
361
- | `CLAUDE.md` | 프로젝트 설명, 명령어, 작업 원칙, 보안 |
362
- | `settings.json` | 권한 화이트리스트/블랙리스트, 환경 변수 |
363
- | `rules/fec-vue.md` | Vue 3 컴포넌트 기준 및 안티패턴 |
364
- | `rules/fec-react.md` | React 컴포넌트 기준 및 안티패턴 |
365
- | `rules/fec-design-system.md` | 디자인 시스템, 토큰, 접근성 |
366
- | `rules/fec-testing.md` | 테스트 및 검증 규칙 |
367
- | `rules/fec-git-conventions.md` | Conventional Commits |
368
- | `rules/fec-i18n.md` | 국제화 카피 기준 |
369
- | `rules/fec-performance.md` | 프론트엔드 성능 최적화 규칙 |
370
- | `rules/fec-rendering-patterns.md` | 렌더링 라이프사이클, hydration, SSR/CSR, 업데이트 패턴 |
371
- | `rules/fec-responsive-design.md` | 반응형 레이아웃, 브레이크포인트, 터치 대상, viewport 동작 |
372
- | `rules/fec-source-driven-development.md` | Source-driven decisions, official docs, version-sensitive assumptions |
373
- | `rules/fec-api-layer.md` | API 계층 타입화 및 오류 처리 |
374
- | `rules/fec-state-management.md` | 상태 분류, 전략, 안티패턴 |
375
- | `rules/fec-error-handling.md` | 오류 계층화, Error Boundary, 폴백 UI, 보고 |
376
- | `rules/fec-naming-conventions.md` | 파일, 컴포넌트, 변수, 라우트, API, CSS 통일 명명 |
377
- | `rules/fec-code-comments.md` | 프론트엔드 주석 작성 시점과 방법 |
378
- | `rules/fec-ci-cd.md` | CI/CD 파이프라인 단계, GitHub Actions / GitLab CI, 시크릿 |
379
- | `rules/fec-refactoring.md` | 리팩토링 제약 및 기능 동등성 요구사항 |
380
- | `rules/fec-agent-workflow.md` | 에이전트 간 협업 경계 및 위임 |
381
- | `rules/fec-working-modes.md` | 조사, 계획, 개발, 리뷰, 마무리 모드 가이드 |
382
-
383
- </details>
384
-
385
- ---
386
-
387
- ## 설정
388
-
389
- ### 사전 요구사항
390
-
391
- - **Node.js 22+**
392
- - **npm, pnpm, 또는 yarn**
393
- - **Git Bash 또는 호환 셸** (Windows만, AI 런타임이 셸 명령을 호출하는 경우)
394
-
395
- ### MCP 디자인 도구 토큰
396
-
397
- 팀에서 사용하는 디자인 도구에 따라 환경 변수를 설정합니다:
398
-
399
- | 환경 변수 | 도구 | 획득 방법 |
400
- | ---------------- | --------------------- | ---------------------------------------- |
401
- | `FIGMA_API_KEY` | Figma / Figma Desktop | Figma 계정 설정 → Personal Access Tokens |
402
- | `SKETCH_API_KEY` | Sketch | Sketch 개발자 설정 |
403
- | `MG_MCP_TOKEN` | MasterGo | MasterGo 계정 설정 → 보안 → 토큰 생성 |
404
- | `MODAO_TOKEN` | 墨刀 | 墨刀 AI 기능 페이지 → 액세스 토큰 |
405
-
406
- > **Pixso**는 로컬 MCP 서버를 사용합니다 — Pixso 클라이언트에서 MCP를 활성화하면 되며, 환경 변수는 필요 없습니다.
407
- > **摹客**은 MCP 통합이 없습니다 — 스크린샷과 CSS 내보내기로 작업합니다.
408
-
409
- 셸 설정에 추가하여 영속화합니다:
410
-
411
- ```bash
412
- # macOS / Linux — ~/.bashrc 또는 ~/.zshrc에 추가
413
- export FIGMA_API_KEY="your-figma-api-key"
414
- export SKETCH_API_KEY="your-sketch-api-key"
415
- export MG_MCP_TOKEN="your-mastergo-token"
416
- export MODAO_TOKEN="your-modao-token"
417
- ```
418
-
419
- ```powershell
420
- # Windows — 시스템 환경 변수로 설정, 또는 PowerShell에서 임시 설정:
421
- $env:FIGMA_API_KEY = "your-figma-api-key"
422
- $env:SKETCH_API_KEY = "your-sketch-api-key"
423
- $env:MG_MCP_TOKEN = "your-mastergo-token"
424
- $env:MODAO_TOKEN = "your-modao-token"
425
- ```
426
-
427
- ---
428
-
429
- ## 보고서
430
-
431
- 모든 리뷰, 분석, 평가는 `reports/`에 타임스탬프가 찍힌 Markdown 보고서로 작성됩니다. 이는 감사 추적 및 PR 산출물로 기능합니다.
432
-
433
- <details>
434
- <summary>전체 16개 보고서 유형 보기</summary>
435
-
436
- | 보고서 유형 | 파일명 패턴 | 생성 출처 |
437
- | -------------------- | -------------------------------------------- | ------------------------------------------------------------------- |
438
- | 코드 리뷰 | `code-review-YYYY-MM-DD-HHmmss.md` | `/fec-review`, `fec-code-review`, `fec-code-reviewer` |
439
- | 디버그 진단 | `debug-YYYY-MM-DD-HHmmss.md` | `/fec-debug`, `fec-debug-framework`, `fec-debugger` |
440
- | TypeScript / JS 리뷰 | `typescript-review-YYYY-MM-DD-HHmmss.md` | `fec-typescript-reviewer` |
441
- | 보안 리뷰 | `security-review-YYYY-MM-DD-HHmmss.md` | `fec-security-review`, `fec-security-reviewer` |
442
- | 접근성 | `accessibility-review-YYYY-MM-DD-HHmmss.md` | `fec-accessibility-check` |
443
- | 성능 | `performance-review-YYYY-MM-DD-HHmmss.md` | `fec-performance-optimizer` |
444
- | 아키텍처 | `architecture-proposal-YYYY-MM-DD-HHmmss.md` | `fec-architect` |
445
- | 디자인 충실도 | `ui-fidelity-review-YYYY-MM-DD-HHmmss.md` | `fec-ui-checker` |
446
- | 디자인 구현 | `design-implementation-YYYY-MM-DD-HHmmss.md` | `fec-figma-implementer` |
447
- | 토큰 매핑 | `token-mapping-YYYY-MM-DD-HHmmss.md` | `fec-design-token-mapper` |
448
- | 디자인 계획 | `design-plan-YYYY-MM-DD-HHmmss.md` | `fec-implement-from-design` |
449
- | 테스트 계획 | `test-plan-YYYY-MM-DD-HHmmss.md` | `/fec-plan`, `fec-testing-strategy`, `fec-test-planner` |
450
- | 검증 수정 | `validation-fix-YYYY-MM-DD-HHmmss.md` | `fec-validation-fix` |
451
- | 리팩토링 정리 | `refactor-clean-YYYY-MM-DD-HHmmss.md` | `/fec-refactor-clean`, `fec-refactor-clean`, `fec-refactor-cleaner` |
452
- | E2E 실행 요약 | `e2e-summary-YYYY-MM-DD-HHmmss.md` | `fec-e2e-runner` (선택) |
453
- | 마이그레이션 계획 | `migration-plan-YYYY-MM-DD-HHmmss.md` | `fec-legacy-to-modern-migration` |
454
-
455
- </details>
456
-
457
- > **팁:** `.gitignore`에 `reports/`를 추가하여 자동 생성 보고서를 버전 관리에서 제외하거나, 팀의 리뷰 이력으로 커밋을 유지하세요.
458
-
459
- ---
460
-
461
- ## 업데이트와 제거
462
-
463
- `fec`는 `frontend-craft`의 짧은 명령어입니다. 전역 `fec` 명령어를 설치하지 않았다면 같은 인자를 `npx @bovinphang/frontend-craft@latest` 뒤에 붙여 사용하세요. 예: `npx @bovinphang/frontend-craft@latest update`.
464
-
465
- ### 업데이트
466
-
467
- ```bash
468
- fec update # 발견된 모든 CLI 관리 설치 업데이트
469
- fec update <runtime> --local # 로컬 CLI 관리 설치 하나 업데이트
470
- fec update <runtime> --global # 전역 CLI 관리 설치 하나 업데이트
471
- fec upgrade <runtime> --global # `upgrade`는 `update`의 별칭
472
- ```
473
-
474
- ### 제거
475
-
476
- ```bash
477
- fec uninstall # 발견된 모든 CLI 관리 설치 제거
478
- fec remove # `remove`는 `uninstall`의 별칭
479
- fec uninstall <runtime> # 특정 runtime 설치 제거
480
- fec remove <runtime> # 별칭으로 특정 runtime 제거
481
- fec uninstall --global # 발견된 전역 설치만 제거
482
- fec remove --local # 발견된 로컬 설치만 제거
483
- fec uninstall <runtime> --dry-run # 제거 내용을 미리 보기
484
- fec uninstall <runtime> --force # 수정된 관리 파일도 제거
485
- ```
486
-
487
- CLI는 런타임 디렉토리에 `frontend-craft.manifest.json`을 작성합니다. runtime을 지정하지 않으면 `update`가 이 manifest를 자동으로 발견하고 **로컬에서 수정한 파일을 건너뜁니다** — 커스터마이징은 업데이트 후에도 유지됩니다.
488
-
489
- `uninstall`/`remove`는 manifest에 기록된 파일만 삭제합니다. 수정된 파일은 기본적으로 건너뛰며, 수정된 관리 파일까지 제거하려는 경우에만 `--force`를 추가하세요. `--force`는 Claude Code Marketplace 설치를 덮어쓰지 않습니다.
490
-
491
- **Claude Code Marketplace** 또는 **submodule** 설치의 업데이트 방법은 [docs/runtimes/claude.md](../runtimes/claude.md) · [简体中文](../runtimes/claude.zh-CN.md)를 참조하세요. `/fec-init`은 프로젝트 설정만 초기화하며, 두 번째 플러그인 설치가 아닙니다.
492
-
493
- ---
494
-
495
- ## 레거시 Skills CLI
496
-
497
- 팀이 이미 독립형 [Skills CLI](https://skills.sh/docs/cli)를 사용 중인 경우, [`skills/`](../../skills/) 아래의 워크플로 스킬 패키지만 설치할 수 있습니다:
498
-
499
- ```bash
500
- npx skills add bovinphang/frontend-craft # 프롬프트에 따르거나 -g로 전역 설치
501
- npx skills update # 최신 버전으로 업데이트
502
- npx skills check # 사용 가능한 업데이트 미리보기
503
- ```
504
-
505
- | CLI | 설치 내용 |
506
- | -------------------------------- | ----------------------------------------------------- |
507
- | `npx @bovinphang/frontend-craft` | 스킬 + 런타임 전용 에이전트, 명령어, 훅, 규칙, 템플릿 |
508
- | `npx skills` | 스킬만 (기존 Skills CLI 워크플로용) |
509
-
510
- 텔레메트리 비활성화: `DISABLE_TELEMETRY=1`. 자세한 내용은 [skills.sh CLI 문서](https://skills.sh/docs/cli) 참조.
511
-
512
- ---
513
-
514
- ## 커뮤니티
515
-
516
- - [기여 가이드](../../CONTRIBUTING.md) — 개발 환경 설정, PR 체크리스트, 현지화 정책 ([简体中文](../../CONTRIBUTING.zh-CN.md))
517
- - [보안 정책](../../SECURITY.md) — 비공개 취약점 보고 ([简体中文](../../SECURITY.zh-CN.md))
518
- - [행동 강령](../../CODE_OF_CONDUCT.md) — 커뮤니티 표준 ([简体中文](../../CODE_OF_CONDUCT.zh-CN.md))
519
- - [변경 로그](../../CHANGELOG.md) — 릴리스 노트 ([简体中文](../../CHANGELOG.zh-CN.md))
520
- - [프로젝트 구조](../project-structure.md) — 전체 디렉토리 레이아웃 및 파일 책임
521
-
522
- ---
523
-
524
- ## 라이선스
525
-
526
- [MIT](../../LICENSE) — 자유롭게 사용하고, 필요에 따라 수정하고, 가능하면 기여해 주세요.
527
-
528
- ---
529
-
530
- <div align="center">
531
-
532
- **frontend-craft가 팀에 도움이 되었다면, [Star를 눌러주세요](https://github.com/bovinphang/frontend-craft).**
533
-
534
- </div>
1
+ <div align="center">
2
+
3
+ <img src="../../assets/brand/frontend-craft.png" alt="frontend-craft logo" width="200" />
4
+
5
+ # frontend-craft
6
+
7
+ ### 하나의 툴킷. 모든 AI 코딩 어시스턴트. 프로덕션 수준의 프론트엔드 표준.
8
+
9
+ [![Stars](https://img.shields.io/github/stars/bovinphang/frontend-craft?style=flat)](https://github.com/bovinphang/frontend-craft/stargazers)
10
+ [![CI](https://github.com/bovinphang/frontend-craft/actions/workflows/ci.yml/badge.svg)](https://github.com/bovinphang/frontend-craft/actions/workflows/ci.yml)
11
+ [![npm version](https://img.shields.io/npm/v/@bovinphang/frontend-craft)](https://www.npmjs.com/package/@bovinphang/frontend-craft)
12
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](../../LICENSE)
13
+ ![Node](https://img.shields.io/badge/Node.js-22+-5FA04E?logo=node.js&logoColor=white)
14
+ ![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?logo=typescript&logoColor=white)
15
+ ![React](https://img.shields.io/badge/-React-61DAFB?logo=react&logoColor=black)
16
+ ![Vue](https://img.shields.io/badge/-Vue-4FC08D?logo=vue.js&logoColor=white)
17
+ ![Figma](https://img.shields.io/badge/-Figma-F24E1E?logo=figma&logoColor=white)
18
+
19
+ **🌐 Language / 语言 / 語言 / 言語 / 언어**
20
+
21
+ [English](../../README.md) · [简体中文](../../README.zh-CN.md) · [繁體中文](../zh-TW/README.md) · [日本語](../ja-JP/README.md) · [**한국어**](README.md)
22
+
23
+ </div>
24
+
25
+
26
+ [런타임 호환성 및 업그레이드](../runtimes/compatibility.md)
27
+
28
+ ---
29
+
30
+ `frontend-craft`는 다음 **15개의 AI 코딩 어시스턴트**에 통일된 프론트엔드 엔지니어링 표준을 제공하는 **범용 프론트엔드 플러그인**입니다:
31
+
32
+ `claude` `codex` `cursor` `windsurf` `opencode`
33
+ `kilo` `gemini` `copilot` `antigravity` `augment`
34
+ `trae` `codebuddy` `cline` `openclaw` `qoder`
35
+
36
+ 각 런타임의 경로와 주의사항은 [`docs/runtimes/`](../runtimes/)에 있습니다.
37
+
38
+ **14개의 전문 에이전트**, **61개의 자동 활성화 스킬**, **11개의 슬래시 명령어**, **5개의 이벤트 기반 훅**, 6개 디자인 도구 엔드포인트를 위한 **MCP 통합**, 그리고 완전한 **규칙 라이브러리**를 하나의 설치 가능한 패키지로 묶었습니다. 명령어 하나만 실행하면, 팀의 모든 AI 세션이 React, Vue, Next.js, Nuxt를 같은 방식으로 작성합니다 — 타입 안전하고, 접근성 있고, 안전하며, 일관성 있게.
39
+
40
+ ---
41
+
42
+ ## 왜 frontend-craft인가?
43
+
44
+ | 문제점 | frontend-craft의 해결책 |
45
+ | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
46
+ | AI 어시스턴트가 일관성 없고, 타입 없고, 안전하지 않은 프론트엔드 코드를 작성 | **61개 스킬**이 팀 표준을 인코딩 — 해당 파일을 건드릴 때 자동 활성화 |
47
+ | AI 도구마다 플러그인 형식이 다름 | **하나의 CLI**로 동일한 규칙, 에이전트, 훅을 15개 런타임에 설치 |
48
+ | 디자인에서 코드로의 전달 과정에서 정보 손실 | **MCP 통합**이 Figma, Figma Desktop, Sketch, MasterGo, Pixso, 墨刀에서 더 풍부한 디자인 컨텍스트를 가져오기 |
49
+ | 리뷰가 즉흥적이고 얕음 | **14개 에이전트**가 등급별 보고서 출력: 코드, 보안, 접근성, 성능, TS, UI 충실도 |
50
+ | 아무도 lint와 테스트 실행을 기억하지 못함 | **이벤트 기반 훅**이 저장 시와 세션 종료 시 자동 검증 |
51
+ | 새 프로젝트가 매번 처음부터 시작 | **`/fec-init`**이 몇 초 만에 CLAUDE.md, 규칙, 설정을 스캐폴드 |
52
+
53
+ ---
54
+
55
+ ## 설치
56
+
57
+ **Node.js 22+**가 필요합니다. **Windows, macOS, Linux**에서 동작합니다(모든 훅과 스크립트는 Node.js로 구현).
58
+
59
+ ### 방법 1: fec CLI 전역 설치 (권장)
60
+
61
+ ```bash
62
+ # 1. fec 명령어를 전역으로 설치
63
+ npm install -g @bovinphang/frontend-craft@latest
64
+
65
+ # 2. 프론트엔드 프로젝트로 이동
66
+ cd your-project
67
+
68
+ # 3. 연결할 AI 런타임을 대화형으로 선택
69
+ fec setup
70
+
71
+ # 4. 현재 프로젝트에 연결
72
+ fec setup codex
73
+ fec setup claude
74
+ fec setup all
75
+
76
+ # 5. 전역 연결, 모든 프로젝트에서 사용
77
+ fec setup codex --global
78
+ fec setup claude --global
79
+ fec setup all --global
80
+
81
+ # 6. 미리보기 / 조회
82
+ fec runtime install --all --dry-run --global
83
+ fec list
84
+ ```
85
+
86
+ `npm install -g`는 `fec` 터미널 명령어만 설치합니다. `fec setup`은 frontend-craft를 프로젝트에 연결하는 터미널 CLI 명령어이며, AI 어시스턴트 안의 `/fec-init` 슬래시 명령어와는 다릅니다. 대화형 터미널에서 인자 없는 `fec setup`은 runtime 선택을 먼저 요청합니다. `fec setup <runtime>`과 `fec setup all`은 기본적으로 현재 프로젝트에 연결합니다. `--global`을 전달할 때만 선택한 AI 도구의 전역 설정 디렉터리에 연결되어 모든 프로젝트에서 사용할 수 있습니다.
87
+
88
+ ### 방법 2: npx로 임시 실행 (전역 fec 불필요)
89
+
90
+ ```bash
91
+ # 1. 대화형 마법사
92
+ npx @bovinphang/frontend-craft@latest
93
+
94
+ # 2. 현재 프로젝트에 연결
95
+ npx @bovinphang/frontend-craft@latest runtime install --local codex
96
+ npx @bovinphang/frontend-craft@latest runtime install --local claude
97
+ npx @bovinphang/frontend-craft@latest runtime install --all --local
98
+
99
+ # 3. 전역 연결, 모든 프로젝트에서 사용
100
+ npx @bovinphang/frontend-craft@latest runtime install --global codex
101
+ npx @bovinphang/frontend-craft@latest runtime install --global claude
102
+ npx @bovinphang/frontend-craft@latest runtime install --all --global
103
+
104
+ # 4. 미리보기 / 조회
105
+ npx @bovinphang/frontend-craft@latest runtime install --all --dry-run --global
106
+ npx @bovinphang/frontend-craft@latest list
107
+ ```
108
+
109
+ 전역 `fec` 명령어를 설치하고 싶지 않을 때는 `npx`를 사용합니다. 인자 없이 실행하면 대화형 마법사가 열립니다. 먼저 하나 이상의 런타임을 선택한 다음, 전역 또는 현재 프로젝트에 연결할지 결정합니다. 모든 runtime을 스크립트로 설치할 때는 `install --all --local` 또는 `install --all --global`을 사용하고, `install all`이라고 쓰지 않습니다. CI / 스크립트 환경에서는 항상 `--global` / `-g` 또는 `--local` / `-l`을 지정하세요. TTY가 아니고 미지정 시, CLI는 `claude --global`을 기본값으로 합니다.
110
+
111
+ ### 방법 3: Claude Code Marketplace
112
+
113
+ Claude Code 사용자라면 **Claude Code Marketplace**를 단일 소스 설치 방식으로 권장합니다. CLI를 Claude에 사용하는 것은 교차 런타임 설치, 스크립트/오프라인 파일 복사, 또는 비 Marketplace 환경이 필요한 경우에만 사용하세요.
114
+
115
+ Marketplace가 이미 설치된 경우, `--force`를 사용해도 CLI는 두 번째 Claude 사본을 설치하거나 업데이트하지 않습니다. 대신 Claude Code Marketplace를 통해 업데이트하세요. 다른 스코프에 CLI 관리 Claude 설치본이 이미 있는 경우, 대화형 터미널에서는 해당 소스를 최신으로 유지할지, 제거 후 전환할지 묻습니다. 비대화형 터미널은 중단하고 실행할 `runtime update`, `runtime uninstall`, `runtime install` 명령어를 정확히 출력합니다.
116
+
117
+ 전체 Claude 전용 단계는 [docs/runtimes/claude.md](../runtimes/claude.md) · [简体中文](../runtimes/claude.zh-CN.md)에 있습니다.
118
+
119
+ ---
120
+
121
+ ## 빠른 시작
122
+
123
+ 설치 후, 모든 AI 세션에서 완전한 프론트엔드 엔지니어링 툴킷을 사용할 수 있습니다:
124
+
125
+ ```text
126
+ 사용자: "Review my recent changes"
127
+ → fec-code-reviewer 에이전트가 실행되어 reports/code-review-*.md 출력
128
+
129
+ 사용자: "/fec-review"
130
+ → 아키텍처, 타입, 렌더링, 스타일, 접근성 관점에서 구조화된 리뷰 실행
131
+
132
+ 사용자: "이 Figma 링크로 결제 페이지를 구현해줘"
133
+ → fec-figma-implementer 에이전트가 MCP를 통해 디자인을 읽고 컴포넌트와 보고서 출력
134
+
135
+ 사용자: "/fec-scaffold dashboard feature"
136
+ → 프로젝트 규칙에 따라 page / feature / component 디렉토리 트리 생성
137
+
138
+ 사용자: "/fec-refactor-clean"
139
+ → 데드 코드, 미사용 export, 스타일, 의존성을 분류하고 안전하게 제거
140
+ ```
141
+
142
+ 아래 슬래시 명령어는 **Claude Code**를 예로 든 것입니다; 다른 런타임도 각자의 명령어 시스템으로 동일한 기능을 제공합니다([`docs/runtimes/`](../runtimes/) 참조).
143
+
144
+ ---
145
+
146
+ ## 예시 프롬프트
147
+
148
+ 시나리오별 전체 프롬프트 모음은 [docs/example-prompts.md](../example-prompts.md)를 참고하세요.
149
+
150
+ ```text
151
+ 사용자: "병합 전에 최근 변경사항을 리뷰해줘. 아키텍처, 타입 안전성, 렌더링 동작, 스타일, 접근성, 누락된 테스트를 중점적으로 봐줘."
152
+ 사용자: "코딩하기 전에 계정 결제 기능을 계획해줘: 라우트 구조, 컴포넌트 경계, 데이터 흐름, 상태 소유권, 검증 흐름, 출시 리스크까지."
153
+ 사용자: "다단계 등록 폼을 만들어줘. 프로젝트 프레임워크에 맞는 폼과 schema 검증 방식을 선택하고, 파일 업로드, 조건부 필드, 비동기 검증, 접근 가능한 오류를 포함해줘."
154
+ 사용자: "Figma 노드 123:456을 기준으로 UI를 구현해줘. 기존 design token과 컴포넌트를 재사용하고, 간격과 반응형 상태를 맞추고, 가정도 문서화해줘."
155
+ 사용자: "`/fec-refactor-clean` 이 모듈의 데드 코드를 정리해줘."
156
+ ```
157
+
158
+ ---
159
+
160
+ ## 구성 내용
161
+
162
+ ### 명령어
163
+
164
+ 슬래시 명령어는 구조화된 워크플로의 주요 진입점입니다. 대부분 `reports/`에 타임스탬프가 찍힌 Markdown 보고서를 출력합니다.
165
+
166
+ | 명령어 | 용도 | 보고서 |
167
+ | --------------------- | -------------------------------------------------------------------- | -------------------------------------------------- |
168
+ | `/fec-init` | 프로젝트 템플릿 초기화 (CLAUDE.md, 규칙, 설정) | — |
169
+ | `/fec-review` | 기본은 전체 프로젝트 리뷰; 파일/디렉터리 또는 변경 범위 지정 가능 | `code-review-*.md` |
170
+ | `/fec-scaffold` | 규칙에 따라 page / feature / component 보일러플레이트 생성 | — |
171
+ | `/fec-plan` | 통합 계획: 구현 아키텍처 또는 테스트 전략 | `architecture-proposal-*.md` 또는 `test-plan-*.md` |
172
+ | `/fec-tdd` | 빨강 → 초록 → 리팩토링 프론트엔드 TDD 루프 | — |
173
+ | `/fec-debug` | 프론트엔드 문제 진단 및 수정: 빌드, 런타임, UI, API 장애 | `debug-*.md` |
174
+ | `/fec-refactor-clean` | 데드 코드, 미사용 export, 스타일, 의존성을 분류하고 안전하게 제거 | `refactor-clean-*.md` |
175
+ | `/fec-smell` | Diagnose code smells without editing | `refactoring/smell-*.md` |
176
+ | `/fec-refactor-plan` | Plan behavior-preserving refactoring | `refactoring/plan-*.md` |
177
+ | `/fec-refactor` | Execute validated behavior-preserving refactoring | `refactoring/refactoring-*.md` |
178
+ | `/fec-doc-sync` | README, docs, 환경 변수, 스크립트, API/라우트 설명, 배포 문서 동기화 | — |
179
+
180
+ ### 리뷰 범위
181
+
182
+ `/fec-review`, 코드 / TypeScript / 보안 리뷰 에이전트와 스킬은 세 가지 모드를 사용합니다.
183
+
184
+ - **변경 리뷰**: 최근 변경, 이번 수정, 스테이징 변경, PR/커밋을 명시하거나 현재 작업에서 변경 범위가 확정된 경우 리뷰합니다. 변경이 없으면 이를 알리고 최근 커밋으로 자동 전환하지 않습니다.
185
+ - **지정 범위 리뷰**: 파일이나 디렉터리를 지정하면 변경되지 않은 기존 코드도 리뷰합니다. Git diff가 필요하지 않습니다.
186
+ - **전체 프로젝트 리뷰(기본)**: 범위나 변경 맥락이 없거나 전체 프로젝트를 요청하면 프로젝트 소유 프런트엔드 코드, 관련 테스트, 설정, 의존성 선언을 목록화하고 모듈별로 리뷰합니다.
187
+
188
+ 파일/디렉터리만 지정하면 전체 내용을 리뷰합니다. 차이만 리뷰하려면 변경을 명시하세요. 변경이 있어도 `/fec-review`만 호출하면 전체 프로젝트를 리뷰합니다. 시작 시 모드와 범위를 알리고 수정 후 자동 위임에는 이번 변경 범위를 명시합니다.
189
+
190
+ 예: `/fec-review`,`/fec-review 최근 변경 리뷰`, `/fec-review src/components/Button.tsx 리뷰`, `/fec-review src/features/ 리뷰`, `/fec-review 전체 프로젝트 리뷰`. 이는 자연어 지시이며 CLI 옵션이 아닙니다. 명시한 범위가 기본 모드보다 우선합니다.
191
+
192
+ 의존성 디렉터리, 빌드 산출물, 캐시, 생성 파일, 외부 코드는 기본적으로 제외합니다. 보고서에 모드, 대상 범위, 리뷰한 파일/모듈, 제외 항목, 미검토 범위, 완료 상태, 검증 결과를 기록합니다. 범위가 남으면 부분 완료로 표시합니다. 호출 코드 참조나 전체 lint/타입 검사는 수동 리뷰 완료를 의미하지 않습니다. 변경 리뷰는 병합 권고를, 지정 범위와 전체 리뷰는 검토한 범위의 위험 평가를 제공합니다. 백엔드 감사를 대체하지 않으며 수정 요청 없이는 비즈니스 코드를 변경하지 않습니다.
193
+
194
+ ### 스킬 (자동 활성화)
195
+
196
+ 스킬은 파일 패턴, 프레임워크, 또는 작업 컨텍스트에 기반하여 **자동으로 활성화**되는 워크플로 정의입니다. 리뷰 관점, 출력 규칙, 보고서 형식을 인코딩합니다.
197
+
198
+ 아래 스킬은 사용 사례별로 묶여 있어 프로젝트 표준, 구현, 테스트, 리뷰, 디자인, 마이그레이션, 프로젝트 진화, 문서 유지보수 워크플로를 빠르게 찾을 수 있습니다.
199
+
200
+ **프로젝트 표준** — 해당 프레임워크가 감지되면 자동 적용:
201
+
202
+ | 스킬 | 범위 |
203
+ | --------------------------------- | ------------------------------------------------------------ |
204
+ | `fec-react-project-standard` | React + TypeScript (구조, 컴포넌트, 라우팅, 상태, API 계층) |
205
+ | `fec-vue3-project-standard` | Vue 3 + TypeScript (구조, 컴포넌트, 라우팅, Pinia, API 계층) |
206
+ | `fec-nextjs-project-standard` | Next.js 14+ App Router, SSR/SSG, 스트리밍, 메타데이터 |
207
+ | `fec-nuxt-project-standard` | Nuxt 3 SSR/SSG, Composition API, 데이터 페칭, 미들웨어 |
208
+ | `fec-vite-project-standard` | Vite 설정, 환경 변수 안전, HMR, 개발 프록시, 빌드 최적화 |
209
+ | `fec-monorepo-project-standard` | pnpm workspace, Turborepo, Nx 구조 및 태스크 오케스트레이션 |
210
+ | `cc-typescript-project-standard` | TypeScript 설정, 공개 API 타입, 선언 파일, DTO, 제네릭 |
211
+
212
+ **구현 기능** — 특정 프론트엔드 기능을 구축할 때 활성화:
213
+
214
+ | 스킬 | 범위 |
215
+ | ------------------------- | ------------------------------------------------------------- |
216
+ | `fec-data-fetching` | 서버 상태 페칭, 캐시, 무효화, SSR, 무한 로딩 |
217
+ | `fec-api-integration` | Typed API client, 인증 refresh, 업로드, 실시간 통합 |
218
+ | `fec-state-management` | 상태 소유권, 스토어 선택, URL 상태, 서버/폼/로컬 상태 경계 |
219
+ | `fec-form-handling` | 프레임워크별 폼 선택, schema 검증, 동적 필드, 업로드 |
220
+ | `fec-browser-storage` | localStorage / sessionStorage / IndexedDB / Cookies 선택 |
221
+ | `fec-route-protection` | React Router, Next.js, Vue Router, Nuxt의 인증 및 권한 라우팅 |
222
+ | `fec-pwa-implementation` | 매니페스트, 서비스 워커, 오프라인 캐시, 설치 프롬프트 |
223
+ | `fec-web-workers` | Web Worker, Transferable, Comlink, 워커 풀 |
224
+ | `fec-canvas-threejs` | Canvas 2D, Three.js, React Three Fiber, WebGL |
225
+ | `fec-svg-animation` | CSS / Framer Motion / GSAP SVG 애니메이션과 reduced-motion |
226
+ | `fec-list-virtualization` | 프레임워크별 대규모 리스트 가상화, 측정, 그리드, 무한 스크롤 |
227
+
228
+ **테스트** — 프론트엔드 테스트 범위를 계획하거나 작성할 때 활성화:
229
+
230
+ | 스킬 | 범위 |
231
+ | ----------------------- | ------------------------------------------------------ |
232
+ | `fec-testing-strategy` | 정적, 단위, 컴포넌트, 통합, E2E, 시각 테스트 계층 선택 |
233
+ | `fec-component-testing` | React Testing Library / Vue Test Utils와 회귀 시나리오 |
234
+ | `fec-e2e-testing` | Playwright / Cypress E2E와 Page Object, CI 통합 |
235
+ | `fec-tdd-workflow` | 테스트 우선 프론트엔드 구현, 빨강-초록 리팩토링 |
236
+
237
+ **리뷰 및 품질** — 리뷰, 검증, 정리 워크플로에서 활성화:
238
+
239
+ | 스킬 | 범위 |
240
+ | ------------------------------ | --------------------------------------------------------------- |
241
+ | `fec-code-review` | 아키텍처, 타입, 렌더링, 스타일, 접근성 리뷰 |
242
+ | `fec-debug-framework` | 빌드, 런타임, UI, API/데이터 장애의 체계적 진단 |
243
+ | `fec-security-review` | XSS, CSRF, 민감 데이터 유출, 입력 검증 |
244
+ | `fec-accessibility-check` | WCAG 2.2, 키보드, 포커스, 터치, 스크린 리더 동작 |
245
+ | `fec-dependency-upgrade` | 의존성 업그레이드, lockfile 리뷰, CVE 수정, 마이그레이션 검증 |
246
+ | `fec-validation-fix` | lint, type-check, test, build를 한 번에 실행하고 수정 |
247
+ | `fec-performance-optimization` | Core Web Vitals, 번들, 렌더링, 메모리, 네트워크, 성능 예산 리뷰 |
248
+ | `fec-refactor-clean` | 데드 코드, 미사용 export, 스타일, 라우트, 의존성의 안전한 정리 |
249
+
250
+ **Refactoring**
251
+
252
+ | Skill | Scope |
253
+ | --- | --- |
254
+ | `fec-refactoring` | Behavior-preserving refactoring capability |
255
+ | `fec-code-smells` | Behavior-preserving refactoring capability |
256
+ | `fec-refactoring-catalog` | Behavior-preserving refactoring capability |
257
+ | `fec-refactoring-functions` | Behavior-preserving refactoring capability |
258
+ | `fec-refactoring-encapsulation` | Behavior-preserving refactoring capability |
259
+ | `fec-refactoring-move-features` | Behavior-preserving refactoring capability |
260
+ | `fec-refactoring-data` | Behavior-preserving refactoring capability |
261
+ | `fec-refactoring-control` | Behavior-preserving refactoring capability |
262
+ | `fec-refactoring-api` | Behavior-preserving refactoring capability |
263
+ | `fec-refactoring-inheritance` | Behavior-preserving refactoring capability |
264
+ | `fec-refactoring-validation` | Behavior-preserving refactoring capability |
265
+
266
+ **디자인 UI** — 디자인 구현, 디자인 시스템, 시각적 마무리에서 활성화:
267
+
268
+ | 스킬 | 범위 |
269
+ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
270
+ | `fec-ui-design` | 제품 맥락 UI 방향, 반템플릿 디자인 다이얼, 미디어 전략, 상태, visual QA |
271
+ | `fec-image-generation` | UI·제품·브랜드 이미지 생성과 편집, 공통 PNG 품질 검사 |
272
+ | `cc-drawio-studio` | 편집 가능한 draw.io / diagrams.net 기술 다이어그램, XML/Mermaid/CSV URL 핸드오프, shape 검색, 자동 레이아웃, 코드 구조도 |
273
+ | `fec-web-video-presentation` | 글, 스크립트, 레슨, demo를 녹화 가능한 16:9 step-driven 웹 프레젠테이션으로 변환 |
274
+ | `fec-tailwind-design-system` | Tailwind token, 테마 확장, variants, class 관리, dark mode |
275
+ | `fec-responsive-layout` | 모바일 우선, container queries, 데이터 밀집 responsive UI |
276
+ | `fec-motion-interaction` | 맥락 기반 motion 강도, 페이지 전환, 스크롤 animation, reduced-motion |
277
+ | `fec-implement-from-design` | 디자인 도구, 스크린샷 또는 section 단위 시각 참조에서 UI 구현 |
278
+ | `fec-storybook-component-doc` | Storybook 컴포넌트 문서, 디자인 시스템 표시, 격리 상태 미리보기 |
279
+
280
+ 기술 다이어그램 품질: 표준 시퀀스와 흐름도는 로컬 Mermaid, 편집 가능한 아키텍처는 draw.io를 우선합니다. 도구가 없으면 JSON/HTML을 사용합니다. PNG 배율에 맞는 실제 측정 manifest로 QA를 실행하고 최종 이미지를 직접 확인합니다. 기본 수정은 두 번이며 남은 문제를 보고합니다.
281
+
282
+ [리뷰 및 기술 다이어그램 가이드](../review-and-diagram-workflows.md).
283
+
284
+ **레거시 마이그레이션** — 현대화 작업에서 활성화:
285
+
286
+ | 스킬 | 범위 |
287
+ | -------------------------------- | --------------------------------------------------------- |
288
+ | `fec-legacy-web-standard` | JS + jQuery + HTML 레거시 프로젝트 개발 및 유지보수 기준 |
289
+ | `fec-legacy-to-modern-migration` | 레거시 프론트엔드 현대화, 대상 스택 선택, 단계별 워크플로 |
290
+
291
+ **프로젝트 진화** — 참조 시스템을 프로젝트 네이티브 개선으로 흡수할 때 활성화:
292
+
293
+ | 스킬 | 범위 |
294
+ | ------------- | --------------------------------------------------------- |
295
+ | `fec-alchemy` | 참조 시스템 역량을 독창적인 프로젝트 네이티브 설계로 흡수 |
296
+
297
+ **문서 유지보수** — 문서 작업에서 활성화:
298
+
299
+ | 스킬 | 범위 |
300
+ | ---------------------------------- | ------------------------------------------------------------------------------------ |
301
+ | `fec-backend-requirements-handoff` | Frontend-to-backend handoff for UI data needs, actions, states, rules, and questions |
302
+ | `fec-doc-sync` | 프론트엔드 문서를 코드, 설정, 스크립트, 라우트, API, 환경 변수, 배포 사실과 동기화 |
303
+ | `cc-source-driven-development` | 프로젝트 사실과 공식 소스로 버전 의존 결정을 검증 |
304
+
305
+ ### 에이전트
306
+
307
+ 에이전트는 메인 어시스턴트에서 호출되는 전문 서브 에이전트로, 특정 작업에 집중하여 구조화된 보고서를 반환합니다.
308
+
309
+ | 에이전트 | 초점 | 보고서 |
310
+ | --------------------------- | ----------------------------------------------------------------- | ---------------------------- |
311
+ | `fec-code-reviewer` | React/Vue/Next/Nuxt, TS, 스타일, 클라이언트 측 보안 (신뢰도 기반) | `code-review-*.md` |
312
+ | `fec-typescript-reviewer` | 타입 안전성, 비동기 정확성, 관용적 패턴 (보고서만) | `typescript-review-*.md` |
313
+ | `fec-security-reviewer` | XSS, 클라이언트 시크릿, 위험한 DOM/API, CSP, 의존성 감사 | `security-review-*.md` |
314
+ | `fec-performance-optimizer` | 번들 크기, 렌더링 성능, 네트워크 병목 | `performance-review-*.md` |
315
+ | `fec-architect` | 페이지 분할, 컴포넌트 아키텍처, 상태 흐름, 디렉토리 계획 | `architecture-proposal-*.md` |
316
+ | `fec-test-planner` | 위험→계층 매트릭스: 정적, 단위, 컴포넌트, E2E, 시각, 접근성, 보안 | `test-plan-*.md` |
317
+ | `fec-debugger` | 빌드, 런타임, UI, API 장애에 대한 복잡한 프론트엔드 진단 | `debug-*.md` |
318
+ | `fec-refactor-cleaner` | 미사용 코드, export, 스타일, 라우트, 의존성 분류 및 안전한 제거 | `refactor-clean-*.md` |
319
+ | `fec-refactoring-expert` | Behavior-preserving refactoring orchestration | `refactoring/refactoring-*.md` |
320
+ | `fec-e2e-runner` | E2E 작성 및 실행 (Playwright/Cypress), flaky 격리, 트레이스 | `e2e-summary-*.md` |
321
+ | `fec-doc-updater` | README, 런타임 문서, 구조, 기능 표, 메타데이터 동기화 | — |
322
+ | `fec-ui-checker` | 시각적 문제 디버깅 및 디자인 충실도 평가 | `ui-fidelity-review-*.md` |
323
+ | `fec-figma-implementer` | Figma/Sketch/MasterGo/Pixso/墨刀 디자인에서 정확한 UI 구현 | `design-implementation-*.md` |
324
+ | `fec-design-token-mapper` | 디자인 변수를 프로젝트 Design Token에 매핑 | `token-mapping-*.md` |
325
+
326
+ ### 훅 (이벤트 기반)
327
+
328
+ 훅은 AI 어시스턴트 이벤트에서 **자동 실행**됩니다. 호출 불필요.
329
+
330
+ | 이벤트 | 동작 |
331
+ | ------------------------- | ----------------------------------------------------------------- |
332
+ | `SessionStart` | Claude 캐시를 정리한 뒤 프로젝트 프레임워크 및 패키지 매니저 감지 |
333
+ | `PreToolUse(Bash)` | 위험한 명령어 차단 (`rm -rf`, force push 등) |
334
+ | `PostToolUse(Write/Edit)` | 변경된 파일에 자동 Prettier 실행 |
335
+ | `Stop` | 세션 종료 시 lint, type-check, test, build 실행 |
336
+ | `Notification` | 크로스 플랫폼 데스크톱 알림 (macOS / Linux / Windows) |
337
+
338
+ ### MCP 통합
339
+
340
+ AI 어시스턴트를 디자인 도구에 연결하여 더 풍부한 디자인 컨텍스트를 갖춘 디자인→코드 워크플로를 구현합니다.
341
+
342
+ | 서비스 | 기능 |
343
+ | ----------------- | --------------------------------------------------- |
344
+ | **Figma** | 디자인 컨텍스트 및 변수 정의 읽기 |
345
+ | **Figma Desktop** | Figma 데스크톱 클라이언트 통합 |
346
+ | **Sketch** | 디자인 선택 스크린샷 읽기 |
347
+ | **MasterGo** | DSL 구조, 컴포넌트 계층, 스타일 읽기 |
348
+ | **Pixso** | 로컬 MCP: 프레임 데이터, 코드 스니펫, 이미지 리소스 |
349
+ | **墨刀** | 프로토타입 데이터, 디자인 설명, HTML 가져오기 |
350
+ | **摹客** | 스크린샷/주석/CSS 내보내기 워크플로 (MCP 없음) |
351
+
352
+ ### 프로젝트 템플릿 (`/fec-init`)
353
+
354
+ `/fec-init`을 실행하면 즉시 사용 가능한 규칙 라이브러리와 프로젝트 설정을 `.claude/`에 스캐폴드합니다:
355
+
356
+ <details>
357
+ <summary>전체 20개 템플릿 파일 보기</summary>
358
+
359
+ | 파일 | 용도 |
360
+ | ---------------------------------------- | --------------------------------------------------------------------- |
361
+ | `CLAUDE.md` | 프로젝트 설명, 명령어, 작업 원칙, 보안 |
362
+ | `settings.json` | 권한 화이트리스트/블랙리스트, 환경 변수 |
363
+ | `rules/fec-vue.md` | Vue 3 컴포넌트 기준 및 안티패턴 |
364
+ | `rules/fec-react.md` | React 컴포넌트 기준 및 안티패턴 |
365
+ | `rules/fec-design-system.md` | 디자인 시스템, 토큰, 접근성 |
366
+ | `rules/fec-testing.md` | 테스트 및 검증 규칙 |
367
+ | `rules/fec-git-conventions.md` | Conventional Commits |
368
+ | `rules/fec-i18n.md` | 국제화 카피 기준 |
369
+ | `rules/fec-performance.md` | 프론트엔드 성능 최적화 규칙 |
370
+ | `rules/fec-rendering-patterns.md` | 렌더링 라이프사이클, hydration, SSR/CSR, 업데이트 패턴 |
371
+ | `rules/fec-responsive-design.md` | 반응형 레이아웃, 브레이크포인트, 터치 대상, viewport 동작 |
372
+ | `rules/fec-source-driven-development.md` | Source-driven decisions, official docs, version-sensitive assumptions |
373
+ | `rules/fec-api-layer.md` | API 계층 타입화 및 오류 처리 |
374
+ | `rules/fec-state-management.md` | 상태 분류, 전략, 안티패턴 |
375
+ | `rules/fec-error-handling.md` | 오류 계층화, Error Boundary, 폴백 UI, 보고 |
376
+ | `rules/fec-naming-conventions.md` | 파일, 컴포넌트, 변수, 라우트, API, CSS 통일 명명 |
377
+ | `rules/fec-code-comments.md` | 프론트엔드 주석 작성 시점과 방법 |
378
+ | `rules/fec-ci-cd.md` | CI/CD 파이프라인 단계, GitHub Actions / GitLab CI, 시크릿 |
379
+ | `rules/fec-refactoring.md` | 리팩토링 제약 및 기능 동등성 요구사항 |
380
+ | `rules/fec-agent-workflow.md` | 에이전트 간 협업 경계 및 위임 |
381
+ | `rules/fec-working-modes.md` | 조사, 계획, 개발, 리뷰, 마무리 모드 가이드 |
382
+
383
+ </details>
384
+
385
+ ---
386
+
387
+ ## 설정
388
+
389
+ ### 사전 요구사항
390
+
391
+ - **Node.js 22+**
392
+ - **npm, pnpm, 또는 yarn**
393
+ - **Git Bash 또는 호환 셸** (Windows만, AI 런타임이 셸 명령을 호출하는 경우)
394
+
395
+ ### MCP 디자인 도구 토큰
396
+
397
+ 팀에서 사용하는 디자인 도구에 따라 환경 변수를 설정합니다:
398
+
399
+ | 환경 변수 | 도구 | 획득 방법 |
400
+ | ---------------- | --------------------- | ---------------------------------------- |
401
+ | `FIGMA_API_KEY` | Figma / Figma Desktop | Figma 계정 설정 → Personal Access Tokens |
402
+ | `SKETCH_API_KEY` | Sketch | Sketch 개발자 설정 |
403
+ | `MG_MCP_TOKEN` | MasterGo | MasterGo 계정 설정 → 보안 → 토큰 생성 |
404
+ | `MODAO_TOKEN` | 墨刀 | 墨刀 AI 기능 페이지 → 액세스 토큰 |
405
+
406
+ > **Pixso**는 로컬 MCP 서버를 사용합니다 — Pixso 클라이언트에서 MCP를 활성화하면 되며, 환경 변수는 필요 없습니다.
407
+ > **摹客**은 MCP 통합이 없습니다 — 스크린샷과 CSS 내보내기로 작업합니다.
408
+
409
+ 셸 설정에 추가하여 영속화합니다:
410
+
411
+ ```bash
412
+ # macOS / Linux — ~/.bashrc 또는 ~/.zshrc에 추가
413
+ export FIGMA_API_KEY="your-figma-api-key"
414
+ export SKETCH_API_KEY="your-sketch-api-key"
415
+ export MG_MCP_TOKEN="your-mastergo-token"
416
+ export MODAO_TOKEN="your-modao-token"
417
+ ```
418
+
419
+ ```powershell
420
+ # Windows — 시스템 환경 변수로 설정, 또는 PowerShell에서 임시 설정:
421
+ $env:FIGMA_API_KEY = "your-figma-api-key"
422
+ $env:SKETCH_API_KEY = "your-sketch-api-key"
423
+ $env:MG_MCP_TOKEN = "your-mastergo-token"
424
+ $env:MODAO_TOKEN = "your-modao-token"
425
+ ```
426
+
427
+ ---
428
+
429
+ ## 보고서
430
+
431
+ 모든 리뷰, 분석, 평가는 `reports/`에 타임스탬프가 찍힌 Markdown 보고서로 작성됩니다. 이는 감사 추적 및 PR 산출물로 기능합니다.
432
+
433
+ <details>
434
+ <summary>전체 16개 보고서 유형 보기</summary>
435
+
436
+ | 보고서 유형 | 파일명 패턴 | 생성 출처 |
437
+ | -------------------- | -------------------------------------------- | ------------------------------------------------------------------- |
438
+ | 코드 리뷰 | `code-review-YYYY-MM-DD-HHmmss.md` | `/fec-review`, `fec-code-review`, `fec-code-reviewer` |
439
+ | 디버그 진단 | `debug-YYYY-MM-DD-HHmmss.md` | `/fec-debug`, `fec-debug-framework`, `fec-debugger` |
440
+ | TypeScript / JS 리뷰 | `typescript-review-YYYY-MM-DD-HHmmss.md` | `fec-typescript-reviewer` |
441
+ | 보안 리뷰 | `security-review-YYYY-MM-DD-HHmmss.md` | `fec-security-review`, `fec-security-reviewer` |
442
+ | 접근성 | `accessibility-review-YYYY-MM-DD-HHmmss.md` | `fec-accessibility-check` |
443
+ | 성능 | `performance-review-YYYY-MM-DD-HHmmss.md` | `fec-performance-optimizer` |
444
+ | 아키텍처 | `architecture-proposal-YYYY-MM-DD-HHmmss.md` | `fec-architect` |
445
+ | 디자인 충실도 | `ui-fidelity-review-YYYY-MM-DD-HHmmss.md` | `fec-ui-checker` |
446
+ | 디자인 구현 | `design-implementation-YYYY-MM-DD-HHmmss.md` | `fec-figma-implementer` |
447
+ | 토큰 매핑 | `token-mapping-YYYY-MM-DD-HHmmss.md` | `fec-design-token-mapper` |
448
+ | 디자인 계획 | `design-plan-YYYY-MM-DD-HHmmss.md` | `fec-implement-from-design` |
449
+ | 테스트 계획 | `test-plan-YYYY-MM-DD-HHmmss.md` | `/fec-plan`, `fec-testing-strategy`, `fec-test-planner` |
450
+ | 검증 수정 | `validation-fix-YYYY-MM-DD-HHmmss.md` | `fec-validation-fix` |
451
+ | 리팩토링 정리 | `refactor-clean-YYYY-MM-DD-HHmmss.md` | `/fec-refactor-clean`, `fec-refactor-clean`, `fec-refactor-cleaner` |
452
+ | E2E 실행 요약 | `e2e-summary-YYYY-MM-DD-HHmmss.md` | `fec-e2e-runner` (선택) |
453
+ | 마이그레이션 계획 | `migration-plan-YYYY-MM-DD-HHmmss.md` | `fec-legacy-to-modern-migration` |
454
+
455
+ </details>
456
+
457
+ > **팁:** `.gitignore`에 `reports/`를 추가하여 자동 생성 보고서를 버전 관리에서 제외하거나, 팀의 리뷰 이력으로 커밋을 유지하세요.
458
+
459
+ ---
460
+
461
+ ## 업데이트와 제거
462
+
463
+ ### CLI 자체 관리 (3.0)
464
+
465
+ `fec update`(별칭 `upgrade`)는 원래 npm/pnpm과 registry의 `latest`로 전역 CLI를 업그레이드한 뒤 새 CLI로 현재 프로젝트와 사용자 전역의 관리 리소스를 갱신합니다. 이미 최신 버전이어도 갱신합니다. 다른 프로젝트를 검색하거나 Marketplace를 관리하지 않습니다. CLI 업그레이드 실패 시 중단하며, 리소스 일부 실패는 단계별로 보고합니다. CLI를 롤백하지 않으며 `fec runtime update`로 리소스를 재시도할 수 있습니다.
466
+
467
+ `fec uninstall`(별칭 `remove`)은 기본적으로 CLI만 제거합니다. `--purge`는 먼저 관리 리소스를 정리하며 사용자 수정은 보존합니다. 정리 오류가 발생하면 CLI를 유지합니다. 대화형 터미널에서는 확인하며 비대화형 실행에는 `--yes`가 필요합니다. 소유권을 검증한 npm/pnpm registry 전역 설치만 지원합니다. 소스 링크, 프로젝트 의존성, 알 수 없는 출처 및 다른 패키지가 포함된 pnpm 공유 그룹은 변경 전에 거부합니다. 공유 그룹은 원래 패키지 관리자로 직접 관리하세요. `--dry-run`은 읽기 전용 미리 보기이며 설치, 삭제, 후속 갱신을 실행하지 않습니다.
468
+
469
+ ```bash
470
+ fec update
471
+ fec uninstall --dry-run
472
+ fec uninstall --purge --yes
473
+ ```
474
+
475
+ 임시 npx 실행은 전역 CLI를 생성하지 않으며 CLI 자체 제거를 지원하지 않습니다. npx 최상위 `update`는 현재 패키지 버전이 registry `latest`와 같을 때만 리소스를 갱신합니다. 다르면 `npx @bovinphang/frontend-craft@latest runtime update`를 사용하세요.
476
+
477
+ | 2.x 리소스 명령 | 3.0 대체 명령 |
478
+ | --- | --- |
479
+ | `fec update [runtime] [options]` | `fec runtime update [runtime] [options]` |
480
+ | `fec uninstall [runtime] [options]` | `fec runtime uninstall [runtime] [options]` |
481
+ | `fec install [runtime] [options]` | `fec runtime install [runtime] [options]` |
482
+
483
+ 최상위 update/uninstall은 기존 runtime 인자와 `--global` 등의 리소스 옵션을 변경 전에 거부합니다. `setup`은 유지되며 최상위 `install`은 사용 중단 예정인 호환 별칭입니다. 리소스 옵션과 `runtime upgrade/remove` 별칭은 유지됩니다. `runtime update`는 실행 중인 CLI 패키지만 사용하며 네트워크에서 새 패키지를 가져오지 않습니다.
484
+
485
+ `fec`는 `frontend-craft`의 짧은 명령어입니다. 전역 CLI 없이 리소스를 관리하려면 `npx @bovinphang/frontend-craft@latest runtime update`(또는 `runtime install/uninstall`)를 사용하세요.
486
+
487
+ ### 리소스 업데이트
488
+
489
+ ```bash
490
+ fec runtime update # 발견된 모든 CLI 관리 설치 업데이트
491
+ fec runtime update <runtime> --local # 로컬 CLI 관리 설치 하나 업데이트
492
+ fec runtime update <runtime> --global # 전역 CLI 관리 설치 하나 업데이트
493
+ fec runtime upgrade <runtime> --global # `upgrade`는 `update`의 별칭
494
+ ```
495
+
496
+ ### 리소스 제거
497
+
498
+ ```bash
499
+ fec runtime uninstall # 발견된 모든 CLI 관리 설치 제거
500
+ fec runtime remove # `remove`는 `uninstall`의 별칭
501
+ fec runtime uninstall <runtime> # 특정 runtime 설치 제거
502
+ fec runtime remove <runtime> # 별칭으로 특정 runtime 제거
503
+ fec runtime uninstall --global # 발견된 전역 설치만 제거
504
+ fec runtime remove --local # 발견된 로컬 설치만 제거
505
+ fec runtime uninstall <runtime> --dry-run # 제거 내용을 미리 보기
506
+ fec runtime uninstall <runtime> --force # 수정된 관리 파일도 제거
507
+ ```
508
+
509
+ CLI는 런타임 디렉토리에 `frontend-craft.manifest.json`을 작성합니다. runtime을 지정하지 않으면 `runtime update`가 이 manifest를 자동으로 발견하고 **로컬에서 수정한 파일을 건너뜁니다** — 커스터마이징은 업데이트 후에도 유지됩니다.
510
+
511
+ `runtime uninstall`/`runtime remove`는 manifest에 기록된 파일만 삭제합니다. 수정된 파일은 기본적으로 건너뛰며, 수정된 관리 파일까지 제거하려는 경우에만 `--force`를 추가하세요. `--force`는 Claude Code Marketplace 설치를 덮어쓰지 않습니다.
512
+
513
+ **Claude Code Marketplace** 또는 **submodule** 설치의 업데이트 방법은 [docs/runtimes/claude.md](../runtimes/claude.md) · [简体中文](../runtimes/claude.zh-CN.md)를 참조하세요. `/fec-init`은 프로젝트 설정만 초기화하며, 두 번째 플러그인 설치가 아닙니다.
514
+
515
+ ---
516
+
517
+ ## 레거시 Skills CLI
518
+
519
+ 팀이 이미 독립형 [Skills CLI](https://skills.sh/docs/cli)를 사용 중인 경우, [`skills/`](../../skills/) 아래의 워크플로 스킬 패키지만 설치할 수 있습니다:
520
+
521
+ ```bash
522
+ npx skills add bovinphang/frontend-craft # 프롬프트에 따르거나 -g로 전역 설치
523
+ npx skills update # 최신 버전으로 업데이트
524
+ npx skills check # 사용 가능한 업데이트 미리보기
525
+ ```
526
+
527
+ | CLI | 설치 내용 |
528
+ | -------------------------------- | ----------------------------------------------------- |
529
+ | `npx @bovinphang/frontend-craft` | 스킬 + 런타임 전용 에이전트, 명령어, 훅, 규칙, 템플릿 |
530
+ | `npx skills` | 스킬만 (기존 Skills CLI 워크플로용) |
531
+
532
+ 텔레메트리 비활성화: `DISABLE_TELEMETRY=1`. 자세한 내용은 [skills.sh CLI 문서](https://skills.sh/docs/cli) 참조.
533
+
534
+ ---
535
+
536
+ ## 커뮤니티
537
+
538
+ - [기여 가이드](../../CONTRIBUTING.md) — 개발 환경 설정, PR 체크리스트, 현지화 정책 ([简体中文](../../CONTRIBUTING.zh-CN.md))
539
+ - [보안 정책](../../SECURITY.md) — 비공개 취약점 보고 ([简体中文](../../SECURITY.zh-CN.md))
540
+ - [행동 강령](../../CODE_OF_CONDUCT.md) — 커뮤니티 표준 ([简体中文](../../CODE_OF_CONDUCT.zh-CN.md))
541
+ - [변경 로그](../../CHANGELOG.md) — 릴리스 노트 ([简体中文](../../CHANGELOG.zh-CN.md))
542
+ - [프로젝트 구조](../project-structure.md) — 전체 디렉토리 레이아웃 및 파일 책임
543
+
544
+ ---
545
+
546
+ ## 라이선스
547
+
548
+ [MIT](../../LICENSE) — 자유롭게 사용하고, 필요에 따라 수정하고, 가능하면 기여해 주세요.
549
+
550
+ ---
551
+
552
+ <div align="center">
553
+
554
+ **frontend-craft가 팀에 도움이 되었다면, [Star를 눌러주세요](https://github.com/bovinphang/frontend-craft).**
555
+
556
+ </div>
557
+
558
+ ## 3.0 공통 기능
559
+
560
+ 3.0.0은 계속 미출시 상태입니다. 프런트엔드 전용53개와 공통21개, 총74개Skill을 제공합니다. 공통 의존성은`@bovinphang/craft-common@2.0.0`으로 고정됩니다.2.0.0은 배포 준비 중인 정식 버전 번호이며 backend1.0.0도 미출시 상태입니다. common을 먼저 배포하고 검증하며 제품 버전을 변경하거나 자동으로 배포하지 않습니다.
561
+
562
+ 언어·역할·프레임워크를 각각 선택합니다. C/C++은 독립된 진입점을, Tauri/Electron은 공통 데스크톱 전문 기능을 제공합니다. 제품 이름으로 언어를 제한하지 않습니다.
563
+
564
+ - `cc-c-project-standard`
565
+ - `cc-cpp-project-standard`
566
+ - `cc-debug-methodology`
567
+ - `cc-doc-sync-core`
568
+ - `cc-drawio-studio`
569
+ - `cc-electron-project-standard`
570
+ - `cc-go-concurrency`
571
+ - `cc-go-project-standard`
572
+ - `cc-java-project-standard`
573
+ - `cc-java-runtime`
574
+ - `cc-native-memory-safety`
575
+ - `cc-python-async`
576
+ - `cc-python-project-standard`
577
+ - `cc-refactoring-core`
578
+ - `cc-rust-async`
579
+ - `cc-rust-project-standard`
580
+ - `cc-source-driven-development`
581
+ - `cc-tauri-project-standard`
582
+ - `cc-tdd-methodology`
583
+ - `cc-technical-diagrams`
584
+ - `cc-typescript-project-standard`
585
+
586
+ `fec runtime check-migration codex --local --json`을 실행하고 이전CLI로 공통 참조를 해제하여 보존된 편집을 처리한 뒤 일치하는 제품을 설치합니다. 다른 소비자나 알 수 없는 파일을 강제로 덮어쓰지 않습니다. CLI와 네이티브 채널은 배타적이며 두 제품의 네이티브 중복 제거는 보장하지 않습니다.
587
+
588
+ [마이그레이션](../common-migration.md) · [변경 기록](../../CHANGELOG.md) · [구조](../project-structure.md)