mdk-skills 2.2.1 → 2.2.3

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 (124) hide show
  1. package/.claude/.install.log +9 -18
  2. package/.claude/backups/20260510.151953/.install.log +1 -0
  3. package/.claude/backups/{20260510.144501 → 20260510.151953}/settings.json +1 -7
  4. package/.claude/settings.json +1 -7
  5. package/package.json +1 -1
  6. package/scripts/cli.js +1 -1
  7. package/scripts/web-ui/server.js +10 -2
  8. package/scripts/web-ui/src/api/skills.js +5 -1
  9. package/scripts/web-ui/src/views/Dashboard.vue +12 -1
  10. package/.claude/backups/20260510.144501/.install.log +0 -1
  11. package/.claude/backups/20260510.145155/.install.log +0 -10
  12. package/.claude/backups/20260510.145155/profiles.json +0 -67
  13. package/.claude/backups/20260510.145155/settings.json +0 -35
  14. package/.claude/backups/20260510.145155/skills/frontend-code-review/.meta.json +0 -6
  15. package/.claude/backups/20260510.145155/skills/frontend-code-review/SKILL.md +0 -167
  16. package/.claude/backups/20260510.145155/skills/frontend-code-review/references/checklist.md +0 -298
  17. package/.claude/backups/20260510.145155/skills/frontend-design/.meta.json +0 -6
  18. package/.claude/backups/20260510.145155/skills/frontend-design/LICENSE.txt +0 -177
  19. package/.claude/backups/20260510.145155/skills/frontend-design/SKILL.md +0 -42
  20. package/.claude/backups/20260510.145155/skills/skill-creator/.meta.json +0 -6
  21. package/.claude/backups/20260510.145155/skills/skill-creator/SKILL.md +0 -356
  22. package/.claude/backups/20260510.145155/skills/skill-creator/references/output-patterns.md +0 -82
  23. package/.claude/backups/20260510.145155/skills/skill-creator/references/workflows.md +0 -28
  24. package/.claude/backups/20260510.145155/skills/skill-creator/scripts/init_skill.py +0 -303
  25. package/.claude/backups/20260510.145155/skills/skill-creator/scripts/package_skill.py +0 -110
  26. package/.claude/backups/20260510.145155/skills/skill-creator/scripts/quick_validate.py +0 -95
  27. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/.meta.json +0 -6
  28. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/SKILL.md +0 -228
  29. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/charts.csv +0 -26
  30. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/colors.csv +0 -97
  31. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/landing.csv +0 -31
  32. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/products.csv +0 -97
  33. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/prompts.csv +0 -24
  34. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/stacks/flutter.csv +0 -53
  35. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -56
  36. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/stacks/nextjs.csv +0 -53
  37. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -51
  38. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -59
  39. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/stacks/react-native.csv +0 -52
  40. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/stacks/react.csv +0 -54
  41. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/stacks/svelte.csv +0 -54
  42. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/stacks/swiftui.csv +0 -51
  43. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/stacks/vue.csv +0 -50
  44. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/styles.csv +0 -59
  45. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/typography.csv +0 -58
  46. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
  47. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/scripts/core.py +0 -238
  48. package/.claude/backups/20260510.145155/skills/ui-ux-pro-max/scripts/search.py +0 -61
  49. package/.claude/backups/20260510.145155/skills/v3-fe-biz-patterns/.meta.json +0 -6
  50. package/.claude/backups/20260510.145155/skills/v3-fe-biz-patterns/SKILL.md +0 -26
  51. package/.claude/backups/20260510.145155/skills/v3-fe-biz-patterns/references/infinite-scroll.md +0 -292
  52. package/.claude/backups/20260510.145155/skills/v3-fe-biz-patterns/references/pinia-store.md +0 -174
  53. package/.claude/backups/20260510.145155/skills/v3-fe-biz-patterns/references/service-layer.md +0 -198
  54. package/.claude/backups/20260510.145155/skills/v3-fe-biz-patterns/references/tab-anchor.md +0 -1125
  55. package/.claude/backups/20260510.145155/skills/v3-fe-biz-patterns/references/use-loading.md +0 -114
  56. package/.claude/backups/20260510.145155/skills/vue/.meta.json +0 -6
  57. package/.claude/backups/20260510.145155/skills/vue/SKILL.md +0 -103
  58. package/.claude/backups/20260510.145155/skills/vue/references/components.md +0 -323
  59. package/.claude/backups/20260510.145155/skills/vue/references/composables.md +0 -358
  60. package/.claude/backups/20260510.145155/skills/vue/references/directives.md +0 -225
  61. package/.claude/backups/20260510.145155/skills/vue/references/gotchas.md +0 -438
  62. package/.claude/backups/20260510.145155/skills/vue/references/provide-inject.md +0 -174
  63. package/.claude/backups/20260510.145155/skills/vue/references/reactivity.md +0 -289
  64. package/.claude/backups/20260510.145155/skills/vue/references/router.md +0 -181
  65. package/.claude/backups/20260510.145155/skills/vue/references/testing.md +0 -294
  66. package/.claude/backups/20260510.145155/skills/vue/references/typescript.md +0 -172
  67. package/.claude/backups/20260510.145155/skills/vue/references/utils-client.md +0 -156
  68. package/.claude/backups/CLAUDE.md.20260510.145155 +0 -131
  69. /package/.claude/backups/{20260510.144501 → 20260510.151953}/profiles.json +0 -0
  70. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/frontend-code-review/.meta.json +0 -0
  71. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/frontend-code-review/SKILL.md +0 -0
  72. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/frontend-code-review/references/checklist.md +0 -0
  73. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/frontend-design/.meta.json +0 -0
  74. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/frontend-design/LICENSE.txt +0 -0
  75. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/frontend-design/SKILL.md +0 -0
  76. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/skill-creator/.meta.json +0 -0
  77. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/skill-creator/SKILL.md +0 -0
  78. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/skill-creator/references/output-patterns.md +0 -0
  79. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/skill-creator/references/workflows.md +0 -0
  80. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/skill-creator/scripts/init_skill.py +0 -0
  81. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/skill-creator/scripts/package_skill.py +0 -0
  82. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/skill-creator/scripts/quick_validate.py +0 -0
  83. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/.meta.json +0 -0
  84. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/SKILL.md +0 -0
  85. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/charts.csv +0 -0
  86. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/colors.csv +0 -0
  87. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/landing.csv +0 -0
  88. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/products.csv +0 -0
  89. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/prompts.csv +0 -0
  90. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/stacks/flutter.csv +0 -0
  91. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -0
  92. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/stacks/nextjs.csv +0 -0
  93. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -0
  94. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -0
  95. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/stacks/react-native.csv +0 -0
  96. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/stacks/react.csv +0 -0
  97. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/stacks/svelte.csv +0 -0
  98. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/stacks/swiftui.csv +0 -0
  99. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/stacks/vue.csv +0 -0
  100. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/styles.csv +0 -0
  101. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/typography.csv +0 -0
  102. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -0
  103. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/scripts/core.py +0 -0
  104. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/ui-ux-pro-max/scripts/search.py +0 -0
  105. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/v3-fe-biz-patterns/.meta.json +0 -0
  106. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/v3-fe-biz-patterns/SKILL.md +0 -0
  107. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/v3-fe-biz-patterns/references/infinite-scroll.md +0 -0
  108. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/v3-fe-biz-patterns/references/pinia-store.md +0 -0
  109. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/v3-fe-biz-patterns/references/service-layer.md +0 -0
  110. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/v3-fe-biz-patterns/references/tab-anchor.md +0 -0
  111. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/v3-fe-biz-patterns/references/use-loading.md +0 -0
  112. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/vue/.meta.json +0 -0
  113. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/vue/SKILL.md +0 -0
  114. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/vue/references/components.md +0 -0
  115. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/vue/references/composables.md +0 -0
  116. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/vue/references/directives.md +0 -0
  117. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/vue/references/gotchas.md +0 -0
  118. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/vue/references/provide-inject.md +0 -0
  119. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/vue/references/reactivity.md +0 -0
  120. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/vue/references/router.md +0 -0
  121. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/vue/references/testing.md +0 -0
  122. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/vue/references/typescript.md +0 -0
  123. /package/.claude/backups/{20260510.144501 → 20260510.151953}/skills/vue/references/utils-client.md +0 -0
  124. /package/.claude/backups/{CLAUDE.md.20260510.144501 → CLAUDE.md.20260510.151953} +0 -0
