@yottameta/yotta-skills 0.19.6 → 0.19.9
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 +21 -0
- package/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/SKILL.md +7 -2
- package/bin/yotta-skills.js +2 -2
- package/install.sh +14 -4
- package/lib/skills-scan.js +2 -0
- package/package.json +1 -1
- package/references/skill-list.md +8 -8
- package/scripts/yotta-skills-mcp.py +17 -9
- package/skill-manifest.json +1 -1
- package/skills.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
## v0.19.9 (2026-09-18)
|
|
2
|
+
|
|
3
|
+
- 同步元链 `0.1.4` 到 skills.json / skill-list:新增 `scannedFiles` 扫描输入证据,统一 stdout / stderr UTF-8。
|
|
4
|
+
- 不改变安装器、路由与 hook 契约。
|
|
5
|
+
|
|
6
|
+
## v0.19.8 (2026-09-17)
|
|
7
|
+
|
|
8
|
+
- 同步 O6 候选清单:元链 0.1.3 / 元守 0.4.2 / 元引 0.2.2 / 元习 0.2.1 / 元测 0.3.1 / 元鉴 0.1.3。
|
|
9
|
+
- 不改变安装器、路由与 hook 契约;版本四件与 OpenCode 锁文件统一更新。
|
|
10
|
+
|
|
11
|
+
## v0.19.7 (2026-09-17)
|
|
12
|
+
|
|
13
|
+
**MCP registry 按 agent 隔离**
|
|
14
|
+
|
|
15
|
+
- 新增 `YOTTA_SKILLS_REGISTRY_FILE`:CLI 与 MCP 统一读取该环境变量,允许为不同 agent 指定独立 `registry.json`;未设置时保持 `~/.yottaskills/registry.json`。
|
|
16
|
+
- MCP `list_installed_skills` / `reindex` 返回实际注册表路径,便于宿主核对隔离位置。
|
|
17
|
+
- OpenCode 锁文件将配置 `<dataDir>/yottaskills/<agentId>/registry.json`,避免多 agent 共用同一注册表。
|
|
18
|
+
- `install.sh --dir` 改为只安装技能本体与 MCP / 清单资产,清理旧的 `.github`、`bin`、`lib`、`test`、`package.json` 等开发文件;新增自用安装回归。
|
|
19
|
+
- 同步清单中的元质 `0.4.1`、元伴 `0.2.1`、元引 `0.2.1` 与元忆 `0.15.0` 候选版本。
|
|
20
|
+
- 本里程碑只隔离 registry;安装快照、安装证据、更新缓存和 hook 绑定仍保持现有用户级位置。
|
|
21
|
+
|
|
1
22
|
## v0.19.6 (2026-09-16)
|
|
2
23
|
|
|
3
24
|
- 清单同步:yotta-memory 0.13.2(调用者认证 / agent_key 绑定安全修复)。
|
package/README.md
CHANGED
|
@@ -34,7 +34,7 @@ Installing the whole YottaMeta family used to mean running <code>npx</code> for
|
|
|
34
34
|
- **Runtime hook adapter** — manifests declare six lifecycle requirements; <code>hook capabilities / evaluate / bind / unbind</code> probe host support, apply deterministic decisions, record evidence, and never overstate audit-only hosts as enforced.
|
|
35
35
|
- **Idempotent** — a skill already at the manifest version is skipped; re-running is safe.
|
|
36
36
|
- **Pre-install gate** — family installs read the package manifest, bootstrap yotta-verify (元信) when it is missing, then scan each package. <code>DO NOT INSTALL</code> blocks; caution/review continue with visible risk. Old versions are snapshotted before replacement.
|
|
37
|
-
- **Inventory / re-index** - scan the skill directories on this machine and keep a local registry (<code>~/.yottaskills/registry.json</code>); self-contained, no other skills required. Newly installed skills are discovered automatically: <code>install</code> / <code>update</code> re-index the registry afterwards, and <code>--reindex</code> re-scans on demand. An optional <code>yotta-skills</code> MCP (on-demand, not resident) exposes <code>list_installed_skills</code> / <code>describe_skill</code> / <code>reindex</code> / <code>route_request</code>; see <code>SKILL.md</code> for the config.
|
|
37
|
+
- **Inventory / re-index** - scan the skill directories on this machine and keep a local registry (<code>~/.yottaskills/registry.json</code>); set <code>YOTTA_SKILLS_REGISTRY_FILE</code> to isolate the registry per agent; self-contained, no other skills required. Newly installed skills are discovered automatically: <code>install</code> / <code>update</code> re-index the registry afterwards, and <code>--reindex</code> re-scans on demand. An optional <code>yotta-skills</code> MCP (on-demand, not resident) exposes <code>list_installed_skills</code> / <code>describe_skill</code> / <code>reindex</code> / <code>route_request</code>; see <code>SKILL.md</code> for the config.
|
|
38
38
|
- **No silent writes** - 元阁 only suggests. Installing skills, adding a client <code>mcpServers</code> entry, and writing an agent's global memory each require explicit user confirmation beforehand; declining never blocks the plain CLI workflow.
|
|
39
39
|
|
|
40
40
|
Boundaries: it only downloads, places, gates and summarizes — it does **not** develop skill content, does **not** bundle any skill body, does **not** use <code>-g</code> global installs, and does **not** silently write host configuration or agent global memory. Besides the target directory, it keeps its registry, snapshots, install evidence and update-check cache under <code>~/.yottaskills</code>.
|
package/README.zh-CN.md
CHANGED
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
- **运行时 hook 适配层**——技能 manifest 只声明六个生命周期要求;<code>hook capabilities / evaluate / bind / unbind</code> 负责宿主能力探测、确定性决策、结构化证据和降级标注,不把 audit 能力夸大为强制。
|
|
38
38
|
- **幂等**——已在清单版本的技能跳过;重复运行安全。
|
|
39
39
|
- **装前门禁**——家族安装先读取包内 manifest,元信(yotta-verify)缺失时自动自举,再逐个扫描。`DO NOT INSTALL` 阻断;`CAUTION` / `REVIEW` 继续但显示风险。旧版本会先做快照再替换。
|
|
40
|
-
- **盘点 / re-index**--扫描本机各智能体技能目录,维护本地注册表(<code>~/.yottaskills/registry.json</code
|
|
40
|
+
- **盘点 / re-index**--扫描本机各智能体技能目录,维护本地注册表(<code>~/.yottaskills/registry.json</code>);可用 <code>YOTTA_SKILLS_REGISTRY_FILE</code> 为不同 agent 指定独立注册表;自包含,不需要任何其他技能。新装技能自动被发现:<code>install</code> / <code>update</code> 完成后自动重扫注册表,<code>--reindex</code> 可随时手动重扫(如会话开工)。可选 <code>yotta-skills</code> MCP(按需加载、不常驻)提供 <code>list_installed_skills</code> / <code>describe_skill</code> / <code>reindex</code> / <code>route_request</code> 四工具,配置见 <code>SKILL.md</code>。
|
|
41
41
|
|
|
42
42
|
边界:只做「下载 + 落位 + 门禁 + 汇总」——**不**开发技能内容、**不**内置任何技能本体、**不**用 <code>-g</code>
|
|
43
43
|
全局安装;除目标目录外,会在 <code>~/.yottaskills</code> 下保留注册表、快照、安装证据与更新检查缓存。
|
package/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yotta-skills
|
|
3
|
-
version: 0.19.
|
|
3
|
+
version: 0.19.9
|
|
4
4
|
description: 元阁 -- 元阁全家技能的总编排策划 + 编排路由 + 一键安装器 + 技能盘点 + 运行时 hook 适配。路由层:--route / route_request 按需求摘要给出候选组合、调用顺序、角色、置信度、依据、已装/缺失状态与安装命令,只建议不自动安装;非元阁家族已装技能按 frontmatter description 机械匹配作并列候选(标注来源与未扫描状态,只读不自动调用);策划层:按场景给出「该组合哪几个元技能、组合强在哪、怎么组合使用(安装与调用均由用户确认后执行)」;安装层:一条命令把 YottaMeta 已发布的全部 yotta-* 技能装进指定智能体或目录(默认 --pin 锁死清单精确版本);盘点层:--inventory / --reindex 扫描本机已装技能生成/更新注册表,新装技能自动被发现(install/update 后自动 re-index,会话开工只建议跑本地 --reindex;更新检查走手动 --check 或后台 --check --scheduled);运行时适配层:hook capabilities / evaluate / bind / unbind 按宿主能力矩阵执行六个统一事件并留证降级,元信 before_install 已接入安装管线;自包含零依赖,不依赖任何元技能;MCP 按需加载且需用户确认后写入配置(可选:list_installed_skills/describe_skill/reindex/route_request,不常驻,未加载降级 CLI)。支持 --list 清单 / --route 路由 / install / update / update --check(只读检查)/ update --check --scheduled(后台周检)/ update --auto(家族自动更新)/ hook 适配 / --inventory / --reindex / --dry-run 预览 / --pin(默认)/ --range。触发:需要批量安装或更新元阁全家技能、按场景组合多个元技能、路由或判断该用哪些技能、盘点或查看本机已装技能、重扫技能注册表、给某个智能体或目录一次性铺齐 yotta-* 技能、评估宿主 hook 能力、预览安装清单、锁版本安装、或用户说 元阁/装全家/一次装齐/yotta-skills/install-all/更新全家/检查更新/自动更新/hook 适配/该用哪个技能/路由技能/盘点技能/查看已装技能 等。边界(Do NOT trigger):只做「组合策划 + 静态路由建议 + 清单 + 下载 + 落位 + 汇总 + 盘点 + re-index + hook 适配」,不含技能本体、不做技能内容开发、不 -g 污染全局、不自动安装缺失技能、不静默写宿主配置或全局记忆;家族安装先自举或调用元信装前门禁,DO NOT INSTALL 阻断,非元阁家族包不自动安装。
|
|
5
5
|
license: MIT
|
|
6
6
|
metadata:
|
|
@@ -191,6 +191,7 @@ npx -y @yottameta/yotta-skills hook unbind <binding-id>
|
|
|
191
191
|
|
|
192
192
|
元阁自带技能扫描核心(零依赖,不依赖任何元技能):扫描各智能体技能目录,解析
|
|
193
193
|
`SKILL.md` frontmatter,生成/更新本地注册表 `~/.yottaskills/registry.json`,数据不出本机。
|
|
194
|
+
多 agent 宿主可用 `YOTTA_SKILLS_REGISTRY_FILE` 为每个 agent 指定独立注册表文件。
|
|
194
195
|
适合「装了哪些技能、各干嘛、从哪来」的快速盘点。
|
|
195
196
|
|
|
196
197
|
```bash
|
|
@@ -301,12 +302,16 @@ npx -y @yottameta/yotta-skills --route "检查代码质量,别糊弄" --json
|
|
|
301
302
|
"mcpServers": {
|
|
302
303
|
"yotta-skills": {
|
|
303
304
|
"command": "python",
|
|
304
|
-
"args": ["<技能目录>/scripts/yotta-skills-mcp.py"]
|
|
305
|
+
"args": ["<技能目录>/scripts/yotta-skills-mcp.py"],
|
|
306
|
+
"env": {
|
|
307
|
+
"YOTTA_SKILLS_REGISTRY_FILE": "<配置目录>/yottaskills/<agentId>/registry.json"
|
|
308
|
+
}
|
|
305
309
|
}
|
|
306
310
|
}
|
|
307
311
|
}
|
|
308
312
|
```
|
|
309
313
|
> `<技能目录>` = 本技能实际安装目录,**不要写死盘符路径**;Windows 用 `python`,Linux/macOS 用 `python3`。
|
|
314
|
+
> 单 agent 环境可不设 `YOTTA_SKILLS_REGISTRY_FILE`;同一宿主内多 agent 共用 MCP 时,应分别配置独立路径,避免注册表状态互相覆盖。
|
|
310
315
|
3. **提醒用户**:改 `mcpServers` 后多数客户端需**重启 / 重载一次** MCP server 才生效;加载后应看到
|
|
311
316
|
`list_installed_skills` / `describe_skill` / `reindex` / `route_request` 四个工具。
|
|
312
317
|
4. **降级兜底(重要)**:若客户端未暴露 MCP 工具 / 用户拒绝改配置 / 无法改配置 / server 未加载,**自动降级 CLI**
|
package/bin/yotta-skills.js
CHANGED
|
@@ -37,7 +37,7 @@ const hookAdapterLib = require('../lib/hook-adapter');
|
|
|
37
37
|
const { createInstaller, isSafeTarEntry } = require('../lib/install-pipeline');
|
|
38
38
|
|
|
39
39
|
const PKG_ROOT = path.join(__dirname, '..');
|
|
40
|
-
let VERSION = '0.19.
|
|
40
|
+
let VERSION = '0.19.9';
|
|
41
41
|
try { VERSION = require(path.join(PKG_ROOT, 'package.json')).version; } catch (_) { /* keep fallback */ }
|
|
42
42
|
|
|
43
43
|
function loadManifest() {
|
|
@@ -1113,7 +1113,7 @@ function printHelp() {
|
|
|
1113
1113
|
out(' -v, --version 版本');
|
|
1114
1114
|
out('');
|
|
1115
1115
|
out('支持智能体: ' + Object.keys(AGENT_DIRS).join(', '));
|
|
1116
|
-
out('依赖: Node.js 18+ / npm / 系统 tar;环境变量 YOTTA_SKILLS_NPM / YOTTA_SKILLS_PYTHON / YOTTA_SKILLS_VERIFY / YOTTA_SKILLS_NPM_FLAGS 可覆盖。');
|
|
1116
|
+
out('依赖: Node.js 18+ / npm / 系统 tar;环境变量 YOTTA_SKILLS_NPM / YOTTA_SKILLS_PYTHON / YOTTA_SKILLS_VERIFY / YOTTA_SKILLS_NPM_FLAGS / YOTTA_SKILLS_REGISTRY_FILE 可覆盖。');
|
|
1117
1117
|
}
|
|
1118
1118
|
|
|
1119
1119
|
|
package/install.sh
CHANGED
|
@@ -64,10 +64,20 @@ resolve_user() {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
install_to() {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
local dest="$1/$SKILL_NAME"
|
|
68
|
+
local item
|
|
69
|
+
mkdir -p "$dest"
|
|
70
|
+
|
|
71
|
+
# 只安装技能本体与运行时需要的 MCP/清单资产。
|
|
72
|
+
for item in .git .github .gitignore .npmignore bin lib test package.json package-lock.json install.sh; do
|
|
73
|
+
rm -rf -- "$dest/$item"
|
|
74
|
+
done
|
|
75
|
+
for item in SKILL.md skill-manifest.json references scripts assets skills.json LICENSE NOTICE README.md README.zh-CN.md CHANGELOG.md USER_GUIDE.md; do
|
|
76
|
+
if [ -e "$SOURCE_DIR/$item" ]; then
|
|
77
|
+
cp -r "$SOURCE_DIR/$item" "$dest/"
|
|
78
|
+
fi
|
|
79
|
+
done
|
|
80
|
+
echo "installed -> $dest"
|
|
71
81
|
}
|
|
72
82
|
|
|
73
83
|
list() {
|
package/lib/skills-scan.js
CHANGED
|
@@ -285,6 +285,8 @@ function scanRoots(roots) {
|
|
|
285
285
|
|
|
286
286
|
/** 注册表文件路径:~/.yottaskills/registry.json。 */
|
|
287
287
|
function registryPath() {
|
|
288
|
+
const override = String(process.env.YOTTA_SKILLS_REGISTRY_FILE || '').trim();
|
|
289
|
+
if (override) return path.resolve(override);
|
|
288
290
|
return path.join(os.homedir(), REGISTRY_DIR_NAME, REGISTRY_FILE_NAME);
|
|
289
291
|
}
|
|
290
292
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yottameta/yotta-skills",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.9",
|
|
4
4
|
"description": "YuanGe (元阁) - orchestration routing, inventory, and one-command installer for the YottaMeta skill family (zero dependencies, Node.js only).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
package/references/skill-list.md
CHANGED
|
@@ -6,26 +6,26 @@
|
|
|
6
6
|
| slug | 中文名 | npm 包 | 清单版本 | 说明 |
|
|
7
7
|
|---|---|---|---|---|
|
|
8
8
|
| `yotta-anti-shallow` | 元谨 | `@yottameta/yotta-anti-shallow` | 1.4.0 | 防 AI 敷衍规则引擎(深入分析/根因追溯时激活) |
|
|
9
|
-
| `yotta-code-quality` | 元质 | `@yottameta/yotta-code-quality` | 0.4.
|
|
9
|
+
| `yotta-code-quality` | 元质 | `@yottameta/yotta-code-quality` | 0.4.1 | 结对式代码质量评审(十二类腐化风险 + 0-100 健康分) |
|
|
10
10
|
| `yotta-workflow` | 元序 | `@yottameta/yotta-workflow` | 0.4.1 | 跨会话/跨项目通用工作流协议(状态就近存) |
|
|
11
|
-
| `yotta-memory` | 元忆 | `@yottameta/yotta-memory` | 0.
|
|
12
|
-
| `yotta-learn` | 元习 | `@yottameta/yotta-learn` | 0.2.
|
|
11
|
+
| `yotta-memory` | 元忆 | `@yottameta/yotta-memory` | 0.15.0 | 有权限边界的文件式智能体记忆(FACT/PREF/BOUND/COMMIT) |
|
|
12
|
+
| `yotta-learn` | 元习 | `@yottameta/yotta-learn` | 0.2.1 | 学习沉淀 CLI:错误/纠正/洞见沉淀为 .learnings/ 条目 |
|
|
13
13
|
| `yotta-security-audit` | 元安 | `@yottameta/yotta-security-audit` | 0.2.3 | 安全扫描引擎:13 类检测器 + 系统安全基线 |
|
|
14
14
|
| `yotta-vetter` | 元审 | `@yottameta/yotta-vetter` | 0.2.3 | 安全审查协议:四阶段 review + SAFE TO INSTALL 判定 |
|
|
15
15
|
| `yotta-recon` | 元析 | `@yottameta/yotta-recon` | 0.1.6 | 跨智能体网络侦察:零依赖端口/服务/版本指纹探测 |
|
|
16
16
|
| `yotta-guardian` | 元盾 | `@yottameta/yotta-guardian` | 0.1.3 | 跨智能体危险调用拦截护栏:确定性规则 + 可插拔意图验证 |
|
|
17
17
|
| `yotta-humanize` | 元真 | `@yottameta/yotta-humanize` | 0.2.0 | 去 AI 味中文写作编辑:检测器引擎 |
|
|
18
18
|
| `yotta-logs` | 元史 | `@yottameta/yotta-logs` | 0.3.1 | 跨智能体历史会话 / 记忆日志检索 |
|
|
19
|
-
| `yotta-security-testing` | 元测 | `@yottameta/yotta-security-testing` | 0.3.
|
|
19
|
+
| `yotta-security-testing` | 元测 | `@yottameta/yotta-security-testing` | 0.3.1 | 有纪律的 AI 安全测试方法论 + Scope Guard 五道防线 |
|
|
20
20
|
| `yotta-agent-hardening` | 元安全 | `@yottameta/yotta-agent-hardening` | 0.2.4 | 防御向 AI 智能体自身安全加固(配置面静态扫描三域) |
|
|
21
21
|
| `yotta-skill-creator` | 元造 | `@yottameta/yotta-skill-creator` | 0.1.2 | 工坊「造」:端到端造技能脚手架 |
|
|
22
|
-
| `yotta-publish-guard` | 元守 | `@yottameta/yotta-publish-guard` | 0.4.
|
|
22
|
+
| `yotta-publish-guard` | 元守 | `@yottameta/yotta-publish-guard` | 0.4.2 | 工坊「守」:发布前守门(版本四件对齐 + 三通道查重) |
|
|
23
23
|
| `yotta-logwatch` | 元察 | `@yottameta/yotta-logwatch` | 0.2.8 | 安全日志分析检测引擎(攻击链识别/告警聚合) |
|
|
24
24
|
| `yotta-intel` | 元情 | `@yottameta/yotta-intel` | 0.2.0 | 威胁情报 IOC 提取与规范化引擎(STIX-lite) |
|
|
25
25
|
| `yotta-secret` | 元钥 | `@yottameta/yotta-secret` | 0.2.0 | 密钥 / 凭据泄露源头扫描引擎 |
|
|
26
|
-
| `yotta-chain` | 元链 | `@yottameta/yotta-chain` | 0.1.
|
|
27
|
-
| `yotta-triage` | 元鉴 | `@yottameta/yotta-triage` | 0.1.
|
|
28
|
-
| `yotta-prompt` | 元引 | `@yottameta/yotta-prompt` | 0.2.
|
|
26
|
+
| `yotta-chain` | 元链 | `@yottameta/yotta-chain` | 0.1.4 | 供应链依赖校验引擎 |
|
|
27
|
+
| `yotta-triage` | 元鉴 | `@yottameta/yotta-triage` | 0.1.3 | 恶意样本静态初筛引擎(哈希/熵/字符串/PE-ELF) |
|
|
28
|
+
| `yotta-prompt` | 元引 | `@yottameta/yotta-prompt` | 0.2.2 | 意图澄清 + 生态入口(常驻注入,map 串联元阁全家) |
|
|
29
29
|
| `yotta-verify` | 元信 | `@yottameta/yotta-verify` | 0.3.1 | 装前安全扫描器 + audited 徽章(prompt injection + 危险模式) |
|
|
30
30
|
|
|
31
31
|
## 家族分布
|
|
@@ -9,7 +9,8 @@ stdio MCP server(JSON-RPC 2.0,换行分隔),把元阁技能扫描核心
|
|
|
9
9
|
route_request 按需求摘要给出静态编排路由建议
|
|
10
10
|
|
|
11
11
|
自包含原则:扫描由元阁自带核心(bin/yotta-skills.js --inventory / --reindex)完成,
|
|
12
|
-
|
|
12
|
+
不依赖任何元技能;数据只写本机注册表,默认 ~/.yottaskills/registry.json,
|
|
13
|
+
可用 YOTTA_SKILLS_REGISTRY_FILE 为每个 agent 指定隔离路径,数据不出本机。
|
|
13
14
|
|
|
14
15
|
运行:python scripts/yotta-skills-mcp.py
|
|
15
16
|
MCP 客户端配置:
|
|
@@ -25,7 +26,7 @@ import subprocess
|
|
|
25
26
|
import sys
|
|
26
27
|
from pathlib import Path
|
|
27
28
|
|
|
28
|
-
VERSION = "0.19.
|
|
29
|
+
VERSION = "0.19.9"
|
|
29
30
|
TOOL_NAME = "yotta-skills"
|
|
30
31
|
CN_NAME = "元阁"
|
|
31
32
|
MCP_PROTOCOL_MODERN = "2026-07-28"
|
|
@@ -35,7 +36,13 @@ SERVERS = {TOOL_NAME: {"name": TOOL_NAME, "cn": CN_NAME, "version": VERSION}}
|
|
|
35
36
|
|
|
36
37
|
_HERE = Path(__file__).resolve().parent
|
|
37
38
|
BIN_JS = (_HERE.parent / "bin" / "yotta-skills.js").resolve()
|
|
38
|
-
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _registry_file():
|
|
42
|
+
override = os.environ.get("YOTTA_SKILLS_REGISTRY_FILE", "").strip()
|
|
43
|
+
if override:
|
|
44
|
+
return Path(override).expanduser().resolve()
|
|
45
|
+
return Path(os.path.expanduser("~/.yottaskills/registry.json"))
|
|
39
46
|
|
|
40
47
|
|
|
41
48
|
def _tool_error(message, extra=None):
|
|
@@ -74,10 +81,11 @@ def _run_cli(args):
|
|
|
74
81
|
|
|
75
82
|
|
|
76
83
|
def _read_registry():
|
|
77
|
-
|
|
84
|
+
registry_file = _registry_file()
|
|
85
|
+
if not registry_file.is_file():
|
|
78
86
|
return None
|
|
79
87
|
try:
|
|
80
|
-
return json.loads(
|
|
88
|
+
return json.loads(registry_file.read_text(encoding="utf-8"))
|
|
81
89
|
except Exception: # noqa: BLE001
|
|
82
90
|
return None
|
|
83
91
|
|
|
@@ -90,7 +98,7 @@ def _ensure_registry():
|
|
|
90
98
|
_run_cli(["--inventory"])
|
|
91
99
|
reg = _read_registry()
|
|
92
100
|
if reg is None:
|
|
93
|
-
raise RuntimeError("
|
|
101
|
+
raise RuntimeError("技能注册表生成失败(%s)" % _registry_file())
|
|
94
102
|
return reg
|
|
95
103
|
|
|
96
104
|
|
|
@@ -106,7 +114,7 @@ def _tool_list(arguments): # noqa: ARG001
|
|
|
106
114
|
skills = _skills_list(registry)
|
|
107
115
|
payload = {
|
|
108
116
|
"count": len(skills),
|
|
109
|
-
"registry": str(
|
|
117
|
+
"registry": str(_registry_file()),
|
|
110
118
|
"skills": skills,
|
|
111
119
|
}
|
|
112
120
|
return {"content": [{"type": "text", "text": json.dumps(payload, ensure_ascii=False, indent=2)}],
|
|
@@ -136,7 +144,7 @@ def _tool_reindex(arguments): # noqa: ARG001
|
|
|
136
144
|
"count": data.get("count", len(data.get("skills", []))),
|
|
137
145
|
"changes": data.get("changes"),
|
|
138
146
|
"errors": data.get("errors"),
|
|
139
|
-
"registry": str(
|
|
147
|
+
"registry": str(_registry_file()),
|
|
140
148
|
}
|
|
141
149
|
return {"content": [{"type": "text", "text": json.dumps(payload, ensure_ascii=False, indent=2)}],
|
|
142
150
|
"isError": False}
|
|
@@ -168,7 +176,7 @@ def mcp_tools():
|
|
|
168
176
|
_tool_spec(
|
|
169
177
|
"list_installed_skills",
|
|
170
178
|
"盘点本机已装技能:返回技能列表(slug / 版本 / 功能一句话 / 来源)。"
|
|
171
|
-
"
|
|
179
|
+
"读本地注册表(YOTTA_SKILLS_REGISTRY_FILE,默认 ~/.yottaskills/registry.json);未生成则先扫描一次。"
|
|
172
180
|
"扫描由元阁自带核心完成,不依赖任何其他技能。数据不出本机。",
|
|
173
181
|
{},
|
|
174
182
|
[],
|
package/skill-manifest.json
CHANGED
package/skills.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifestVersion": 1,
|
|
3
|
-
"updated": "2026-09-
|
|
3
|
+
"updated": "2026-09-19",
|
|
4
4
|
"note": "清单同步要求:每次技能发布新版本后,按 YottaSkills 技能登记表更新本文件(登记表为内部台账,不随包分发)。",
|
|
5
5
|
"skills": [
|
|
6
6
|
{
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"slug": "yotta-code-quality",
|
|
15
15
|
"name": "元质",
|
|
16
16
|
"pkg": "@yottameta/yotta-code-quality",
|
|
17
|
-
"version": "0.4.
|
|
17
|
+
"version": "0.4.1",
|
|
18
18
|
"desc": "结对式代码质量评审(十二类腐化风险 + 0-100 健康分)"
|
|
19
19
|
},
|
|
20
20
|
{
|
|
@@ -28,14 +28,14 @@
|
|
|
28
28
|
"slug": "yotta-memory",
|
|
29
29
|
"name": "元忆",
|
|
30
30
|
"pkg": "@yottameta/yotta-memory",
|
|
31
|
-
"version": "0.
|
|
31
|
+
"version": "0.16.0",
|
|
32
32
|
"desc": "有权限边界的文件式智能体记忆(FACT/PREF/BOUND/COMMIT)"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"slug": "yotta-learn",
|
|
36
36
|
"name": "元习",
|
|
37
37
|
"pkg": "@yottameta/yotta-learn",
|
|
38
|
-
"version": "0.2.
|
|
38
|
+
"version": "0.2.1",
|
|
39
39
|
"desc": "学习沉淀 CLI:错误/纠正/洞见沉淀为 .learnings/ 条目"
|
|
40
40
|
},
|
|
41
41
|
{
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"slug": "yotta-security-testing",
|
|
85
85
|
"name": "元测",
|
|
86
86
|
"pkg": "@yottameta/yotta-security-testing",
|
|
87
|
-
"version": "0.3.
|
|
87
|
+
"version": "0.3.1",
|
|
88
88
|
"desc": "有纪律的 AI 安全测试方法论 + Scope Guard 五道防线"
|
|
89
89
|
},
|
|
90
90
|
{
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
"slug": "yotta-publish-guard",
|
|
106
106
|
"name": "元守",
|
|
107
107
|
"pkg": "@yottameta/yotta-publish-guard",
|
|
108
|
-
"version": "0.4.
|
|
108
|
+
"version": "0.4.2",
|
|
109
109
|
"desc": "工坊「守」:发布前守门(版本四件对齐 + 三通道查重)"
|
|
110
110
|
},
|
|
111
111
|
{
|
|
@@ -133,21 +133,21 @@
|
|
|
133
133
|
"slug": "yotta-chain",
|
|
134
134
|
"name": "元链",
|
|
135
135
|
"pkg": "@yottameta/yotta-chain",
|
|
136
|
-
"version": "0.1.
|
|
136
|
+
"version": "0.1.4",
|
|
137
137
|
"desc": "供应链依赖校验引擎"
|
|
138
138
|
},
|
|
139
139
|
{
|
|
140
140
|
"slug": "yotta-triage",
|
|
141
141
|
"name": "元鉴",
|
|
142
142
|
"pkg": "@yottameta/yotta-triage",
|
|
143
|
-
"version": "0.1.
|
|
143
|
+
"version": "0.1.3",
|
|
144
144
|
"desc": "恶意样本静态初筛引擎(哈希/熵/字符串/PE-ELF)"
|
|
145
145
|
},
|
|
146
146
|
{
|
|
147
147
|
"slug": "yotta-prompt",
|
|
148
148
|
"name": "元引",
|
|
149
149
|
"pkg": "@yottameta/yotta-prompt",
|
|
150
|
-
"version": "0.2.
|
|
150
|
+
"version": "0.2.2",
|
|
151
151
|
"desc": "意图澄清 + 生态入口(常驻注入,map 串联元阁全家)"
|
|
152
152
|
},
|
|
153
153
|
{
|