@genspark/cli 1.0.23 → 1.0.25
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/dist/commands/mesh.d.ts +6 -0
- package/dist/commands/mesh.d.ts.map +1 -1
- package/dist/commands/mesh.js +72 -0
- package/dist/commands/mesh.js.map +1 -1
- package/dist/commands/skills-pull.d.ts +91 -0
- package/dist/commands/skills-pull.d.ts.map +1 -0
- package/dist/commands/skills-pull.js +275 -0
- package/dist/commands/skills-pull.js.map +1 -0
- package/dist/commands/skills-save.d.ts +39 -0
- package/dist/commands/skills-save.d.ts.map +1 -0
- package/dist/commands/skills-save.js +93 -0
- package/dist/commands/skills-save.js.map +1 -0
- package/dist/commands/skills-sync.d.ts +92 -0
- package/dist/commands/skills-sync.d.ts.map +1 -0
- package/dist/commands/skills-sync.js +329 -0
- package/dist/commands/skills-sync.js.map +1 -0
- package/dist/index.js +195 -5
- package/dist/index.js.map +1 -1
- package/docs/skills.md +208 -1
- package/package.json +2 -1
- package/skills/gsk-aidrive/SKILL.md +8 -5
- package/skills/gsk-batch-understand-videos/SKILL.md +36 -0
- package/skills/gsk-crawler/SKILL.md +3 -1
- package/skills/gsk-github/SKILL.md +17 -10
- package/skills/gsk-maps-search/SKILL.md +44 -0
- package/skills/gsk-scholar-search/SKILL.md +36 -0
package/docs/skills.md
CHANGED
|
@@ -1,6 +1,213 @@
|
|
|
1
1
|
# GSK CLI Skills Index
|
|
2
2
|
|
|
3
3
|
> Auto-generated by `python -m backend.genspark_tool_cli.generate_skills`. Do not edit manually.
|
|
4
|
+
>
|
|
5
|
+
> **Exception — the section below.** The `gsk skills <verb>` command group
|
|
6
|
+
> (design: `docs/plans/2026-07-05-gsk-skills-universal-design.md`) is
|
|
7
|
+
> registered behind `requires_gk="gk_skills_cli"`, and the generator skips
|
|
8
|
+
> every gated tool (`generate_skills.py`: `if config.requires_gk: continue`),
|
|
9
|
+
> so these verbs never appear in the auto-generated table below and have no
|
|
10
|
+
> other doc home yet. This section is maintained by hand until that gap is
|
|
11
|
+
> closed; re-running `python -m backend.genspark_tool_cli.generate_skills`
|
|
12
|
+
> overwrites the whole file, so re-add this section if it goes missing.
|
|
13
|
+
|
|
14
|
+
## `gsk skills` command group
|
|
15
|
+
|
|
16
|
+
Ten verbs — `list`, `info`, `team`, `install`, `uninstall`, `upgrade`,
|
|
17
|
+
`pull`, `sync`, `save`, `publish` — over the shared `SkillsService` catalog
|
|
18
|
+
(personal / community / team skills). Gated by `gk_skills_cli` (employees +
|
|
19
|
+
mainfunc allowlist during rollout); with the flag off, none of the
|
|
20
|
+
`skills_*` tools are discoverable via `GET /api/tool_cli/tools` and the CLI
|
|
21
|
+
reports them as unknown commands.
|
|
22
|
+
|
|
23
|
+
Mutating verbs (`install`, `uninstall`, `upgrade`, `save`, `publish`) reject
|
|
24
|
+
agent-principal (DE-runtime) tokens with `FORBIDDEN: agent-principal tokens
|
|
25
|
+
cannot modify user skills` — a caller can only ever mutate its own catalog,
|
|
26
|
+
never another user's. Read/export verbs (`list`, `info`, `team`, `pull`,
|
|
27
|
+
`sync`) carry no such check.
|
|
28
|
+
|
|
29
|
+
### `pull` vs `sync` — authoring-only vs. runtime materialization
|
|
30
|
+
|
|
31
|
+
These two verbs look similar (both write a skill's files to local disk) but
|
|
32
|
+
serve opposite purposes and must not be conflated:
|
|
33
|
+
|
|
34
|
+
- **`pull <ref> [--out <dir>]`** is an authoring/export/debug flow only. It
|
|
35
|
+
writes one skill's full tree plus a `.genspark-skill.json` provenance
|
|
36
|
+
sidecar (`{ref, owner, slug, commit, publisher_type, pulled_at,
|
|
37
|
+
file_count, content_hash}`) so the directory can be identified and
|
|
38
|
+
refreshed on a later re-pull. It is **never** a runtime consumption or
|
|
39
|
+
boot path — a sandbox does not `pull` its enabled skills. A refresh
|
|
40
|
+
(re-pull into a directory that already has the sidecar) that fails
|
|
41
|
+
mid-write leaves the destination **emptied**, not restored to its prior
|
|
42
|
+
contents — refresh clears the target first, so the next `pull` rebuilds
|
|
43
|
+
it from scratch.
|
|
44
|
+
- **`sync [--check] [--store-dir <d>] [--mount-dir <d>]`** is the runtime
|
|
45
|
+
materialization path: it makes local disk match the caller's *entire*
|
|
46
|
+
enabled-skill set, incrementally, and is the verb a boot script or agent
|
|
47
|
+
host runs on every startup.
|
|
48
|
+
|
|
49
|
+
Put another way: `pull` moves one skill to a place you choose, for editing;
|
|
50
|
+
`sync` moves your whole enabled set to a fixed place, for running.
|
|
51
|
+
|
|
52
|
+
### `sync` — materialize your enabled skills
|
|
53
|
+
|
|
54
|
+
`gsk skills sync [--check] [--store-dir <dir>] [--mount-dir <dir>]`
|
|
55
|
+
|
|
56
|
+
The CLI keeps a local `{slug: sha}` digest map at
|
|
57
|
+
`<storeDir>/skills-sync-state.json` (default store dir: `~/.gsk/skills-store`;
|
|
58
|
+
default mount dir: `~/.opencode/skills`). Each `sync` call sends that digest
|
|
59
|
+
to the server, which diffs it against the caller's enabled-skill set and
|
|
60
|
+
returns only what changed:
|
|
61
|
+
|
|
62
|
+
- **State file self-heal.** A missing state file, unparseable JSON, OR a
|
|
63
|
+
valid-JSON-but-wrong-shape map (a non-object, or any entry whose key isn't
|
|
64
|
+
a valid slug / whose value isn't a string) is treated as an empty `{}`
|
|
65
|
+
digest, which forces a full re-fetch of every enabled skill on the next
|
|
66
|
+
`sync` rather than risk skipping a change against state that can't be
|
|
67
|
+
trusted. The shape check matters because the server rejects the entire
|
|
68
|
+
sync on a single bad key — without it a corrupt state file would wedge
|
|
69
|
+
every future `sync`.
|
|
70
|
+
- **Disk-truth re-materialization.** `sync` trusts DISK over the state file:
|
|
71
|
+
when the server reports a slug `unchanged` (its digest matched) but the
|
|
72
|
+
slug is no longer materialized on disk — the `<storeDir>/<slug>` dir was
|
|
73
|
+
hand-deleted, or a state file was restored from backup without its store —
|
|
74
|
+
the slug is dropped from the digest map so the next `sync` sees a miss and
|
|
75
|
+
re-fetches it. This keeps the "make local disk match the entire enabled
|
|
76
|
+
set" contract true even after out-of-band tampering with the store.
|
|
77
|
+
- **Symlink merge rules.** Fetched content lands in
|
|
78
|
+
`<storeDir>/<slug>/`, written to a sibling temp directory first and then
|
|
79
|
+
`rename`d into place (never a half-written skill on a dropped
|
|
80
|
+
connection), then symlinked from `<mountDir>/<slug>`. A stale symlink at
|
|
81
|
+
the mount path is freely repointed — same outcome as `setup.sh`'s
|
|
82
|
+
`rm -rf` + `ln -sfn` at sandbox boot. A pre-existing **real** directory at
|
|
83
|
+
the mount path (an inline-tar built-in skill, or user content), however,
|
|
84
|
+
is a deliberate **deviation** from `setup.sh`: `setup.sh` unconditionally
|
|
85
|
+
`rm -rf`s the mount path before symlinking, so the synced skill always
|
|
86
|
+
wins there. This CLI-side materializer instead never clobbers a real
|
|
87
|
+
directory it didn't create — the sync reports that slug as failed
|
|
88
|
+
instead — because it runs against a user's laptop filesystem, not a
|
|
89
|
+
disposable sandbox. When the mount is refused this way, the fetched
|
|
90
|
+
content is still **materialized in the store** and its sha is recorded, so
|
|
91
|
+
the server stops re-sending that slug on every subsequent `sync` — the
|
|
92
|
+
user sees the "stored but not mounted" warning once per content change,
|
|
93
|
+
not a re-download each run.
|
|
94
|
+
- **`--check`** reports the diff without writing anything to disk (a dry
|
|
95
|
+
run / shadow comparison), and sets the process exit code so scripts don't
|
|
96
|
+
need to parse output: **exit 0** when every entry is `unchanged`, **exit
|
|
97
|
+
3** when at least one slug would update, be removed, or errored.
|
|
98
|
+
- **Batching.** The server bounds each response to an 8 MiB soft budget
|
|
99
|
+
(`max_response_bytes`), checked *before* starting a skill's package
|
|
100
|
+
rather than mid-file — so a single batch can overshoot 8 MiB by up to one
|
|
101
|
+
skill's package, itself capped at 25 MiB (`per_skill_cap_bytes`). A
|
|
102
|
+
response with `"complete": false` means more changed skills remain; the
|
|
103
|
+
CLI calls `sync` again carrying forward the digest state it has applied
|
|
104
|
+
so far, and repeats until `"complete": true`. The client loop aborts
|
|
105
|
+
after 20 batches without completing (`exit 1`) as a runaway guard.
|
|
106
|
+
- Idempotent: an immediate second `sync` reports all-`unchanged`, zero
|
|
107
|
+
writes — including slugs whose mount was refused (their store is already
|
|
108
|
+
materialized and the sha recorded, so they too report `unchanged` with no
|
|
109
|
+
re-download).
|
|
110
|
+
- **Exit codes** (a boot script keys off these instead of parsing output):
|
|
111
|
+
- **0** — fully clean. For a real (non-`--check`) sync every slug was
|
|
112
|
+
applied/removed/unchanged with zero failures; for `--check`, everything
|
|
113
|
+
was `unchanged`.
|
|
114
|
+
- **3** — `--check` only: at least one slug would update, be removed, or
|
|
115
|
+
errored (a diff exists). No disk writes happened.
|
|
116
|
+
- **4** — a real sync finished but at least one slug **failed** (mount
|
|
117
|
+
refused because a real dir occupies the mount path, a write error, or a
|
|
118
|
+
server `error` row). The rest were applied; this code tells a boot
|
|
119
|
+
script "some skills didn't materialize" as distinct from a clean run.
|
|
120
|
+
**Exit 4 is retryable / non-fatal, not a hard failure.** In particular a
|
|
121
|
+
fresh sandbox whose enabled slug collides with a tar-baked builtin
|
|
122
|
+
directory exits 4 on its FIRST sync (real-dir-wins → that slug reported
|
|
123
|
+
`failed`, its content stored-but-not-mounted), then exits 0 on every
|
|
124
|
+
subsequent sync (the recorded sha suppresses re-sends and the builtin
|
|
125
|
+
keeps winning) — it self-heals. A symlink-unsupported filesystem
|
|
126
|
+
(Windows without Developer Mode, exFAT/FAT/SMB — `symlinkSync` throws)
|
|
127
|
+
is the PERSISTENT variant: the store is downloaded once and never
|
|
128
|
+
re-downloaded, but the mount can't be created, so that slug stays
|
|
129
|
+
`failed` and the sync keeps exiting 4 on every run. Both are the same
|
|
130
|
+
"downloaded but not mounted" condition. A boot-script consumer MUST NOT
|
|
131
|
+
treat exit 4 as a boot-blocking error: log it and continue.
|
|
132
|
+
- **1** — the sync loop itself aborted: a mid-loop batch call failed, or
|
|
133
|
+
it exceeded the 20-batch runaway guard without completing.
|
|
134
|
+
|
|
135
|
+
### `upgrade` — refresh an installed skill to the latest published version
|
|
136
|
+
|
|
137
|
+
`gsk skills upgrade <slug>`
|
|
138
|
+
|
|
139
|
+
Re-pins one installed skill to its publisher's latest version (a team skill
|
|
140
|
+
to the org-**approved** sha, never the author's latest candidate; a curated
|
|
141
|
+
or peer install to the source's current version). Idempotent — an
|
|
142
|
+
already-current skill reports `changed: false`, and a self-authored skill is
|
|
143
|
+
a benign skip (you edit those via `save`, not `upgrade`).
|
|
144
|
+
|
|
145
|
+
**Local edits are replaced.** If you `pull`ed an installed copy, edited it,
|
|
146
|
+
and `save`d the edits back to that same slug, `upgrade` **overwrites those
|
|
147
|
+
local edits** with the publisher's version — there is no divergence warning
|
|
148
|
+
today. To keep a customized fork, `pull`/`save` it under a **separate slug**
|
|
149
|
+
so `upgrade` on the original never touches your fork.
|
|
150
|
+
|
|
151
|
+
### `save` — write a local directory back to your catalog
|
|
152
|
+
|
|
153
|
+
`gsk skills save [path]` (default `path`: current directory)
|
|
154
|
+
|
|
155
|
+
The sentinel-protocol successor: SAS's retired `.save_to_self` file
|
|
156
|
+
convention told the sandbox host to zip a skill directory and upload it
|
|
157
|
+
out-of-band. `save` reads the directory itself and ships the encoded bytes
|
|
158
|
+
inline — works on any host, including git-less ones.
|
|
159
|
+
|
|
160
|
+
**Directory contract:**
|
|
161
|
+
|
|
162
|
+
- A root `SKILL.md` is required; the server rejects a save without one
|
|
163
|
+
anyway (frontmatter validation), so the CLI fails fast locally.
|
|
164
|
+
- Symlinks are never followed (skipped outright) — a save must not escape
|
|
165
|
+
the directory or loop on a cyclic link.
|
|
166
|
+
- `node_modules/` and `.git/` directories are never walked or shipped, at
|
|
167
|
+
any depth — they are never part of a skill, can blow the byte cap on junk,
|
|
168
|
+
and `.git` would leak history.
|
|
169
|
+
- At the root only, dotfiles are excluded from the upload except
|
|
170
|
+
`.gitignore` (ordinary authoring content) and the pull provenance sidecar
|
|
171
|
+
`.genspark-skill.json` (metadata, not a skill file). Dotfiles in
|
|
172
|
+
subdirectories **are** uploaded (only root-level dotfiles are excluded), so
|
|
173
|
+
clean any secret files out of subdirectories before `save`.
|
|
174
|
+
- The upload is capped at 25 MiB total (mirrored client- and server-side,
|
|
175
|
+
so an oversized save fails locally instead of round-tripping first).
|
|
176
|
+
|
|
177
|
+
**Fork warning.** If the target directory carries a
|
|
178
|
+
`.genspark-skill.json` sidecar (i.e. it was previously populated by `pull`)
|
|
179
|
+
with a recorded `owner`, `save` prints a warning that saving will fork the
|
|
180
|
+
skill into your own catalog — and then proceeds. This warning fires for
|
|
181
|
+
**any** previously-pulled directory, including one that was pulled from
|
|
182
|
+
your *own* catalog: the CLI has no "whoami" to compare the sidecar's owner
|
|
183
|
+
against the caller's identity, so it cannot distinguish "this is someone
|
|
184
|
+
else's skill" from "this is mine, re-pulled." Treat the warning as
|
|
185
|
+
informational, not necessarily a fork.
|
|
186
|
+
|
|
187
|
+
**Overwrite semantics.** `save` always overwrites the caller's existing
|
|
188
|
+
copy of the resulting slug — there is no separate create-only mode; a
|
|
189
|
+
brand-new slug is a create either way. The response's `outcome` field is
|
|
190
|
+
either `"unchanged"` (identical tree, no-op) or `"updated"` — note that the
|
|
191
|
+
very first save of a slug that doesn't exist yet in the caller's catalog
|
|
192
|
+
also reports `outcome: "updated"`, since `upload_skill_with_outcome` has no
|
|
193
|
+
distinct "created" outcome today.
|
|
194
|
+
|
|
195
|
+
### Known follow-ups (not fixed in S1)
|
|
196
|
+
|
|
197
|
+
Tracked here so they're on record; deliberately out of scope for the initial
|
|
198
|
+
`gsk skills` landing:
|
|
199
|
+
|
|
200
|
+
- **Large payloads are (de)serialized on the event loop.** `pull` / `sync` /
|
|
201
|
+
`save` bodies are `json.loads`'d in the CLI executor and `json.dumps`'d in
|
|
202
|
+
the router, and `save`'s request body is parsed on the event loop
|
|
203
|
+
downstream of the adaptor's own `to_thread` hop. This is a cross-cutting
|
|
204
|
+
`tool_cli`-infra concern (bounded today by the 25 MiB payload caps and the
|
|
205
|
+
employee-gated rollout) to be addressed in a shared executor PR, not
|
|
206
|
+
per-verb here.
|
|
207
|
+
- **`sync --check` prints only the first batch's diff.** A multi-batch diff
|
|
208
|
+
(`complete: false`) shows only the first batch's per-slug lines in `--check`
|
|
209
|
+
mode, though the exit code is still correct (3 if anything would change).
|
|
210
|
+
Full multi-batch `--check` reporting is a follow-up.
|
|
4
211
|
|
|
5
212
|
**Total skills:** 97
|
|
6
213
|
|
|
@@ -8,7 +215,7 @@
|
|
|
8
215
|
|
|
9
216
|
| Skill | Description |
|
|
10
217
|
|-------|-------------|
|
|
11
|
-
| [gsk-aidrive](../skills/gsk-aidrive/SKILL.md) | AI-Drive file storage and management. Actions: ls, mkdir, rm, move, get_readable_url, download_video,
|
|
218
|
+
| [gsk-aidrive](../skills/gsk-aidrive/SKILL.md) | AI-Drive file storage and management. Actions: ls, find, mkdir, rm, move, get_readable_url, download_video, download_aud |
|
|
12
219
|
| [gsk-analyze-media](../skills/gsk-analyze-media/SKILL.md) | Analyze various types of media content including images, audio, and video. |
|
|
13
220
|
| [gsk-audio-generation](../skills/gsk-audio-generation/SKILL.md) | Generate audio content including TTS, sound effects, and music. |
|
|
14
221
|
| [gsk-audio-processing](../skills/gsk-audio-processing/SKILL.md) | Preprocess audio: remove background noise, extract specific sounds, or enhance quality. |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genspark/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.25",
|
|
4
4
|
"description": "CLI tool for Genspark Tool API - search, crawl, analyze images, generate media",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"build": "tsc",
|
|
19
19
|
"dev": "ts-node src/index.ts",
|
|
20
20
|
"start": "node dist/index.js",
|
|
21
|
+
"test": "npm run build && node --test tests/*.test.mjs",
|
|
21
22
|
"lint": "eslint src/**/*.ts",
|
|
22
23
|
"clean": "rm -rf dist",
|
|
23
24
|
"prepublishOnly": "npm run clean && npm run build"
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gsk-aidrive
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
description: 'AI-Drive file storage and management. Actions: ls, mkdir, rm,
|
|
5
|
-
get_readable_url, download_video, download_audio, download_file, upload.
|
|
4
|
+
description: 'AI-Drive file storage and management. Actions: ls, find, mkdir, rm,
|
|
5
|
+
move, get_readable_url, download_video, download_audio, download_file, upload. `ls`
|
|
6
|
+
lists ONE directory (non-recursive) — to locate files by name anywhere in the drive,
|
|
7
|
+
use `find` (one indexed query) instead of walking directories with repeated `ls`.'
|
|
6
8
|
metadata:
|
|
7
9
|
category: general
|
|
8
10
|
requires:
|
|
@@ -15,7 +17,7 @@ metadata:
|
|
|
15
17
|
|
|
16
18
|
**PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
|
|
17
19
|
|
|
18
|
-
AI-Drive file storage and management. Actions: ls, mkdir, rm, move, get_readable_url, download_video, download_audio, download_file, upload.
|
|
20
|
+
AI-Drive file storage and management. Actions: ls, find, mkdir, rm, move, get_readable_url, download_video, download_audio, download_file, upload. `ls` lists ONE directory (non-recursive) — to locate files by name anywhere in the drive, use `find` (one indexed query) instead of walking directories with repeated `ls`.
|
|
19
21
|
|
|
20
22
|
## Usage
|
|
21
23
|
|
|
@@ -29,8 +31,9 @@ gsk drive [options]
|
|
|
29
31
|
|
|
30
32
|
| Flag | Required | Description |
|
|
31
33
|
|------|----------|-------------|
|
|
32
|
-
| `<action>` (positional) | Yes | Action to perform (string, one of: ls, mkdir, rm, move, get_readable_url, download_video, download_audio, download_file, upload) |
|
|
33
|
-
| `-p`, `--path` | No | Path to file or folder for actions: ls, mkdir, rm, move, get_readable_url. For compress: folder path to compress. For decompress: archive file path to decompress (string) |
|
|
34
|
+
| `<action>` (positional) | Yes | Action to perform (string, one of: ls, find, mkdir, rm, move, get_readable_url, download_video, download_audio, download_file, upload) |
|
|
35
|
+
| `-p`, `--path` | No | Path to file or folder for actions: ls, mkdir, rm, move, get_readable_url. For compress: folder path to compress. For decompress: archive file path to decompress. For find: directory to search within (default '/' searches everywhere). (string) |
|
|
36
|
+
| `-q`, `--query` | No | Filename search keyword for find action. Matches files and directories whose name contains the keyword. Case-insensitive. Supports partial matches. (string) |
|
|
34
37
|
| `-f`, `--filter_type` | No | Filter by entry type for ls action (improves performance): all (default), file, directory. Use 'file' when only need files. (string, one of: all, file, directory) |
|
|
35
38
|
| `--file_type` | No | Filter by file MIME type for ls action (improves performance): all (default), audio, video, image. Combine with filter_type='file' for best results. (string, one of: all, audio, video, image) |
|
|
36
39
|
| `--target_path` | No | Destination path, for move action only (string) |
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsk-batch-understand-videos
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: 'Process multiple YouTube videos in parallel: fetch each transcript and
|
|
5
|
+
answer per-video questions. Input: list of {video_id, questions_to_answer} jobs.'
|
|
6
|
+
metadata:
|
|
7
|
+
category: general
|
|
8
|
+
requires:
|
|
9
|
+
bins:
|
|
10
|
+
- gsk
|
|
11
|
+
cliHelp: gsk batch-understand-videos --help
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# gsk-batch-understand-videos
|
|
15
|
+
|
|
16
|
+
**PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
|
|
17
|
+
|
|
18
|
+
Process multiple YouTube videos in parallel: fetch each transcript and answer per-video questions. Input: list of {video_id, questions_to_answer} jobs.
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
gsk batch-understand-videos [options]
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Aliases:** `batch-understand-videos`
|
|
27
|
+
|
|
28
|
+
## Flags
|
|
29
|
+
|
|
30
|
+
| Flag | Required | Description |
|
|
31
|
+
|------|----------|-------------|
|
|
32
|
+
| `<jobs>` (positional) | Yes | Get the text of a youtube video by video id. (array) |
|
|
33
|
+
|
|
34
|
+
## See Also
|
|
35
|
+
|
|
36
|
+
- [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
|
|
@@ -29,7 +29,9 @@ gsk crawl [options]
|
|
|
29
29
|
| Flag | Required | Description |
|
|
30
30
|
|------|----------|-------------|
|
|
31
31
|
| `<url>` (positional) | Yes | http/https url (string) |
|
|
32
|
-
| `--render_js` | No | Enable JavaScript rendering to bypass anti-bot protection (Cloudflare, 403 errors, dynamically loaded content). Use only when the site blocks plain HTTP crawlers or returns no content — this costs significantly more credits than the default crawler. Default: false. (boolean) |
|
|
32
|
+
| `--render_js` | No | Enable JavaScript rendering to bypass anti-bot protection (Cloudflare, 403 errors, dynamically loaded content). Use only when the site blocks plain HTTP crawlers or returns no content — this costs significantly more credits than the default crawler. Ignored when raw=true. Default: false. (boolean) |
|
|
33
|
+
| `--raw` | No | Return the original response body as decoded text (no markdown conversion). Use when you need raw HTML, meta tags, JSON, or other unprocessed content. Text-only: requests with a binary Content-Type (image/video/audio/pdf/zip/Office) are refused — use the sandbox bash tool with curl/wget for those. Returns at most 10000 bytes per call — pass offset to fetch the next chunk. Default: false. (boolean) |
|
|
34
|
+
| `--offset` | No | Byte offset to start reading from when raw=true. Use to fetch subsequent chunks of the raw body (e.g. offset=10000 for bytes 10000-19999). Maximum 1048576 (1 MiB) — beyond that, switch to the sandbox bash tool with curl/wget. Ignored when raw=false. Default: 0. (integer, default: `0`) |
|
|
33
35
|
|
|
34
36
|
## Local File Support
|
|
35
37
|
|
|
@@ -27,25 +27,32 @@ gsk github [options]
|
|
|
27
27
|
|
|
28
28
|
| Flag | Required | Description |
|
|
29
29
|
|------|----------|-------------|
|
|
30
|
-
| `<action>` (positional) | Yes | Action to perform. 'list_repos': List repositories for the authenticated user; 'search_issues': Search issues and pull requests; 'create_issue': Create a new issue; 'update_issue': Update an existing issue (string, one of: list_repos, search_issues, create_issue, update_issue) |
|
|
30
|
+
| `<action>` (positional) | Yes | Action to perform. 'list_repos': List repositories for the authenticated user; 'list_commits': List a repo's commits, filterable by author and ISO 8601 time range; 'get_commit': Read one commit's message, stats, and changed files; 'list_prs': List a repo's pull requests with author, state, and merged_at; 'list_contributors': List a repo's contributors (logins + commit counts) — the raw material for resolving a person's name to their GitHub login; 'user_activity': Recent activity feed (pushes/PRs/reviews/comments) for a GitHub login; private repos covered for the authenticated user only; 'search_issues': Search issues and pull requests; 'get_issue': Read a single issue by number; 'create_issue': Create a new issue; 'update_issue': Update an existing issue; 'list_comments': List comments on an issue or pull request; 'create_comment': Post a new comment on an issue or pull request; 'update_comment': Edit an existing comment by id (string, one of: list_repos, list_commits, get_commit, list_prs, list_contributors, user_activity, search_issues, get_issue, create_issue, update_issue, list_comments, create_comment, update_comment) |
|
|
31
31
|
| `--visibility` | No | [list_repos] Filter by repository visibility. Default: all. (string, one of: all, public, private) |
|
|
32
32
|
| `--affiliation` | No | [list_repos] Comma-separated list of affiliation types: owner, collaborator, organization_member. Default: owner,collaborator,organization_member. (string) |
|
|
33
|
-
| `--sort` | No | [list_repos] How to sort the results. Default: updated. \| [
|
|
34
|
-
| `--direction` | No | [list_repos] Sort direction. Default: desc (except for full_name). (string, one of: asc, desc) |
|
|
35
|
-
| `--per_page` | No | [list_repos] Number of results per page (max 100). Default: 30. \| [search_issues] Number of results per page (max 100). Default: 30. (integer) |
|
|
36
|
-
| `--page` | No | [list_repos] Page number of the results. Default: 1. \| [search_issues] Page number of the results. Default: 1. (integer) |
|
|
33
|
+
| `--sort` | No | [list_repos] How to sort the results. Default: updated. \| [list_prs] How to sort the results. Default: created. \| [search_issues] How to sort results. If omitted, defaults to 'created' (newest-first) so recent issues surface first instead of GitHub's relevance ranking. Pass 'updated' to sort by last-updated, or another value to override. (string, one of: created, updated, pushed, full_name) |
|
|
34
|
+
| `--direction` | No | [list_repos] Sort direction. Default: desc (except for full_name). \| [list_prs] Sort direction. Default: desc. (string, one of: asc, desc) |
|
|
35
|
+
| `--per_page` | No | [list_repos] Number of results per page (max 100). Default: 30. \| [list_commits] Number of results per page (max 100). Default: 30. \| [list_prs] Number of results per page (max 100). Default: 30. \| [list_contributors] Number of results per page (max 100). Default: 30. \| [user_activity] Number of events per page (max 100). Default: 30. \| [search_issues] Number of results per page (max 100). Default: 30. \| [list_comments] Number of results per page (max 100). Default: 30. (integer) |
|
|
36
|
+
| `--page` | No | [list_repos] Page number of the results. Default: 1. \| [list_commits] Page number of the results. Default: 1. \| [list_prs] Page number of the results. Default: 1. \| [list_contributors] Page number of the results. Default: 1. \| [user_activity] Page number of the results. Default: 1. \| [search_issues] Page number of the results. Default: 1. \| [list_comments] Page number of the results. Default: 1. (integer) |
|
|
37
|
+
| `--owner` | No | [list_commits] The account owner of the repository (username or organization name). \| [get_commit] The account owner of the repository (username or organization name). \| [list_prs] The account owner of the repository (username or organization name). \| [list_contributors] The account owner of the repository (username or organization name). \| [get_issue] The account owner of the repository (username or organization name). \| [create_issue] The account owner of the repository (username or organization name). \| [update_issue] The account owner of the repository (username or organization name). \| [list_comments] The account owner of the repository (username or organization name). \| [create_comment] The account owner of the repository (username or organization name). \| [update_comment] The account owner of the repository (username or organization name). (string) |
|
|
38
|
+
| `--repo` | No | [list_commits] The name of the repository (without the owner prefix). \| [get_commit] The name of the repository (without the owner prefix). \| [list_prs] The name of the repository (without the owner prefix). \| [list_contributors] The name of the repository (without the owner prefix). \| [search_issues] Repository in 'owner/repo' format to search within. Will be added to the query. \| [get_issue] The name of the repository (without the owner prefix). \| [create_issue] The name of the repository (without the owner prefix). \| [update_issue] The name of the repository (without the owner prefix). \| [list_comments] The name of the repository (without the owner prefix). \| [create_comment] The name of the repository (without the owner prefix). \| [update_comment] The name of the repository (without the owner prefix). (string) |
|
|
39
|
+
| `--author` | No | [list_commits] Filter by commit author — a GitHub login or an email address. Omit to list all authors' commits. (string) |
|
|
40
|
+
| `--since` | No | [list_commits] Only commits after this ISO 8601 timestamp (e.g. '2026-06-27T00:00:00Z'). \| [list_comments] Only return comments updated at or after this ISO-8601 timestamp (e.g. '2025-01-01T00:00:00Z'). Useful for incremental polling. (string) |
|
|
41
|
+
| `--until` | No | [list_commits] Only commits before this ISO 8601 timestamp. (string) |
|
|
42
|
+
| `--path` | No | [list_commits] Only commits touching this file or directory path. (string) |
|
|
43
|
+
| `--sha` | No | [get_commit] The commit SHA (full or abbreviated) or a ref name. (string) |
|
|
44
|
+
| `--state` | No | [list_prs] Filter by PR state. Default: all. \| [search_issues] Filter by issue state. Will be added to the query. \| [update_issue] State of the issue. Use 'closed' to close the issue, 'open' to reopen it. (string, one of: open, closed, all) |
|
|
45
|
+
| `--username` | No | [user_activity] The GitHub login whose activity to fetch. (string) |
|
|
37
46
|
| `--q` | No | [search_issues] Search query using GitHub search syntax. Examples: 'repo:owner/repo is:issue is:open', 'author:username', 'label:bug', 'state:closed' (string) |
|
|
38
|
-
| `--repo` | No | [search_issues] Repository in 'owner/repo' format to search within. Will be added to the query. \| [create_issue] The name of the repository (without the owner prefix). \| [update_issue] The name of the repository (without the owner prefix). (string) |
|
|
39
|
-
| `--state` | No | [search_issues] Filter by issue state. Will be added to the query. \| [update_issue] State of the issue. Use 'closed' to close the issue, 'open' to reopen it. (string, one of: open, closed, all) |
|
|
40
47
|
| `--labels` | No | [search_issues] Comma-separated list of labels to filter by. \| [create_issue] Labels to associate with this issue (e.g., ['bug', 'enhancement']). \| [update_issue] Labels to set on this issue (replaces existing labels). (string) |
|
|
41
48
|
| `--assignee` | No | [search_issues] Filter by assignee username. (string) |
|
|
42
49
|
| `--order` | No | [search_issues] Sort order. Default: desc. (string, one of: asc, desc) |
|
|
43
|
-
| `--
|
|
50
|
+
| `--issue_number` | No | [get_issue] The number of the issue to read (required). \| [update_issue] The number of the issue to update (required). \| [list_comments] The number of the issue (required). \| [create_comment] The number of the issue to comment on (required). (integer) |
|
|
44
51
|
| `--title` | No | [create_issue] The title of the issue (required). \| [update_issue] New title of the issue. (string) |
|
|
45
|
-
| `--body` | No | [create_issue] The contents/description of the issue. Supports Markdown. \| [update_issue] New contents/description of the issue. Supports Markdown. (string) |
|
|
52
|
+
| `--body` | No | [create_issue] The contents/description of the issue. Supports Markdown. \| [update_issue] New contents/description of the issue. Supports Markdown. \| [create_comment] The contents of the comment. Supports Markdown. \| [update_comment] New contents of the comment. Supports Markdown. (string) |
|
|
46
53
|
| `--assignees` | No | [create_issue] Logins/usernames of users to assign to this issue. \| [update_issue] Logins/usernames to assign to this issue (replaces existing assignees). (array) |
|
|
47
54
|
| `--milestone` | No | [create_issue] The milestone number to associate with this issue. \| [update_issue] The milestone number to associate with this issue. Set to null to remove milestone. (integer) |
|
|
48
|
-
| `--
|
|
55
|
+
| `--comment_id` | No | [update_comment] The id of the comment to update (NOT the issue number — that's a different identifier). Get this from github_create_comment's response or github_list_comments. (integer) |
|
|
49
56
|
|
|
50
57
|
## See Also
|
|
51
58
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsk-maps-search
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: Search maps for places, local businesses, distances between locations,
|
|
5
|
+
and directions. Use ONLY for geographical/location queries — NOT general facts,
|
|
6
|
+
news, or weather.
|
|
7
|
+
metadata:
|
|
8
|
+
category: general
|
|
9
|
+
requires:
|
|
10
|
+
bins:
|
|
11
|
+
- gsk
|
|
12
|
+
cliHelp: gsk maps-search --help
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# gsk-maps-search
|
|
16
|
+
|
|
17
|
+
**PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
|
|
18
|
+
|
|
19
|
+
Search maps for places, local businesses, distances between locations, and directions. Use ONLY for geographical/location queries — NOT general facts, news, or weather.
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
gsk maps-search [options]
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Aliases:** `maps-search`
|
|
28
|
+
|
|
29
|
+
## Flags
|
|
30
|
+
|
|
31
|
+
| Flag | Required | Description |
|
|
32
|
+
|------|----------|-------------|
|
|
33
|
+
| `--query_type` | Yes | The type of query to perform. (string, one of: search, place, distances, directions) |
|
|
34
|
+
| `--engine` | Yes | The engine to use for the query. (string, one of: maps, maps_directions) |
|
|
35
|
+
| `<query>` (positional) | No | The query to search for places, if engine is maps, this is required. (string) |
|
|
36
|
+
| `--start_addr` | No | The starting address to calculate distances or get directions.If engine is maps_directions, this is required. (string) |
|
|
37
|
+
| `--end_addr` | No | The ending address to calculate distances or get directions.If engine is maps_directions, this is required. (string) |
|
|
38
|
+
| `--travel_mode` | No | The mode of transportation to use for directions. (string, one of: 0, 1, 2, 3, 4, 6, 9) |
|
|
39
|
+
| `--avoid` | No | The avoid mode to use for directions. (string, one of: highways, tolls, ferries) |
|
|
40
|
+
| `--prefer` | No | The prefer mode to use for directions. (string, one of: bus, subway, train, tram_light_rail) |
|
|
41
|
+
|
|
42
|
+
## See Also
|
|
43
|
+
|
|
44
|
+
- [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsk-scholar-search
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: Search scholarly articles and academic papers. Returns matching papers
|
|
5
|
+
with titles, authors, venues, and citation counts.
|
|
6
|
+
metadata:
|
|
7
|
+
category: general
|
|
8
|
+
requires:
|
|
9
|
+
bins:
|
|
10
|
+
- gsk
|
|
11
|
+
cliHelp: gsk scholar-search --help
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# gsk-scholar-search
|
|
15
|
+
|
|
16
|
+
**PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
|
|
17
|
+
|
|
18
|
+
Search scholarly articles and academic papers. Returns matching papers with titles, authors, venues, and citation counts.
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
gsk scholar-search [options]
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Aliases:** `scholar-search`
|
|
27
|
+
|
|
28
|
+
## Flags
|
|
29
|
+
|
|
30
|
+
| Flag | Required | Description |
|
|
31
|
+
|------|----------|-------------|
|
|
32
|
+
| `<query>` (positional) | Yes | The query to search for scholarly articles. (string) |
|
|
33
|
+
|
|
34
|
+
## See Also
|
|
35
|
+
|
|
36
|
+
- [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
|