@ssheleg/make-skill 0.15.0 → 0.17.0

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,42 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.17.0
4
+
5
+ Following `task-pipeline` v1.53.0, which renamed the artifact root's default from
6
+ `docs/superpowers/` to `docs/evidence/` and made the root resolvable (`paths.artifacts`
7
+ in `pipeline.json`, else an existing `docs/evidence/`, else an existing
8
+ `docs/superpowers/` — **the legacy name stays supported and no run warns about it**).
9
+
10
+ Shipped surfaces name the new default now, which is why this is a minor rather than a
11
+ patch. This project's own records moved with the directory and were not rewritten: a
12
+ brief describes where things were when it was written.
13
+
14
+ ## v0.16.0
15
+
16
+ ### Changed
17
+
18
+ - **The installer now offers the family's routing block** (closing B-06 in the
19
+ umbrella). Until now only `super-ux` delegated: install this skill on its own
20
+ and no router was written at all, so an agent had the skill and no rule saying
21
+ when to reach for it. The bundle installer wrote all eight, which is why
22
+ nothing looked broken — the gap only opened for someone installing one member.
23
+
24
+ Delegated to `npx sshlg-skills routers --member make-skill` rather than
25
+ reimplemented, for three reasons:
26
+
27
+ - The block describes what the machine actually has. A lone member rendering
28
+ the whole thing would print a table for routers nobody installed.
29
+ - `--member` scopes the write to this skill's own section. Verified by damaging
30
+ two sections of a real block and running this installer: its own was
31
+ repaired, the other left exactly as it was.
32
+ - The launcher is the only writer that copies the operator's global instruction
33
+ file before touching it. That file has no version control behind it.
34
+
35
+ `--no-install` keeps it from silently downloading a package nobody asked for.
36
+ When the launcher is absent the command is printed instead of failing: ending
37
+ an install in an error over an optional follow-up reads as a failed install.
38
+ Both paths were exercised.
39
+
3
40
  ## v0.15.0
4
41
 
5
42
  ### Fixed
package/README.md CHANGED
@@ -258,7 +258,7 @@ test/validate.py # structural validator
258
258
  test/evals/ # trigger set + behavioral scenarios (data)
259
259
  .github/workflows/{validate,release}.yml
260
260
  install.sh README.md CHANGELOG.md CONTRIBUTING.md SECURITY.md SKILL-CARD.md LICENSE
261
- docs/superpowers/{specs,plans}/ # historical design records
261
+ docs/evidence/{specs,plans}/ # historical design records
262
262
  ```
263
263
 
264
264
  ## Contributing
package/bin/make-skill.js CHANGED
@@ -63,6 +63,38 @@ function installOne(label, src, dest, isDir, force) {
63
63
  console.log(`Installed ${label} -> ${dest}`);
64
64
  }
65
65
 
66
+ /**
67
+ * Ask the family launcher to write the routing block, for this member only.
68
+ *
69
+ * Delegated rather than reimplemented, for three reasons. The block describes
70
+ * what the machine actually has, so a lone member rendering the whole thing
71
+ * would produce a table for routers nobody installed. `--member` limits the
72
+ * write to the `make-skill` section and leaves everyone else's alone, which is
73
+ * what lets the bundle and a single installer both write. And the launcher is
74
+ * the only writer that copies the operator's global instruction file before
75
+ * touching it — that file has no version control behind it.
76
+ *
77
+ * `--no-install` keeps this from silently downloading a package nobody asked
78
+ * for. When the launcher is absent, print the command rather than fail: ending
79
+ * an install in an error because an OPTIONAL follow-up is missing reads as a
80
+ * failed install.
81
+ */
82
+ function offerRouters() {
83
+ const { spawnSync } = require('child_process');
84
+ const r = spawnSync(
85
+ 'npx',
86
+ ['--no-install', 'sshlg-skills', 'routers', '--member', 'make-skill'],
87
+ { stdio: 'inherit', shell: process.platform === 'win32' }
88
+ );
89
+ if (r.status !== 0) {
90
+ console.log(
91
+ '\nTo have this skill apply by default in every project, add the\n' +
92
+ "family's routing block to your agent's global instructions:\n\n" +
93
+ ' npx --yes sshlg-skills routers --member make-skill\n'
94
+ );
95
+ }
96
+ }
97
+
66
98
  function main(argv) {
67
99
  const args = argv.slice(2);
68
100
  if (args.includes('--help') || args.includes('-h')) {
@@ -103,6 +135,11 @@ function main(argv) {
103
135
  ' claude plugin update make-skill@make-skill\n' +
104
136
  ' Pass --force if you really want both.'
105
137
  );
138
+ // Offered here too. The skill IS present on this machine — as the plugin —
139
+ // so the routing block is exactly as wanted as on the install path. Two
140
+ // doors into one install that behave differently is how a feature comes to
141
+ // exist for half its users.
142
+ offerRouters();
106
143
  return 0;
107
144
  }
108
145
 
@@ -113,6 +150,7 @@ function main(argv) {
113
150
  true,
114
151
  force
115
152
  );
153
+ offerRouters();
116
154
  return 0;
117
155
  }
118
156
 
@@ -82,7 +82,7 @@ test/evals/ # triggers.json + scenarios.json (dat
82
82
  .github/workflows/validate.yml (+ release.yml, off by default)
83
83
  install.sh, README.md (English-first), CHANGELOG.md, LICENSE (MIT)
84
84
  CONTRIBUTING.md + SECURITY.md # required once the repo is public
85
- docs/superpowers/{specs,plans}/
85
+ docs/evidence/{specs,plans}/
86
86
  ```
87
87
 
88
88
  ## Claude Code plugin conformance (Anthropic's own reference)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ssheleg/make-skill",
3
- "version": "0.15.0",
3
+ "version": "0.17.0",
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.15.0",
6
+ "version": "0.17.0",
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.15.0"
8
+ version: "0.17.0"
9
9
  homepage: https://github.com/ssheleg/make-skill
10
10
  ---
11
11
 
@@ -49,7 +49,7 @@ or `plugins/*/skills/*/` in the current directory → run the Retrofit audit and
49
49
  report the gap table plus ONE next action. Nothing to detect → ask in one line
50
50
  what to create.
51
51
 
52
- Distributable work is a real project: spec (`docs/superpowers/specs/`) before
52
+ Distributable work is a real project: spec (`docs/evidence/specs/`) before
53
53
  code, and the spec locks target-project file contracts FIRST — skills are
54
54
  written against that contract, never ad hoc.
55
55
 
@@ -66,7 +66,7 @@ the shape from `ssheleg/super-ux`:
66
66
  ├── README.md (English-first), CHANGELOG.md, LICENSE (MIT)
67
67
  ├── CONTRIBUTING.md + SECURITY.md # public repo: how to check work, where to report
68
68
  ├── SKILL-CARD.md # the enterprise registry entry + risk-table pass
69
- └── docs/superpowers/{specs,plans}/
69
+ └── docs/evidence/{specs,plans}/
70
70
  ```
71
71
 
72
72
  **Public-repo floor** (validator-enforced): a README saying what it does before