skillcask 0.10.5 → 0.10.6
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 +63 -18
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -47,7 +47,8 @@ The tap was `puniserv/tap` before 0.10.5. If you installed from it, move to the
|
|
|
47
47
|
(your app settings stay):
|
|
48
48
|
|
|
49
49
|
```sh
|
|
50
|
-
brew uninstall skillcask-app
|
|
50
|
+
brew uninstall --cask puniserv/tap/skillcask-app # skip if you have no app
|
|
51
|
+
brew uninstall puniserv/tap/skillcask
|
|
51
52
|
brew untap puniserv/tap
|
|
52
53
|
brew install getresponse/tap/skillcask getresponse/tap/skillcask-app
|
|
53
54
|
```
|
|
@@ -189,7 +190,8 @@ allow-ranges = true # false: every version must be exact
|
|
|
189
190
|
packagist = true # false: drop the implicit Packagist repository
|
|
190
191
|
github-requires = false # true: dependencies may come from GitHub or git URLs
|
|
191
192
|
allow-sources = ["acme", "own", "packagist", "github"] # only these sources; default: all
|
|
192
|
-
deny-patterns = false # true: risky patterns in new skill text fail instead of warning
|
|
193
|
+
deny-patterns = false # true: risky patterns and invisible characters in new skill text fail instead of warning
|
|
194
|
+
deny-packages = ["evil/*"] # refused by name from any source, also in a lock; default: none
|
|
193
195
|
```
|
|
194
196
|
|
|
195
197
|
### Agents
|
|
@@ -227,18 +229,28 @@ Constraints follow Composer semantics: `^0.3` means `>=0.3.0 <0.4.0`, `~1.2` mea
|
|
|
227
229
|
|
|
228
230
|
### Allowed sources and policy for every project
|
|
229
231
|
|
|
230
|
-
`allow-sources` lists the only places skills may come from: repository names, `packagist`,
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
232
|
+
`allow-sources` lists the only places skills may come from: repository names, `packagist`, `github`,
|
|
233
|
+
or `https://` URL prefixes (`https://api.github.com/repos/acme/` allows one GitHub organisation).
|
|
234
|
+
End a prefix with `/` (`https://gitlab.example.com/`): an entry without one also names a registry
|
|
235
|
+
declared at exactly that URL, whose archives may then come from any host. Other repositories get no
|
|
236
|
+
request, and `install` refuses a lock entry from them, also with `--frozen`, so a committed lock
|
|
237
|
+
cannot bring them back. Dependencies follow the same rule.
|
|
238
|
+
|
|
239
|
+
`deny-packages` refuses packages by name, `vendor/name` or a whole `vendor/*`, whatever source
|
|
240
|
+
serves them (a GitHub `owner/repo` counts as `owner/repo`). A plain git entry is matched by its key
|
|
241
|
+
in `skills.toml`, which the project picks, so limit git URLs with `allow-sources`. It is checked
|
|
242
|
+
before any download and again on every lock entry, so it also stops a dependency or a committed
|
|
243
|
+
lock. Enforced in `config.toml`, the list is a floor: a project may add packages to it, not drop
|
|
244
|
+
any.
|
|
235
245
|
|
|
236
246
|
Policy can also come from `config.toml` next to the global manifest (`~/.config/skillcask`) and
|
|
237
247
|
from the environment. The first layer that sets a key wins:
|
|
238
248
|
|
|
239
249
|
1. `SKILLCASK_ALLOW_SOURCES`, `SKILLCASK_MIN_RELEASE_AGE`, `SKILLCASK_ALLOW_RANGES`,
|
|
240
|
-
`SKILLCASK_PACKAGIST`, `SKILLCASK_GITHUB_REQUIRES`, `SKILLCASK_DENY_PATTERNS
|
|
241
|
-
enforced key
|
|
250
|
+
`SKILLCASK_PACKAGIST`, `SKILLCASK_GITHUB_REQUIRES`, `SKILLCASK_DENY_PATTERNS`,
|
|
251
|
+
`SKILLCASK_DENY_PACKAGES` (lists comma-separated; against an enforced key only a stricter value
|
|
252
|
+
is accepted: a longer cooldown, `deny-patterns` on, the others off, narrower sources, more
|
|
253
|
+
denied packages);
|
|
242
254
|
2. keys `config.toml` lists in `enforce`: a project that sets them otherwise fails;
|
|
243
255
|
3. `[policy]` in `skills.toml`;
|
|
244
256
|
4. the other keys of `config.toml`, as defaults.
|
|
@@ -250,6 +262,10 @@ allow-sources = ["https://gitlab.example.com/", "github"]
|
|
|
250
262
|
enforce = ["allow-sources"]
|
|
251
263
|
```
|
|
252
264
|
|
|
265
|
+
`"github"` in an enforced `allow-sources` is public GitHub (`https://api.github.com/repos/`):
|
|
266
|
+
`SKILLCASK_GITHUB_API` and `GITHUB_API_URL` do not move it. For GitHub Enterprise, enforce its
|
|
267
|
+
prefix, e.g. `"https://ghe.example.com/api/v3/repos/"`.
|
|
268
|
+
|
|
253
269
|
An enforced `min-release-age` also applies to a repository's own `min-release-age`: a project
|
|
254
270
|
may only make it longer. Exceptions, by URL prefix, stay in `config.toml`:
|
|
255
271
|
|
|
@@ -262,6 +278,19 @@ enforce = ["min-release-age"]
|
|
|
262
278
|
"https://gitlab.example.com/" = "0" # internal skills, reviewed in merge requests
|
|
263
279
|
```
|
|
264
280
|
|
|
281
|
+
`enforce` stops a project and its dependencies from loosening the policy for what they resolve, and
|
|
282
|
+
a lock entry from a source outside an enforced `allow-sources`, or younger than an enforced or
|
|
283
|
+
environment `min-release-age`, from installing. The environment, which a project's CI configuration
|
|
284
|
+
also sets, may only make an enforced key stricter. A pinned version is not scanned again for `deny-
|
|
285
|
+
patterns`, and its release time is what the lock says. Under `allow-sources`, a GitHub or git entry
|
|
286
|
+
downloads only from its repository, and a registry the list admits only by a prefix only from inside
|
|
287
|
+
the list; the archive URL of Packagist or a registry the list names (or gives by its exact URL,
|
|
288
|
+
without a trailing `/`) is what the lock says, so review lock changes. `enforce` does not stop the
|
|
289
|
+
person running skillcask: `SKILLCASK_HOME`, `XDG_CONFIG_HOME` or `HOME` can point at a config
|
|
290
|
+
without it. For a rule nobody may skip, run `skillcask install --frozen` as a required check on pull
|
|
291
|
+
requests, with the policy in the job's environment and `.github/workflows/` protected (CODEOWNERS or
|
|
292
|
+
a required workflow), since a pull request runs its own copy of the workflow.
|
|
293
|
+
|
|
265
294
|
`config.toml` and the environment take URL prefixes, not repository names, since a name means
|
|
266
295
|
whatever a project calls it. `skillcask status` prints each key that is set and where it came
|
|
267
296
|
from.
|
|
@@ -342,7 +371,7 @@ Every command except `publish`, `validate` and `projects` takes `-g, --global`.
|
|
|
342
371
|
| `info <vendor/name[@constraint]\|github:owner/repo\|git:url\|skill>` | A package's skills, versions, description, license and requirements, or which package installs a skill. |
|
|
343
372
|
| `status` | Exit 1 when manifest, lock or installed files disagree. Also lists the repositories in use (name, type, URL without credentials) and whether `allow-sources` admits each. |
|
|
344
373
|
| `doctor [--fix]` | Broken or committed links, stale gitignore block, modified skills; lists each check it ran. |
|
|
345
|
-
| `audit [--json\|--sarif]` | What each installed skill reaches (commands, hosts, paths, env vars, scripts) and its findings: modified files, risky lines, invisible characters. Exit 1 on any finding. |
|
|
374
|
+
| `audit [--json\|--sarif] [--advisories]` | What each installed skill reaches (commands, hosts, paths, env vars, scripts) and its findings: modified files, risky lines, invisible characters; with `--advisories` also published security advisories and abandoned packages. Exit 1 on any finding. |
|
|
346
375
|
| `config [key [value…]] [--unset] [--json]` | Settings with where each comes from: `[policy]` and `[agents] targets` of `skills.toml`, or with `-g` of `config.toml` (also `policy.enforce` and `search.skills-sh`). `config policy.min-release-age 5d` sets a key, `--unset` removes it, each checked before the file is written; `config edit` opens the file in `$VISUAL`/`$EDITOR` and checks it afterwards. |
|
|
347
376
|
| `search [query] [--skills-sh\|--no-skills-sh [--remember]]` | Packagist (`type=ai-agent-skill`) and skill packages of the other repositories, GitLab included; with skills.sh on, also the GitHub skills it lists, as `github:owner/repo/skill` with their install count. skills.sh is off until you turn it on, since it receives the query: the first search in a terminal asks once, `--remember` saves a flag's choice (no query needed), both in `config.toml`. |
|
|
348
377
|
| `auth set\|remove <host>` | Keep a registry token in git's credential helper (Keychain, Credential Manager, libsecret). |
|
|
@@ -534,25 +563,41 @@ too young falls back to an older commit when the server supports partial fetches
|
|
|
534
563
|
| tells the agent to ignore its instructions | "ignore (all) previous/prior instructions", "disregard all previous/prior" |
|
|
535
564
|
|
|
536
565
|
Skills that teach shell setup trigger some of these legitimately, so they are warnings. With
|
|
537
|
-
`deny-patterns = true` under `[policy]` (or enforced in `config.toml`) they
|
|
538
|
-
with exit 1 and nothing is written.
|
|
566
|
+
`deny-patterns = true` under `[policy]` (or enforced in `config.toml`) they, and the invisible
|
|
567
|
+
characters above, fail the command with exit 1 and nothing is written.
|
|
539
568
|
- `skillcask audit` reviews what is installed now, every skill in `.agents/skills` and the project
|
|
540
569
|
skills: the commands its shell code blocks run, the hosts of its URLs, the paths in the home
|
|
541
570
|
directory or under system roots, the environment variables it reads and the files an agent could
|
|
542
|
-
run. That is read from the text, so it is a hint for review, not a sandbox
|
|
543
|
-
locked skill that differs from the lock, and
|
|
544
|
-
with no limit per file, and exits 1 on any of
|
|
545
|
-
|
|
571
|
+
run. That is read from the text, so it is a hint for review, not a sandbox, and a skill without
|
|
572
|
+
findings is not known to be safe. It also reports a locked skill that differs from the lock, and
|
|
573
|
+
every risky line and invisible character above, with no limit per file, and exits 1 on any of
|
|
574
|
+
them.
|
|
575
|
+
- `skillcask audit --advisories` also asks the sources of the locked packages what is published
|
|
576
|
+
about them: security advisories from a Composer repository that offers them (Packagist does) and
|
|
577
|
+
from a GitHub repository's security advisories, matched against the locked version, and
|
|
578
|
+
packages marked abandoned. An entry locked at a commit has no version to match, so only
|
|
579
|
+
advisories published after that commit count. A source that cannot be read fails the run;
|
|
580
|
+
packages whose source publishes no advisories, and plain git entries, are listed as unchecked.
|
|
581
|
+
Plain `audit` stays offline. To warn users of
|
|
582
|
+
your skill, publish a GitHub security advisory on its repository (for a Composer package, with
|
|
583
|
+
the `composer` ecosystem and the package name, so Packagist lists it too).
|
|
584
|
+
- `--sarif` prints a SARIF 2.1.0 log for code scanning, e.g. in GitHub Actions. Scripts a skill
|
|
585
|
+
bundles with their own dependencies (`package.json`, `requirements.txt`) are not covered by
|
|
586
|
+
`--advisories`; [OSV-Scanner](https://github.com/google/osv-scanner) checks those:
|
|
546
587
|
|
|
547
588
|
```yaml
|
|
548
|
-
- uses: GetResponse/skillcask@v0.
|
|
589
|
+
- uses: GetResponse/skillcask@v0.10.5
|
|
549
590
|
with:
|
|
550
591
|
args: install --frozen
|
|
551
|
-
- run: skillcask audit --sarif > skills.sarif
|
|
592
|
+
- run: skillcask audit --advisories --sarif > skills.sarif
|
|
593
|
+
env:
|
|
594
|
+
GITHUB_TOKEN: ${{ github.token }} # anonymous GitHub API calls are limited to 60 an hour
|
|
552
595
|
- uses: github/codeql-action/upload-sarif@v3
|
|
553
596
|
if: always()
|
|
554
597
|
with:
|
|
555
598
|
sarif_file: skills.sarif
|
|
599
|
+
# optional, needs osv-scanner on PATH (e.g. google/osv-scanner-action): dependencies of bundled scripts
|
|
600
|
+
- run: osv-scanner scan source -r .agents/skills
|
|
556
601
|
```
|
|
557
602
|
- Plain git sources pin the commit; the lock's `dist-sha256` hashes the commit's file list
|
|
558
603
|
(path, mode, sha256 of the content), so it does not depend on how a server packs objects.
|
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.10.
|
|
22
|
+
"version": "0.10.6"
|
|
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.
|
|
51
|
+
"version": "0.10.6"
|
|
52
52
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"artifactDownloadUrls": [
|
|
3
|
-
"https://github.com/GetResponse/skillcask/releases/download/v0.10.
|
|
3
|
+
"https://github.com/GetResponse/skillcask/releases/download/v0.10.6"
|
|
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.
|
|
107
|
+
"version": "0.10.6",
|
|
108
108
|
"volta": {
|
|
109
109
|
"node": "18.14.1",
|
|
110
110
|
"npm": "9.5.0"
|