@genspark/cli 1.0.12 → 1.0.13

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.
@@ -0,0 +1,228 @@
1
+ ---
2
+ name: gsk-vd
3
+ version: 1.0.0
4
+ description: "Virtual Developer — drive a VD project (issues, VMs, templates, shell exec, GitHub) from the CLI / local OpenCode. Gated behind gk_vd_project_agent and requires vd_project_id to be configured."
5
+ metadata:
6
+ category: virtual-developer
7
+ requires:
8
+ bins:
9
+ - gsk
10
+ cliHelp: gsk vd --help
11
+ ---
12
+
13
+ # gsk-vd — Virtual Developer CLI
14
+
15
+ **PREREQUISITE:** Read `../gsk-shared/SKILL.md` first for auth, global flags, and output conventions.
16
+
17
+ `gsk vd <subcmd>` drives an existing Virtual Developer project end-to-end from a shell. It exposes the exact same 21 tools the Web UI's `VdProjectAgentChat` agent uses (`backend/virtual_developer/project_agent/agent.py`) — issue CRUD + dispatch, VM lifecycle (start/stop/create/delete/save_snapshot), on-VM shell exec, OpenCode session inspection, GitHub App auth, and VM template management.
18
+
19
+ Use this skill when you are **driving** an already-provisioned VD project as a CI-like agent (creating issues, dispatching work to VMs, inspecting PRs, running shell commands on the VM). **Do not** use it to create the VD project itself — that stays in the web UI.
20
+
21
+ ## Activation
22
+
23
+ `gsk vd` is hidden by default. It becomes available only when **both** conditions hold:
24
+
25
+ 1. **Server-side:** the user has the `gk_vd_project_agent` gatekeeper flag (closed beta).
26
+ 2. **Client-side:** a `vd_project_id` is configured — either in the gsk config file or via `GSK_VD_PROJECT_ID` env.
27
+
28
+ ### Enable via config file
29
+
30
+ Add to `~/.genspark-tool-cli/config.json`:
31
+
32
+ ```json
33
+ {
34
+ "api_key": "gsk-...",
35
+ "base_url": "http://localhost:8582",
36
+ "vd_project_id": "vd-proj-abc123"
37
+ }
38
+ ```
39
+
40
+ ### Enable via env var
41
+
42
+ ```bash
43
+ export GSK_VD_PROJECT_ID=vd-proj-abc123
44
+ ```
45
+
46
+ ### Use an alternate config profile
47
+
48
+ If you want to keep your default profile untouched (e.g. to drive a dev-backend VD project from the same machine that talks to prod for other gsk commands):
49
+
50
+ ```bash
51
+ # Point gsk at a separate config file — also affects where tools-cache.json lives
52
+ export GSK_CONFIG=/path/to/vd-profile/config.json
53
+ # or per-command
54
+ gsk --config /path/to/vd-profile/config.json vd list_vms
55
+ ```
56
+
57
+ Once activated, every `gsk vd <subcmd>` command auto-injects the resolved `vd_project_id` as the default for its `--vd_project_id` flag. You can still override per-call with `--vd_project_id <other-id>`.
58
+
59
+ ## Conventions
60
+
61
+ - All 21 commands accept `--vd_project_id <id>` but it is auto-defaulted from config; you rarely need to pass it.
62
+ - All commands return an NDJSON response with `{version, status, message, data, session_state}`. Tool-specific payload is under `data`.
63
+ - A tool that fails business-layer validation (wrong state, missing permission, not found) returns `status: "error"` with a human-readable `message`; this is **not** an infra error — inspect and retry with adjusted args.
64
+ - Long-running operations (template snapshot, VM provisioning) return immediately with a `"creating" | "provisioning"` status. Poll via the corresponding Get / List tool until the status changes.
65
+
66
+ ## Tool catalog
67
+
68
+ ### Project & issues
69
+
70
+ | Subcommand | Required flags | Purpose |
71
+ |---|---|---|
72
+ | `gsk vd get_project_overview` | — | Returns project metadata, repos, VMs (id + ready_state), and an `issues_summary` bucket count. Your first call in any workflow. |
73
+ | `gsk vd list_issues` | `[--status <state>]` | List issues. Without `--status` you get all; with it, filter to one of: `pending`, `working`, `wait_human`, `waiting_code_review`, `testing`, `pending_user_confirm`, `completed`, `failed`, `cancelled`. |
74
+ | `gsk vd get_issue_detail` | `--issue_id <id>` | Full issue record incl. `status`, `pr_url`, `assigned_vm_id`, `work_log` (state transitions with timestamps), `test_result`, `attempt_count`. |
75
+ | `gsk vd issue_action` | `--issue_id <id> --action <verb>` | Move an issue through its lifecycle. `action` ∈ `continue`, `cancel`, `run_tests`, `confirm_merge`, `reject_merge`, `submit_review`, `retry`. `--reason` is optional text recorded in the work log. |
76
+ | `gsk vd create_github_issue` | `--repo_id <id> --title <t> --body <md>` | Creates a new GitHub issue in the project's repo. The webhook handler will mirror it back as a VD issue shortly. Use after `get_project_overview` to read the `repo_id`. |
77
+ | `gsk vd dispatch_issues` | — | One-shot scheduler trigger: pops the oldest `pending` issue and assigns it to the first idle VM. Returns `assigned: [{issue_id, vm_id}]`. Useful when you want to "push" without waiting for the periodic scheduler. |
78
+
79
+ ### VMs
80
+
81
+ | Subcommand | Required flags | Purpose |
82
+ |---|---|---|
83
+ | `gsk vd list_vms` | — | List all VMs in the project with id, vm_name, ready_state, current_issue_id, public preview_url / domain. |
84
+ | `gsk vd get_vm_status` | `--vm_id <id>` | Same fields as `list_vms` but single VM, plus public_ip. |
85
+ | `gsk vd vm_action` | `--vm_id <id> --action <start\|stop>` | Start or stop a VM. These are synchronous (~10-60s). **Note:** other lifecycle actions (suspend/resume/save_snapshot/reset) are not exposed via this minimal wrapper — use the Web UI or direct API for those. |
86
+ | `gsk vd create_vm` | — | Provision a new VM with project defaults. `--vm_size <lite\|standard\|high>` picks the tier (default `standard`): `lite` = 2C/4G Standard_B2s (64GB), `standard` = 2C/8G Standard_B2ms (64GB), `high` = 4C/16G Standard_B4ms (128GB). Returns immediately with `vm_id` + `status: "provisioning"`. Poll `get_vm_status` until `ready_state == "ready"` (~3-5 min). |
87
+ | `gsk vd delete_vm` | `--vm_id <id>` | Delete a VM (soft delete; underlying Azure instance is also deleted). Confirm with user before calling. |
88
+ | `gsk vd update_vm_startup_script` | `--vm_id <id> --startup_script <shell>` | Overwrite the VM's `startup_script` field. Typically a `#!/bin/bash` script that attaches to a tmux session on SSH login. |
89
+ | `gsk vd reconfigure_vm` | `--vm_id <id>` | Re-run the full VM env setup: apt packages, opencode install, VS Code Remote profile, Caddy `:8443` reverse proxy, user SSH key, gsk token. **Use when a VM provisioned before a given config step existed is missing something** — e.g. preview URL at `:8443` returns CORS errors because Caddy was never configured. Idempotent. VM must be `ready` or `working`. Takes ~30-60s; briefly interrupts the preview URL during Caddy restart. Returns per-step status (`ok`/`failed`/`skipped`) for user-key and gsk-token injection. |
90
+ | `gsk vd resize_vm` | `--vm_id <id> --vm_size <lite\|standard\|high>` | Resize a VM to a different tier. VM must be `ready` or `suspended`. Runs deallocate → Azure SKU change → optional disk grow → start (if it was running). Takes ~60-120s. **Disk can only grow, not shrink** — down-resize keeps the existing disk size. |
91
+
92
+ ### Exec / sessions
93
+
94
+ | Subcommand | Required flags | Purpose |
95
+ |---|---|---|
96
+ | `gsk vd execute_command` | `--vm_id <id> --command <sh>` | Run a shell command on the VM via SSH. `--timeout <sec>` (default 30, max 120). Returns `{exit_code, stdout, stderr}`. VM must be `ready` (not `suspended`). |
97
+ | `gsk vd get_session_messages` | `--vm_id <id> [--session_id <sid>]` | Without `--session_id`: list OpenCode sessions on that VM. With it: fetch message transcript. |
98
+ | `gsk vd get_pr_info` | `--issue_id <id> [--include_diff]` | Fetch GitHub PR metadata (title, state, mergeable, review comments). `--include_diff` returns full diff (can be large). Issue must be past PR-creation phase. |
99
+
100
+ ### GitHub integration
101
+
102
+ | Subcommand | Required flags | Purpose |
103
+ |---|---|---|
104
+ | `gsk vd check_github_auth` | `--repo_id <id>` | Verify the VD GitHub App installation for this repo can still acquire an installation token. Returns `ok`, `repo_full_name`, `installation_id`, `expires_at`. Use this when a VM reports 401s from git/GitHub API. |
105
+ | `gsk vd refresh_vm_github_token` | `--vm_id <id> --repo_id <id>` | Re-issue a fresh installation token and inject it into the VM's `~/.netrc` / git credential helper. Run this if `check_github_auth` succeeds but the VM still sees auth errors (token expired inside VM). |
106
+ | `gsk vd get_repo_github_token` | `--repo_id <id>` | Issue a GitHub App installation token and **return it to the caller** (not a VM) so local `gh` / `git` can act on the repo — merge PRs, push, clone from your laptop. Token inherits the App's installed permissions (repo read+write) and expires in ~1h (GitHub API cap); re-call for a fresh one. **WARNING**: treat response `data.token` as a secret — don't log, paste, or persist. gsk-only; not exposed in the web agent to avoid leakage via chat replays. |
107
+
108
+ ### VM templates
109
+
110
+ | Subcommand | Required flags | Purpose |
111
+ |---|---|---|
112
+ | `gsk vd create_vm_template` | `--source_vm_id <id> --name <t>` | Snapshot a `ready` VM and register it as a reusable template. **Always confirm with the user before calling** — the snapshot runs 2-5 min in background. Returns `{template_id, status: "creating"}`. Poll `get_vm_template` until `status == "ready"`; `status == "failed"` surfaces the error in `error`. |
113
+ | `gsk vd list_vm_templates` | — | List all templates in the project with id, name, status, size (raw Azure SKU), vm_size (tier `lite`/`standard`/`high`), region, env_configured, ctime. |
114
+ | `gsk vd get_vm_template` | `--template_id <id>` | Full detail of a single template. |
115
+ | `gsk vd delete_vm_template` | `--template_id <id>` | Soft-delete a template. **Always confirm with the user first**. The underlying Azure snapshot is NOT deleted (resource-group cleanup only). |
116
+
117
+ ## Common workflows
118
+
119
+ ### Audit project health
120
+
121
+ ```bash
122
+ gsk vd get_project_overview
123
+ gsk vd list_issues --status failed
124
+ gsk vd list_issues --status waiting_code_review
125
+ gsk vd list_vms
126
+ ```
127
+
128
+ ### Push a pending issue to an idle VM
129
+
130
+ ```bash
131
+ # See what's pending
132
+ gsk vd list_issues --status pending
133
+ # See which VMs are idle (current_issue_id=null, ready_state=ready)
134
+ gsk vd list_vms
135
+ # Trigger scheduler once
136
+ gsk vd dispatch_issues
137
+ # Watch the assignment
138
+ gsk vd list_issues --status working
139
+ ```
140
+
141
+ ### Investigate a failing issue
142
+
143
+ ```bash
144
+ gsk vd get_issue_detail --issue_id <id> # status, work_log, test_result, pr_url
145
+ gsk vd get_pr_info --issue_id <id> # PR state + review comments
146
+ gsk vd get_session_messages --vm_id <vm_id> # list OpenCode sessions on that VM
147
+ gsk vd get_session_messages --vm_id <vm_id> --session_id <sid> # full transcript
148
+ ```
149
+
150
+ ### Fix a VM whose preview URL / opencode session won't load
151
+
152
+ Typical symptom: the Web UI shows CORS errors hitting
153
+ `https://<domain>:8443/opencode/...`, or the VM's dev preview is
154
+ unreachable from the browser. Root cause is usually that the VM was
155
+ provisioned before the Caddy `:8443` reverse-proxy step existed, so
156
+ `/etc/caddy/conf.d/vd-preview.caddy` is missing.
157
+
158
+ ```bash
159
+ # VM must be running (not suspended)
160
+ gsk vd get_vm_status --vm_id <id>
161
+ # Re-run all env setup; idempotent, ~30-60s.
162
+ gsk vd reconfigure_vm --vm_id <id>
163
+ # Retry the preview URL in the browser.
164
+ ```
165
+
166
+ ### Fix a VM whose GitHub token expired
167
+
168
+ ```bash
169
+ gsk vd check_github_auth --repo_id <repo> # server-side token still valid?
170
+ gsk vd refresh_vm_github_token --vm_id <vm> --repo_id <repo> # re-inject into VM
171
+ gsk vd execute_command --vm_id <vm> --command "cd /path/to/repo && git fetch"
172
+ ```
173
+
174
+ ### Merge a PR from your laptop (local `gh` without pre-existing auth)
175
+
176
+ Use when your local `gh` CLI has no access to a private repo owned by
177
+ the VD GitHub App. Mints a short-lived installation token for that
178
+ specific repo, authenticates `gh` with it, runs the merge, then the
179
+ token expires in ~1h on its own.
180
+
181
+ ```bash
182
+ # Mint a token and keep only the raw string in a shell variable
183
+ TOKEN=$(gsk vd get_repo_github_token --repo_id <repo_id> | jq -r '.data.token')
184
+
185
+ # Authenticate local gh with the token (reads from stdin)
186
+ echo "$TOKEN" | gh auth login --with-token --hostname github.com
187
+
188
+ # Now normal gh commands work against this repo
189
+ gh pr merge 123 --merge --repo owner/repo
190
+
191
+ # Token expires after ~1h; re-run `gsk vd get_repo_github_token` for a fresh one.
192
+ unset TOKEN
193
+ ```
194
+
195
+ **Safety**: the token is treated as a secret by the skill — don't
196
+ echo it to stdout, don't paste it into chat, don't write it to a
197
+ file on disk. The `jq -r '.data.token'` extraction keeps it in a
198
+ shell variable only.
199
+
200
+ ### Run a diagnostic command on a working VM
201
+
202
+ ```bash
203
+ # VM must be ready, not suspended
204
+ gsk vd get_vm_status --vm_id <id>
205
+ gsk vd execute_command --vm_id <id> --command "git status && tmux ls" --timeout 10
206
+ ```
207
+
208
+ ### Save a configured VM as a template
209
+
210
+ ```bash
211
+ # Always confirm with user first — takes 2-5 min in background
212
+ gsk vd create_vm_template --source_vm_id <ready-vm> --name "my-dev-env"
213
+ # Returns {template_id, status: "creating"}
214
+ # Poll:
215
+ gsk vd get_vm_template --template_id <tid>
216
+ # When status=="ready", snapshot_id is populated and it's usable in create_vm
217
+ ```
218
+
219
+ ## Safety rules
220
+
221
+ - **Confirm with the user before** calling `create_vm_template`, `delete_vm_template`, `delete_vm`, `vm_action --action stop`, `issue_action --action cancel/reject_merge/confirm_merge`, `update_vm_startup_script`, `create_github_issue`. These mutate state, produce user-visible side effects (PR merges, Azure resource churn, GitHub noise), or take minutes to complete.
222
+ - **Never `execute_command`** with destructive args (`rm -rf`, `git reset --hard`, `kill -9`) without an explicit ask. The VM holds user work-in-progress.
223
+ - **Before calling `refresh_vm_github_token`**, verify the VM is actually hitting 401s — do not rotate tokens pre-emptively; it invalidates any concurrent git operation on the VM.
224
+
225
+ ## See also
226
+
227
+ - `../gsk-shared/SKILL.md` — auth, output conventions, global flags.
228
+ - Web UI for the same functionality: `https://<host>/virtual-developer/project/<vd_project_id>` → Agent tab.
@@ -31,15 +31,16 @@ gsk video [options]
31
31
  |------|----------|-------------|
