skillcask 0.1.0 → 0.1.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 +92 -11
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -8,31 +8,63 @@ version constraints and commits a lock with content hashes. In CI it does frozen
|
|
|
8
8
|
fail on drift, and it links every skill into each agent's skill directory. It ships as a single
|
|
9
9
|
static binary with no runtime, so it works in a repository in any language.
|
|
10
10
|
|
|
11
|
-
Skills
|
|
12
|
-
GitLab's Composer registry, Satis, Private Packagist or the static repository built by
|
|
13
|
-
`skillcask publish` serve private ones.
|
|
11
|
+
Skills come from Composer repositories or straight from GitHub. Packagist serves public skill
|
|
12
|
+
packages; GitLab's Composer registry, Satis, Private Packagist or the static repository built by
|
|
13
|
+
`skillcask publish` serve private ones. Any GitHub repository with `SKILL.md` files works too,
|
|
14
|
+
which covers most of what [skills.sh](https://skills.sh) lists. skillcask does not need PHP,
|
|
15
|
+
Composer or Node.
|
|
14
16
|
|
|
15
17
|
## Install
|
|
16
18
|
|
|
19
|
+
**macOS, Linux**
|
|
20
|
+
|
|
17
21
|
```sh
|
|
18
|
-
brew install puniserv/tap/skillcask
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
brew install puniserv/tap/skillcask
|
|
23
|
+
# or, without Homebrew:
|
|
24
|
+
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/puniserv/skillcask/releases/latest/download/skillcask-installer.sh | sh
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Windows (PowerShell)**
|
|
28
|
+
|
|
29
|
+
```powershell
|
|
30
|
+
powershell -ExecutionPolicy Bypass -c "irm https://github.com/puniserv/skillcask/releases/latest/download/skillcask-installer.ps1 | iex"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The two installer scripts download the binary for your platform from the latest release and put
|
|
34
|
+
it in `~/.cargo/bin` (`%USERPROFILE%\.cargo\bin` on Windows).
|
|
35
|
+
|
|
36
|
+
**npm, bun**
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
npm install -g skillcask # global
|
|
40
|
+
bun add -g skillcask # global, bun
|
|
41
|
+
npx skillcask install --frozen
|
|
42
|
+
bunx skillcask install --frozen
|
|
22
43
|
```
|
|
23
44
|
|
|
24
45
|
The npm package is a thin wrapper that downloads the release binary for your platform from
|
|
25
|
-
GitHub. It does not check a checksum itself; where that matters,
|
|
26
|
-
and verify it.
|
|
46
|
+
GitHub. It does not check a checksum itself; where that matters, use Homebrew or a release
|
|
47
|
+
archive and verify it.
|
|
48
|
+
|
|
49
|
+
**Cargo**
|
|
27
50
|
|
|
28
|
-
|
|
51
|
+
```sh
|
|
52
|
+
cargo install --locked skillcask
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Release archives** for macOS, Linux and Windows are on the
|
|
29
56
|
[releases page](https://github.com/puniserv/skillcask/releases), with sha256 checksums and GitHub
|
|
30
|
-
build provenance attestations
|
|
57
|
+
build provenance attestations:
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
gh attestation verify skillcask-x86_64-unknown-linux-gnu.tar.xz -R puniserv/skillcask
|
|
61
|
+
```
|
|
31
62
|
|
|
32
63
|
## Use
|
|
33
64
|
|
|
34
65
|
```sh
|
|
35
66
|
skillcask add netresearch/agent-jira-skill # resolve, write skills.toml + skills.lock, install
|
|
67
|
+
skillcask add github:mattpocock/skills/tdd # one skill from a GitHub repository
|
|
36
68
|
skillcask install --frozen # CI: install exactly the lock or exit non-zero
|
|
37
69
|
skillcask status # manifest vs lock vs installed files
|
|
38
70
|
```
|
|
@@ -65,6 +97,8 @@ acme = { type = "composer", url = "https://git.example.com/api/v4/group/42/-/pac
|
|
|
65
97
|
"netresearch/agent-jira-skill" = "^3.34"
|
|
66
98
|
"acme/agents-md" = { version = "^1.0", repository = "acme" }
|
|
67
99
|
"acme/review" = { version = "1.4.2", repository = "acme", skills = ["review"] }
|
|
100
|
+
"mattpocock/skills" = { github = true, version = "^1.3", skills = ["tdd", "grill-me"] }
|
|
101
|
+
"anthropics/skills" = { github = true, skills = ["pdf"] } # default branch
|
|
68
102
|
|
|
69
103
|
[agents]
|
|
70
104
|
targets = [".claude/skills", ".junie/skills"]
|
|
@@ -86,6 +120,7 @@ Constraints follow Composer semantics: `^0.3` means `>=0.3.0 <0.4.0`, `~1.2` mea
|
|
|
86
120
|
|---|---|
|
|
87
121
|
| `init` | Create `skills.toml`. |
|
|
88
122
|
| `add <vendor/name>[@constraint] [--repository r]` | Resolve, lock and install. |
|
|
123
|
+
| `add github:<owner/repo>[/skill][@version-or-ref]` | The same from a GitHub repository, see below. |
|
|
89
124
|
| `remove <vendor/name>…` | Drop from manifest and lock; delete files, links and gitignore lines. |
|
|
90
125
|
| `install [--frozen]` | Install the lock. `--frozen` (implied by `CI`) fails when the lock is out of date. |
|
|
91
126
|
| `update [vendor/name…]` | Re-resolve within constraints. |
|
|
@@ -99,6 +134,49 @@ Constraints follow Composer semantics: `^0.3` means `>=0.3.0 <0.4.0`, `~1.2` mea
|
|
|
99
134
|
Exit codes: 0 ok, 1 manifest/lock/status problems, 2 authentication, 3 network, 4 hash mismatch,
|
|
100
135
|
5 IO or archive error.
|
|
101
136
|
|
|
137
|
+
### Skills from GitHub and skills.sh
|
|
138
|
+
|
|
139
|
+
[skills.sh](https://skills.sh) lists skills as `owner/repo/skill`, for example
|
|
140
|
+
`mattpocock/skills/grill-me`. Put `github:` in front and add it:
|
|
141
|
+
|
|
142
|
+
```sh
|
|
143
|
+
skillcask add github:mattpocock/skills/grill-me # one skill
|
|
144
|
+
skillcask add github:mattpocock/skills/tdd # a second one from the same repository
|
|
145
|
+
skillcask add github:anthropics/skills # every skill in the repository
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
All skills of one repository share one entry in `skills.toml`:
|
|
149
|
+
|
|
150
|
+
```toml
|
|
151
|
+
"mattpocock/skills" = { github = true, version = "^1.3", skills = ["grill-me", "tdd"] }
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Which version you get:
|
|
155
|
+
|
|
156
|
+
- **Repository with version tags** (`v1.3.1`): `add` writes `version = "^<major.minor>"`, like
|
|
157
|
+
for Composer packages, and `update` moves within it. The release time of a tag is its commit
|
|
158
|
+
date.
|
|
159
|
+
- **Repository without tags**: the entry follows the default branch; `ref = "main"` names a
|
|
160
|
+
branch, tag or commit instead. The lock pins the commit sha, so `install` keeps installing that
|
|
161
|
+
commit until you run `update`.
|
|
162
|
+
- `@` picks explicitly: `github:owner/repo@^2.0` (version tags), `github:owner/repo@main` or
|
|
163
|
+
`@<commit sha>` (ref).
|
|
164
|
+
- With `policy.allow-ranges = false` a branch counts as a range: `add` writes the full commit sha
|
|
165
|
+
as `ref`, and a hand-written branch name is rejected.
|
|
166
|
+
|
|
167
|
+
Skills are found by their `SKILL.md` anywhere in the repository, except inside another skill.
|
|
168
|
+
The install name is the frontmatter `name`; when that is not a valid name (`Jira Automation`), the
|
|
169
|
+
directory name is used. `skills = [...]` takes these names.
|
|
170
|
+
|
|
171
|
+
GitHub allows 60 anonymous API requests per hour. `add`, `update` and `outdated` use a few per
|
|
172
|
+
entry; `install` from the lock uses none, it downloads the pinned archive. Set `GITHUB_TOKEN`
|
|
173
|
+
(GitHub Actions has one) or Composer's `"github-oauth": {"github.com": "<token>"}` in `auth.json`
|
|
174
|
+
for a higher limit and for private repositories. `SKILLCASK_GITHUB_API` points at GitHub
|
|
175
|
+
Enterprise (`https://ghe.example.com/api/v3`).
|
|
176
|
+
|
|
177
|
+
skills.sh itself is not queried: its API needs a Vercel token. Search on the website, then add
|
|
178
|
+
what you picked.
|
|
179
|
+
|
|
102
180
|
## Security
|
|
103
181
|
|
|
104
182
|
- The lock pins the version, the commit reference, the sha256 of the downloaded archive and
|
|
@@ -110,6 +188,9 @@ Exit codes: 0 ok, 1 manifest/lock/status problems, 2 authentication, 3 network,
|
|
|
110
188
|
No symlink is ever written from a package. Size and file count are capped (`--max-download`,
|
|
111
189
|
`--max-unpacked`, `--max-files`).
|
|
112
190
|
- No package code runs, ever. No telemetry.
|
|
191
|
+
- `min-release-age` for GitHub sources reads commit dates, which the committer sets. A
|
|
192
|
+
backdated commit passes the cooldown; reviewing what `add`/`update` change in `skills.lock` is
|
|
193
|
+
the real check there.
|
|
113
194
|
- Credentials come from Composer's `auth.json` / `COMPOSER_AUTH` (`http-basic`, `bearer`,
|
|
114
195
|
`gitlab-token`, `gitlab-oauth`) and are never printed. In GitLab CI use `http-basic` with the
|
|
115
196
|
user `gitlab-ci-token` and the password `$CI_JOB_TOKEN`.
|
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.1.
|
|
22
|
+
"version": "0.1.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.1.
|
|
51
|
+
"version": "0.1.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.1.
|
|
3
|
+
"https://github.com/puniserv/skillcask/releases/download/v0.1.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.1.
|
|
107
|
+
"version": "0.1.2",
|
|
108
108
|
"volta": {
|
|
109
109
|
"node": "18.14.1",
|
|
110
110
|
"npm": "9.5.0"
|