opencode-skills-doctor 0.3.11 → 0.3.12
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 +120 -5
- package/docs/README.zh-CN.md +119 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
# skills-doctor
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/opencode-skills-doctor)
|
|
4
|
+
[](https://www.npmjs.com/package/opencode-skills-doctor)
|
|
5
|
+
[](https://www.npmjs.com/package/opencode-skills-doctor)
|
|
6
|
+
[](LICENSE)
|
|
3
7
|
[](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.11
|
|
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>`):
|
|
@@ -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 |
|
|
@@ -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
|
-
|
|
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
|
package/docs/README.zh-CN.md
CHANGED
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
# skills-doctor
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/opencode-skills-doctor)
|
|
4
|
+
[](https://www.npmjs.com/package/opencode-skills-doctor)
|
|
5
|
+
[](https://www.npmjs.com/package/opencode-skills-doctor)
|
|
6
|
+
[](../LICENSE)
|
|
3
7
|
[](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.11
|
|
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>` 指定):
|
|
@@ -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
|
| 规则 | 级别 | 含义 |
|
|
@@ -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
|
-
|
|
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.
|
|
3
|
+
"version": "0.3.12",
|
|
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": {
|