@ssheleg/make-skill 0.6.4 → 0.6.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/CHANGELOG.md CHANGED
@@ -1,5 +1,37 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.6.6 — 2026-07-30
4
+
5
+ ### Added
6
+ - **`claude plugin details` joins the canon as the check no manifest performs**:
7
+ it prints what Claude Code believes the plugin contains and the always-on token
8
+ cost per component. Two defects are visible only there — a component listed
9
+ **twice**, because a `commands/<x>.md` and a `skills/<x>/SKILL.md` both claim
10
+ `/<x>` now that custom commands are merged into skills, and a description whose
11
+ always-on cost is worth trimming.
12
+ - **`displayName` in both manifests** is now canon: `name` is kebab-case because
13
+ it namespaces components, and the `/plugin` picker falls back to it, so a
14
+ listing reads `my-cool-plugin` until the field is set.
15
+
16
+ ## v0.6.5 — 2026-07-30
17
+
18
+ ### Added
19
+ - **`claude plugin validate <path> --strict` is now canon** — the upstream gate,
20
+ wired into CI against both the plugin and the marketplace manifest. It needs
21
+ no auth or API key, so a runner can install `@anthropic-ai/claude-code` and run
22
+ it. The canon records the two failures it found across all six repos of this
23
+ family at once, because neither is visible to a house validator:
24
+ - **`argument-hint` must be quoted.** Bare `[a | b]` is a YAML flow sequence,
25
+ so it parses as a list — and one comma or stray character breaks the block
26
+ outright, at which point the command loads with empty metadata and no
27
+ description, silently.
28
+ - **`homepage` and `repository` are not top-level `marketplace.json` fields.**
29
+ They belong to a plugin entry. Unrecognized fields are warnings the runtime
30
+ tolerates, which is why they survive everything except `--strict`.
31
+
32
+ ### Fixed
33
+ - This repo's own command hint and marketplace manifest, per the above.
34
+
3
35
  ## v0.6.4 — 2026-07-30
4
36
 
5
37
  ### Changed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ssheleg/make-skill",
3
- "version": "0.6.4",
3
+ "version": "0.6.6",
4
4
  "description": "Create, retrofit, audit, and ship agent skills & Claude Code plugins the proven ssheleg way — conformance to the Agent Skills open standard (front-matter limits, progressive-disclosure budgets), marketplace repo layout, version sync, validator + CI, multi-channel distribution (plugin, vercel skills CLI, npx, Cursor), npm gotchas, and MCP / A2A rules for protocol-connected skills. This package is the installer CLI.",
5
5
  "keywords": [
6
6
  "skill",
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "make-skill",
3
+ "displayName": "Make Skill",
3
4
  "description": "Create, retrofit, audit, and ship agent skills & Claude Code plugins the proven ssheleg way: conformance to the Agent Skills open standard, marketplace repo layout, version sync, validator + CI, multi-channel distribution (plugin, vercel skills CLI, npx, Cursor), npm gotchas, end-to-end first publish, plus MCP / A2A references for protocol-connected skills.",
4
- "version": "0.6.4",
5
+ "version": "0.6.6",
5
6
  "author": {
6
7
  "name": "ssheleg"
7
8
  },
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: Create, retrofit, audit, or publish an agent skill / Claude Code plugin the proven ssheleg way — Agent Skills spec conformance, marketplace layout, version sync, validator + CI, multi-channel distribution, MCP / A2A rules.
3
- argument-hint: <what to build/retrofit/audit, or a skill path>
3
+ argument-hint: "<what to build/retrofit/audit, or a skill path>"
4
4
  ---
5
5
  Use the `make-skill` skill for the task below. First **detect the workflow** from
6
6
  the task and any path in `$ARGUMENTS`, announce it, then follow the skill exactly:
@@ -134,6 +134,38 @@ top CHANGELOG entry — SAME semver, bumped together, validator enforces. If
134
134
  version an agent outside Claude Code ever sees), it joins the sync as a 5th
135
135
  point.
136
136
 
137
+ **`claude plugin validate <path> --strict` is the upstream gate — wire it into
138
+ CI, both manifests.** Your own validator enforces house rules; this one enforces
139
+ Claude Code's actual schema, and it catches a class your validator cannot see.
140
+ It needs no auth and no API key, so a GitHub runner can install
141
+ `@anthropic-ai/claude-code` and run it. Two failures it found across this whole
142
+ family at once:
143
+
144
+ - **Front matter that silently drops.** `argument-hint: [a | b]` is a YAML flow
145
+ sequence, not a string: it parses as a *list*, and one value containing a
146
+ comma or a stray character breaks the block outright — at which point the
147
+ command loads with **empty metadata and no description**, with nothing at
148
+ runtime saying so. **Always quote `argument-hint`**, single quotes when the
149
+ value itself contains double quotes.
150
+ - **`homepage` and `repository` at the top level of `marketplace.json` are not
151
+ fields.** They are valid on a *plugin entry*; at the root Claude Code ignores
152
+ them. Unrecognized fields are warnings the runtime tolerates, which is exactly
153
+ why they survive without `--strict`.
154
+
155
+ Also set **`displayName`** in both manifests. `name` is kebab-case because it
156
+ namespaces components; `displayName` is what the `/plugin` picker shows, and it
157
+ falls back to `name` when absent — so a listing reads `my-cool-plugin` until you
158
+ write `My Cool Plugin`.
159
+
160
+ **`claude plugin details <name>@<marketplace>` is the other check worth running**,
161
+ and it answers a question no manifest does: what Claude Code *thinks* your plugin
162
+ contains, and what it costs. It prints the component inventory and the always-on
163
+ token cost per component. Two things show up there and nowhere else: a component
164
+ listed **twice** (a `commands/<x>.md` and a `skills/<x>/SKILL.md` both claim
165
+ `/<x>` — custom commands are merged into skills, so same name means two
166
+ components, both paying always-on tokens, one unreachable), and a description
167
+ long enough that its always-on cost is worth trimming.
168
+
137
169
  **Validator** (adapt super-ux `test/validate.py`): manifests parse+fields;
138
170
  SKILL.md front-matter — **spec rules** (name charset/length, description ≤1024,
139
171
  `compatibility` ≤500, `metadata` all-string, `allowed-tools` a string, no unknown