skillcask 0.10.0 → 0.10.2

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 CHANGED
@@ -33,6 +33,29 @@ powershell -ExecutionPolicy Bypass -c "irm https://github.com/puniserv/skillcask
33
33
  The two installer scripts download the binary for your platform from the latest release and put
34
34
  it in `~/.cargo/bin` (`%USERPROFILE%\.cargo\bin` on Windows).
35
35
 
36
+ **Desktop app (macOS 14+ only for now)**
37
+
38
+ ```sh
39
+ brew install puniserv/tap/skillcask puniserv/tap/skillcask-app
40
+ skillcask app # or open Skillcask from Applications
41
+ ```
42
+
43
+ Install with the full names: Homebrew loads a third-party tap's cask only when it is named in full
44
+ (or listed by `brew trust`); after that, `brew upgrade` takes the short name.
45
+
46
+ Without Homebrew:
47
+
48
+ ```sh
49
+ curl --proto '=https' --tlsv1.2 -LsSf https://github.com/puniserv/skillcask/releases/latest/download/skillcask-app-installer.sh | sh
50
+ ```
51
+
52
+ The installer downloads `Skillcask-X.Y.Z-macos-universal.zip` (signed and notarized, with its own
53
+ CLI inside) from the latest release, checks its sha256 and Gatekeeper's verdict, and moves the app
54
+ to `/Applications`; an earlier copy goes to the Trash. It leaves a Homebrew install alone.
55
+ `SKILLCASK_VERSION=X.Y.Z` picks a release, `SKILLCASK_APP_DIR` another folder.
56
+
57
+ Linux and Windows have the terminal UI, `skillcask ui`. More in [macOS app](#macos-app).
58
+
36
59
  **npm, bun**
37
60
 
38
61
  ```sh
@@ -81,6 +104,24 @@ x64), checks its sha256 and its build provenance attestation, puts `skillcask` o
81
104
  it with `args`. It runs no other action. Used at a tag (`@vX.Y.Z`) it takes the version from the
82
105
  tag.
83
106
 
107
+ ### Update
108
+
109
+ `skillcask self-update` reruns the release's installer when `skillcask-installer.sh` installed
110
+ this binary (Linux, macOS); for any other install it prints the one command to run and exits 1.
111
+ `SKILLCASK_SELF_UPDATE=0` makes it print the installer command too. By hand:
112
+
113
+ ```sh
114
+ brew update && brew upgrade skillcask skillcask-app # Homebrew (skillcask alone without the app)
115
+ npm install -g skillcask@latest # npm (bun: bun add -g skillcask@latest)
116
+ cargo install --locked skillcask # Cargo
117
+ ```
118
+
119
+ The installer scripts (`skillcask-installer.sh`, `skillcask-installer.ps1`,
120
+ `skillcask-app-installer.sh`) install the latest release when run again; the app's installer moves
121
+ the earlier copy to the Trash. The app's own CLI updates with the app; Homebrew updates the app and
122
+ the CLI on your `PATH` separately, which is why `brew upgrade` names both. For the GitHub Action,
123
+ bump the pinned commit and `version`. `skillcask --version` prints what you have.
124
+
84
125
  ## Use
85
126
 
86
127
  ```sh
@@ -298,18 +339,24 @@ Every command except `publish`, `validate` and `projects` takes `-g, --global`.
298
339
  | `validate [paths…]` | Check `SKILL.md` files against the Agent Skills spec, see below. |
299
340
  | `projects [dirs…]` | Directories that hold `skills.toml` under the given ones (default: the current one), up to 6 levels down; hidden directories, `node_modules`, `vendor`, `target` and `Library` are skipped. |
300
341
  | `ui` | A terminal UI over the commands above: skills with their state and updates, `info`, SKILL.md and `audit` per skill, add, adopt (also offered when an add hits a skill skillcask does not manage), update (diff first), remove, doctor, a filter of the list, search of the registries (and skills.sh, asked once), the repositories in use (`R`, `S` turns skills.sh on or off) and a projects picker; `g` switches between the project and `--global`. |
342
+ | `app` | Opens the macOS app (see [macOS app](#macos-app)); exits 1 when it is not installed, and on Linux and Windows. |
343
+ | `self-check [--json]` | Whether a newer skillcask is released, from the `skillcask-app` cask file of the tap; one anonymous request, only when run; writes nothing. |
344
+ | `self-update [--dry-run]` | Update skillcask: reruns the release's installer for an installer-script install (Linux, macOS), else prints the Homebrew, npm, cargo or app command and exits 1. `--dry-run` prints what would run. |
301
345
  | `<other>` | Runs `skillcask-<other>` from `PATH`, like git and cargo plugins. |
302
346
 
303
- `status`, `outdated`, `info`, `search`, `doctor`, `audit`, `projects` and `config` take `--json`: one JSON document on one line of
304
- stdout, with the same exit code; warnings and errors stay on stderr. Package text in it is
305
- escaped as in the terminal (`<U+202E>`). `status --json` has `repositories`
347
+ `status`, `outdated`, `info`, `search`, `doctor`, `audit`, `projects`, `config` and
348
+ `self-check` take `--json`: one JSON document on one line of stdout, with the same exit code;
349
+ warnings and errors stay on stderr. Package text in it is escaped as in the terminal
350
+ (`<U+202E>`). `status --json` has `repositories`
306
351
  (`[{"name", "type", "url", "allowed"}]`) and `skills-sh`; `search --json` results carry `source` (the repository
307
352
  name, or `skills.sh`) and `installs`, and the document has `"skills-sh": true|false|null` (`null`:
308
- never decided). For example `skillcask outdated --json | jq
353
+ never decided). `self-check --json` is `{"version", "latest", "newer"}` (`latest` is `null` when
354
+ the cask holds no readable version). For example `skillcask outdated --json | jq
309
355
  '.packages[] | select(.within != .locked)'`.
310
356
 
311
357
  Exit codes: 0 ok, 1 manifest/lock/status problems, 2 authentication, 3 network, 4 hash mismatch,
312
- 5 IO or archive error.
358
+ 5 IO or archive error. `self-update` exits 1 when it updated nothing and printed the command to run;
359
+ when it runs the installer, the installer's exit code is its own.
313
360
 
314
361
  Output is coloured in a terminal (`NO_COLOR` turns it off, `CLICOLOR_FORCE` on) and errors name
315
362
  the next step on a `hint:` line. For coding agents, `--agent` or `SKILLCASK_AGENT=1` prints terse,
@@ -448,6 +495,15 @@ too young falls back to an older commit when the server supports partial fetches
448
495
  and paths that collide by case or Unicode form fail a skill that contains them, and are
449
496
  skipped outside the selected skills.
450
497
  - No package code runs, ever. No telemetry.
498
+ - `self-check` and the app's "Check for Updates…" send nothing but the request for the tap's cask
499
+ file, which carries the skillcask version in its User-Agent (`skillcask/<version>`): no token,
500
+ account, project or skill data; GitHub sees your IP address. The app checks
501
+ daily only after you say yes. `SKILLCASK_SELF_CHECK_URL` points it at a mirror (HTTPS only).
502
+ - `self-update` sends the same request, then, for an installer-script install only, downloads that
503
+ release's `skillcask-installer.sh` the same way (`SKILLCASK_SELF_UPDATE_URL` replaces the
504
+ download base) and runs it with `/bin/sh`, without your `SKILLCASK_*`, `INSTALLER_*` and
505
+ `CARGO_DIST_*` variables. The script checks the archive's sha256 with `sha256sum`, so
506
+ `self-update` refuses to run it when `sha256sum` is not on `PATH`.
451
507
  - `add` and `update` (and `install` when it resolves) warn about characters a reviewer cannot
452
508
  see in the text files of new content: bidi controls (`U+202A`-`U+202E`, `U+2066`-`U+2069`,
453
509
  `U+200E`, `U+200F`, `U+061C`), zero-width characters (`U+200B`-`U+200D`, `U+2060`, `U+FEFF`) and
@@ -553,7 +609,23 @@ file through the GitLab raw files API
553
609
  project folder, see each skill's state, updates and audit findings, read its SKILL.md and diffs,
554
610
  and run `add` (also `--adopt`), `update`, `remove`, `install` and `doctor --fix`; its Settings
555
611
  change every key `skillcask -g config` lists. It has no package logic of its own: it runs the
556
- `skillcask` binary and reads its `--json` output.
612
+ `skillcask` binary, 0.9.4 or newer, and reads its `--json` output.
613
+
614
+ Install it with Homebrew, then open it from Applications or with `skillcask app`. The cask depends
615
+ on the formula; name both, since Homebrew loads from a third-party tap only what it was asked for
616
+ or what `brew trust` lists:
617
+
618
+ ```sh
619
+ brew install puniserv/tap/skillcask puniserv/tap/skillcask-app
620
+ ```
621
+
622
+ Every release also has `Skillcask-X.Y.Z-macos-universal.zip`, signed with a Developer ID and
623
+ notarized (D50): unzip it into `/Applications`.
624
+
625
+ The app tells you about a newer release but installs nothing ([Update](#update)). Its app menu
626
+ has Check for Updates…, which runs `skillcask self-check`; it checks daily only after you say yes
627
+ once (it asks in the sidebar; Settings › Updates switches it). A newer version gets a card and a
628
+ sheet with the Homebrew command to copy, or the release page for a download (D51).
557
629
 
558
630
  `macos/bundle.sh` builds a universal `Skillcask.app` that carries its own CLI at
559
631
  `Contents/Helpers/skillcask`. Run outside a bundle (`swift run` from `macos/`), the app uses the
@@ -19,7 +19,7 @@
19
19
  "hasInstallScript": true,
20
20
  "license": "MIT OR Apache-2.0",
21
21
  "name": "skillcask",
22
- "version": "0.10.0"
22
+ "version": "0.10.2"
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.10.0"
51
+ "version": "0.10.2"
52
52
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "artifactDownloadUrls": [
3
- "https://github.com/puniserv/skillcask/releases/download/v0.10.0"
3
+ "https://github.com/puniserv/skillcask/releases/download/v0.10.2"
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.10.0",
107
+ "version": "0.10.2",
108
108
  "volta": {
109
109
  "node": "18.14.1",
110
110
  "npm": "9.5.0"