@wdyy/skills 0.1.1 → 0.1.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.
- package/README.md +15 -0
- package/lib/wdyy-cli.js +29 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -31,6 +31,18 @@ wdyy init
|
|
|
31
31
|
|
|
32
32
|
`wdyy init` 自动执行 `openspec init`,将 5 个受管理 Skill 安装到 `.agents/skills/`,并在 `docs/bug_record.md` 创建或追加 BUG 记录模板。若目标项目已有 `AGENTS.md`,原文件保持不变,命令将生成 `AGENTS_new.md`;每次运行都会覆盖更新 `.agents/skills/wdyy-*`,但不修改同级自定义 Skill。
|
|
33
33
|
|
|
34
|
+
### 仅更新已安装的 Skill
|
|
35
|
+
|
|
36
|
+
发布包含 Skill 更新的新版本后,先升级全局 CLI 包,再在目标项目根目录按需更新一个或全部受管理 Skill:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm install -g @wdyy/skills@latest
|
|
40
|
+
wdyy update-skill wdyy-logging-standard
|
|
41
|
+
wdyy update-skill --all
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`wdyy update-skill <skill-name>` 只接受 5 个受管理的 `wdyy-*` Skill,且仅替换指定目录;`--all` 替换全部 5 个受管理 Skill。两种方式都不会写入 `AGENTS.md` 或 `AGENTS_new.md`、追加 `docs/bug_record.md`,也不会执行 `openspec init`。首次初始化或需要重新生成项目规则时,使用 `wdyy init`。
|
|
45
|
+
|
|
34
46
|
中大型变更先使用 `/opsx:explore` 或 `/opsx:propose <change-name>`,在方案确认后使用 `/opsx:apply`;完成验证后使用 `/opsx:archive`。涉及数据库、内部 API、日志、部署时,按 `AGENTS.md` 的路由加载相应企业 Skill。配置仅从环境变量读取,不得提交秘密或生产环境 `.env`。
|
|
35
47
|
|
|
36
48
|
## 固定技术栈
|
|
@@ -62,11 +74,14 @@ npm pack --dry-run
|
|
|
62
74
|
确认身份与组织权限后,发布公开包:
|
|
63
75
|
|
|
64
76
|
```bash
|
|
77
|
+
npm login
|
|
65
78
|
npm whoami
|
|
66
79
|
npm org ls wdyy
|
|
67
80
|
npm publish --access public
|
|
68
81
|
```
|
|
69
82
|
|
|
83
|
+
`npm whoami` 返回 `E401` 表示当前 CLI 没有有效登录态,应重新执行 `npm login` 后再发布。已成功登录但 `npm publish --access public` 仍返回 `E404` 时,通常表示当前账号没有 `@wdyy` 组织的包创建或发布权限;请由该组织的 Owner 授予权限后重试。不要通过在命令行中传入 access token、验证码或恢复码来规避认证。
|
|
84
|
+
|
|
70
85
|
同一包名和版本只能发布一次。后续发布必须先升级版本,再重新执行全部发布前验证:
|
|
71
86
|
|
|
72
87
|
```bash
|
package/lib/wdyy-cli.js
CHANGED
|
@@ -50,21 +50,23 @@ const bugRecordTemplate = '- 日期:yyyy-mm-dd\n- 问题描述:\n- 解决方
|
|
|
50
50
|
function printHelp() {
|
|
51
51
|
console.log('用法: wdyy init');
|
|
52
52
|
console.log('在当前项目生成 AGENTS 规则、安装 wdyy Skill,并执行 openspec init。');
|
|
53
|
+
console.log('用法: wdyy update-skill <skill-name> | --all');
|
|
54
|
+
console.log('仅更新当前项目的一个或全部受管理 wdyy Skill,不执行项目初始化。');
|
|
53
55
|
}
|
|
54
56
|
|
|
55
|
-
async function installManagedSkills(targetRoot, writtenPaths) {
|
|
57
|
+
async function installManagedSkills(targetRoot, writtenPaths, skillNames = managedSkillNames) {
|
|
56
58
|
const skillsRoot = join(targetRoot, '.agents', 'skills');
|
|
57
59
|
await mkdir(skillsRoot, { recursive: true });
|
|
58
60
|
const temporaryRoot = await mkdtemp(join(skillsRoot, '.wdyy-skills-'));
|
|
59
61
|
|
|
60
62
|
try {
|
|
61
|
-
for (const skillName of
|
|
63
|
+
for (const skillName of skillNames) {
|
|
62
64
|
const source = join(packageRoot, '.well-known', 'skills', skillName);
|
|
63
65
|
const prepared = join(temporaryRoot, skillName);
|
|
64
66
|
await cp(source, prepared, { recursive: true, force: true, errorOnExist: false });
|
|
65
67
|
}
|
|
66
68
|
|
|
67
|
-
for (const skillName of
|
|
69
|
+
for (const skillName of skillNames) {
|
|
68
70
|
const destination = join(skillsRoot, skillName);
|
|
69
71
|
await rm(destination, { recursive: true, force: true });
|
|
70
72
|
await rename(join(temporaryRoot, skillName), destination);
|
|
@@ -139,6 +141,30 @@ export async function run(argumentsList) {
|
|
|
139
141
|
}
|
|
140
142
|
}
|
|
141
143
|
|
|
144
|
+
if (argumentsList[0] === 'update-skill') {
|
|
145
|
+
const skillArguments = argumentsList.slice(1);
|
|
146
|
+
const skillNames = skillArguments.length === 1 && skillArguments[0] === '--all'
|
|
147
|
+
? managedSkillNames
|
|
148
|
+
: skillArguments.length === 1 && managedSkillNames.includes(skillArguments[0])
|
|
149
|
+
? [skillArguments[0]]
|
|
150
|
+
: null;
|
|
151
|
+
|
|
152
|
+
if (!skillNames) {
|
|
153
|
+
printHelp();
|
|
154
|
+
return 1;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const writtenPaths = [];
|
|
158
|
+
try {
|
|
159
|
+
await installManagedSkills(process.cwd(), writtenPaths, skillNames);
|
|
160
|
+
return 0;
|
|
161
|
+
} catch (error) {
|
|
162
|
+
console.error(`Skill 更新失败: ${error.message}`);
|
|
163
|
+
if (writtenPaths.length > 0) console.error(`已写入路径:\n${writtenPaths.map((path) => `- ${path}`).join('\n')}`);
|
|
164
|
+
return 1;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
142
168
|
printHelp();
|
|
143
169
|
return argumentsList.length === 1 && ['--help', '-h'].includes(argumentsList[0]) ? 0 : 1;
|
|
144
170
|
}
|