@@ -1,18 +1,9 @@
1
- [2026-05-10 14:45:01] [INFO] Install started (upgrade)
2
- [2026-05-10 14:45:01] [SKILL] frontend-code-review (1.0.0) → skipped (exists)
3
- [2026-05-10 14:45:01] [SKILL] frontend-design (1.0.0) → skipped (exists)
4
- [2026-05-10 14:45:01] [SKILL] skill-creator (1.0.0) → skipped (exists)
5
- [2026-05-10 14:45:01] [SKILL] ui-ux-pro-max (1.0.0) → skipped (exists)
6
- [2026-05-10 14:45:01] [SKILL] v3-fe-biz-patterns (1.0.0) → skipped (exists)
7
- [2026-05-10 14:45:01] [SKILL] vue (1.0.0) → skipped (exists)
8
- [2026-05-10 14:45:01] [SETTINGS] settings.json merged
9
- [2026-05-10 14:45:01] [BACKUP] backups/CLAUDE.md.20260510.144501 (CLAUDE.md user version preserved)
10
- [2026-05-10 14:51:55] [INFO] Install started (upgrade)
11
- [2026-05-10 14:51:55] [SKILL] frontend-code-review (1.0.0) → skipped (exists)
12
- [2026-05-10 14:51:55] [SKILL] frontend-design (1.0.0) → skipped (exists)
13
- [2026-05-10 14:51:55] [SKILL] skill-creator (1.0.0) → skipped (exists)
14
- [2026-05-10 14:51:55] [SKILL] ui-ux-pro-max (1.0.0) → skipped (exists)
15
- [2026-05-10 14:51:55] [SKILL] v3-fe-biz-patterns (1.0.0) → skipped (exists)
16
- [2026-05-10 14:51:55] [SKILL] vue (1.0.0) → skipped (exists)
17
- [2026-05-10 14:51:55] [SETTINGS] settings.json merged
18
- [2026-05-10 14:51:55] [BACKUP] backups/CLAUDE.md.20260510.145155 (CLAUDE.md user version preserved)
1
+ [2026-05-10 15:19:53] [INFO] Install started (upgrade)
2
+ [2026-05-10 15:19:53] [SKILL] frontend-code-review (1.0.0) → skipped (exists)
3
+ [2026-05-10 15:19:53] [SKILL] frontend-design (1.0.0) → skipped (exists)
4
+ [2026-05-10 15:19:53] [SKILL] skill-creator (1.0.0) → skipped (exists)
5
+ [2026-05-10 15:19:53] [SKILL] ui-ux-pro-max (1.0.0) → skipped (exists)
6
+ [2026-05-10 15:19:53] [SKILL] v3-fe-biz-patterns (1.0.0) → skipped (exists)
7
+ [2026-05-10 15:19:53] [SKILL] vue (1.0.0) → skipped (exists)
8
+ [2026-05-10 15:19:53] [SETTINGS] settings.json merged
9
+ [2026-05-10 15:19:53] [BACKUP] backups/CLAUDE.md.20260510.151953 (CLAUDE.md user version preserved)
@@ -0,0 +1 @@
1
+ [2026-05-10 15:19:53] [INFO] Install started (upgrade)
@@ -25,11 +25,5 @@
25
25
  "description": "前端业务模式库,loading/滚动加载/导入导出/批量操作/表单联动/大列表渲染/Service层封装/Pinia Store模式/分页数据管理等常见业务场景"
