@ssheleg/make-skill 0.11.0 → 0.11.1
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
CHANGED
|
@@ -1,5 +1,63 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.11.1 — 2026-08-10
|
|
4
|
+
|
|
5
|
+
A behavioural pass over v0.11.0 — walking the skill the way an agent walks it and
|
|
6
|
+
running every command it hands out, rather than re-reading the files. The
|
|
7
|
+
structural gates were already green; what this found was in the one field no
|
|
8
|
+
structural gate covers.
|
|
9
|
+
|
|
10
|
+
### Fixed — the description had a neighbour and no answer to it
|
|
11
|
+
|
|
12
|
+
Coexistence was measured instead of assumed, across the 130 skills of the 23
|
|
13
|
+
enabled plugins on the author's machine. The nearest neighbour is **not** the one
|
|
14
|
+
`test/evals/RESULTS.md` predicted:
|
|
15
|
+
|
|
16
|
+
| Neighbour | Overlap |
|
|
17
|
+
|---|---|
|
|
18
|
+
| **`claude-mem:version-bump`** | **9.6%** |
|
|
19
|
+
| `agent-sync` | 5.5% |
|
|
20
|
+
| `task-pipeline` (the predicted one) | 4.7% |
|
|
21
|
+
|
|
22
|
+
`version-bump` advertises "version increments across package.json,
|
|
23
|
+
marketplace.json, plugin.json manifests, git tagging, GitHub releases, and
|
|
24
|
+
changelog generation" — this skill's release checklist, and enabled alongside it.
|
|
25
|
+
The overlap is not vocabulary, it is *job*.
|
|
26
|
+
|
|
27
|
+
- The description now carries the clause `references/authoring.md` prescribes for
|
|
28
|
+
exactly this case: **NOT for a version bump or release in a repo that ships
|
|
29
|
+
anything but a skill or plugin.**
|
|
30
|
+
- **`triggers.json` gains q21 and q22**, the same manifest-bump-and-release
|
|
31
|
+
request once where the artifact IS a skill and once where it is not, on
|
|
32
|
+
opposite sides of the split so the near-miss is measured in validation rather
|
|
33
|
+
than tuned on. 22 queries, 11 positive / 11 near-miss negative.
|
|
34
|
+
- `RESULTS.md` records the measured table and drops the guess.
|
|
35
|
+
|
|
36
|
+
### Added — the headroom rule reaches the field that decides triggering
|
|
37
|
+
|
|
38
|
+
v0.11.0 gave the body a 5% working limit and left the description at 1003 of
|
|
39
|
+
1024\. Adding the clause above needed 60 characters that did not exist — the same
|
|
40
|
+
disease, in the field that decides whether the skill fires at all. Both the house
|
|
41
|
+
validator and the bundled auditor (`--house`) now hold the description to **≤970
|
|
42
|
+
of 1024**, with a negative self-test on each.
|
|
43
|
+
|
|
44
|
+
### Verified, not assumed
|
|
45
|
+
|
|
46
|
+
Every command the canon hands an agent was executed against the released
|
|
47
|
+
artifact: `make-skill-audit` by bare name, the non-Claude fallback path, the
|
|
48
|
+
raw-fallback reference URLs (200 — checked for the first time), `npx skills add
|
|
49
|
+
--list` (no skeleton leaks), `npx` from a non-repo cwd, `claude plugin details`.
|
|
50
|
+
The hook was exercised on all three of its paths and returns valid JSON. Building
|
|
51
|
+
a skill from `assets/SKILL.template.md` and auditing it gives 0 GAP. The
|
|
52
|
+
compression in v0.11.0 was checked against every fact the evaluation scenarios
|
|
53
|
+
depend on: all of them are still reachable, and all 11 references are still
|
|
54
|
+
linked from the body.
|
|
55
|
+
|
|
56
|
+
The evaluation suite is still **authored and never executed against a model** —
|
|
57
|
+
that gap needs a fresh session per query per model, and this pass does not close
|
|
58
|
+
it. What it does show is why it matters: the risk this repo had written down was
|
|
59
|
+
not the risk it had.
|
|
60
|
+
|
|
3
61
|
## v0.11.0 — 2026-08-10
|
|
4
62
|
|
|
5
63
|
A file-by-file audit of the whole repo, run with this skill's own evidence rules.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ssheleg/make-skill",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "Create, retrofit, audit, and ship agent skills & Claude Code plugins the proven ssheleg way — conformance to the Agent Skills open standard AND Anthropic's platform rules (front-matter limits, disclosure budgets, per-surface runtime limits, the Skills API, evals) plus the Claude Code plugin reference (manifest schemas, component layout, claude plugin validate --strict), marketplace repo layout, version sync, validator + CI, multi-channel distribution (plugin, vercel skills CLI, npx, Cursor), npm gotchas, the review checklist for third-party skills, and MCP / A2A rules for protocol-connected skills. This package is the installer CLI.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"skill",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "make-skill",
|
|
4
4
|
"displayName": "Make Skill",
|
|
5
5
|
"description": "Create, retrofit, audit, and ship agent skills & Claude Code plugins the proven ssheleg way: conformance to the Agent Skills open standard, Anthropic's platform rules (surfaces, Skills API, evals) and the Claude Code plugin reference, marketplace repo layout, version sync, validator + CI, multi-channel distribution (plugin, vercel skills CLI, npx, Cursor), npm gotchas, end-to-end first publish, the review checklist for third-party skills, plus MCP / A2A references for protocol-connected skills.",
|
|
6
|
-
"version": "0.11.
|
|
6
|
+
"version": "0.11.1",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "ssheleg",
|
|
9
9
|
"url": "https://x.com/sshlg93"
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: make-skill
|
|
3
|
-
description: Use when creating, upgrading, auditing, or publishing agent skills and Claude Code plugins - "make a skill" / "сделай скилл", "
|
|
3
|
+
description: Use when creating, upgrading, auditing, or publishing agent skills and Claude Code plugins - "make a skill" / "сделай скилл", "wrap it in a plugin" / "заверни в плагин", "publish a skill" / "опубликуй скилл", "retrofit a skill to the standard" / "приведи скилл к стандарту", "does this skill match the spec" / "соответствует ли скилл стандарту", "claude plugin validate fails" / "проверь плагин по документации Anthropic", "is this skill safe to install" / "безопасно ли ставить этот скилл" - or when a skill must reach an MCP server or another agent over A2A. NOT for a version bump or release in a repo that ships anything but a skill or plugin. Encodes the Agent Skills open standard and Anthropic's platform rules (front-matter limits, budgets, the Skills API, evals), the Claude Code plugin reference (manifest schemas, component layout, validate --strict), plus the ssheleg pipeline - marketplace layout, version sync, validator+CI, distribution, npm gotchas.
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: Authoring works on any agent. The bundled scripts/ need python3. Publishing steps need git, gh, node and npm; the plugin gates need the claude CLI. Not usable on the Claude API surface, which has no network and no runtime package install.
|
|
6
6
|
metadata:
|
|
7
7
|
author: ssheleg
|
|
8
|
-
version: "0.11.
|
|
8
|
+
version: "0.11.1"
|
|
9
9
|
homepage: https://github.com/ssheleg/make-skill
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -95,7 +95,9 @@ differences and the checklist: `references/agent-skills-spec.md`.
|
|
|
95
95
|
House additions on top of the spec:
|
|
96
96
|
|
|
97
97
|
- `description` starts "Use when …" and lists concrete trigger phrases — English
|
|
98
|
-
AND Russian (user works in both). A skill nobody triggers is dead weight.
|
|
98
|
+
AND Russian (user works in both). A skill nobody triggers is dead weight. Hold
|
|
99
|
+
**5% headroom here too** (≤970 of 1024): a near-miss neighbour forces a "NOT
|
|
100
|
+
for …" clause, and a description at 98% of cap has nowhere to put it.
|
|
99
101
|
- One naming pattern, preferably gerund (`processing-pdfs`); never `helper`,
|
|
100
102
|
`utils`, `tools`, `data` — vague names lose every selection.
|
|
101
103
|
- One skill = one job. Multiple concerns → multiple skills + a shared contract
|
|
@@ -110,8 +112,8 @@ House additions on top of the spec:
|
|
|
110
112
|
- **Evals before prose:** run the target task with NO skill, record the
|
|
111
113
|
failures, write ≥3 evaluations against them, then write the minimum that
|
|
112
114
|
passes; a skill built without a baseline documents imagined problems. Adding
|
|
113
|
-
to an existing family →
|
|
114
|
-
|
|
115
|
+
to an existing family → **measure coexistence against the INSTALLED set**, do
|
|
116
|
+
not guess it: the neighbour you would name is usually not the nearest one.
|
|
115
117
|
- Ship a one-command entry point: idempotent — inspect state → repair missing
|
|
116
118
|
pieces → status report → exactly ONE suggested next action. Detect mode, never
|
|
117
119
|
ask. **The skill IS that command**; the invocation differs by channel
|
|
@@ -290,9 +292,9 @@ agent is **A2A** (`a2a.md`). Non-negotiables for any such skill:
|
|
|
290
292
|
chars/token, cl100k gives 3.8–4.5). Budget against a tokenizer and expect the
|
|
291
293
|
CLI to look alarming for a body already inside 5000 real tokens.
|
|
292
294
|
- **A number you typed by hand is an assertion, not documentation.** Counts of
|
|
293
|
-
files, steps and checklist items drift the release after you write them —
|
|
294
|
-
|
|
295
|
-
|
|
295
|
+
files, steps and checklist items drift the release after you write them — this
|
|
296
|
+
canon shipped "13-item" beside "14-item". Compute it, or have the validator
|
|
297
|
+
compare it to the artifact.
|
|
296
298
|
|
|
297
299
|
## Release (every version)
|
|
298
300
|
|
|
@@ -308,8 +310,7 @@ session:
|
|
|
308
310
|
--yes && rm -f ~/.claude/skills/<name>`, then remind about the restart;
|
|
309
311
|
- **move the family pin in the SAME session.** A member released without its
|
|
310
312
|
umbrella pin bumped is invisible: `list` advertises the old version and
|
|
311
|
-
`update` installs it
|
|
312
|
-
while `sshlg-skills list` still said 0.9.1;
|
|
313
|
+
`update` installs it (seen here 2026-08-10);
|
|
313
314
|
- **arm the tag-triggered release workflow** (`RELEASE_ENABLED`,
|
|
314
315
|
`PUBLISH_NPMJS`, off by default) so the next release needs no human. Manual
|
|
315
316
|
publishing is how a registry ends up behind its own tags — six of seven
|
|
@@ -30,6 +30,10 @@ import sys
|
|
|
30
30
|
# --- limits, each with the authority that sets it --------------------------
|
|
31
31
|
NAME_MAX = 64 # spec: name is 1-64 characters
|
|
32
32
|
DESC_MAX = 1024 # spec: description is 1-1024 characters
|
|
33
|
+
# House working limit: 5% under the cap. The description is the whole triggering
|
|
34
|
+
# budget AND the field that must grow when a near-miss skill appears ("say what
|
|
35
|
+
# it is NOT for"). A description at 98% of cap cannot absorb that sentence.
|
|
36
|
+
DESC_TARGET = 970
|
|
33
37
|
COMPAT_MAX = 500 # spec: compatibility is 1-500 characters
|
|
34
38
|
BODY_MAX_LINES = 500 # spec + Anthropic: keep the body under 500 lines
|
|
35
39
|
BODY_MAX_TOKENS = 5000 # spec + Anthropic: level-2 budget
|
|
@@ -224,6 +228,14 @@ def _check_description(a, fm, lines, rel, house):
|
|
|
224
228
|
a.gap("DESC_RU", "description carries no Russian trigger phrases (house rule)", rel, ln)
|
|
225
229
|
else:
|
|
226
230
|
a.ok("DESC_RU", "description carries Russian trigger phrases (house rule)", rel, ln)
|
|
231
|
+
if DESC_TARGET < len(desc) <= DESC_MAX:
|
|
232
|
+
a.gap("DESC_HEADROOM", "description is %d chars — inside the %d cap but past the "
|
|
233
|
+
"%d working limit (house rule): leave room for the 'what this is NOT for' "
|
|
234
|
+
"clause a near-miss neighbour will require"
|
|
235
|
+
% (len(desc), DESC_MAX, DESC_TARGET), rel, ln)
|
|
236
|
+
elif len(desc) <= DESC_TARGET:
|
|
237
|
+
a.ok("DESC_HEADROOM", "description is %d/%d chars, inside the working limit"
|
|
238
|
+
% (len(desc), DESC_TARGET), rel, ln)
|
|
227
239
|
|
|
228
240
|
|
|
229
241
|
def _check_optional_fields(a, fm, lines, rel):
|