@ssheleg/make-skill 0.18.1 → 0.19.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,52 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.19.1 — 2026-08-16
|
|
4
|
+
|
|
5
|
+
**This gate can now see an invariant it breaks one repository away.** The family umbrella
|
|
6
|
+
routes work by matching a prompt against a table in `lib/triggers.js`, and every trigger
|
|
7
|
+
there must be a word this skill's own `description` advertises. Nothing here knew that
|
|
8
|
+
table existed. On 2026-08-16 `sheleg-design` 1.37.0 shipped green having dropped a phrase
|
|
9
|
+
that was still a live trigger, the umbrella found out minutes after the tag, and it cost a
|
|
10
|
+
patch release — because the member releases FIRST and the umbrella re-pins after.
|
|
11
|
+
|
|
12
|
+
`test/validate.py` now asks the umbrella's own checker (`test/advertised_check.js`), which
|
|
13
|
+
reads the module the hook itself calls. **No copy of the table lives here**, so there is
|
|
14
|
+
nothing to drift. With no umbrella above this checkout — a standalone clone, and CI — it
|
|
15
|
+
discloses rather than passing, because a check that cannot look must never read as one
|
|
16
|
+
that looked.
|
|
17
|
+
|
|
18
|
+
Watched refusing a real drop before shipping: every one of the seven members carrying
|
|
19
|
+
routed triggers had one of its own advertised phrases removed and every one of them failed
|
|
20
|
+
its own gate.
|
|
21
|
+
|
|
22
|
+
## v0.19.0 — 2026-08-16
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- **The validator failure mode planting does not catch**, in
|
|
27
|
+
`references/distribution.md` → *The house validator*. This canon already said a
|
|
28
|
+
validator nobody has watched fail is decoration — the right rule for a check that
|
|
29
|
+
asserts the *wrong* thing. It does not cover a check that **never runs**, which is
|
|
30
|
+
invisible to planting, because nothing happening looks exactly like a clean suite.
|
|
31
|
+
|
|
32
|
+
Both shipped in `sheleg-design` on 2026-08-16, inside the same check and within an
|
|
33
|
+
hour: a lookup returning `None` on a case mismatch (`NUMBER_WORDS` keyed lowercase,
|
|
34
|
+
the document capitalising) short-circuited the guard, and the pattern policing a
|
|
35
|
+
stale header had been anchored on a line wrap the file did not have. The suite
|
|
36
|
+
printed OK both times, and **the check-count rose by four while the new check
|
|
37
|
+
covered nothing** — so the counter is not evidence either. The procedure gains a
|
|
38
|
+
second half: plant the defect, then read the failure you expected rather than the
|
|
39
|
+
summary, and if the suite still passes, suspect your check before the artifact.
|
|
40
|
+
|
|
41
|
+
### Note
|
|
42
|
+
|
|
43
|
+
The first draft of this entry put the rule in `SKILL.md` and pushed the body from
|
|
44
|
+
under the 4750-token working limit to 4855. The repo's own validator refused it and
|
|
45
|
+
said what to do — move a section to `references/` before adding one. The rule went to
|
|
46
|
+
`references/` instead, where the house-validator guidance already lives, and `SKILL.md`
|
|
47
|
+
is byte-identical to v0.18.1. A canon that will not follow its own budget rule under
|
|
48
|
+
mild inconvenience is a canon nobody else will follow either.
|
|
49
|
+
|
|
3
50
|
## v0.18.1 — 2026-08-14
|
|
4
51
|
|
|
5
52
|
A red `validate` could not stop a publish anywhere in this family, and one member
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ssheleg/make-skill",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.1",
|
|
4
4
|
"description": "Create, retrofit, audit, and ship agent skills & Claude Code plugins the proven ssheleg way \u2014 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",
|
|
@@ -43,5 +43,8 @@
|
|
|
43
43
|
},
|
|
44
44
|
"engines": {
|
|
45
45
|
"node": ">=16"
|
|
46
|
+
},
|
|
47
|
+
"scripts": {
|
|
48
|
+
"test": "python3 test/validate.py && python3 test/plant_guard_test.py"
|
|
46
49
|
}
|
|
47
50
|
}
|
|
@@ -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.
|
|
6
|
+
"version": "0.19.1",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "ssheleg",
|
|
9
9
|
"url": "https://x.com/sshlg93"
|
|
@@ -5,7 +5,7 @@ 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.
|
|
8
|
+
version: "0.19.1"
|
|
9
9
|
homepage: https://github.com/ssheleg/make-skill
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -110,7 +110,22 @@ level deep / `## Contents` past 100 lines, no command colliding with a skill
|
|
|
110
110
|
name, `.mdc` free of relative links, **no stray `SKILL.md` outside
|
|
111
111
|
`plugins/*/skills/*/`**, links that resolve and never escape the skill dir. Plus
|
|
112
112
|
a negative self-test — corrupt a copy, expect FAIL — because a validator nobody
|
|
113
|
-
has watched fail is decoration.
|
|
113
|
+
has watched fail is decoration.
|
|
114
|
+
|
|
115
|
+
**And planting has a blind spot: a check that never runs.** Corrupting a copy
|
|
116
|
+
proves a check asserts the *wrong* thing when it is wrong. It cannot see a check
|
|
117
|
+
that neither passes nor fails, because *nothing happening* is indistinguishable
|
|
118
|
+
from a clean suite. Two ways it happens, both shipped in `sheleg-design` on
|
|
119
|
+
2026-08-16 inside the **same** check and within an hour of each other: a lookup
|
|
120
|
+
returning `None` on a case mismatch — `NUMBER_WORDS` is keyed lowercase and the
|
|
121
|
+
document capitalises — which short-circuited the guard; and a pattern anchored on
|
|
122
|
+
a line wrap the file did not have, so the edit it was policing had already failed
|
|
123
|
+
silently. **The check-count is not evidence either**: the total rose by four while
|
|
124
|
+
the new check covered nothing.
|
|
125
|
+
|
|
126
|
+
So the procedure has a second half. Plant the defect, then **read the failure you
|
|
127
|
+
expected rather than the summary** — and if the suite still passes, suspect your
|
|
128
|
+
check before you trust the artifact. Run `claude plugin validate --strict` as its OWN
|
|
114
129
|
CI job so an upstream outage cannot mask a house failure, and treat `skills-ref
|
|
115
130
|
validate <skill dir>` (from `agentskills/agentskills`) as the tie-breaker on the
|
|
116
131
|
open standard.
|