skillcask 0.2.0 → 0.4.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 +73 -6
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -93,8 +93,12 @@ Codex lists both.
|
|
|
93
93
|
|
|
94
94
|
```toml
|
|
95
95
|
[repositories]
|
|
96
|
-
# Packagist is the implicit last repository.
|
|
97
96
|
acme = { type = "composer", url = "https://git.example.com/api/v4/group/42/-/packages/composer/packages.json" }
|
|
97
|
+
# A repository you review yourself can skip the cooldown; the others keep it.
|
|
98
|
+
own = { url = "https://git.example.com/own/packages.json", min-release-age = "0" }
|
|
99
|
+
# Default sources, written by `init`; `= false` turns one off. Packagist is always searched last.
|
|
100
|
+
packagist = { url = "https://repo.packagist.org" }
|
|
101
|
+
github = { type = "github", url = "https://api.github.com" } # GitHub Enterprise: its API URL
|
|
98
102
|
|
|
99
103
|
[skills]
|
|
100
104
|
"netresearch/agent-jira-skill" = "^3.34"
|
|
@@ -111,12 +115,64 @@ local = ".skills" # project skills
|
|
|
111
115
|
min-release-age = "3d" # cooldown for add/update; "0" disables
|
|
112
116
|
allow-ranges = true # false: every version must be exact
|
|
113
117
|
packagist = true # false: drop the implicit Packagist repository
|
|
118
|
+
github-requires = false # true: dependencies may come from GitHub
|
|
119
|
+
allow-sources = ["acme", "own", "packagist", "github"] # only these sources; default: all
|
|
114
120
|
```
|
|
115
121
|
|
|
116
122
|
Constraints follow Composer semantics: `^0.3` means `>=0.3.0 <0.4.0`, `~1.2` means
|
|
117
123
|
`>=1.2 <2.0`, and pre-releases are only selected when the constraint names a stability
|
|
118
124
|
(`^1.0@beta`).
|
|
119
125
|
|
|
126
|
+
### Allowed sources and policy for every project
|
|
127
|
+
|
|
128
|
+
`allow-sources` lists the only places skills may come from: repository names, `packagist`,
|
|
129
|
+
`github`, or `https://` URL prefixes (`https://api.github.com/repos/acme/` allows one GitHub
|
|
130
|
+
organisation). Other repositories get no request, and `install` refuses a lock entry from them,
|
|
131
|
+
also with `--frozen`, so a committed lock cannot bring them back. Dependencies follow the same
|
|
132
|
+
rule.
|
|
133
|
+
|
|
134
|
+
Policy can also come from `config.toml` next to the global manifest (`~/.config/skillcask`) and
|
|
135
|
+
from the environment. The first layer that sets a key wins:
|
|
136
|
+
|
|
137
|
+
1. `SKILLCASK_ALLOW_SOURCES`, `SKILLCASK_MIN_RELEASE_AGE`, `SKILLCASK_ALLOW_RANGES`,
|
|
138
|
+
`SKILLCASK_PACKAGIST`, `SKILLCASK_GITHUB_REQUIRES` (overriding an enforced key prints a
|
|
139
|
+
warning);
|
|
140
|
+
2. keys `config.toml` lists in `enforce`: a project that sets them otherwise fails;
|
|
141
|
+
3. `[policy]` in `skills.toml`;
|
|
142
|
+
4. the other keys of `config.toml`, as defaults.
|
|
143
|
+
|
|
144
|
+
```toml
|
|
145
|
+
# ~/.config/skillcask/config.toml: only the company registry and GitHub, in every project
|
|
146
|
+
[policy]
|
|
147
|
+
allow-sources = ["https://gitlab.example.com/", "github"]
|
|
148
|
+
enforce = ["allow-sources"]
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
`config.toml` and the environment take URL prefixes, not repository names, since a name means
|
|
152
|
+
whatever a project calls it. `skillcask status` prints each key that is set and where it came
|
|
153
|
+
from.
|
|
154
|
+
|
|
155
|
+
### Dependencies
|
|
156
|
+
|
|
157
|
+
A skill that needs other skills lists them in its `SKILL.md`:
|
|
158
|
+
|
|
159
|
+
```yaml
|
|
160
|
+
---
|
|
161
|
+
name: gitlab-branch-mr
|
|
162
|
+
version: 1.2.0
|
|
163
|
+
requires:
|
|
164
|
+
acme/security-review: ^1.0
|
|
165
|
+
github:mattpocock/skills/pr: main
|
|
166
|
+
---
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
`add`, `install` and `update` resolve, lock and install them like your own entries: same
|
|
170
|
+
cooldown, same hashes, one version per package (the highest one every requirer accepts). They
|
|
171
|
+
stay out of `skills.toml`; the lock records each package's `requires` and switches to
|
|
172
|
+
`version = 2`. A dependency is looked up only in your repositories, in order, then Packagist;
|
|
173
|
+
a `github:` one needs `github-requires = true`. `remove` drops dependencies nobody needs any
|
|
174
|
+
more, and `status` shows them as `via <requirer>`.
|
|
175
|
+
|
|
120
176
|
### Name conflicts
|
|
121
177
|
|
|
122
178
|
Skills have no namespaces: an agent knows a skill by its name. Two skills with the same name in
|
|
@@ -165,13 +221,19 @@ Every command except `publish` takes `-g, --global`.
|
|
|
165
221
|
| `outdated` | Newer versions, and when cooled-down ones become eligible. |
|
|
166
222
|
| `status` | Exit 1 when manifest, lock or installed files disagree. |
|
|
167
223
|
| `doctor [--fix]` | Broken or committed links, stale gitignore block, modified skills. |
|
|
168
|
-
| `search <query>` | Packagist (`type=ai-agent-skill`) and
|
|
224
|
+
| `search <query>` | Packagist (`type=ai-agent-skill`) and skill packages of the other repositories, GitLab included. |
|
|
225
|
+
| `auth set\|remove <host>` | Keep a registry token in git's credential helper (Keychain, Credential Manager, libsecret). |
|
|
169
226
|
| `publish --vendor v --base-url URL --out DIR [--inline] [--dist-url TPL] [paths…]` | Build a static Composer repository from a monorepo. |
|
|
170
227
|
| `<other>` | Runs `skillcask-<other>` from `PATH`, like git and cargo plugins. |
|
|
171
228
|
|
|
172
229
|
Exit codes: 0 ok, 1 manifest/lock/status problems, 2 authentication, 3 network, 4 hash mismatch,
|
|
173
230
|
5 IO or archive error.
|
|
174
231
|
|
|
232
|
+
Output is coloured in a terminal (`NO_COLOR` turns it off, `CLICOLOR_FORCE` on) and errors name
|
|
233
|
+
the next step on a `hint:` line. For coding agents, `--agent` or `SKILLCASK_AGENT=1` prints terse,
|
|
234
|
+
uncoloured, tab-separated output with only the rows that need action; it is on by itself when
|
|
235
|
+
`AI_AGENT` or `CLAUDECODE=1` is set, unless `SKILLCASK_AGENT=0`.
|
|
236
|
+
|
|
175
237
|
### Skills from GitHub and skills.sh
|
|
176
238
|
|
|
177
239
|
[skills.sh](https://skills.sh) lists skills as `owner/repo/skill`, for example
|
|
@@ -229,11 +291,16 @@ what you picked.
|
|
|
229
291
|
and paths that collide by case or Unicode form fail a skill that contains them, and are
|
|
230
292
|
skipped outside the selected skills.
|
|
231
293
|
- No package code runs, ever. No telemetry.
|
|
232
|
-
- `min-release-age` for GitHub sources
|
|
233
|
-
|
|
234
|
-
the
|
|
294
|
+
- `min-release-age` for GitHub sources uses times GitHub sets: release publication for tags,
|
|
295
|
+
push times from the Activity API for branches. A tag without a release, or a ref GitHub lists no
|
|
296
|
+
pushes for, falls back to commit dates, which the committer sets; reviewing what `add`/`update`
|
|
297
|
+
change in `skills.lock` is the real check there.
|
|
235
298
|
- Credentials come from Composer's `auth.json` / `COMPOSER_AUTH` (`http-basic`, `bearer`,
|
|
236
|
-
`gitlab-token`, `gitlab-oauth`) and are never printed.
|
|
299
|
+
`gitlab-token`, `gitlab-oauth`), then from git's credential helper, and are never printed.
|
|
300
|
+
`skillcask auth set git.example.com` keeps a token in the macOS Keychain, the Windows Credential
|
|
301
|
+
Manager or libsecret instead of a plain-text file (the default username `PRIVATE-TOKEN` sends
|
|
302
|
+
GitLab's header; `--username oauth2` a Bearer token). `SKILLCASK_GIT_CREDENTIALS=0` turns the
|
|
303
|
+
helper off. In GitLab CI use `http-basic` with the
|
|
237
304
|
user `gitlab-ci-token` and the password `$CI_JOB_TOKEN`.
|
|
238
305
|
|
|
239
306
|
## Publishing skills
|
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.4.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.4.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.4.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.4.0",
|
|
108
108
|
"volta": {
|
|
109
109
|
"node": "18.14.1",
|
|
110
110
|
"npm": "9.5.0"
|