@lmzhen/dsh-evolution-skill-catalog 0.32.4 → 0.32.6
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 -36
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,46 +1,22 @@
|
|
|
1
1
|
# @lmzhen/dsh-evolution-skill-catalog
|
|
2
2
|
|
|
3
|
-
Native `ctx.skills` provider for the evolution-managed skill tree
|
|
4
|
-
through `tool-skill-manage`.
|
|
3
|
+
Native `ctx.skills` provider for the evolution-managed skill tree. It publishes the same tree that `tool-skill-manage` writes and invalidates its catalog on `evolution/skill-mutated` and `evolution/skills-refresh`.
|
|
5
4
|
|
|
6
|
-
##
|
|
5
|
+
## Naming and publication
|
|
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
|
+
The family's canonical name for a skill is its **directory name**.
|
|
11
8
|
|
|
12
|
-
|
|
9
|
+
**Decision 1 is open**: whether a frontmatter name may become a separate publication name remains undecided; current publication uses the directory name.
|
|
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
|
+
The provider registers at rank 390 so its `user-dsh` entries shadow the filesystem provider's rank-400 entries for the same tree. Entries with an invalid platform skill name or an empty description are skipped with a warning instead of aborting the whole platform catalog.
|
|
20
12
|
|
|
21
|
-
|
|
13
|
+
## Configuration
|
|
22
14
|
|
|
23
|
-
|
|
15
|
+
- `root`: skill tree to publish; empty uses the shared default.
|
|
16
|
+
- `includeSkillNames`: optional allow-list; empty publishes all otherwise eligible entries.
|
|
17
|
+
- `excludeSkillNames`: deny-list applied after the allow-list.
|
|
18
|
+
- `modelInvocable` and `userInvocable`: row-level defaults, both true. Per-skill `disable-model-invocation` and `user-invocable` frontmatter override them.
|
|
24
19
|
|
|
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).**
|
|
31
|
-
|
|
32
|
-
## Skill names (the family's口径)
|
|
33
|
-
|
|
34
|
-
The family's canonical name for a skill is its **directory name**. `SKILL.md`'s frontmatter must
|
|
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.
|
|
38
|
-
|
|
39
|
-
The platform's own `skill-filesystem` provider publishes the frontmatter `name` instead, so an entry
|
|
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.
|
|
20
|
+
## Refresh boundary
|
|
46
21
|
|
|
22
|
+
In-band writes invalidate synchronously. Out-of-band structural changes can remain invisible until `/evolution skills refresh` because the upstream registry caches collection results. Content reads of an already indexed name may observe newer bytes while its cached summary remains stale.
|
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.6",
|
|
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.6"
|
|
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.6"
|
|
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.6",
|
|
40
|
+
"@lmzhen/dsh-evolution-io": "^0.32.6"
|
|
41
41
|
},
|
|
42
42
|
"engines": {
|
|
43
43
|
"dsh": ">=0.2.1-rc.2 <0.2.2-0"
|