opencode-skills-doctor 0.3.11 → 0.3.13

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 CHANGED
@@ -1,10 +1,27 @@
1
1
  # skills-doctor
2
2
 
3
+ [![npm](https://img.shields.io/npm/v/opencode-skills-doctor)](https://www.npmjs.com/package/opencode-skills-doctor)
4
+ [![downloads](https://img.shields.io/npm/dw/opencode-skills-doctor)](https://www.npmjs.com/package/opencode-skills-doctor)
5
+ [![node](https://img.shields.io/node/v/opencode-skills-doctor)](https://www.npmjs.com/package/opencode-skills-doctor)
6
+ [![license](https://img.shields.io/npm/l/opencode-skills-doctor)](LICENSE)
3
7
  [![test](https://github.com/wangyuchen5110/opencodeplugginprogram/actions/workflows/test.yml/badge.svg)](https://github.com/wangyuchen5110/opencodeplugginprogram/actions/workflows/test.yml)
4
8
 
5
- Local scanner, linter, fixer, updater and **OpenCode plugin** for skills — zero dependencies, Node ≥ 20.
9
+ Local scanner, linter, fixer, updater and **OpenCode plugin** for agent skills — zero dependencies, Node ≥ 20.
6
10
 
7
- **English** | [简体中文](docs/README.zh-CN.md)
11
+ **English** | [简体中文](docs/README.zh-CN.md) · [Changelog](CHANGELOG.md) · [Security](SECURITY.md)
12
+
13
+ ## At a glance
14
+
15
+ | | |
16
+ |---|---|
17
+ | **What it is** | Audit, fix and update the skills your coding agent loads |
18
+ | **Interfaces** | CLI · OpenCode plugin (1.x / 2.x) · MCP server (Claude Code, Codex, DSH, …) |
19
+ | **Skill sources** | `.opencode/skills`, `.claude/skills`, `.agents/skills`, `opencode.json(c)` entries, HTTP catalogs |
20
+ | **What it finds** | shadowed IDs, duplicates, long descriptions, oversized bodies, per-step token budget, stale skills |
21
+ | **What it fixes** | archives shadowed definitions (reversible), hides low-frequency skills, syncs catalogs with drift detection |
22
+ | **Cost** | CLI: 0 tokens. Plugin: ~191 tokens/step for the tool definition, plus a one-time warning per session |
23
+ | **Requirements** | Node ≥ 20, zero runtime dependencies |
24
+ | **Quality** | 41 tests, CI on ubuntu/macos/windows × Node 20/22/24 |
8
25
 
9
26
  ## Why
10
27
 
@@ -38,6 +55,24 @@ npm link
38
55
  skills-doctor check
39
56
  ```
40
57
 
58
+ What a run looks like:
59
+
60
+ ```text
61
+ skills-doctor 0.3.13
62
+ sources: 5 (2 exist) definitions: 29 unique IDs: 29 advertised: 29 description budget: ~3074 tokens
63
+
64
+ [E] token-budget Advertised skill descriptions cost about 3074 tokens per model step, over 2x the 1200 budget
65
+ [W] long-description "deep-research" description is 917 chars; it is paid on every model step
66
+ [W] large-body "academic-paper" body is about 9980 tokens; invoking it pastes the whole body into context
67
+ ...
68
+
69
+ 1 error, 18 warn, 0 info
70
+
71
+ Hints:
72
+ - Trim descriptions, or hide low-frequency skills with metadata.opencode/autoinvoke: false.
73
+ - Move details into references/ and keep SKILL.md to the workflow.
74
+ ```
75
+
41
76
  ## Commands
42
77
 
43
78
  All commands accept `--lang en|zh` (default: auto from the system locale) and `--json`.
@@ -95,6 +130,19 @@ skills-doctor update --into .\team-skills
95
130
  - Running `update` again re-downloads drifted files (self-healing);
96
131
  - Use `--prune` to delete skills that disappeared from the catalog (by default they are reported but kept).
97
132
 
133
+ ## Does the plugin cost tokens?
134
+
135
+ Local execution is free, but any tool registered with the model is visible on every request. Measured on this repo:
136
+
137
+ | Component | Tokens | When |
138
+ |---|---|---|
139
+ | Scan / lint / fix / update (local work) | **0** | always |
140
+ | `skills_doctor` tool definition | **~191** | every request |
141
+ | Budget warning injected into the system prompt | **~60–80** | once per session, only when over budget |
142
+ | Audit report returned by the tool | **~940** | only when the tool is actually called |
143
+
144
+ So the plugin trades a small fixed overhead for the agent being able to audit by itself. In the example above the skill descriptions cost 3,074 tokens per step; dropping that to the 1,200 budget saves more than 10× the plugin overhead. If you want **zero** context cost, don't install the plugin — run `npx opencode-skills-doctor check` from the terminal or CI instead.
145
+
98
146
  ## Configuration
99
147
 
100
148
  Optional `.skills-doctor.json` in the working directory (or pass `--config <file>`):
@@ -153,7 +201,7 @@ export { SkillsDoctorPlugin } from "opencode-skills-doctor/v1"
153
201
  }
154
202
  ```
155
203
 
156
- It registers the same `skills_doctor` tool (1.x has no `/skills-doctor` command hook).
204
+ It registers the same `skills_doctor` tool. 1.x plugins cannot register commands, so `skills-doctor install` writes a `/skills-doctor` markdown command.
157
205
 
158
206
  > The package root entry is the V2 plugin and requires OpenCode 2.x. The CLI works on both lines.
159
207
 
@@ -221,6 +269,29 @@ Restart DSH. The tool shows up as `mcp__skills_doctor__skills_doctor`.
221
269
 
222
270
  On Windows, if the stdio spawn cannot resolve `npx`, use `command: cmd` and `args: ["/c", "npx", "-y", "opencode-skills-doctor", "mcp"]`.
223
271
 
272
+ ## How it works
273
+
274
+ **Audit pipeline**
275
+
276
+ 1. Discover every skill source (see the precedence list below).
277
+ 2. Parse each `SKILL.md` / flat `.md` frontmatter and estimate its description/body cost.
278
+ 3. Resolve which definition wins for each ID (later registration wins; `SKILL.md` directory form wins ties).
279
+ 4. Run the rules, compute the per-step token budget, and emit findings with fix hints.
280
+
281
+ **Fix pipeline**
282
+
283
+ `fix` only touches definitions that are shadowed (never loaded): it moves them into `.skills-doctor-archive/<timestamp>/` inside the same source. The effective definition is never moved, and files managed by `update` are skipped. Scope defaults to the project; `--all` extends it to global sources.
284
+
285
+ **Update pipeline**
286
+
287
+ 1. Fetch `<catalog>/index.json` (3 attempts with backoff on 5xx/network errors).
288
+ 2. Compare each skill's `version` with the lockfile.
289
+ 3. Download changed files (same-origin only, path traversal blocked) and write them atomically.
290
+ 4. Delete files the new version no longer lists, and clean empty directories.
291
+ 5. Verify hashes, write the lockfile, and — with `--prune` — delete skills removed from the catalog.
292
+
293
+ `check` reads the lockfile and reports drift (`managed-drift`), missing files (`managed-missing`) and unknown lock versions (`lock-version-unsupported`). Re-running `update` re-downloads drifted files.
294
+
224
295
  ## Rules
225
296
 
226
297
  | Rule | Level | Meaning |
@@ -280,7 +351,7 @@ See [SECURITY.md](SECURITY.md) for the full threat model, hardening checklist an
280
351
 
281
352
  - OpenCode **2.x**: add `"plugins": ["opencode-skills-doctor"]` to `opencode.jsonc` — done.
282
353
  - OpenCode **1.x**: needs `npm i --prefix ~/.config/opencode opencode-skills-doctor` plus a one-line local plugin file (`export { SkillsDoctorPlugin } from "opencode-skills-doctor/v1"`), because 1.x resolves plugins differently and `@opencode-ai/plugin` is an optional peer.
283
- - 1.x has **no `/skills-doctor` command** — only the `skills_doctor` tool.
354
+ - 1.x has no plugin-registered `/skills-doctor` command; `skills-doctor install` writes a markdown command file instead.
284
355
 
285
356
  **Safety / behavior**
286
357
 
@@ -297,17 +368,61 @@ See [SECURITY.md](SECURITY.md) for the full threat model, hardening checklist an
297
368
  - `check` is offline; ask a catalog for new versions with `update --check-only`.
298
369
  - Config precedence is assumed: global config < project config < `skills` array order.
299
370
 
371
+ ## FAQ and troubleshooting
372
+
373
+ **A skill I created does not appear.**
374
+ Check: does the file have a `description`? Is it hidden via `opencode/autoinvoke: false` or `disable-model-invocation`? Is the ID derived from the path (directory name for `SKILL.md`, filename for flat `.md`)? Is an earlier/later source shadowing it? `skills-doctor scan` shows the winning definition for each ID.
375
+
376
+ **`fix` did nothing.**
377
+ `fix` only archives **shadowed** duplicates and defaults to project-only. Run `skills-doctor fix --dry-run` to see what it would do, and `--all` to include global sources. Content issues (long descriptions, large bodies) are reported, not rewritten.
378
+
379
+ **`check` says the budget is exceeded but the agent feels fine.**
380
+ The token numbers are heuristics, and the 1,200-token budget is a recommendation. Tune it with `--budget` or `.skills-doctor.json`; treat the report as a relative comparison, not billing.
381
+
382
+ **Where did `fix` move my files?**
383
+ Into `.skills-doctor-archive/<timestamp>/` inside the same skill source. Move them back to restore.
384
+
385
+ **Does it update skills automatically in the background?**
386
+ No daemon. Run `skills-doctor update` when you want to sync; use `--check-only` to just list available updates.
387
+
388
+ **Does it work on OpenCode 1.x?**
389
+ Yes — the CLI works on both lines, and `skills-doctor install` wires up the 1.x plugin (local plugin entry + generated command). 1.x has no `/skills-doctor` command registration from plugins, so the installer writes a command file instead.
390
+
391
+ **Why does the plugin cost tokens if it runs locally?**
392
+ Executing code is free, but the tool definition is part of the model's context. That is why the CLI mode exists: zero context cost.
393
+
300
394
  ## Roadmap
301
395
 
302
396
  - v0.4: content-aware suggestions (which skills are never used), catalog signature verification
303
397
  - Later: V1/Claude skill migration report
304
398
 
305
- ## Development
399
+ ## Development and contributing
306
400
 
307
401
  ```powershell
308
- npm test
402
+ npm test # 41 tests (node test/doctor.test.mjs)
403
+ npm run bench # lint timing for 100/500/1000 skills
309
404
  ```
310
405
 
311
- Coverage: frontmatter parsing, source discovery and precedence, shadowing/duplication/budget rules, catalog download and lock, drift detection and self-healing, old/new lock compatibility, CLI JSON output and exit codes.
406
+ - CI runs on ubuntu/macos/windows × Node 20/22/24; `prepublishOnly` re-runs the tests before every publish.
407
+ - Issues and PRs are welcome: for behavior changes, open an issue first with the scenario and expected output. Link the issue in the PR.
408
+ - Keep the CLI dependency-free and the output bilingual (`--lang en|zh`) — both are project invariants.
409
+ - Security reports: see [SECURITY.md](SECURITY.md); do not open a public issue for vulnerabilities.
410
+ - Release notes live in [CHANGELOG.md](CHANGELOG.md).
411
+
412
+ ### Project layout
413
+
414
+ | Path | Purpose |
415
+ |---|---|
416
+ | `src/audit.mjs` | one-call audit used by CLI, plugin and MCP |
417
+ | `src/discover.mjs` | source discovery, precedence, JSONC parsing |
418
+ | `src/lint.mjs` | rules, token budget, near-duplicate detection |
419
+ | `src/fix.mjs` | archive / hide |
420
+ | `src/catalog.mjs` | updater, lockfile, retries, atomic writes |
421
+ | `src/managed.mjs` | lock verification and drift detection |
422
+ | `src/cli.mjs` | command dispatch and output |
423
+ | `src/i18n.mjs` | English/Chinese strings |
424
+ | `src/mcp.mjs` | MCP stdio server |
425
+ | `src/plugin.mjs` / `src/plugin-v1.mjs` | OpenCode 2.x / 1.x entries |
426
+ | `src/install.mjs` | one-command OpenCode integration |
312
427
 
313
428
  MIT
@@ -1,10 +1,27 @@
1
1
  # skills-doctor
2
2
 
3
+ [![npm](https://img.shields.io/npm/v/opencode-skills-doctor)](https://www.npmjs.com/package/opencode-skills-doctor)
4
+ [![downloads](https://img.shields.io/npm/dw/opencode-skills-doctor)](https://www.npmjs.com/package/opencode-skills-doctor)
5
+ [![node](https://img.shields.io/node/v/opencode-skills-doctor)](https://www.npmjs.com/package/opencode-skills-doctor)
6
+ [![license](https://img.shields.io/npm/l/opencode-skills-doctor)](../LICENSE)
3
7
  [![test](https://github.com/wangyuchen5110/opencodeplugginprogram/actions/workflows/test.yml/badge.svg)](https://github.com/wangyuchen5110/opencodeplugginprogram/actions/workflows/test.yml)
4
8
 
5
9
  OpenCode skill 的**本地检测器 + 更新器 + 修复器**,并附带 **OpenCode 插件入口** —— 零依赖,Node ≥ 20。
6
10
 
7
- [English](../README.md) | **简体中文**
11
+ [English](../README.md) | **简体中文** · [变更记录](../CHANGELOG.md) · [安全策略](../SECURITY.zh-CN.md)
12
+
13
+ ## 一张表看懂
14
+
15
+ | | |
16
+ |---|---|
17
+ | **是什么** | 审计、修复、更新 coding agent 加载的 skill |
18
+ | **形态** | CLI · OpenCode 插件(1.x / 2.x)· MCP server(Claude Code、Codex、DSH…) |
19
+ | **来源** | `.opencode/skills`、`.claude/skills`、`.agents/skills`、`opencode.json(c)` 配置、HTTP catalog |
20
+ | **能查** | 同 ID 遮蔽、重复、超长描述、超大正文、每步 token 预算、陈旧 skill |
21
+ | **能修** | 归档遮蔽定义(可逆)、隐藏低频 skill、catalog 同步并检测 drift |
22
+ | **成本** | CLI 0 token;插件工具定义约 191/步,另有每会话一次预警 |
23
+ | **要求** | Node ≥ 20,零运行时依赖 |
24
+ | **质量** | 41 个测试,ubuntu/macos/windows × Node 20/22/24 CI |
8
25
 
9
26
  ## 为什么需要它
10
27
 
@@ -38,6 +55,24 @@ npm link
38
55
  skills-doctor check
39
56
  ```
40
57
 
58
+ 跑出来大概是这样:
59
+
60
+ ```text
61
+ skills-doctor 0.3.13
62
+ 来源: 5 个(存在 2 个) 定义: 29 唯一 ID: 29 会展示: 29 描述预算: ~3074 tokens
63
+
64
+ [E] token-budget 模型每步要看到的 skill 描述约 3074 tokens,超过预算 1200 的 2 倍
65
+ [W] long-description "deep-research" 的 description 有 917 字符,每个模型步骤都会占上下文
66
+ [W] large-body "academic-paper" 正文约 9980 tokens,被调用时会整段塞进上下文
67
+ ...
68
+
69
+ 1 error, 18 warn, 0 info
70
+
71
+ 建议:
72
+ - 精简 description,或把低频 skill 设为 metadata.opencode/autoinvoke: false 隐藏。
73
+ - 正文拆到 references/,SKILL.md 只保留流程。
74
+ ```
75
+
41
76
  ## 命令
42
77
 
43
78
  所有命令都支持 `--lang en|zh`(默认按系统 locale 自动选择)和 `--json`。
@@ -95,6 +130,19 @@ skills-doctor update --into .\team-skills
95
130
  - 再跑一次 `update` 会自动重下被改坏的文件(drift 自愈);
96
131
  - 用 `--prune` 删除 catalog 中已下架的 skill(默认只提示、不删)。
97
132
 
133
+ ## 插件到底费不费 token?
134
+
135
+ 本地执行不花 token,但注册给模型的工具每次请求都会带上定义。本仓库实测:
136
+
137
+ | 项 | token | 何时产生 |
138
+ |---|---|---|
139
+ | 扫描 / 检测 / 修复 / 更新(本地) | **0** | 始终 |
140
+ | `skills_doctor` 工具定义 | **约 191** | 每次请求 |
141
+ | 注入系统提示的预算预警 | **约 60–80** | 每会话一次,且仅在超标时 |
142
+ | 工具返回的审计报告 | **约 940** | 仅真正调用工具时 |
143
+
144
+ 所以插件是用固定的少量开销,换「模型能自己体检」。上面的例子里 skill 描述每步 3074 tokens,压到 1200 预算能省下 10 倍于插件开销的 token。想要**零上下文成本**,就别装插件——用 `npx opencode-skills-doctor check` 在终端或 CI 里跑。
145
+
98
146
  ## 配置
99
147
 
100
148
  在工作目录放一个可选的 `.skills-doctor.json`(或用 `--config <file>` 指定):
@@ -153,7 +201,7 @@ export { SkillsDoctorPlugin } from "opencode-skills-doctor/v1"
153
201
  }
154
202
  ```
155
203
 
156
- 它会注册同样的 `skills_doctor` 工具(1.x 没有 `/skills-doctor` 命令钩子)。
204
+ 它会注册同样的 `skills_doctor` 工具。1.x 插件无法注册命令,`skills-doctor install` 会生成 `/skills-doctor` 的 markdown 命令。
157
205
 
158
206
  > 包根入口是 V2 插件,需要 OpenCode 2.x;CLI 两条线都能用。
159
207
 
@@ -221,6 +269,29 @@ DSH 自带 MCP 客户端 bundle(`@deepseek-ai/dsh-mcp-client`)。在 profile
221
269
 
222
270
  Windows 上如果 stdio 起不来 `npx`,改成 `command: cmd`、`args: ["/c", "npx", "-y", "opencode-skills-doctor", "mcp"]`。
223
271
 
272
+ ## 工作原理
273
+
274
+ **审计流程**
275
+
276
+ 1. 发现所有 skill 来源(见下面的优先级列表)。
277
+ 2. 解析每个 `SKILL.md` / 扁平 `.md` 的 frontmatter,估算描述与正文成本。
278
+ 3. 解析每个 ID 实际生效的定义(注册越后越优先;同序时 `SKILL.md` 目录形式优先)。
279
+ 4. 跑规则、计算每步 token 预算,输出 finding 与修复建议。
280
+
281
+ **修复流程**
282
+
283
+ `fix` 只动「被遮蔽、永远不会加载」的定义:把它们移到同一来源下的 `.skills-doctor-archive/<时间戳>/`。生效版本永远不会被移动,`update` 管理的文件会跳过。默认只处理项目内,`--all` 才扩展到全局来源。
284
+
285
+ **更新流程**
286
+
287
+ 1. 抓 `<catalog>/index.json`(5xx/网络错误重试 3 次)。
288
+ 2. 对比每个 skill 的 `version` 与 lockfile。
289
+ 3. 下载变化的文件(仅同源、阻断路径穿越),原子写入。
290
+ 4. 删除新版本不再包含的文件,清理空目录。
291
+ 5. 校验哈希、写 lockfile;加 `--prune` 时删除已从 catalog 下架的 skill。
292
+
293
+ `check` 会读 lockfile,报告 drift(`managed-drift`)、文件缺失(`managed-missing`)和未知 lock 版本(`lock-version-unsupported`);再跑一次 `update` 会重下被改坏的文件。
294
+
224
295
  ## 检测规则
225
296
 
226
297
  | 规则 | 级别 | 含义 |
@@ -280,7 +351,7 @@ Windows 上如果 stdio 起不来 `npx`,改成 `command: cmd`、`args: ["/c",
280
351
 
281
352
  - OpenCode **2.x**:在 `opencode.jsonc` 加 `"plugins": ["opencode-skills-doctor"]` 即可。
282
353
  - OpenCode **1.x**:需要 `npm i --prefix ~/.config/opencode opencode-skills-doctor`,再加一个一行本地插件文件(`export { SkillsDoctorPlugin } from "opencode-skills-doctor/v1"`)——因为 1.x 解析插件的机制不同,且 `@opencode-ai/plugin` 是可选 peer 依赖。
283
- - 1.x **没有 `/skills-doctor` 命令**,只有 `skills_doctor` 工具。
354
+ - 1.x 没有「插件注册 /skills-doctor 命令」的能力;`skills-doctor install` 会生成 markdown 命令文件来代替。
284
355
 
285
356
  **安全性 / 行为**
286
357
 
@@ -297,17 +368,61 @@ Windows 上如果 stdio 起不来 `npx`,改成 `command: cmd`、`args: ["/c",
297
368
  - `check` 不联网;要看 catalog 新版本用 `update --check-only`。
298
369
  - 配置优先级假设:全局配置 < 项目配置 < `skills` 数组顺序。
299
370
 
371
+ ## 常见问题(FAQ)
372
+
373
+ **我建的 skill 没出现。**
374
+ 依次检查:有没有 `description`?是不是被 `opencode/autoinvoke: false` 或 `disable-model-invocation` 隐藏了?ID 是否按路径推导(目录形式取目录名,扁平 `.md` 取文件名)?是不是被别的来源遮蔽了?跑 `skills-doctor scan` 能看到每个 ID 实际生效的是哪份。
375
+
376
+ **`fix` 跑了但什么都没变。**
377
+ `fix` 只归档**被遮蔽**的重复定义,而且默认只处理项目内。先 `skills-doctor fix --dry-run` 看会做什么;要动全局加 `--all`。描述过长、正文过大属于内容问题,只报告、不自动改写。
378
+
379
+ **`check` 说预算超标,但用起来没感觉。**
380
+ token 是启发式估算,1200 是建议预算。可以用 `--budget` 或 `.skills-doctor.json` 调整;把它当相对比较,不是账单。
381
+
382
+ **`fix` 把我的文件挪到哪了?**
383
+ 同一 skill 来源下的 `.skills-doctor-archive/<时间戳>/`,移回去即可恢复。
384
+
385
+ **会在后台自动更新 skill 吗?**
386
+ 没有常驻进程。想同步时跑 `skills-doctor update`;只想看有没有新版本用 `--check-only`。
387
+
388
+ **支持 OpenCode 1.x 吗?**
389
+ 支持。CLI 两条线都能用;`skills-doctor install` 会给 1.x 写本地插件入口并生成命令文件(1.x 没有插件注册命令的 API)。
390
+
391
+ **本地插件为什么还费 token?**
392
+ 执行代码免费,但工具定义会进模型上下文。这也是保留 CLI 模式的原因:零上下文成本。
393
+
300
394
  ## Roadmap
301
395
 
302
396
  - v0.4:内容层面的建议(哪些 skill 从未被使用)、catalog 签名校验
303
397
  - 后续:V1/Claude skill 兼容迁移报告
304
398
 
305
- ## 开发
399
+ ## 开发与贡献
306
400
 
307
401
  ```powershell
308
- npm test
402
+ npm test # 41 个测试(node test/doctor.test.mjs)
403
+ npm run bench # 100/500/1000 个 skill 的 lint 耗时
309
404
  ```
310
405
 
311
- 测试覆盖:frontmatter 解析、来源发现与优先级、遮蔽/重复/预算规则、catalog 下载与 lock、drift 检测与自愈、旧/新 lock 的向上兼容、CLI JSON 与退出码。
406
+ - CI 跑 ubuntu/macos/windows × Node 20/22/24;`prepublishOnly` 会在每次发布前重跑测试。
407
+ - 欢迎 issue 和 PR:行为改动请先开 issue 说明场景与期望输出,PR 里关联该 issue。
408
+ - 两条不变量:CLI 保持零依赖;输出保持中英双语(`--lang en|zh`)。
409
+ - 安全问题请看 [SECURITY.zh-CN.md](../SECURITY.zh-CN.md),不要开公开 issue。
410
+ - 版本记录见 [CHANGELOG.md](../CHANGELOG.md)。
411
+
412
+ ### 目录结构
413
+
414
+ | 路径 | 作用 |
415
+ |---|---|
416
+ | `src/audit.mjs` | 一次完整审计(CLI / 插件 / MCP 共用) |
417
+ | `src/discover.mjs` | 来源发现、优先级、JSONC 解析 |
418
+ | `src/lint.mjs` | 规则、token 预算、近似描述检测 |
419
+ | `src/fix.mjs` | 归档 / hide |
420
+ | `src/catalog.mjs` | 更新器、lockfile、重试、原子写入 |
421
+ | `src/managed.mjs` | lock 校验与 drift 检测 |
422
+ | `src/cli.mjs` | 命令分发与输出 |
423
+ | `src/i18n.mjs` | 中英文案 |
424
+ | `src/mcp.mjs` | MCP stdio server |
425
+ | `src/plugin.mjs` / `src/plugin-v1.mjs` | OpenCode 2.x / 1.x 入口 |
426
+ | `src/install.mjs` | 一键接入 OpenCode |
312
427
 
313
428
  MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-skills-doctor",
3
- "version": "0.3.11",
3
+ "version": "0.3.13",
4
4
  "description": "Audit, fix and update agent skills: per-step context cost, shadowed duplicates, safe archive, catalog sync. CLI, OpenCode plugin and MCP server (Claude Code / Codex / any MCP client).",
5
5
  "type": "module",
6
6
  "exports": {