32
32
  | `<query>` (positional) | Yes | Detailed description of the video to generate. duration is recommended to be 5 ~ 10 seconds. For image-to-image transitions (user provides start and end frames) e.g., 'A timelapse of a flower blooming in a garden'. (string) |
33
33
  | `--file_name` | No | The name of the video to generate. (string, null) |
34
- | `-m`, `--model` | Yes | The model to use for video generation. kling/v3: Latest Kling V3 with audio. Pro/Standard quality modes. Supported ratios: 16:9, 9:16, 1:1. Duration: 3-15s. gemini/veo3.1: Gemini Veo 3.1 - Latest version with enhanced quality and features. Supports text-to-video and image-to-video generation with improved quality. Duration: 8s. Supported ratios: 16:9, 9:16. Supports fast_mode (faster generation) and hd_mode (1080p quality). gemini/veo3.1/reference-to-video: Gemini Veo 3.1 Reference-to-Video mode. Generate video using multiple reference images to guide the generation. Requires 1+ reference images. Duration: 8s. Supported ratios: 16:9, 9:16. Supports fast_mode and hd_mode options. gemini/veo3.1/first-last-frame-to-video: Veo 3.1 First-Last Frame mode. Generate video by specifying first and last frames for precise transitions. Requires exactly 2 images. Duration: 8s. Supported ratios: 16:9, 9:16. Supports fast_mode and hd_mode options.minimax/hailuo-2.3/standard: MiniMax Hailuo-2.3 Standard model for high-quality video generation. Supports both text-to-video and image-to-video generation with improved quality. Supports first & last frame control for precise video transitions. Fast generation (about 4min one video), cost-effective option. Supported ratios: 16:9, 9:16. Duration: 6s, 10s wan/v2.7: Wan v2.7 with enhanced motion smoothness and scene fidelity. Supports text-to-video, image-to-video, reference-to-video, and edit-video. Ratios: 16:9, 9:16, 1:1. Duration: 5s. Resolution: 480p, 720p wan/v2.6: Wan model with 1080p support and audio integration. Supports text-to-video, image-to-video, and reference-to-video. Supported ratios: 16:9, 9:16, 1:1, 4:3, 3:4. Duration: 5s, 10s, 15s vidu/q3: Vidu Q3 model with enhanced quality and audio generation. Supports both text-to-video and image-to-video generation. Supported ratios: 16:9, 9:16, 4:3, 3:4, 1:1. Duration: 1-16s. Resolution: 720p, 1080prunway/gen4_turbo: A model for generate video with high quality, fast.Supported ratios: 5:3, 3:5. Only support i2v. Duration: 5s, 10sofficial/pixverse/v5: A model for generate video with high quality, fast.fast(30s one video) but expensive. Supported ratios: 16:9, 9:16, 4:3, 1:1, 3:4. Duration: 5s, 8sAdditional features: 1. Generating smooth video transitions between two specified keyframes (start and end frames). pixverse/v6: PixVerse V6 latest model with lifelike motion, richer skin detail, real emotions. Full cinematic control including choreography and camera. Supports text-to-video, image-to-video, transition, and video extend generation. VFX, time-lapse, transformation scenes, product demos, 360° views, multi-shot storytelling. Extend: pass video_url to extend an existing video. Supported ratios: 16:9, 9:16, 4:3, 1:1, 3:4. Duration: 5s, 8s. fal-ai/bytedance/seedance-2.0: Bytedance Seedance 2.0 model for highest quality video generation with native audio and lip-sync. Supports text-to-video and image-to-video with first/last frame control. Supported ratios: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. Duration: 4-15s. Resolution: 480p, 720p. Also supports reference-to-video with up to 9 images, 3 videos, or 3 audio refs via settings.sora-2: OpenAI Sora 2 video generation model for fast, creative videos. Supports text-to-video, image-to-video (reference frame), and video remixing. Designed for speed and experimentation. Supported ratios: 16:9, 9:16. Duration: 4s, 8s, 12ssora-2-pro: OpenAI Sora 2 Pro for production-quality videos. Higher fidelity than sora-2, best for cinematic footage and marketing assets. Supports 720p and 1080p resolutions. Supported ratios: 16:9, 9:16. Duration: 4s, 8sfal-ai/bytedance-upscaler/upscale/video: ByteDance Video Upscaler for enhancing video quality. Upscales videos to higher resolutions (2k) Requires video_url parameter. Does NOT generate new videos. Use when user wants to improve quality of existing videos.xai/grok-imagine-video: xAI Grok Imagine Video model for high-quality video generation. Supports both text-to-video and image-to-video generation. 720p HD output. Flexible duration 1-15 seconds. Supported ratios: 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, 9:21. Duration: 1-15s. xai/grok-imagine-video/video-extension: xAI Grok Imagine Video Extension for extending existing videos. Requires video_url parameter with source video URL (MP4, 2-15s). 720p HD output. Duration: 2-10s. Ratios: 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, 9:21. (string, one of: kling/v3, gemini/veo3.1, gemini/veo3.1/reference-to-video, gemini/veo3.1/first-last-frame-to-video, minimax/hailuo-2.3/standard, wan/v2.7, wan/v2.6, vidu/q3, runway/gen4_turbo, official/pixverse/v5, pixverse/v6, fal-ai/bytedance/seedance-2.0, sora-2, sora-2-pro, fal-ai/bytedance-upscaler/upscale/video, xai/grok-imagine-video, xai/grok-imagine-video/video-extension) |
34
+ | `-m`, `--model` | Yes | The model to use for video generation. kling/v3: Latest Kling V3 with audio. Pro/Standard quality modes. Supported ratios: 16:9, 9:16, 1:1. Duration: 3-15s. gemini/veo3.1: Gemini Veo 3.1 - Latest version with enhanced quality and features. Supports text-to-video and image-to-video generation with improved quality. Duration: 8s. Supported ratios: 16:9, 9:16. Supports fast_mode (faster generation) and hd_mode (1080p quality). gemini/veo3.1/reference-to-video: Gemini Veo 3.1 Reference-to-Video mode. Generate video using multiple reference images to guide the generation. Requires 1+ reference images. Duration: 8s. Supported ratios: 16:9, 9:16. Supports fast_mode and hd_mode options. gemini/veo3.1/first-last-frame-to-video: Veo 3.1 First-Last Frame mode. Generate video by specifying first and last frames for precise transitions. Requires exactly 2 images. Duration: 8s. Supported ratios: 16:9, 9:16. Supports fast_mode and hd_mode options.minimax/hailuo-2.3/standard: MiniMax Hailuo-2.3 Standard model for high-quality video generation. Supports both text-to-video and image-to-video generation with improved quality. Supports first & last frame control for precise video transitions. Fast generation (about 4min one video), cost-effective option. Supported ratios: 16:9, 9:16. Duration: 6s, 10s wan/v2.7: Wan v2.7 with enhanced motion smoothness and scene fidelity. Supports text-to-video, image-to-video, reference-to-video, and edit-video. Ratios: 16:9, 9:16, 1:1. Duration: 5s. Resolution: 480p, 720p vidu/q3: Vidu Q3 model with enhanced quality and audio generation. Supports both text-to-video and image-to-video generation. Supported ratios: 16:9, 9:16, 4:3, 3:4, 1:1. Duration: 1-16s. Resolution: 720p, 1080prunway/gen4_turbo: A model for generate video with high quality, fast.Supported ratios: 5:3, 3:5. Only support i2v. Duration: 5s, 10sofficial/pixverse/v5: A model for generate video with high quality, fast.fast(30s one video) but expensive. Supported ratios: 16:9, 9:16, 4:3, 1:1, 3:4. Duration: 5s, 8sAdditional features: 1. Generating smooth video transitions between two specified keyframes (start and end frames). pixverse/v6: PixVerse V6 latest model with lifelike motion, richer skin detail, real emotions. Full cinematic control including choreography and camera. Supports text-to-video, image-to-video, transition, and video extend generation. VFX, time-lapse, transformation scenes, product demos, 360° views, multi-shot storytelling. Extend: pass video_url to extend an existing video. Supported ratios: 16:9, 9:16, 4:3, 1:1, 3:4. Duration: 5s, 8s. fal-ai/bytedance/seedance-2.0: Bytedance Seedance 2.0 model for highest quality video generation with native audio and lip-sync. Supports text-to-video and image-to-video with first/last frame control. Supported ratios: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. Duration: 4-15s. Resolution: 480p, 720p. Also supports reference-to-video with up to 9 images, 3 videos, or 3 audio refs via settings.sora-2: OpenAI Sora 2 video generation model for fast, creative videos. Supports text-to-video, image-to-video (reference frame), and video remixing. Designed for speed and experimentation. Supported ratios: 16:9, 9:16. Duration: 4s, 8s, 12ssora-2-pro: OpenAI Sora 2 Pro for production-quality videos. Higher fidelity than sora-2, best for cinematic footage and marketing assets. Supports 720p and 1080p resolutions. Supported ratios: 16:9, 9:16. Duration: 4s, 8sfal-ai/bytedance-upscaler/upscale/video: ByteDance Video Upscaler for enhancing video quality. Upscales videos to higher resolutions (2k) Requires video_url parameter. Does NOT generate new videos. Use when user wants to improve quality of existing videos.xai/grok-imagine-video: xAI Grok Imagine Video model for high-quality video generation. Supports both text-to-video and image-to-video generation. 720p HD output. Flexible duration 1-15 seconds. Supported ratios: 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, 9:21. Duration: 1-15s. xai/grok-imagine-video/video-extension: xAI Grok Imagine Video Extension for extending existing videos. Requires video_url parameter with source video URL (MP4, 2-15s). 720p HD output. Duration: 2-10s. Ratios: 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, 9:21. (string, one of: kling/v3, gemini/veo3.1, gemini/veo3.1/reference-to-video, gemini/veo3.1/first-last-frame-to-video, minimax/hailuo-2.3/standard, wan/v2.7, vidu/q3, runway/gen4_turbo, official/pixverse/v5, pixverse/v6, fal-ai/bytedance/seedance-2.0, sora-2, sora-2-pro, fal-ai/bytedance-upscaler/upscale/video, xai/grok-imagine-video, xai/grok-imagine-video/video-extension) |
35
35
  | `-i`, `--image_urls` | No | The URLs of the images to use as reference key frames for the video generation. For single image models, provide 1 image. For multi-image models (like kling/v1.6/pro/elements), provide 1-4 images in sequence order. For start-end models (like vidu, pixverse), provide exactly 2 images (start and end frames). (default is [], if the task is based on one or more reference images, it is required) (array) |
