@yottameta/yotta-skills-plugin 0.6.2 → 0.7.1
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/.agents/plugins/marketplace.json +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/skills/yotta-skills/SKILL.md +3 -1
- package/skills/yotta-skills/bin/yotta-skills.js +15 -8
- package/skills/yotta-skills/references/faq.md +84 -0
- package/skills/yotta-skills/references/skill-list.md +17 -17
- package/skills/yotta-skills/references/walkthroughs.md +61 -0
- package/skills/yotta-skills/scripts/yotta-skills-mcp.py +1 -1
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"authentication": "ON_INSTALL"
|
|
13
13
|
},
|
|
14
14
|
"category": "Developer Tools",
|
|
15
|
-
"version": "0.
|
|
15
|
+
"version": "0.7.1",
|
|
16
16
|
"description": "YuanGe (元阁) - orchestration routing, inventory, and one-command installer for the YottaMeta skill family (zero dependencies, Node.js only).",
|
|
17
17
|
"interface": {
|
|
18
18
|
"displayName": "元阁 yotta-skills",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"authentication": "ON_INSTALL"
|
|
13
13
|
},
|
|
14
14
|
"category": "Developer Tools",
|
|
15
|
-
"version": "0.
|
|
15
|
+
"version": "0.7.1",
|
|
16
16
|
"description": "YuanGe (元阁) - orchestration routing, inventory, and one-command installer for the YottaMeta skill family (zero dependencies, Node.js only).",
|
|
17
17
|
"interface": {
|
|
18
18
|
"displayName": "元阁 yotta-skills",
|
package/package.json
CHANGED
package/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "yotta-skills",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.7.1",
|
|
5
5
|
"description": "YuanGe (元阁) - orchestration routing, inventory, and one-command installer for the YottaMeta skill family (zero dependencies, Node.js only).",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "YottaMeta",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yotta-skills
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.7.1
|
|
4
4
|
description: 元阁 -- 元阁全家技能的总编排策划 + 编排路由 + 一键安装器 + 技能盘点。路由层:--route / route_request 按需求摘要给出候选组合、调用顺序、角色、置信度、依据、已装/缺失状态与安装命令,只建议不自动安装;非元阁家族已装技能按 frontmatter description 机械匹配作并列候选(标注来源与未扫描状态,只读不自动调用);策划层:按场景给出「该组合哪几个元技能、组合强在哪、怎么自动装+自动用」;安装层:一条命令把 YottaMeta 已发布的全部 yotta-* 技能装进指定智能体或目录;盘点层:--inventory / --reindex 扫描本机已装技能生成/更新注册表,新装技能自动被发现(install/update 后自动 re-index,会话开工可先跑 --reindex 与 update --check(联网只读检查更新);自包含零依赖,不依赖任何元技能);MCP 按需加载(可选:list_installed_skills/describe_skill/reindex/route_request,不常驻,未加载降级 CLI)。支持 --list 清单 / --route 路由 / install / update / update --check(只读检查)/ update --auto(家族自动更新)/ --inventory / --reindex / --dry-run 预览 / --pin 锁版本。触发:需要批量安装或更新元阁全家技能、按场景组合多个元技能、路由或判断该用哪些技能、盘点或查看本机已装技能、重扫技能注册表、给某个智能体或目录一次性铺齐 yotta-* 技能、预览安装清单、锁版本安装、或用户说 元阁/装全家/一次装齐/yotta-skills/install-all/更新全家/检查更新/自动更新/该用哪个技能/路由技能/盘点技能/查看已装技能 等。边界(Do NOT trigger):只做「组合策划 + 静态路由建议 + 清单 + 下载 + 落位 + 汇总 + 盘点 + re-index」,不含技能本体、不做技能内容开发、不 -g 污染全局、不自动安装缺失技能;装前摘要仅供参考,安装决策由用户确认。
|
|
5
5
|
license: MIT
|
|
6
6
|
metadata:
|
|
@@ -272,3 +272,5 @@ npx -y @yottameta/yotta-skills --route "检查代码质量,别糊弄" --json
|
|
|
272
272
|
- 全家技能清单(人工可读版):`references/skill-list.md`(机器权威源为 `skills.json`)。
|
|
273
273
|
- 内部机制:`references/install-flow.md`。
|
|
274
274
|
- 新手中文教程:`references/tutorial.md`。
|
|
275
|
+
- 常见问题:`references/faq.md`。
|
|
276
|
+
- 复杂场景走查:`references/walkthroughs.md`。
|
|
@@ -35,7 +35,7 @@ function loadManifest() {
|
|
|
35
35
|
try {
|
|
36
36
|
data = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
37
37
|
} catch (e) {
|
|
38
|
-
die('无法读取技能清单: ' + file + '(' + e.message + ')');
|
|
38
|
+
die('无法读取技能清单: ' + file + '(' + e.message + ')', 2, '检查 YOTTA_SKILLS_MANIFEST 或 skills.json 是否存在且为合法 JSON。');
|
|
39
39
|
}
|
|
40
40
|
const list = Array.isArray(data) ? data : data.skills;
|
|
41
41
|
if (!Array.isArray(list) || list.length === 0) die('技能清单为空: ' + file);
|
|
@@ -85,8 +85,9 @@ function resolveUserDir(rel) {
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
// ── 工具函数 ───────────────────────────────────────────────────────────────
|
|
88
|
-
function die(msg, code) {
|
|
88
|
+
function die(msg, code, hint) {
|
|
89
89
|
process.stderr.write('错误:' + msg + '\n');
|
|
90
|
+
if (hint) process.stderr.write('修复建议:' + hint + '\n');
|
|
90
91
|
process.exit(code === undefined ? 2 : code);
|
|
91
92
|
}
|
|
92
93
|
function out(s) { process.stdout.write(s + '\n'); }
|
|
@@ -141,7 +142,7 @@ function parseArgs(argv) {
|
|
|
141
142
|
const positionals = [];
|
|
142
143
|
for (let i = 0; i < argv.length; i++) {
|
|
143
144
|
const a = argv[i];
|
|
144
|
-
const take = (name) => { const v = argv[i + 1]; if (v === undefined || v.startsWith('--')) die(name + ' 缺少参数值'); i++; return v; };
|
|
145
|
+
const take = (name) => { const v = argv[i + 1]; if (v === undefined || v.startsWith('--')) die(name + ' 缺少参数值', 2, '请为该选项提供一个非空值;可用 --help 查看用法。'); i++; return v; };
|
|
145
146
|
if (a === '--list' || a === '-l') opts.list = true;
|
|
146
147
|
else if (a === '--dry-run') opts.dryRun = true;
|
|
147
148
|
else if (a === '--pin') opts.pin = true;
|
|
@@ -152,7 +153,7 @@ function parseArgs(argv) {
|
|
|
152
153
|
else if (a === '--inventory' || a === '--inv') opts.inventory = true;
|
|
153
154
|
else if (a === '--route') {
|
|
154
155
|
const value = argv[i + 1];
|
|
155
|
-
if (value === undefined || value.startsWith('--')) die('--route 缺少需求摘要');
|
|
156
|
+
if (value === undefined || value.startsWith('--')) die('--route 缺少需求摘要', 2, '请提供一句需求描述,例如 --route "帮我做发布前质量检查"。');
|
|
156
157
|
opts.route = value;
|
|
157
158
|
i++;
|
|
158
159
|
}
|
|
@@ -168,7 +169,7 @@ function parseArgs(argv) {
|
|
|
168
169
|
else if (a === '--check') opts.check = true;
|
|
169
170
|
else if (a === '--auto') opts.auto = true;
|
|
170
171
|
else if (a === '--registry') opts.registry = take('--registry');
|
|
171
|
-
else if (a.startsWith('-')) die('未知参数: ' + a);
|
|
172
|
+
else if (a.startsWith('-')) die('未知参数: ' + a, 2, '可用 --help 查看支持的选项。');
|
|
172
173
|
else positionals.push(a);
|
|
173
174
|
}
|
|
174
175
|
// 命令解析:install / update,其余位置参数 = 技能 slug(可多个)
|
|
@@ -201,7 +202,7 @@ function selectSkills(opts) {
|
|
|
201
202
|
const picked = [];
|
|
202
203
|
for (const slug of opts.skills) {
|
|
203
204
|
const s = findSkill(slug);
|
|
204
|
-
if (!s) die('未知技能: ' + slug + '(可用: yotta-skills --list)');
|
|
205
|
+
if (!s) die('未知技能: ' + slug + '(可用: yotta-skills --list)', 2, '请先运行 --list 查看技能名,或检查拼写。');
|
|
205
206
|
picked.push(s);
|
|
206
207
|
}
|
|
207
208
|
return picked;
|
|
@@ -748,7 +749,7 @@ function main() {
|
|
|
748
749
|
let dest = resolveTargetDir(opts);
|
|
749
750
|
if (!dest && !opts.dryRun) dest = detectProjectDir();
|
|
750
751
|
if (!dest && command === 'install' && !opts.dryRun) {
|
|
751
|
-
die('未指定目标:请用 --agent <name> 或 --dir <path>(当前目录未检测到项目级技能目录)。', 4);
|
|
752
|
+
die('未指定目标:请用 --agent <name> 或 --dir <path>(当前目录未检测到项目级技能目录)。', 4, '未收录智能体也可用 --dir 指定其技能目录。');
|
|
752
753
|
}
|
|
753
754
|
|
|
754
755
|
if (opts.dryRun) {
|
|
@@ -785,4 +786,10 @@ function main() {
|
|
|
785
786
|
}
|
|
786
787
|
}
|
|
787
788
|
|
|
788
|
-
|
|
789
|
+
try {
|
|
790
|
+
main();
|
|
791
|
+
} catch (err) {
|
|
792
|
+
process.stderr.write('错误:' + (err && err.message ? err.message : String(err)) + '\n');
|
|
793
|
+
process.stderr.write('修复建议:检查目标目录权限、npm 可用性与网络;可用 --help 查看用法。\n');
|
|
794
|
+
process.exitCode = 1;
|
|
795
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# 元阁常见问题
|
|
2
|
+
|
|
3
|
+
## 速查索引
|
|
4
|
+
|
|
5
|
+
- **安装目标**:未指定目标怎么办 · 支持哪些智能体 · 装完为什么看不到
|
|
6
|
+
- **网络与源**:国内访问慢 · 镜像延迟 · 网络失败
|
|
7
|
+
- **更新**:`update --check` 退出码 · 自动更新边界 · 幂等
|
|
8
|
+
- **版本**:`--pin` 与默认策略 · 清单漂移 · 单技能安装
|
|
9
|
+
- **安全**:装前扫描 · 目标目录校验 · 失败恢复
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. 安装时提示「未指定目标」怎么办?
|
|
14
|
+
|
|
15
|
+
这表示当前目录没有检测到项目级技能目录。两种解决方式:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx -y @yottameta/yotta-skills --agent codex
|
|
19
|
+
npx -y @yottameta/yotta-skills --dir /path/to/skills
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
`--agent` 使用内置智能体默认目录;`--dir` 适合自定义目录或未收录智能体。
|
|
23
|
+
|
|
24
|
+
## 2. 支持哪些智能体?
|
|
25
|
+
|
|
26
|
+
内置 17 个键名:`claude`、`cursor`、`codex`、`gemini`、`goose`、`amp`、`opencode`、`windsurf`、`workbuddy`、`kiro`、`trae`、`trae-cn`、`qwen`、`comate`、`codebuddy`、`kimi`、`agents`。未收录的智能体用 `--dir` 指定目录。
|
|
27
|
+
|
|
28
|
+
## 3. 国内访问 npm 慢或失败怎么办?
|
|
29
|
+
|
|
30
|
+
可用 `YOTTA_SKILLS_NPM_FLAGS` 追加 registry 参数:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
YOTTA_SKILLS_NPM_FLAGS="--registry=https://registry.npmmirror.com" npx -y @yottameta/yotta-skills --agent codex
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
新版本发布后镜像可能有延迟;如需立即获取,可临时改回 npm 官方源并配置代理。
|
|
37
|
+
|
|
38
|
+
## 4. `update --check` 的退出码是什么意思?
|
|
39
|
+
|
|
40
|
+
- `0`:全部最新
|
|
41
|
+
- `3`:存在可更新技能
|
|
42
|
+
- `1`:检查失败(网络或 registry 异常)
|
|
43
|
+
|
|
44
|
+
该命令只读,不修改文件。
|
|
45
|
+
|
|
46
|
+
## 5. `update --auto` 会更新所有技能吗?
|
|
47
|
+
|
|
48
|
+
只自动更新元阁家族内技能(`yotta-*` 且在清单中)。其他已装技能只提示,不自动改动。
|
|
49
|
+
|
|
50
|
+
## 6. 重复安装会重复占空间吗?
|
|
51
|
+
|
|
52
|
+
不会。默认按清单版本判断,已一致的技能跳过;需要强制覆盖时加 `--force`。
|
|
53
|
+
|
|
54
|
+
## 7. `--pin` 和默认版本策略怎么选?
|
|
55
|
+
|
|
56
|
+
默认策略是同 major 跟随最新 patch,适合日常使用;`--pin` 锁定清单精确版本,适合可复现部署。
|
|
57
|
+
|
|
58
|
+
## 8. 为什么清单和文档版本会不一致?
|
|
59
|
+
|
|
60
|
+
人工文档可能滞后。机器权威源是 `skills.json`,人工可读副本是 `references/skill-list.md`;当前版本已加入自动测试,两者不一致会导致测试失败。
|
|
61
|
+
|
|
62
|
+
## 9. 如何只安装部分技能?
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npx -y @yottameta/yotta-skills install yotta-memory yotta-workflow --agent codex
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
也可以先用 `--route` 查看建议组合,再按需安装。
|
|
69
|
+
|
|
70
|
+
## 10. 安装前安全扫描怎么用?
|
|
71
|
+
|
|
72
|
+
默认会查找可用的元信引擎并输出摘要;可用 `--verify <path>` 指定引擎,或 `--skip-scan` 关闭。扫描结果仅提示,不替代人工判断。
|
|
73
|
+
|
|
74
|
+
## 11. 安装失败后如何恢复?
|
|
75
|
+
|
|
76
|
+
查看汇总中的失败原因,先修复目录权限或网络,再单独安装失败技能:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npx -y @yottameta/yotta-skills install <slug> --dir /path/to/skills
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## 12. 装完为什么智能体里看不到?
|
|
83
|
+
|
|
84
|
+
确认安装目录与智能体实际读取目录一致;安装后通常需要重启会话或重新加载技能列表。
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
# 全家技能清单(22 个)
|
|
2
2
|
|
|
3
3
|
> 机器权威源:`skills.json`(随包分发);本文件为人工可读副本,新技能发布后须同步更新
|
|
4
|
-
> `skills.json`(登记表为内部台账,不随包分发)。清单更新日期:2026-
|
|
4
|
+
> `skills.json`(登记表为内部台账,不随包分发)。清单更新日期:2026-09-09。
|
|
5
5
|
|
|
6
6
|
| slug | 中文名 | npm 包 | 清单版本 | 说明 |
|
|
7
7
|
|---|---|---|---|---|
|
|
8
|
-
| `yotta-anti-shallow` | 元谨 | `@yottameta/yotta-anti-shallow` | 1.
|
|
9
|
-
| `yotta-code-quality` | 元质 | `@yottameta/yotta-code-quality` | 0.
|
|
10
|
-
| `yotta-workflow` | 元序 | `@yottameta/yotta-workflow` | 0.
|
|
11
|
-
| `yotta-memory` | 元忆 | `@yottameta/yotta-memory` | 0.
|
|
12
|
-
| `yotta-learn` | 元习 | `@yottameta/yotta-learn` | 0.
|
|
13
|
-
| `yotta-security-audit` | 元安 | `@yottameta/yotta-security-audit` | 0.
|
|
14
|
-
| `yotta-vetter` | 元审 | `@yottameta/yotta-vetter` | 0.
|
|
8
|
+
| `yotta-anti-shallow` | 元谨 | `@yottameta/yotta-anti-shallow` | 1.4.0 | 防 AI 敷衍规则引擎(深入分析/根因追溯时激活) |
|
|
9
|
+
| `yotta-code-quality` | 元质 | `@yottameta/yotta-code-quality` | 0.4.0 | 结对式代码质量评审(十二类腐化风险 + 0-100 健康分) |
|
|
10
|
+
| `yotta-workflow` | 元序 | `@yottameta/yotta-workflow` | 0.3.0 | 跨会话/跨项目通用工作流协议(状态就近存) |
|
|
11
|
+
| `yotta-memory` | 元忆 | `@yottameta/yotta-memory` | 0.11.0 | 有权限边界的文件式智能体记忆(FACT/PREF/BOUND/COMMIT) |
|
|
12
|
+
| `yotta-learn` | 元习 | `@yottameta/yotta-learn` | 0.2.0 | 学习沉淀 CLI:错误/纠正/洞见沉淀为 .learnings/ 条目 |
|
|
13
|
+
| `yotta-security-audit` | 元安 | `@yottameta/yotta-security-audit` | 0.2.2 | 安全扫描引擎:13 类检测器 + 系统安全基线 |
|
|
14
|
+
| `yotta-vetter` | 元审 | `@yottameta/yotta-vetter` | 0.2.3 | 安全审查协议:四阶段 review + SAFE TO INSTALL 判定 |
|
|
15
15
|
| `yotta-recon` | 元析 | `@yottameta/yotta-recon` | 0.1.5 | 跨智能体网络侦察:零依赖端口/服务/版本指纹探测 |
|
|
16
16
|
| `yotta-guardian` | 元盾 | `@yottameta/yotta-guardian` | 0.1.2 | 跨智能体危险调用拦截护栏:确定性规则 + 可插拔意图验证 |
|
|
17
|
-
| `yotta-humanize` | 元真 | `@yottameta/yotta-humanize` | 0.
|
|
18
|
-
| `yotta-logs` | 元史 | `@yottameta/yotta-logs` | 0.
|
|
19
|
-
| `yotta-security-testing` | 元测 | `@yottameta/yotta-security-testing` | 0.
|
|
20
|
-
| `yotta-agent-hardening` | 元安全 | `@yottameta/yotta-agent-hardening` | 0.
|
|
17
|
+
| `yotta-humanize` | 元真 | `@yottameta/yotta-humanize` | 0.2.0 | 去 AI 味中文写作编辑:检测器引擎 |
|
|
18
|
+
| `yotta-logs` | 元史 | `@yottameta/yotta-logs` | 0.3.0 | 跨智能体历史会话 / 记忆日志检索 |
|
|
19
|
+
| `yotta-security-testing` | 元测 | `@yottameta/yotta-security-testing` | 0.3.0 | 有纪律的 AI 安全测试方法论 + Scope Guard 五道防线 |
|
|
20
|
+
| `yotta-agent-hardening` | 元安全 | `@yottameta/yotta-agent-hardening` | 0.2.4 | 防御向 AI 智能体自身安全加固(配置面静态扫描三域) |
|
|
21
21
|
| `yotta-skill-creator` | 元造 | `@yottameta/yotta-skill-creator` | 0.1.0 | 工坊「造」:端到端造技能脚手架 |
|
|
22
|
-
| `yotta-publish-guard` | 元守 | `@yottameta/yotta-publish-guard` | 0.
|
|
22
|
+
| `yotta-publish-guard` | 元守 | `@yottameta/yotta-publish-guard` | 0.3.0 | 工坊「守」:发布前守门(版本四件对齐 + 三通道查重) |
|
|
23
23
|
| `yotta-logwatch` | 元察 | `@yottameta/yotta-logwatch` | 0.2.7 | 安全日志分析检测引擎(攻击链识别/告警聚合) |
|
|
24
|
-
| `yotta-intel` | 元情 | `@yottameta/yotta-intel` | 0.
|
|
25
|
-
| `yotta-secret` | 元钥 | `@yottameta/yotta-secret` | 0.
|
|
24
|
+
| `yotta-intel` | 元情 | `@yottameta/yotta-intel` | 0.2.0 | 威胁情报 IOC 提取与规范化引擎(STIX-lite) |
|
|
25
|
+
| `yotta-secret` | 元钥 | `@yottameta/yotta-secret` | 0.2.0 | 密钥 / 凭据泄露源头扫描引擎 |
|
|
26
26
|
| `yotta-chain` | 元链 | `@yottameta/yotta-chain` | 0.1.2 | 供应链依赖校验引擎 |
|
|
27
27
|
| `yotta-triage` | 元鉴 | `@yottameta/yotta-triage` | 0.1.1 | 恶意样本静态初筛引擎(哈希/熵/字符串/PE-ELF) |
|
|
28
|
-
| `yotta-prompt` | 元引 | `@yottameta/yotta-prompt` | 0.
|
|
29
|
-
| `yotta-verify` | 元信 | `@yottameta/yotta-verify` | 0.
|
|
28
|
+
| `yotta-prompt` | 元引 | `@yottameta/yotta-prompt` | 0.2.0 | 意图澄清 + 生态入口(常驻注入,map 串联元阁全家) |
|
|
29
|
+
| `yotta-verify` | 元信 | `@yottameta/yotta-verify` | 0.2.2 | 装前安全扫描器 + audited 徽章(prompt injection + 危险模式) |
|
|
30
30
|
|
|
31
31
|
## 家族分布
|
|
32
32
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# 元阁复杂场景走查
|
|
2
|
+
|
|
3
|
+
## 走查 1:新智能体初始化
|
|
4
|
+
|
|
5
|
+
目标:在一台新机器上为 Codex 安装元阁家族。
|
|
6
|
+
|
|
7
|
+
1. 查看清单:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx -y @yottameta/yotta-skills --list
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
2. 安装到默认目录:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npx -y @yottameta/yotta-skills --agent codex
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
3. 核对结果:输出应包含安装路径与成功 / 跳过 / 失败汇总。
|
|
20
|
+
|
|
21
|
+
4. 重启会话后输入“列出已装技能”,确认注册表能读取到新技能。
|
|
22
|
+
|
|
23
|
+
## 走查 2:版本漂移更新
|
|
24
|
+
|
|
25
|
+
背景:本机已装 22 个技能,其中 5 个版本落后。
|
|
26
|
+
|
|
27
|
+
1. 只读检查:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npx -y @yottameta/yotta-skills update --check --agent codex
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
2. 根据输出确认可更新清单。
|
|
34
|
+
|
|
35
|
+
3. 执行增量更新:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npx -y @yottameta/yotta-skills update --agent codex
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
4. 复核:已最新的技能应显示跳过,落后的技能显示更新;失败项单独重装。
|
|
42
|
+
|
|
43
|
+
## 走查 3:按路由安装单个技能
|
|
44
|
+
|
|
45
|
+
用户需求:“帮我做发布前质量检查。”
|
|
46
|
+
|
|
47
|
+
1. 路由:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npx -y @yottameta/yotta-skills --route "发布前质量检查"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
2. 输出建议组合与缺失技能。
|
|
54
|
+
|
|
55
|
+
3. 只安装缺失技能:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx -y @yottameta/yotta-skills install yotta-code-quality yotta-anti-shallow --agent codex
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
4. 重新执行路由,确认缺失技能已补齐。
|