26
26
  }
27
27
  },
28
- "always_apply_skills": [
29
- "vue",
30
- "frontend-design",
31
- "frontend-code-review",
32
- "ui-ux-pro-max"
33
- ],
34
- "_active_profile": "vue3-frontend"
28
+ "always_apply_skills": []
35
29
  }
@@ -25,11 +25,5 @@
25
25
  "description": "前端业务模式库,loading/滚动加载/导入导出/批量操作/表单联动/大列表渲染/Service层封装/Pinia Store模式/分页数据管理等常见业务场景"
26
26
  }
27
27
  },
28
- "always_apply_skills": [
29
- "vue",
30
- "frontend-design",
31
- "frontend-code-review",
32
- "ui-ux-pro-max"
33
- ],
34
- "_active_profile": "vue3-frontend"
28
+ "always_apply_skills": []
35
29
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mdk-skills",
3
- "version": "2.2.1",
3
+ "version": "2.2.3",
4
4
  "description": "mdk-engineer - 沉稳靠谱的前端开发助手 Claude Skills 配置包,一键注入 .claude/ 技能目录和 CLAUDE.md 人设配置",
5
5
  "author": "XiaoMa",
6
6
  "license": "MIT",
package/scripts/cli.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
 
3
3
  const fs = require("fs");