36
36
  | `-r`, `--aspect_ratio` | No | The aspect ratio of the video to generate. For image-to-video (i2v) generation, this should match the aspect ratio of your input image(s). (string, one of: 16:9, 9:16, 4:3, 1:1, 9:21) |
37
37
  | `-d`, `--duration` | No | The duration of the video to generate in seconds. (number, default: `5`) |
38
38
  | `-a`, `--audio_url` | No | Audio URL for audio integration in video generation. - Optional for Wan v2.5 model (custom audio: music or speech, WAV/MP3, 3-10s, up to 15MB) - Required for OmniHuman model (audio-driven animation) Leave empty if no audio is needed. (string, default: ``) |
39
39
  | `--video_url` | No | Source video URL for video extension. Required for Grok Imagine Video Extension (extend existing video). Supports both web URLs and AI Drive paths (starting with '/' or 'aidrive://') (string, default: ``) |
40
- | `--video_urls` | No | Input video URLs for video processing tasks. For Wan v2.6 reference-to-video: provide 1-3 reference videos (use @Video1, @Video2, @Video3 in prompt to reference them). (array, default: `[]`) |
40
+ | `--video_urls` | No | Input video URLs for video processing tasks. For Wan v2.7 reference-to-video: provide 1-3 reference videos (use @Video1, @Video2, @Video3 in prompt to reference them). (array, default: `[]`) |
41
41
  | `--fast_mode` | No | Enable fast mode for quicker generation at lower cost. Applicable to Veo 3.1 and Seedance 2.0 models. Default: false. (boolean, default: `False`) |
