@lmzhen/dsh-evolution-skill-catalog 0.32.3 → 0.32.5
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 +12 -33
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,46 +1,25 @@
|
|
|
1
1
|
# @lmzhen/dsh-evolution-skill-catalog
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
through `tool-skill-manage`.
|
|
3
|
+
> 让 Agent 能在技能目录里看到家族技能。
|
|
5
4
|
|
|
6
|
-
##
|
|
5
|
+
## 你会看到
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
- **Prompt prefix / KV cache:** independent of request-prefix construction; it does not alter the assembled prompt or tool list; family-level rules: `packages/README.md` §"Model-visible prompt prefix and the KV cache".
|
|
10
|
-
- **Mount it?** yes — the `evolution-skill-catalog` row, carried by the `evolution-all` and one-click `evolution-preset` bundles and by the Evolution agent preset delta.
|
|
7
|
+
Agent 能像用普通技能一样发现/使用它们;用户不用直接操作。
|
|
11
8
|
|
|
12
|
-
##
|
|
9
|
+
## 什么时候会用到
|
|
13
10
|
|
|
14
|
-
|
|
15
|
-
- **Upstream-invalid entries are filtered, not published.** `SkillLibrary.list()` reports an empty description for a 0-byte/malformed SKILL.md (C-14 keeps it visible to the curator), and a tree entry created before the 0.3.64 name tightening can still carry a trailing/consecutive hyphen. Upstream `validateCandidate` throws on either shape, and that throw aborts the whole `ctx.skills` collection (breaking `agent/pre-step` and the `skill` tool for the session). This provider therefore skips (and warns once about) any candidate whose name is not upstream `SKILL_NAME` or whose description is empty. The entry stays visible to the curator/lifecycle; fix the SKILL.md frontmatter (or the directory name) to publish it.
|
|
16
|
-
- **Invocation frontmatter: canonical keys first, legacy keys honored conservatively.** The per-skill `disable-model-invocation` / `user-invocable` keys are parsed from the same frontmatter the platform reads and take priority; a file that sets neither falls back to the ROW default (`modelInvocable: true`). Upstream THROWS on the legacy camelCase keys (`disableModelInvocation` / `modelInvocable` / `userInvocable`) and drops the whole file; this shadow warns once and keeps the entry, in the AUTHOR's direction: the mere PRESENCE of `disableModelInvocation` publishes `modelInvocable: false` whatever its value (a misspelled value no longer falls back to the row default and re-enables the skill), and a legacy `modelInvocable` / `userInvocable` is honored as written when it parses (`false` stays `false`) and falls back to the conservative `false` when it does not. Both legacy directions are pinned in `tests/catalog.spec.ts`.
|
|
17
|
-
- **`whenToUse` is published, `metadata` is not.** A non-empty single-line `whenToUse` from the frontmatter is forwarded to the platform catalog (the upstream filesystem provider does the same, and the host/UI read it for routing hints). `metadata` needs a real YAML parse and stays unpublished by this provider.
|
|
18
|
-
- **`content` is the BODY, not the file.** The published `SkillDefinition.content` is the SKILL.md text AFTER the frontmatter block, matching the upstream filesystem provider (`skill-filesystem`: `content: parsed.body.trim()`). This provider shadows that provider for the same skills, so publishing the whole file made the model load a different skill depending on which provider served it. A file whose frontmatter block cannot be read keeps its raw text (the entry stays visible; the audit reports the file through `frontmatterCatalogInvalid`).
|
|
19
|
-
- **Protection markers are best-effort per entry.** When the directory listing AND the per-marker probes fail, `SkillSummary.protectionUnknown` is true and consumers (curator, maintenance) treat the entry as protected rather than unprotected.
|
|
11
|
+
每次 Agent 查技能时。
|
|
20
12
|
|
|
21
|
-
|
|
13
|
+
## 默认 / 前提
|
|
22
14
|
|
|
23
|
-
|
|
15
|
+
随 all/分层安装自动工作。
|
|
24
16
|
|
|
25
|
-
|
|
26
|
-
- **Upstream-invalid entries are filtered, not published (P1-1, v18).**
|
|
27
|
-
- **Invocation frontmatter: canonical keys first, legacy keys honored conservatively (OPT-10; P2-30 / P2-9, 0.3.83).**
|
|
28
|
-
- **`whenToUse` is published, `metadata` is not (E-11, v18).**
|
|
29
|
-
- **`content` is the BODY, not the file (V27 G5.3).**
|
|
30
|
-
- **Protection markers are best-effort per entry (A1-17, v18).**
|
|
17
|
+
## 边界
|
|
31
18
|
|
|
32
|
-
|
|
19
|
+
手工改技能目录后,可能需要 `/evolution skills refresh`。
|
|
33
20
|
|
|
34
|
-
|
|
35
|
-
carry the same `name`: `validateFrontmatter(..., expectedName)` refuses a mismatch ("Frontmatter
|
|
36
|
-
name … does not match target …"), and this provider publishes `summary.name` — the scanned name the
|
|
37
|
-
library derives from the directory.
|
|
21
|
+
## 维护者参考(用户可跳过)
|
|
38
22
|
|
|
39
|
-
The
|
|
40
|
-
whose frontmatter name differs from its directory can surface under two names: the family's catalog
|
|
41
|
-
under one, the platform's under the other.
|
|
42
|
-
|
|
43
|
-
**Decision 1 is open**: keep not publishing name-mismatched entries (conservative), or publish under
|
|
44
|
-
the frontmatter name (thorough, and it moves the read path). Until it is decided this document
|
|
45
|
-
states the behaviour that ships: the directory name wins.
|
|
23
|
+
The family's canonical name for a skill is its **directory name**.
|
|
46
24
|
|
|
25
|
+
**Decision 1 is open**:frontmatter 名是否作为发布名仍未决;当前按目录名发布。
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lmzhen/dsh-evolution-skill-catalog",
|
|
3
3
|
"description": "Native ctx.skills provider for the evolution-managed skill tree (community build)",
|
|
4
|
-
"version": "0.32.
|
|
4
|
+
"version": "0.32.5",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -27,17 +27,17 @@
|
|
|
27
27
|
"license": "MIT",
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@deepseek-ai/schemastery": "^3.18.5",
|
|
30
|
-
"@lmzhen/dsh-evolution-core": "^0.32.
|
|
30
|
+
"@lmzhen/dsh-evolution-core": "^0.32.5"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"@deepseek-ai/cordis": "^4.0.5",
|
|
34
34
|
"@deepseek-ai/dsh-skill": "^0.2.1-rc.2",
|
|
35
|
-
"@lmzhen/dsh-evolution-io": "^0.32.
|
|
35
|
+
"@lmzhen/dsh-evolution-io": "^0.32.5"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@deepseek-ai/dsh-skill": "^0.2.1-rc.2",
|
|
39
|
-
"@lmzhen/dsh-evolution-core": "^0.32.
|
|
40
|
-
"@lmzhen/dsh-evolution-io": "^0.32.
|
|
39
|
+
"@lmzhen/dsh-evolution-core": "^0.32.5",
|
|
40
|
+
"@lmzhen/dsh-evolution-io": "^0.32.5"
|
|
41
41
|
},
|
|
42
42
|
"engines": {
|
|
43
43
|
"dsh": ">=0.2.1-rc.2 <0.2.2-0"
|