4
4
  const path = require("path");
@@ -204,10 +204,11 @@ async function handleApi(req, res) {
204
204
  const pathname = url.pathname;
205
205
  const method = req.method;
206
206
 
207
- // CORS
207
+ // CORS & 防缓存
208
208
  res.setHeader("Access-Control-Allow-Origin", "*");
209
209
  res.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
210
210
  res.setHeader("Access-Control-Allow-Headers", "Content-Type");
211
+ res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
211
212
 
212
213
  if (method === "OPTIONS") {
213
214
  res.writeHead(204);
@@ -229,11 +230,18 @@ async function handleApi(req, res) {
229
230
  return sendJSON(res, result);
230
231
  }
231
232
 
232
- // POST /api/skills/toggle — 开关技能
233
+ // POST /api/skills/toggle — 开关技能(启用时自动安装)
233
234
  if (method === "POST" && pathname === "/api/skills/toggle") {
234
235
  const body = await parseBody(req);
235
236
  const { name, enabled } = body;
236
237
  if (!name) return sendJSON(res, { error: "缺少技能名" }, 400);
238
+ if (enabled) {
239
+ const src = path.join(pkgSkillsSource, name);
240
+ const dest = path.join(skillsDest, name);
241
+ if (fs.existsSync(src) && !fs.existsSync(dest)) {
242
+ copyDirSync(src, dest);
243
+ }
244
+ }
237
245
  const settings = readSettings();
238
246
  if (!settings.skills) settings.skills = {};
239
247
  if (!settings.skills[name]) settings.skills[name] = {};
@@ -1,7 +1,11 @@
1
1
  const BASE = "/api";
2
2
 
3
3
  async function request(path, options = {}) {
4
- const res = await fetch(BASE + path, {
4
+ // GET 请求加时间戳,绕开浏览器缓存
5
+ const url = (options.method || "GET") === "GET"
6
+ ? BASE + path + (path.includes("?") ? "&" : "?") + "_t=" + Date.now()
7
+ : BASE + path;
8
+ const res = await fetch(url, {
5
9
  headers: { "Content-Type": "application/json" },
6
10
  ...options,
7
11
  });
@@ -28,7 +28,7 @@
28
28
  </template>
29
29
 
30
30
  <script setup>
31
- import { ref, onMounted } from "vue";
31
+ import { ref, onMounted, onActivated, onUnmounted } from "vue";
32
32
  import { NIcon } from "naive-ui";
33
33
  import { RefreshOutline } from "@vicons/ionicons5";
34
34
  import SkillCard from "../components/SkillCard.vue";
@@ -48,7 +48,18 @@ async function loadSkills() {
48
48
  }
49
49
  }
50
50
 
51
+ // 首次加载
51
52
  onMounted(loadSkills);
53
+
54
+ // keep-alive 切回来时自动刷新
55
+ onActivated(loadSkills);
56
+
57
+ // 从其他窗口切回浏览器时自动刷新
58
+ function onFocus() {
59
+ if (document.visibilityState === "visible") loadSkills();
60
+ }
61
+ onMounted(() => document.addEventListener("visibilitychange", onFocus));
62
+ onUnmounted(() => document.removeEventListener("visibilitychange", onFocus));
52
63
  </script>
53
64
 
54
65
  <style scoped>
@@ -1 +0,0 @@
1
- [2026-05-10 14:45:01] [INFO] Install started (upgrade)
@@ -1,10 +0,0 @@
1
- [2026-05-10 14:45:01] [INFO] Install started (upgrade)
2
- [2026-05-10 14:45:01] [SKILL] frontend-code-review (1.0.0) → skipped (exists)
3
- [2026-05-10 14:45:01] [SKILL] frontend-design (1.0.0) → skipped (exists)
4
- [2026-05-10 14:45:01] [SKILL] skill-creator (1.0.0) → skipped (exists)
5
- [2026-05-10 14:45:01] [SKILL] ui-ux-pro-max (1.0.0) → skipped (exists)
6
- [2026-05-10 14:45:01] [SKILL] v3-fe-biz-patterns (1.0.0) → skipped (exists)
7
- [2026-05-10 14:45:01] [SKILL] vue (1.0.0) → skipped (exists)
8
- [2026-05-10 14:45:01] [SETTINGS] settings.json merged
9
- [2026-05-10 14:45:01] [BACKUP] backups/CLAUDE.md.20260510.144501 (CLAUDE.md user version preserved)
10
- [2026-05-10 14:51:55] [INFO] Install started (upgrade)
@@ -1,67 +0,0 @@
1
- {
2
- "version": 1,
3
- "profiles": [
4
- {
5
- "id": "vue3-frontend",
6
- "name": "Vue3 前端专项",
7
- "description": "Vue3 技术栈 | 业务架构 | 界面设计 | 代码规范评审",
8
- "skills": [
9
- "vue",
10
- "v3-fe-biz-patterns",
11
- "frontend-design",
12
- "frontend-code-review",
13
- "ui-ux-pro-max",
14
- "skill-creator"
15
- ],
16
- "always_apply": [
17
- "vue",
18
- "frontend-design",
19
- "frontend-code-review",
20
- "ui-ux-pro-max"
21
- ]
22
- },
23
- {
24
- "id": "react-frontend",
25
- "name": "React 前端专项",
26
- "description": "React 技术栈 | 界面设计 | 代码评审 | 通用前端能力",
27
- "skills": [
28
- "frontend-design",
29
- "frontend-code-review",
30
- "ui-ux-pro-max",
31
- "skill-creator"
32
- ],
33
- "always_apply": [
34
- "frontend-design",
35
- "frontend-code-review",
36
- "ui-ux-pro-max"
37
- ]
38
- },
39
- {
40
- "id": "backend-java",
41
- "name": "Java 后端开发",
42
- "description": "接口架构设计 | 数据库建模 | Java 后端体系能力",
43
- "skills": ["skill-creator"],
44
- "always_apply": []
45
- },
46
- {
47
- "id": "backend-python",
48
- "name": "Python 后端开发",
49
- "description": "接口架构设计 | 数据层设计 | Python 后端体系能力",
50
- "skills": ["skill-creator"],
51
- "always_apply": []
52
- },
53
- {
54
- "id": "backend-node",
55
- "name": "Node.js 后端开发",
56
- "description": "接口架构设计 | 服务端架构 | Node 后端体系能力",
57
- "skills": ["skill-creator"],
58
- "always_apply": []
59
- },
60
- {
61
- "id": "custom",
62
- "name": "自定义技能组合",
63
- "description": "自由勾选技能项,按需个性化配置",
64
- "skills": null
65
- }
66
- ]
67
- }
@@ -1,35 +0,0 @@
1
- {
2
- "skills": {
3
- "frontend-code-review": {
4
- "enabled": true,
5
- "description": "前端代码全面审查"
6
- },
7
- "frontend-design": {
8
- "enabled": true,
9
- "description": "创意前端界面设计,落地页/品牌页/营销页"
10
- },
11
- "skill-creator": {
12
- "enabled": true,
13
- "description": "创建和更新技能指令"
14
- },
15
- "ui-ux-pro-max": {
16
- "enabled": true,
17
- "description": "UI/UX 设计智能系统,50 种样式,21 种配色方案"
18
- },
19
- "vue": {
20
- "enabled": true,
21
- "description": "Vue 3 组件/组合式函数开发,提供 Composition API 最佳实践"
22
- },
23
- "v3-fe-biz-patterns": {
24
- "enabled": true,
25
- "description": "前端业务模式库,loading/滚动加载/导入导出/批量操作/表单联动/大列表渲染/Service层封装/Pinia Store模式/分页数据管理等常见业务场景"
26
- }
27
- },
28
- "always_apply_skills": [
29
- "vue",
30
- "frontend-design",
31
- "frontend-code-review",
32
- "ui-ux-pro-max"
33
- ],
34
- "_active_profile": "vue3-frontend"
35
- }
@@ -1,6 +0,0 @@
1
- {
2
- "name": "frontend-code-review",
3
- "version": "1.0.0",
4
- "description": "前端代码全面审查,含 React/Vue/Angular/原生 JS/TS 项目",
5
- "tags": ["frontend", "review", "react", "vue", "angular"]
6
- }
@@ -1,167 +0,0 @@
1
- ---
2
- name: frontend-code-review
3
- description: 当用户需要对前端代码进行全面审查时使用此技能,包括 React、Vue、Angular 或原生 JavaScript/TypeScript 项目。适用于代码审查、Pull Request 评审、性能审计、安全检查等场景。
4
- license: MIT
5
- author: Bamzc
6
- ---
7
-
8
- # 前端代码审查技能
9
-
10
- ## 技能用途
11
-
12
- 对前端代码进行系统化审查,涵盖代码质量、性能、安全、可访问性等多个维度。支持 React、Vue、Angular 和原生 JavaScript/TypeScript 项目。
13
-
14
- ## 审查工作流程
15
-
16
- ### 第一步:识别项目类型和范围
17
-
18
- 执行以下识别工作:
19
-
20
- 1. 确定框架类型(React、Vue、Angular、原生 JS/TS)
21
- 2. 评估代码规模(单组件、功能模块、完整应用)
22
- 3. 检查明显的语法错误、格式问题或导入错误
23
-
24
- ### 第二步:多维度系统审查
25
-
26
- 按照以下维度逐一审查代码:
27
-
28
- **代码质量**
29
- - 检查命名是否语义化且一致
30
- - 识别代码重复和可重构的机会
31
- - 确认函数/组件是否遵循单一职责原则
32
- - 评估文件组织和模块结构的合理性
33
-
34
- **功能实现**
35
- - 验证业务逻辑正确性
36
- - 检查边界情况和错误处理
37
- - 审查异步操作处理(Promise、async/await)
38
- - 确认加载状态和错误状态的用户反馈机制
39
-
40
- **性能优化**
41
- - 识别不必要的组件重渲染
42
- - 检查列表渲染的 key 使用是否正确
43
- - 评估对打包体积的影响
44
- - 审查图片优化策略(格式、懒加载、响应式)
45
- - 检查网络请求效率(缓存、去重、防抖节流)
46
-
47
- **安全性**
48
- - 检测 XSS 漏洞(未转义输入、dangerouslySetInnerHTML 使用)
49
- - 验证输入验证和数据清洗
50
- - 审查敏感数据处理(localStorage、API 令牌)
51
- - 检查 CSRF 保护机制
52
- - 评估第三方依赖的安全风险
53
-
54
- **可访问性 (a11y)**
55
- - 检查语义化 HTML 的使用
56
- - 验证 ARIA 属性的正确性
57
- - 测试键盘导航支持
58
- - 检查颜色对比度
59
- - 确认图片 alt 文本和表单 label
60
-
61
- **框架特定模式**
62
-
63
- *React:*
64
- - 检查 Hook 使用(useEffect 依赖数组、自定义 Hook 设计)
65
- - 识别闭包陷阱
66
- - 验证受控与非受控组件的正确使用
67
- - 评估 Context 使用的适当性
68
- - 审查状态管理设计(本地 vs 全局)
69
-
70
- *Vue 3 Composition API:*
71
- - 检查 ref/reactive 使用是否合理
72
- - 验证 computed/watch 使用是否正确
73
- - 评估组件通信方式(props/emit/provide/inject)
74
- - 检查生命周期钩子使用
75
- - 审查组合函数(Composables)抽取是否合理
76
-
77
- *TypeScript:*
78
- - 验证类型定义的准确性和完整性
79
- - 识别 `any` 类型的过度使用
80
- - 检查泛型使用的合理性
81
- - 评估接口/类型的可复用性
82
-
83
- **浏览器兼容性**
84
- - 检查目标浏览器支持的特性
85
- - 验证 CSS 供应商前缀
86
- - 评估 polyfill 必要性
87
- - 审查响应式设计实现
88
-
89
- ### 第三步:生成结构化报告
90
-
91
- 使用以下格式输出审查结果:
92
-
93
- ```markdown
94
- ## 🔍 代码审查报告
95
-
96
- ### 文件:[文件路径]
97
-
98
- #### ✅ 优秀实践
99
-
100
- 列出代码中做得好的地方:
101
- - 优雅的解决方案
102
- - 良好的设计模式
103
- - 清晰的代码结构
104
- - 周到的抽象设计
105
-
106
- #### ⚠️ 需要改进的问题
107
-
108
- | 类别 | 问题描述 | 改进建议 | 严重程度 |
109
- |------|---------|---------|----------|
110
- | 性能 | [具体问题] | [改进方案] | 🔴 高 / 🟡 中 / 🟢 低 |
111
-
112
- #### 📊 代码评分
113
-
114
- > ### 🎯 综合评分:X.X / 10
115
- > **等级:[🏆S/🥇A/🥈B/🥉C/⚠️D/❌F]([等级描述])** | **状态:[✅可直接上线/⚠️需修复后上线/❌需要重构]**
116
-
117
- | 维度 | 得分 | 评价 |
118
- |------|------|------|
119
- | 代码质量 | X/10 | [简要评价] |
120
- | 功能实现 | X/10 | [简要评价] |
121
- | 性能优化 | X/10 | [简要评价] |
122
- | 安全性 | X/10 | [简要评价] |
123
- | 可访问性 | X/10 | [简要评价] |
124
-
125
- **主要扣分项**:[具体说明扣分原因]
126
-
127
- #### 📝 改进建议
128
-
129
- - **优先修复**:[关键问题列表]
130
- - **后续优化**:[可选改进方向]
131
- ```
132
-
133
- **评分等级标准:**
134
-
135
- | 等级 | 分数范围 | 状态 | 含义 |
136
- |------|----------|------|------|
137
- | 🏆 S | 9.5-10 | ✅ 可直接上线 | 卓越,可作为最佳实践范本 |
138
- | 🥇 A | 8.5-9.4 | ✅ 可直接上线 | 优秀,生产级代码 |
139
- | 🥈 B | 7.0-8.4 | ⚠️ 修复后上线 | 良好,少量问题需修复 |
140
- | 🥉 C | 5.5-6.9 | ⚠️ 修复后上线 | 一般,需要认真修复优化 |
141
- | ⚠️ D | 4.0-5.4 | ❌ 需要重构 | 较差,建议较大范围重构 |
142
- | ❌ F | < 4.0 | ❌ 需要重构 | 不合格,建议重写 |
143
-
144
- **严重程度定义:**
145
- - 🔴 高:安全漏洞、严重 bug、崩溃风险 → 必须修复
146
- - 🟡 中:性能问题、代码规范、可维护性 → 建议修复
147
- - 🟢 低:代码风格、优化建议 → 可选改进
148
-
149
- ### 第四步:积极认可优秀实践
150
-
151
- 在报告中突出强调:
152
- - 优雅的解决方案和设计模式
153
- - 良好的编码实践
154
- - 结构清晰的代码组织
155
- - 周到的抽象和封装
156
-
157
- ## 审查深度调整策略
158
-
159
- 根据以下因素调整审查深度和重点:
160
-
161
- - **代码规模**:小改动快速审查核心问题,大功能进行全面深度审查
162
- - **代码上下文**:生产环境代码采用严格标准,原型代码可适度宽容
163
- - **时间限制**:时间紧张时按优先级审查(安全 > 性能 > 规范 > 风格)
164
-
165
- ## 补充资源
166
-
167
- 详细的审查检查清单和工具推荐请参考 `references/checklist.md`。