@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 +16 -0
- package/bin/wl-skills.js +118 -24
- package/files/.github/docs/wl-skills-kit.md +13 -13
- package/package.json +7 -3
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/
|
|
29
|
-
docs/
|
|
30
|
-
src/
|
|
31
|
-
demo/
|
|
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("
|
|
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
|
-
|
|
114
|
+
if (!dryRun) {
|
|
115
|
+
fs.copyFileSync(src, dest);
|
|
116
|
+
}
|
|
92
117
|
|
|
93
|
-
if (
|
|
94
|
-
|
|
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(" 总计: " +
|
|
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
|
|
150
|
-
|
|
151
|
-
| 编辑器 | 配置路径
|
|
152
|
-
| ------------------ |
|
|
153
|
-
| **GitHub Copilot** | `.github/copilot-instructions.md` + `skills/`
|
|
154
|
-
| **Cursor** | `.cursor/rules
|
|
155
|
-
| **Windsurf** | `.
|
|
156
|
-
| **Kiro** | `.kiro/steering
|
|
157
|
-
| **Trae** | `.trae/rules
|
|
158
|
-
| **Claude Code** | `CLAUDE.md`
|
|
159
|
-
| **Roo / Cline** | `.clinerules`
|
|
160
|
-
| **AGENTS.md** | `AGENTS.md`(Linux Foundation 标准,通用兜底)
|
|
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** |
|
|
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.
|
|
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",
|