@agile-team/wl-skills-kit 1.0.0 → 1.1.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.0] - 2026-04-09
4
+
5
+ ### 新增:多编辑器支持(v1.1)
6
+
7
+ - CLI 安装时自动生成 8 个编辑器配置文件(单源头:从 `copilot-instructions.md` 动态生成)
8
+ - `AGENTS.md` — Linux Foundation 通用标准,绝大多数 AI 工具均支持
9
+ - `CLAUDE.md` — Claude Code / Claude CLI
10
+ - `.clinerules` — Roo Code / Cline
11
+ - `.cursorrules` — Cursor(legacy 格式,兼容新版)
12
+ - `.cursor/rules/conventions.mdc` — Cursor(新格式,带 `alwaysApply: true`)
13
+ - `.windsurfrules` — Windsurf (Cascade)
14
+ - `.kiro/steering/conventions.md` — Kiro
15
+ - `.trae/rules/conventions.md` — Trae
16
+ - `--dry-run` 分两阶段展示:静态文件 + 编辑器配置文件
17
+ - `--help` 信息更新,列出所有新增写入路径
18
+
3
19
  ## [1.0.0] - 2026-04-08
4
20
 
5
21
  ### 初始发布
package/bin/wl-skills.js CHANGED
@@ -1,9 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * wl-skills-kit CLI
4
+ * wl-skills-kit CLI v1.1
5
+ *
6
+ * 功能:
7
+ * 1. 将 files/ 目录下的所有文件按原始路径拷贝到当前工作目录
8
+ * 2. 从 copilot-instructions.md 动态生成多编辑器配置文件
9
+ * 覆盖 Cursor / Windsurf / Kiro / Trae / Claude Code / Roo/Cline / AGENTS.md
5
10
  *
6
- * 功能:将 files/ 目录下的所有文件按原始路径拷贝到当前工作目录。
7
11
  * 用法:npx @agile-team/wl-skills-kit [--dry-run]
8
12
  */
9
13
 
@@ -25,10 +29,18 @@ if (showHelp) {
25
29
  npx @agile-team/wl-skills-kit --dry-run 预览将要写入的文件(不实际写入)
26
30
 
27
31
  安装后写入:
28
- .github/ AI 指令 + Skills + 文档
29
- docs/ 组件 API 文档
30
- src/ 通用组件 + 类型定义
31
- demo/ 领域样例(AI 学习参考)
32
+ .github/ AI 指令 + Skills + 文档(GitHub Copilot)
33
+ docs/ 组件 API 文档
34
+ src/ 通用组件 + 类型定义
35
+ demo/ 领域样例(AI 学习参考)
36
+ AGENTS.md 通用 AI 编辑器兜底(Linux Foundation 标准)
37
+ CLAUDE.md Claude Code / Claude CLI
38
+ .clinerules Roo Code / Cline
39
+ .cursorrules Cursor(legacy)
40
+ .cursor/rules/ Cursor(新格式)
41
+ .windsurfrules Windsurf (Cascade)
42
+ .kiro/steering/ Kiro
43
+ .trae/rules/ Trae
32
44
  `);
33
45
  process.exit(0);
34
46
  }
@@ -50,7 +62,24 @@ function walkDir(dir, baseDir, fileList) {
50
62
  return fileList;
51
63
  }
52
64
 
53
- // 主逻辑
65
+ /**
66
+ * 写入文件(自动创建目录)
67
+ * @returns {"created"|"updated"}
68
+ */
69
+ function writeFile(destPath, content) {
70
+ const destDir = path.dirname(destPath);
71
+ if (!fs.existsSync(destDir)) {
72
+ fs.mkdirSync(destDir, { recursive: true });
73
+ }
74
+ const exists = fs.existsSync(destPath);
75
+ if (!dryRun) {
76
+ fs.writeFileSync(destPath, content, "utf8");
77
+ }
78
+ return exists ? "updated" : "created";
79
+ }
80
+
81
+ // ─── 主逻辑 ────────────────────────────────────────────────────────────────
82
+
54
83
  console.log("");
55
84
  console.log(" wl-skills-kit v" + require("../package.json").version);
56
85
  console.log(" 目标目录: " + TARGET_DIR);
@@ -61,44 +90,109 @@ if (!fs.existsSync(FILES_DIR)) {
61
90
  process.exit(1);
62
91
  }
63
92
 
93
+ let created = 0;
94
+ let updated = 0;
95
+
96
+ // ── Step 1: 复制 files/ 静态文件 ─────────────────────────────────────────
97
+
64
98
  const files = walkDir(FILES_DIR, FILES_DIR);
65
99
 
66
100
  if (dryRun) {
67
- console.log(" --dry-run 模式,以下文件将被写入:\n");
68
- for (const file of files) {
69
- const targetPath = path.join(TARGET_DIR, file);
70
- const exists = fs.existsSync(targetPath);
71
- console.log(" " + (exists ? "覆盖" : "新增") + " " + file);
72
- }
73
- console.log("\n 共 " + files.length + " 个文件(未实际写入)");
74
- process.exit(0);
101
+ console.log(" [Step 1] files/ 静态文件:\n");
75
102
  }
76
103
 
77
- let created = 0;
78
- let updated = 0;
79
-
80
104
  for (const file of files) {
81
105
  const src = path.join(FILES_DIR, file);
82
106
  const dest = path.join(TARGET_DIR, file);
83
107
  const destDir = path.dirname(dest);
84
108
 
85
- // 确保目标目录存在
86
109
  if (!fs.existsSync(destDir)) {
87
110
  fs.mkdirSync(destDir, { recursive: true });
88
111
  }
89
112
 
90
113
  const exists = fs.existsSync(dest);
91
- fs.copyFileSync(src, dest);
114
+ if (!dryRun) {
115
+ fs.copyFileSync(src, dest);
116
+ }
92
117
 
93
- if (exists) {
94
- updated++;
118
+ if (dryRun) {
119
+ console.log(" " + (exists ? "覆盖" : "新增") + " " + file);
95
120
  } else {
96
- created++;
121
+ exists ? updated++ : created++;
122
+ }
123
+ }
124
+
125
+ // ── Step 2: 动态生成多编辑器配置文件 ────────────────────────────────────
126
+
127
+ // 读取 copilot-instructions.md(来自 files/ 包内,保证内容与安装文件一致)
128
+ const INSTRUCTIONS_SRC = path.join(
129
+ FILES_DIR,
130
+ ".github",
131
+ "copilot-instructions.md"
132
+ );
133
+
134
+ if (fs.existsSync(INSTRUCTIONS_SRC)) {
135
+ const raw = fs.readFileSync(INSTRUCTIONS_SRC, "utf8");
136
+ const AUTO_HEADER =
137
+ "<!-- 由 @agile-team/wl-skills-kit 自动生成。源文件:.github/copilot-instructions.md -->\n" +
138
+ "<!-- 请勿手动编辑本文件,更新时重新执行:npx @agile-team/wl-skills-kit@latest -->\n\n";
139
+
140
+ // Cursor 新格式 .mdc 需要 YAML frontmatter
141
+ const CURSOR_MDC_HEADER =
142
+ "---\n" +
143
+ 'description: "项目编码规范(由 wl-skills-kit 自动生成)"\n' +
144
+ "alwaysApply: true\n" +
145
+ "---\n\n" +
146
+ AUTO_HEADER;
147
+
148
+ // [目标相对路径, 文件内容]
149
+ const editorConfigs = [
150
+ // 通用兜底(Linux Foundation 标准,绝大多数 AI 工具均支持)
151
+ ["AGENTS.md", AUTO_HEADER + raw],
152
+ // Claude Code / Claude CLI
153
+ ["CLAUDE.md", AUTO_HEADER + raw],
154
+ // Roo Code / Cline
155
+ [".clinerules", AUTO_HEADER + raw],
156
+ // Cursor — legacy(根目录,仍被新版支持)
157
+ [".cursorrules", AUTO_HEADER + raw],
158
+ // Cursor — 新格式(带 frontmatter 的 .mdc)
159
+ [".cursor/rules/conventions.mdc", CURSOR_MDC_HEADER + raw],
160
+ // Windsurf (Cascade)
161
+ [".windsurfrules", AUTO_HEADER + raw],
162
+ // Kiro
163
+ [".kiro/steering/conventions.md", AUTO_HEADER + raw],
164
+ // Trae
165
+ [".trae/rules/conventions.md", AUTO_HEADER + raw]
166
+ ];
167
+
168
+ if (dryRun) {
169
+ console.log("\n [Step 2] 多编辑器配置文件(从 copilot-instructions.md 生成):\n");
97
170
  }
171
+
172
+ for (const [relPath, content] of editorConfigs) {
173
+ const dest = path.join(TARGET_DIR, relPath);
174
+ const exists = fs.existsSync(dest);
175
+ if (dryRun) {
176
+ console.log(" " + (exists ? "覆盖" : "新增") + " [编辑器] " + relPath);
177
+ } else {
178
+ const result = writeFile(dest, content);
179
+ result === "created" ? created++ : updated++;
180
+ }
181
+ }
182
+ }
183
+
184
+ if (dryRun) {
185
+ const editorCount = fs.existsSync(INSTRUCTIONS_SRC) ? 8 : 0;
186
+ console.log(
187
+ "\n 共 " +
188
+ (files.length + editorCount) +
189
+ " 个文件(未实际写入)"
190
+ );
191
+ process.exit(0);
98
192
  }
99
193
 
100
194
  console.log(" ✔ 完成!");
101
195
  console.log(" 新增: " + created + " 个文件");
102
196
  console.log(" 覆盖: " + updated + " 个文件");
103
- console.log(" 总计: " + files.length + " 个文件");
197
+ console.log(" 总计: " + (created + updated) + " 个文件");
104
198
  console.log("");
@@ -146,18 +146,18 @@ mock/ ← Mock 数据
146
146
 
147
147
  v1.0 聚焦 **GitHub Copilot**(`.github/` 目录即完整配置)。
148
148
 
149
- v1.1 规划:将各编辑器配置**预生成**并包含在 `files/` 中(发布前由开发脚本从 `.github/` 源转换,安装时原样拷贝,**无运行时转换逻辑**)。
150
-
151
- | 编辑器 | 配置路径 | 状态 |
152
- | ------------------ | ---------------------------------------------- | ------- |
153
- | **GitHub Copilot** | `.github/copilot-instructions.md` + `skills/` | ✅ v1.0 |
154
- | **Cursor** | `.cursor/rules/*.mdc` | 🔜 v1.1 |
155
- | **Windsurf** | `.windsurf/rules/*.md` | 🔜 v1.1 |
156
- | **Kiro** | `.kiro/steering/*.md` | 🔜 v1.1 |
157
- | **Trae** | `.trae/rules/*.md` | 🔜 v1.1 |
158
- | **Claude Code** | `CLAUDE.md` | 🔜 v1.1 |
159
- | **Roo / Cline** | `.clinerules` | 🔜 v1.1 |
160
- | **AGENTS.md** | `AGENTS.md`(Linux Foundation 标准,通用兜底) | 🔜 v1.1 |
149
+ v1.1 实现:CLI 安装时自动从 `.github/copilot-instructions.md` **动态生成**各编辑器配置文件。单一源头,更新 `copilot-instructions.md` 后重新运行即同步所有编辑器配置。
150
+
151
+ | 编辑器 | 配置路径 | 状态 |
152
+ | ------------------ | -------------------------------------------------------------- | ------- |
153
+ | **GitHub Copilot** | `.github/copilot-instructions.md` + `skills/` | ✅ v1.0 |
154
+ | **Cursor** | `.cursorrules` + `.cursor/rules/conventions.mdc` (alwaysApply) | v1.1 |
155
+ | **Windsurf** | `.windsurfrules` | v1.1 |
156
+ | **Kiro** | `.kiro/steering/conventions.md` | v1.1 |
157
+ | **Trae** | `.trae/rules/conventions.md` | v1.1 |
158
+ | **Claude Code** | `CLAUDE.md` | v1.1 |
159
+ | **Roo / Cline** | `.clinerules` | v1.1 |
160
+ | **AGENTS.md** | `AGENTS.md`(Linux Foundation 标准,通用兜底) | v1.1 |
161
161
 
162
162
  > **原则**:AGENTS.md 是跨工具兜底标准,新工具出来大概率支持它。
163
163
 
@@ -250,7 +250,7 @@ MAJOR.MINOR.PATCH
250
250
  | 阶段 | 内容 | 优先级 |
251
251
  | -------- | ----------------------------------------------------------------- | ------ |
252
252
  | **v1.0** | Skills + 文档 + 组件 + demo 样例(Copilot) | 🔴 高 |
253
- | **v1.1** | 多编辑器配置预生成(Cursor / Windsurf / Kiro / Trae / AGENTS.md | 🟡 |
253
+ | **v1.1** | 多编辑器配置自动生成(Cursor / Windsurf / Kiro / Trae / Claude Code / AGENTS.md)| 已发布 |
254
254
  | **v1.2** | `--dry-run` 预览 + `--diff` 变更对比 | 🟡 中 |
255
255
  | **v2.0** | 纳入 `components/template/`(成熟后) | 🟢 低 |
256
256
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@agile-team/wl-skills-kit",
3
- "version": "1.0.0",
4
- "description": "AI Skill 模板包 — 一键导入 AI 指令 + 组件文档 + 通用组件 + 领域样例",
3
+ "version": "1.1.0",
4
+ "description": "AI Skill 模板包 — 一键导入 AI 指令 + 组件文档 + 通用组件 + 领域样例,覆盖 Copilot/Cursor/Windsurf/Kiro 等主流 AI 编辑器",
5
5
  "bin": {
6
6
  "wl-skills-kit": "./bin/wl-skills.js"
7
7
  },
@@ -17,7 +17,11 @@
17
17
  "copilot",
18
18
  "vue3",
19
19
  "template",
20
- "codegen"
20
+ "codegen",
21
+ "cursor",
22
+ "windsurf",
23
+ "kiro",
24
+ "agents"
21
25
  ],
22
26
  "author": "JHLC Frontend Team",
23
27
  "license": "MIT",