skillcask 0.4.0 → 0.5.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/README.md +61 -4
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -208,7 +208,7 @@ skillcask -g install --frozen # e.g. from a dotfiles repository
|
|
|
208
208
|
|
|
209
209
|
### Commands
|
|
210
210
|
|
|
211
|
-
Every command except `publish` takes `-g, --global`.
|
|
211
|
+
Every command except `publish` and `validate` takes `-g, --global`.
|
|
212
212
|
|
|
213
213
|
| Command | |
|
|
214
214
|
|---|---|
|
|
@@ -217,13 +217,16 @@ Every command except `publish` takes `-g, --global`.
|
|
|
217
217
|
| `add github:<owner/repo>[/skill][@version-or-ref]` | The same from a GitHub repository, see below. |
|
|
218
218
|
| `remove <vendor/name>…` | Drop from manifest and lock; delete files, links and gitignore lines. |
|
|
219
219
|
| `install [--frozen]` | Install the lock. `--frozen` (implied by `CI`) fails when the lock is out of date. |
|
|
220
|
-
| `update [vendor/name…]` | Re-resolve within constraints. |
|
|
221
|
-
| `outdated` | Newer versions, and when cooled-down ones become eligible. |
|
|
220
|
+
| `update [vendor/name…] [--diff]` | Re-resolve within constraints. `--diff` prints what changes in each updated or added package; it does not ask before installing. |
|
|
221
|
+
| `outdated [--strict]` | Newer versions, and when cooled-down ones become eligible. `--strict` exits 1 when `update` would lock a newer version. |
|
|
222
|
+
| `diff [vendor/name] [--to constraint]` | Unified diff of skill files from the locked version to the one `update` would lock, see below. |
|
|
223
|
+
| `info <vendor/name[@constraint]\|github:owner/repo\|skill>` | A package's skills, versions, description, license and requirements, or which package installs a skill. |
|
|
222
224
|
| `status` | Exit 1 when manifest, lock or installed files disagree. |
|
|
223
|
-
| `doctor [--fix]` | Broken or committed links, stale gitignore block, modified skills. |
|
|
225
|
+
| `doctor [--fix]` | Broken or committed links, stale gitignore block, modified skills; lists each check it ran. |
|
|
224
226
|
| `search <query>` | Packagist (`type=ai-agent-skill`) and skill packages of the other repositories, GitLab included. |
|
|
225
227
|
| `auth set\|remove <host>` | Keep a registry token in git's credential helper (Keychain, Credential Manager, libsecret). |
|
|
226
228
|
| `publish --vendor v --base-url URL --out DIR [--inline] [--dist-url TPL] [paths…]` | Build a static Composer repository from a monorepo. |
|
|
229
|
+
| `validate [paths…]` | Check `SKILL.md` files against the Agent Skills spec, see below. |
|
|
227
230
|
| `<other>` | Runs `skillcask-<other>` from `PATH`, like git and cargo plugins. |
|
|
228
231
|
|
|
229
232
|
Exit codes: 0 ok, 1 manifest/lock/status problems, 2 authentication, 3 network, 4 hash mismatch,
|
|
@@ -234,6 +237,37 @@ the next step on a `hint:` line. For coding agents, `--agent` or `SKILLCASK_AGEN
|
|
|
234
237
|
uncoloured, tab-separated output with only the rows that need action; it is on by itself when
|
|
235
238
|
`AI_AGENT` or `CLAUDECODE=1` is set, unless `SKILLCASK_AGENT=0`.
|
|
236
239
|
|
|
240
|
+
A failed connection, HTTP 429 or a 5xx response is retried twice, after 1 s and 2 s or after the
|
|
241
|
+
`Retry-After` seconds the server sends. A `Retry-After` above 60 s, a spent GitHub rate limit, a
|
|
242
|
+
timeout or a TLS error fails at once.
|
|
243
|
+
|
|
244
|
+
`add`, `update` and `outdated` warn about a package its registry marks `abandoned` and name the
|
|
245
|
+
replacement when there is one (and it is a valid package name). Installing from the lock does not ask the registry.
|
|
246
|
+
|
|
247
|
+
**Reviewing an update:** a skill is a prompt, so read what changes before you take it.
|
|
248
|
+
`skillcask diff` prints a unified diff of the skill files, from the locked version to the one
|
|
249
|
+
`update` would lock (newest within the constraint, past the cooldown), for every entry in
|
|
250
|
+
`skills.toml` with a newer version; `diff vendor/name --to 2.0.0` compares one package with
|
|
251
|
+
another version. A package new to the lock, such as a dependency a new version adds, is shown as
|
|
252
|
+
all added. Nothing is installed or written. Control characters, bidi controls and other
|
|
253
|
+
invisible characters in the diff are shown as `<U+XXXX>` (a carriage return too, when the line
|
|
254
|
+
ends change), and invisible characters in changed files are warned about. Files over 1 MiB or
|
|
255
|
+
10,000 lines print `Files differ (too large to show)`. `update --diff` prints the same diff
|
|
256
|
+
before it writes the lock, then installs without asking: run `skillcask diff` first to review
|
|
257
|
+
and decide. A scheduled CI job can run `skillcask outdated --strict` (exit 1 when something is to
|
|
258
|
+
update), then `skillcask update --diff` and open a pull request with the output.
|
|
259
|
+
|
|
260
|
+
**Where a skill comes from:** `skillcask info vendor/name` shows the package's skills with their
|
|
261
|
+
descriptions, its versions, description, license, `abandoned` and `requires`, for the locked
|
|
262
|
+
version or else the newest one `add` would take (`@constraint` for another); `info
|
|
263
|
+
github:owner/repo` lists the skills of a GitHub repository before you add it. `skillcask info
|
|
264
|
+
<skill>` names the package that installs an installed skill and the `skills.toml` entry, or the
|
|
265
|
+
chain of `requires`, that brings it in.
|
|
266
|
+
|
|
267
|
+
**Merge conflicts in `skills.lock`:** a lock with conflict markers fails with a hint. Resolve
|
|
268
|
+
`skills.toml`, keep either side of the lock (`git checkout --theirs skills.lock`) and run
|
|
269
|
+
`skillcask install`: it locks the entries from the other side that the kept lock lacks.
|
|
270
|
+
|
|
237
271
|
### Skills from GitHub and skills.sh
|
|
238
272
|
|
|
239
273
|
[skills.sh](https://skills.sh) lists skills as `owner/repo/skill`, for example
|
|
@@ -291,6 +325,13 @@ what you picked.
|
|
|
291
325
|
and paths that collide by case or Unicode form fail a skill that contains them, and are
|
|
292
326
|
skipped outside the selected skills.
|
|
293
327
|
- No package code runs, ever. No telemetry.
|
|
328
|
+
- `add` and `update` (and `install` when it resolves) warn about characters a reviewer cannot
|
|
329
|
+
see in the text files of new content: bidi controls (`U+202A`-`U+202E`, `U+2066`-`U+2069`,
|
|
330
|
+
`U+200E`, `U+200F`, `U+061C`), zero-width characters (`U+200B`-`U+200D`, `U+2060`, `U+FEFF`) and
|
|
331
|
+
Unicode tags (`U+E0000`-`U+E007F`), as `warning: acme/x: skills/foo/SKILL.md:12: U+202E
|
|
332
|
+
RIGHT-TO-LEFT OVERRIDE`, at most five per file. A leading byte order mark and a zero width
|
|
333
|
+
joiner inside an emoji are not reported; right-to-left and Indic text can trigger warnings.
|
|
334
|
+
Installing from the lock does not warn again.
|
|
294
335
|
- `min-release-age` for GitHub sources uses times GitHub sets: release publication for tags,
|
|
295
336
|
push times from the Activity API for branches. A tag without a release, or a ref GitHub lists no
|
|
296
337
|
pushes for, falls back to commit dates, which the committer sets; reviewing what `add`/`update`
|
|
@@ -319,6 +360,22 @@ This writes `packages.json`, `p2/acme/<name>.json` and deterministic zips under
|
|
|
319
360
|
versions are immutable, and re-running on unchanged skills changes no file. Serve the directory
|
|
320
361
|
over HTTPS.
|
|
321
362
|
|
|
363
|
+
Check the skills before publishing; `validate` exits 1 on any error and warns about invisible
|
|
364
|
+
Unicode, as `add` does:
|
|
365
|
+
|
|
366
|
+
```sh
|
|
367
|
+
skillcask validate skills/
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
It follows the [Agent Skills specification](https://agentskills.io/specification): `name` 1-64
|
|
371
|
+
lowercase letters, digits and single hyphens, equal to the directory name; `description` 1-1024
|
|
372
|
+
characters; `compatibility` at most 500. Without paths it searches the current directory.
|
|
373
|
+
`publish` skips a `SKILL.md` without `name` or `version` and names it in a warning.
|
|
374
|
+
|
|
375
|
+
To retire a skill, publish a new version with `deprecated: true`, or `deprecated: vendor/name`
|
|
376
|
+
naming its replacement, in the frontmatter. It becomes Composer's `abandoned`, and consumers see a
|
|
377
|
+
warning on `add`, `update` and `outdated`.
|
|
378
|
+
|
|
322
379
|
Hosts that cannot serve `/` inside file names (GitLab's Generic Package Registry) take a single
|
|
323
380
|
file instead:
|
|
324
381
|
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"hasInstallScript": true,
|
|
20
20
|
"license": "MIT OR Apache-2.0",
|
|
21
21
|
"name": "skillcask",
|
|
22
|
-
"version": "0.
|
|
22
|
+
"version": "0.5.0"
|
|
23
23
|
},
|
|
24
24
|
"node_modules/detect-libc": {
|
|
25
25
|
"engines": {
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
"requires": true,
|
|
51
|
-
"version": "0.
|
|
51
|
+
"version": "0.5.0"
|
|
52
52
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"artifactDownloadUrls": [
|
|
3
|
-
"https://github.com/puniserv/skillcask/releases/download/v0.
|
|
3
|
+
"https://github.com/puniserv/skillcask/releases/download/v0.5.0"
|
|
4
4
|
],
|
|
5
5
|
"bin": {
|
|
6
6
|
"skillcask": "run-skillcask.js"
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"zipExt": ".tar.xz"
|
|
105
105
|
}
|
|
106
106
|
},
|
|
107
|
-
"version": "0.
|
|
107
|
+
"version": "0.5.0",
|
|
108
108
|
"volta": {
|
|
109
109
|
"node": "18.14.1",
|
|
110
110
|
"npm": "9.5.0"
|