42
42
  | `--hd_mode` | No | Enable HD (1080p) mode for higher quality output. Only applicable to Veo 3.1 models. Higher cost (2x). Default: false. (boolean, default: `False`) |
43
+ | `--reference_mode` | No | Enable reference-to-video mode: provided images guide character/style rather than being used as the first frame. Requires image_urls. For Seedance 2.0: routes to seedance-2.0/ref (combinable with fast_mode, supports up to 9 reference images plus optional reference video/audio). For Veo 3.1 base model: upgrades to veo3.1/reference-to-video. Ignored on other models. Default: false. (boolean, default: `False`) |
43
44
 
44
45
  ## Local File Support
45
46
 
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: gsk-youtube
3
+ version: 1.0.0
4
+ description: 'YouTube operations. Actions: search, transcript, comments.'
5
+ metadata:
6
+ category: general
7
+ requires:
8
+ bins:
9
+ - gsk
10
+ cliHelp: gsk yt --help
11
+ ---
12
+
13
+ # gsk-youtube
14
+
15
+ **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
16
+
17
+ YouTube operations. Actions: search, transcript, comments.
18
+
19
+ ## Usage
20
+
21
+ ```bash
22
+ gsk yt [options]
23
+ ```
24
+
25
+ **Aliases:** `yt`
26
+
27
+ ## Flags
28
+
29
+ | Flag | Required | Description |
30
+ |------|----------|-------------|
31
+ | `<action>` (positional) | Yes | Action to perform. 'search': Search for YouTube videos by keyword; 'transcript': Extract transcript and metadata from a YouTube video; 'comments': Scrape comments from a YouTube video (string, one of: search, transcript, comments) |
32
+ | `--query` | No | [search] The query to search video (string) |
33
+ | `--video_id` | No | [transcript] The video id of the youtube video. (string) |
34
+ | `--provide_download_link` | No | [transcript] Whether to provide a download link for the video transcript. (boolean) |
35
+ | `--video_url` | No | [comments] YouTube video URL. Supports youtube.com/watch?v=, youtu.be/, and youtube.com/shorts/ formats. (string) |
36
+ | `--max_comments` | No | [comments] Maximum number of comments to fetch (default 100, max 500). Higher values take longer to scrape. (integer) |
37
+
38
+ ## Local File Support
39
+
40
+ Parameters that accept URLs (`--video_url`) also accept local file paths. The CLI automatically uploads local files before sending to the API.
41
+
42
+ ## See Also
43
+
44
+ - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags