@genspark/cli 1.5.1 → 1.5.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.
Files changed (51) hide show
  1. package/README.md +22 -14
  2. package/dist/client.d.ts +5 -0
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +107 -0
  5. package/dist/client.js.map +1 -1
  6. package/dist/commands/aidrive-upload.d.ts +10 -7
  7. package/dist/commands/aidrive-upload.d.ts.map +1 -1
  8. package/dist/commands/aidrive-upload.js +35 -8
  9. package/dist/commands/aidrive-upload.js.map +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +166 -19
  12. package/dist/index.js.map +1 -1
  13. package/dist/localFiles.d.ts +10 -0
  14. package/dist/localFiles.d.ts.map +1 -1
  15. package/dist/localFiles.js +17 -0
  16. package/dist/localFiles.js.map +1 -1
  17. package/dist/mesh/manifest.d.ts +4 -4
  18. package/dist/mesh/manifest.d.ts.map +1 -1
  19. package/dist/mesh/manifest.js +9 -9
  20. package/dist/mesh/manifest.js.map +1 -1
  21. package/dist/task-shim.d.ts +13 -0
  22. package/dist/task-shim.d.ts.map +1 -0
  23. package/dist/task-shim.js +40 -0
  24. package/dist/task-shim.js.map +1 -0
  25. package/docs/skills.md +7 -4
  26. package/package.json +1 -1
  27. package/skills/gsk-acp-agents/SKILL.md +2 -2
  28. package/skills/gsk-create-task/SKILL.md +7 -40
  29. package/skills/gsk-github/SKILL.md +4 -0
  30. package/skills/gsk-gmail/SKILL.md +4 -0
  31. package/skills/gsk-google-calendar/SKILL.md +5 -0
  32. package/skills/gsk-google-chat/SKILL.md +6 -2
  33. package/skills/gsk-google-docs/SKILL.md +4 -0
  34. package/skills/gsk-google-drive/SKILL.md +4 -0
  35. package/skills/gsk-google-sheets/SKILL.md +4 -0
  36. package/skills/gsk-google-slides/SKILL.md +4 -0
  37. package/skills/gsk-image-generation/SKILL.md +1 -1
  38. package/skills/gsk-microsoft-teams/SKILL.md +18 -5
  39. package/skills/gsk-notion/SKILL.md +4 -0
  40. package/skills/gsk-onedrive/SKILL.md +4 -0
  41. package/skills/gsk-outlook-calendar/SKILL.md +5 -0
  42. package/skills/gsk-outlook-email/SKILL.md +4 -0
  43. package/skills/gsk-shared/SKILL.md +5 -5
  44. package/skills/gsk-sharepoint/SKILL.md +4 -0
  45. package/skills/gsk-slack/SKILL.md +7 -1
  46. package/skills/gsk-task-artifacts/SKILL.md +35 -0
  47. package/skills/gsk-task-continue/SKILL.md +13 -10
  48. package/skills/gsk-task-info/SKILL.md +36 -0
  49. package/skills/gsk-task-status/SKILL.md +6 -6
  50. package/skills/gsk-task-stop/SKILL.md +35 -0
  51. package/skills/gsk-video-generation/SKILL.md +8 -5
@@ -104,7 +104,7 @@ session/export({ format: "pdf", outputPath: "/tmp/report.pdf" })
104
104
  }
105
105
  ```
106
106
 
107
- For one-shot (non-ACP) mode, use the `-o` flag: `gsk task docs --prompt "..." -o report.docx`
107
+ For one-shot (non-ACP) mode, use the `-o` flag: `gsk task create docs --task_name "..." --query "..." --instructions "..." -o report.docx` (implies a live follow until the task finishes)
108
108
 
109
109
  ## Features
110
110
 
@@ -171,7 +171,7 @@ sessions_spawn(
171
171
 
172
172
  ## Configuration
173
173
 
174
- ACP agents are pre-configured in `~/.acpx/config.json` on Genspark Claw VMs. Each agent maps to `gsk task <type> --acp`.
174
+ ACP agents are pre-configured in `~/.acpx/config.json` on Genspark Claw VMs. Each agent maps to `gsk task create <type> --acp`.
175
175
 
176
176
  ## See Also
177
177
 
@@ -12,65 +12,32 @@ metadata:
12
12
  requires:
13
13
  bins:
14
14
  - gsk
15
- cliHelp: gsk task --help
15
+ cliHelp: gsk create_task --help
16
16
  ---
17
17
 
18
18
  # gsk-create-task
19
19
 
20
20
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
21
21
 
22
- Create and execute tasks using specialized AI agents. Supports super_agent, podcasts, docs, slides, design, deep_research, website, video_generation, audio_generation, meeting_notes, cross_check, and custom_super_agent (a user-created custom agent; requires agent_config_id). Design pre-creates a persistent project in `awaiting_user` state; because its Web canvas has one visible composer, `query` and `instructions` are combined into that prefilled prompt rather than using a hidden system prompt. Open its `task_url` to review and submit/iterate, then use `task_status`, `task_continue`, and `design_export` with the same `project_id`. The returned data.task_url is owner-only until shared from that page. To re-fetch a created task's link or outcome, use task_status — re-running create_task creates and bills a new task.
23
-
24
- ### Persistent Design workflow
25
-
26
- `design` is managed entirely through the GSK task lifecycle; it does not
27
- require a local bridge:
28
-
29
- ```bash
30
- gsk task design --task_name "Pricing page" \
31
- --query "Design a responsive pricing page" \
32
- --instructions "Produce implementation-ready HTML/CSS/assets" \
33
- --image ./current-desktop.png \
34
- --file ./design-tokens.css
35
- gsk task_status <project_id>
36
- gsk task_continue <project_id> -m "Emphasize the enterprise tier" \
37
- --last-seen-revision <revision> --image ./mobile-v2.png
38
- gsk design_export <project_id> --revision latest --preview \
39
- --viewport 1440x900 --viewport 390x844 -o design.zip
40
- ```
41
-
42
- For Design commands, repeat `--image` and `--file` in the order the references
43
- should appear. The CLI uploads the complete local batch before creating or
44
- continuing the project, detects each MIME type, and sends structured attachment
45
- metadata; upload failure therefore does not start a partial Design operation.
46
- `design_export --preview` returns private PNG wrappers for the exact same
47
- resolved revision as the ZIP and manifest. If no viewport is supplied, desktop
48
- and mobile defaults are rendered.
49
-
50
- The full SB-Git `main` HEAD SHA is the immutable `revision`. `updated_at`
51
- is the timestamp of that same commit. Before the first Web submission,
52
- `status=awaiting_user`, `revision=null`, and `updated_at` is the project
53
- creation timestamp. Read operations follow the same owner/share permissions as
54
- the Web project; continuation requires write access. Missing and unauthorized
55
- IDs intentionally return the same not-found response.
22
+ Create and execute tasks using specialized AI agents. Supports super_agent, podcasts, docs, slides, deep_research, website, video_generation, audio_generation, meeting_notes, cross_check, and custom_super_agent (a user-created custom agent; requires agent_config_id). The returned data.task_url is owner-only until shared from that page. To re-fetch a created task's link or outcome, use task_status — re-running create_task creates and bills a new task.
56
23
 
57
24
  ## Usage
58
25
 
59
26
  ```bash
60
- gsk task [options]
27
+ gsk create_task [options]
61
28
  ```
62
29
 
63
- **Aliases:** `task`
64
-
65
30
  ## Flags
66
31
 
67
32
  | Flag | Required | Description |
68
33
  |------|----------|-------------|
69
- | `<task_type>` (positional) | Yes | The type of task to create: - super_agent: Create general super agent - podcasts: Create audio podcasts with AI characters - docs: Create and edit HTML/Markdown documents. Create a professional document with Word-like formatting as a single-file HTML. Perfect for reports, articles, academic papers, and formal documents. **Guidelines** 1. This tool can be directly called when user explicitly wants to create: - A document or report - An article or academic paper - A formal document with professional formatting - A document for print or PDF export 2. In situations other than those mentioned above, you need to ask the user first and only call this tool after getting permission when user wants to create: - A better formatted text, but hasn't explicitly mentioned creating a document - Content that needs professional document formatting **Limitations** - Document styling resembles Microsoft Word format, not web page design - Usually takes time to generate, so please strictly follow the guidelines above **File inputs** - If the user uploaded a source file (PDF/Word/Markdown/text) for the agent to process or convert, embed the URL (file_wrapper_url, http(s)://, or aidrive://) directly in the query — sub-agents do not inherit parent context. - slides: Create presentation slides. Create an editable slide deck and display it; it exports/downloads as PPTX or PDF. DEFAULT for any presentation, deck, or PowerPoint request — including a downloadable .pptx or redesigning an uploaded .pptx; do NOT rebuild decks in code or raw HTML. EXCEPTION — simple mechanical edits to an uploaded .pptx (insert/delete a slide, change a value, swap an element/image): do them yourself with python-pptx on the original file and deliver the edited file; this agent re-authors the deck and its export is a re-render, so untouched slides won't stay byte-identical. Route substantial rework (redesign, restyle, use as a template, content overhaul) to this agent. The finished deck's page (task_url) has built-in PPTX/PDF export — NEVER create another task to export or convert an existing deck; use task_status to re-fetch a deck's link. Limitation: a) It usually takes minutes. Ask the user whether they want to wait for a longer time before starting if they haven't explicitly indicated they want to generate a set of slides; - website: Create a professional agent for building websites and web pages - deep_research: Create deep research agent for task on a 'deep research' topic (e.g. 'deep research on Tesla', 'analyze Tesla in depth'). Also can handle user's 'continue deep research' request - download: Download a file, video, or audio from the internet into the user's AI Drive and return a long-lived shareable link. Use when the user wants to 'download this', 'save this video/file', or 'get me a link to this'. The agent locates the real downloadable resource (searching/crawling a page if needed), downloads it, and returns the AI Drive path plus a durable share URL. - design: Genspark Design (Designer 2.0): the visual web/HTML design canvas for landing pages, marketing sites, posters, slides-as-pages, and interactive UI mockups. NOTE: this does NOT run as a sub-agent selecting it hands the user a button that opens Genspark Design in a new tab with the query prefilled (the user submits it there). Use when the user wants to design a web page / site / poster / visual layout they will iterate on in the Design canvas. - video_generation: Large-scale batch video generation with complex inter-task dependencies. Best for workflows requiring coordinated, multi-step video pipelines where tasks depend on each other's outputs. Supports text-to-video, image-to-video (query should contain the image url), and merging multiple video clips. Can reuse agent. NOT recommended for small-scale, simple, or independent video tasks — for those, use <tool>video_generation</tool> directly instead. If there is a resource generation list, you can directly pass the resource list URL in the query, http(s):// or aidrive:// - audio_generation: Large-scale batch TTS (text-to-speech) generation with complex inter-task dependencies. Best for workflows requiring coordinated, multi-step TTS pipelines where tasks depend on each other's outputs. Supports text-to-speech, voiceovers, multi-speaker dialogues, and merging multiple audio clips. Can reuse agent. NOT recommended for small-scale, simple, or independent TTS tasks — for those, use <tool>audio_generation</tool> directly instead. If there is a resource generation list, you can directly pass the resource list URL in the query, http(s):// or aidrive:// - cross_check: Fact-check and verify claims or statements. Use when the user wants to verify whether a statement is true, check facts, or cross-reference claims against multiple sources. The agent systematically searches for evidence, evaluates source credibility, and provides a detailed verification report with supporting references. - custom_super_agent: Execute a user-created custom AI agent. Requires agent_config_id parameter which should be extracted from the workflow step data. These are personalized agents created by users with specific capabilities and configurations. (string, one of: super_agent, podcasts, docs, slides, website, deep_research, download, design, video_generation, audio_generation, cross_check, meeting_notes, sheets, custom_super_agent) |
34
+ | `<task_type>` (positional) | Yes | The type of task to create: - super_agent: Create general super agent - podcasts: Create audio podcasts with AI characters - docs: Create and edit HTML/Markdown documents. Create a professional document with Word-like formatting as a single-file HTML. Perfect for reports, articles, academic papers, and formal documents. **Guidelines** 1. This tool can be directly called when user explicitly wants to create: - A document or report - An article or academic paper - A formal document with professional formatting - A document for print or PDF export 2. In situations other than those mentioned above, you need to ask the user first and only call this tool after getting permission when user wants to create: - A better formatted text, but hasn't explicitly mentioned creating a document - Content that needs professional document formatting **Limitations** - Document styling resembles Microsoft Word format, not web page design - Usually takes time to generate, so please strictly follow the guidelines above **File inputs** - If the user uploaded a source file (PDF/Word/Markdown/text) for the agent to process or convert, embed the URL (file_wrapper_url, http(s)://, or aidrive://) directly in the query — sub-agents do not inherit parent context. - slides: Create presentation slides. Create an editable slide deck and display it; it exports/downloads as PPTX or PDF. DEFAULT for any presentation, deck, or PowerPoint request — including a downloadable .pptx or redesigning an uploaded .pptx; do NOT rebuild decks in code or raw HTML. EXCEPTION — simple mechanical edits to an uploaded .pptx (insert/delete a slide, change a value, swap an element/image): do them yourself with python-pptx on the original file and deliver the edited file; this agent re-authors the deck and its export is a re-render, so untouched slides won't stay byte-identical. Route substantial rework (redesign, restyle, use as a template, content overhaul) to this agent. The finished deck's page (task_url) has built-in PPTX/PDF export — NEVER create another task to export or convert an existing deck; use task_status to re-fetch a deck's link. Limitation: a) It usually takes minutes. Ask the user whether they want to wait for a longer time before starting if they haven't explicitly indicated they want to generate a set of slides; - website: Create a professional agent for building websites and web pages - deep_research: Create deep research agent for task on a 'deep research' topic (e.g. 'deep research on Tesla', 'analyze Tesla in depth'). Also can handle user's 'continue deep research' request - download: Download a file, video, or audio from the internet into the user's AI Drive and return a long-lived shareable link. Use when the user wants to 'download this', 'save this video/file', or 'get me a link to this'. The agent locates the real downloadable resource (searching/crawling a page if needed), downloads it, and returns the AI Drive path plus a durable share URL. - design: Genspark Design (Designer 2.0): the persistent visual web/HTML design canvas for landing pages, marketing sites, posters, slides-as-pages, and interactive UI mockups. It pre-creates a stable project_id and hands the user its Web canvas with query and instructions combined into the single visible prompt field (the user submits it there). The same project can later be inspected with task_status and edited with task_continue. Use when the user wants a web page / site / poster / visual layout they will iterate on in the Design canvas. - video_generation: Large-scale batch video generation with complex inter-task dependencies. Best for workflows requiring coordinated, multi-step video pipelines where tasks depend on each other's outputs. Supports text-to-video, image-to-video (query should contain the image url), and merging multiple video clips. Can reuse agent. NOT recommended for small-scale, simple, or independent video tasks — for those, use <tool>video_generation</tool> directly instead. If there is a resource generation list, you can directly pass the resource list URL in the query, http(s):// or aidrive:// - audio_generation: Large-scale batch TTS (text-to-speech) generation with complex inter-task dependencies. Best for workflows requiring coordinated, multi-step TTS pipelines where tasks depend on each other's outputs. Supports text-to-speech, voiceovers, multi-speaker dialogues, and merging multiple audio clips. Can reuse agent. NOT recommended for small-scale, simple, or independent TTS tasks — for those, use <tool>audio_generation</tool> directly instead. If there is a resource generation list, you can directly pass the resource list URL in the query, http(s):// or aidrive:// - cross_check: Fact-check and verify claims or statements. Use when the user wants to verify whether a statement is true, check facts, or cross-reference claims against multiple sources. The agent systematically searches for evidence, evaluates source credibility, and provides a detailed verification report with supporting references. - meeting_notes - sheets - custom_super_agent: Execute a user-created custom AI agent. Requires agent_config_id parameter which should be extracted from the workflow step data. These are personalized agents created by users with specific capabilities and configurations. (string, one of: super_agent, podcasts, docs, slides, website, deep_research, download, design, video_generation, audio_generation, cross_check, meeting_notes, sheets, custom_super_agent) |
70
35
  | `--task_name` | Yes | Name for the task/project (string) |
71
36
  | `--query` | Yes | Query for the task. The ending should clearly state what needs to be done, such as generating a doc/slides etc. The sub-agent sees ONLY what is passed via query/instructions — it cannot read your conversation. When you have already produced material for this task (research notes, analysis, drafts, exact figures), embed its FULL text verbatim in the query, NOT a summary or paraphrase: any detail omitted here is missing from the deliverable, and a query carrying such material is naturally long — do not shorten it. For a simple request with no pre-existing material, a concise query is fine. If the user uploaded files or you have data the sub-agent needs, embed the file URLs (file_wrapper_url, http(s)://, or aidrive://) directly in the query — sub-agents do not inherit parent context, so unreferenced files are invisible to them. (string) |
72
- | `--instructions` | Yes | Detailed instructions for the task. This will be set as system prompt to the specialized agent. State the working constraints here: audience, structure, style, output format, and what must be preserved exactly (figures, citations, links). Do not spend this field on a bare persona line like 'You are a professional slides assistant' — that gives the sub-agent nothing to work with. Include any file URLs (file_wrapper_url, http(s)://, or aidrive://) the sub-agent must reference; the sub-agent only sees what is passed via query/instructions. (string) |
37
+ | `--instructions` | Yes | Detailed instructions for the task. This will be set as system prompt to the specialized agent. State the working constraints here: audience, structure, style, output format, and what must be preserved exactly (figures, citations, links). Do not spend this field on a bare persona line like 'You are a professional slides assistant' — that gives the sub-agent nothing to work with. Include any file URLs (file_wrapper_url, http(s)://, or aidrive://) the sub-agent must reference; the sub-agent only sees what is passed via query/instructions. Design is the exception to the system-prompt transport: its Web canvas has one visible prompt field, so create_task appends instructions under an 'Additional requirements' heading in that field for the user to review before submitting. (string) |
73
38
  | `--agent_config_id` | No | Agent config ID for loading agent configuration. Required when task_type is 'custom_super_agent' - the ID of the user's custom agent. Optional when task_type is 'dynamic' - if provided, loads config from this ID instead of generating a new one dynamically. (string) |
39
+ | `--attachments` | No | For `design` tasks: ordered structured references shown in the native Design attachment area. URLs may be private file-wrapper, https, or aidrive URLs. Each item preserves its original name, MIME type, and semantic role. (array) |
40
+ | `--wait` | No | Default false: the task is SUBMITTED to the durable runtime and this call returns immediately with its run_id — poll `gsk task status <run_id>` until it finishes, stop it with `gsk task stop <run_id>`. Pass true to block until the task completes and get the full result inline (legacy behavior; generation can take 5-30+ minutes, so set your shell timeout to 1800000 ms). (boolean) |
74
41
 
75
42
  > **CAUTION:** This command performs a write/send operation. Double-check parameters before executing.
76
43
 
@@ -56,6 +56,10 @@ gsk github [options]
56
56
  | `--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) |
57
57
  | `--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) |
58
58
 
59
+ ## Write Confirmation (double-call)
60
+
61
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
62
+
59
63
  ## See Also
60
64
 
61
65
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -83,6 +83,10 @@ gsk gmail [options]
83
83
  | `--send_as_email` | No | [get_signature] Send-as address whose signature to read. Defaults to the primary address. \| [update_signature] Send-as address whose signature to set. Defaults to the primary address. (string) |
84
84
  | `--signature` | No | [update_signature] New signature as HTML (plain text works too). An empty string removes the signature. (string) |
85
85
 
86
+ ## Write Confirmation (double-call)
87
+
88
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
89
+
86
90
  ## See Also
87
91
 
88
92
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -53,6 +53,7 @@ gsk google_calendar [options]
53
53
  | `--auto_skip_confirmation` | No | [create] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. (boolean, default: `False`) |
54
54
  | `--is_all_day` | No | [create] Whether to create an all-day busy/block event. (boolean, default: `False`) |
55
55
  | `--all_day` | No | [create] Alias for is_all_day. (boolean, default: `False`) |
56
+ | `--skip_conflict_check` | No | [create] Set true ONLY after the user has explicitly confirmed they want to book despite a conflict/warning surfaced by a prior needs_confirmation result. Leave false (default) normally. (boolean, default: `False`) |
56
57
  | `--response` | No | [respond] RSVP value. 'accept' / 'decline' / 'tentative' (Yes / No / Maybe). (string, one of: accept, decline, tentative) |
57
58
  | `--comment` | No | [respond] Optional free-text comment shown to the organizer alongside the response. (string) |
58
59
  | `--scope` | No | [respond] Recurring-series scope. 'single' (default) responds for the specific instance only; 'series' responds for the entire series (patches the master event). \| [modify] Recurring-series scope. 'single' (default) patches the specific instance; 'series' patches the master event so the change applies to every occurrence. (string, one of: single, series, default: `single`) |
@@ -60,6 +61,10 @@ gsk google_calendar [options]
60
61
  | `--remove_attendees` | No | [modify] Remove these attendees from the existing list (case-insensitive email match). (array) |
61
62
  | `--delete_series` | No | [delete] If true and the event is recurring, delete the entire series. If false, only delete the single instance. Default is false. (boolean, default: `False`) |
62
63
 
64
+ ## Write Confirmation (double-call)
65
+
66
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
67
+
63
68
  ## See Also
64
69
 
65
70
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -35,15 +35,19 @@ gsk google_chat [options]
35
35
  | `--limit` | No | [list_spaces] Maximum number of spaces to return (1-200). Default: 50 \| [read] Maximum number of messages to return (1-100). Default: 25 (integer) |
36
36
  | `--space` | No | [read] Space resource name, e.g. 'spaces/AAAAxxxx'. \| [send] Space resource name, e.g. 'spaces/AAAAxxxx'. \| [upload] Space resource name, e.g. 'spaces/AAAAxxxx'. \| [list_members] Space resource name, e.g. 'spaces/AAAAxxxx'. (string) |
37
37
  | `--thread` | No | [read] Optional thread resource name (e.g. 'spaces/AAAAxxxx/threads/yyyy') to return only that thread's messages — e.g. to verify where a threaded reply landed. \| [send] Optional thread resource name (e.g. 'spaces/AAAAxxxx/threads/yyyy') to reply in a thread. Omit to start a new thread. If the thread cannot be replied to, the API starts a NEW thread instead — the response then carries 'thread_fallback': true and 'actual_thread' (set 'strict_thread' to fail instead). \| [upload] Optional thread resource name (e.g. 'spaces/AAAAxxxx/threads/yyyy') to attach in a thread. Omit to start a new thread. If the thread cannot be replied to, the API starts a NEW thread instead — the response then carries 'thread_fallback': true and 'actual_thread' (set 'strict_thread' to fail instead). (string) |
38
- | `--message` | No | [send] The message text to send. Supports Google Chat formatting. \| [upload] Optional caption text sent with the attachment. \| [update] Message resource name to edit, e.g. 'spaces/AAAAxxxx/messages/yyyy'. \| [delete] Message resource name to delete, e.g. 'spaces/AAAAxxxx/messages/yyyy'. \| [react] Message resource name, e.g. 'spaces/AAAAxxxx/messages/yyyy'. (string) |
38
+ | `--message` | No | [send] The message text to send. Supports Google Chat formatting. To @mention someone, embed '<users/{user_id}>' in the text — a plain '@Name' renders as literal text and notifies nobody. User ids come from google_chat_list_members ('user' field) or the 'mentions' field on read messages; '<users/all>' mentions the whole space. \| [upload] Optional caption text sent with the attachment. \| [update] Message resource name to edit, e.g. 'spaces/AAAAxxxx/messages/yyyy'. \| [delete] Message resource name to delete, e.g. 'spaces/AAAAxxxx/messages/yyyy'. \| [react] Message resource name, e.g. 'spaces/AAAAxxxx/messages/yyyy'. (string) |
39
39
  | `--strict_thread` | No | [send] If true and 'thread' is set, fail with an error when the thread cannot be replied to instead of falling back to a new thread. Default: false. \| [upload] If true and 'thread' is set, fail with an error when the thread cannot be replied to instead of falling back to a new thread. Default: false. (boolean, default: `False`) |
40
40
  | `--file_path` | No | [upload] Path or URL of the file to upload. Accepts (1) a local server filesystem path; (2) a Genspark file-wrapper URL (``https://www.genspark.ai/api/files/s/<code>``); or (3) an AI Drive path (``/mnt/aidrive/...``, ``/aidrive/...``, ``aidrive://...``). Mutually exclusive with ``content``. (string) |
41
41
  | `--content` | No | [upload] Text content to upload as the file body (UTF-8). Requires ``file_name``. Mutually exclusive with ``file_path``. (string) |
42
42
  | `--file_name` | No | [upload] File name including extension (e.g. 'report.pdf'). Required with ``content``; defaults to the source basename with ``file_path``. (string) |
43
- | `--text` | No | [update] The new message text (replaces the current text). Supports Google Chat formatting. (string) |
43
+ | `--text` | No | [update] The new message text (replaces the current text). Supports Google Chat formatting, including '<users/{user_id}>' @mention syntax (a plain '@Name' is literal text, not a mention). (string) |
44
44
  | `--emoji` | No | [react] The emoji as a unicode character, e.g. '👍' or '🎉'. (string) |
45
45
  | `--remove` | No | [react] true removes YOUR OWN existing reaction instead of adding one. Default: false. (boolean, default: `False`) |
46
46
 
47
+ ## Write Confirmation (double-call)
48
+
49
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
50
+
47
51
  ## See Also
48
52
 
49
53
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -41,6 +41,10 @@ gsk docs [options]
41
41
  | `--query` | No | [search] Search query to find documents by name or content. (string) |
42
42
  | `--limit` | No | [search] Maximum number of results to return (1-50). Default: 10 (integer) |
43
43
 
44
+ ## Write Confirmation (double-call)
45
+
46
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
47
+
44
48
  ## See Also
45
49
 
46
50
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -57,6 +57,10 @@ gsk gdrive [options]
57
57
 
58
58
  Parameters that accept URLs (`--folder_url`, `--file_url`) also accept local file paths. The CLI automatically uploads local files before sending to the API.
59
59
 
60
+ ## Write Confirmation (double-call)
61
+
62
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
63
+
60
64
  ## See Also
61
65
 
62
66
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -50,6 +50,10 @@ gsk sheets [options]
50
50
 
51
51
  Parameters that accept URLs (`--from_url`) also accept local file paths. The CLI automatically uploads local files before sending to the API.
52
52
 
53
+ ## Write Confirmation (double-call)
54
+
55
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
56
+
53
57
  ## See Also
54
58
 
55
59
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -42,6 +42,10 @@ gsk slides [options]
42
42
  | `--format` | No | [export] Export format. Default: 'pptx'. (string, one of: pptx, pdf) |
43
43
  | `--filename` | No | [export] Optional custom filename (without extension). If not provided, the original presentation name is used. (string) |
44
44
 
45
+ ## Write Confirmation (double-call)
46
+
47
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
48
+
45
49
  ## See Also
46
50
 
47
51
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -32,7 +32,7 @@ gsk img [options]
32
32
  | `<query>` (positional) | No | Detailed description of the image to generate. The prompt should be in English.However, any specific text that should appear within the image does not need to be translated.(e.g., 'A futuristic cityscape with flying cars and neon lights at night'). Omit when passing the prompt by `query_file` instead. (string) |
33
33
  | `--query_file` | No | Optional. Repo-relative path to a UTF-8 text file containing the prompt, used verbatim in place of `query` (lets you pass a long prompt by path instead of inlining it). Requires `repo_id`. When set, `query` may be omitted. (string) |
34
34
  | `--bbox` | No | BBox of the target object, for bbox segmentation modelFormat: [x1, y1, x2, y2], x1 and y1 are the top-left corner coordinates, x2 and y2 are the bottom-right corner coordinates. (array) |
35
- | `-i`, `--image_urls` | No | The URLs of the images to use as a reference for the image generation or editing. (default is [], if the task is based on one or more reference images, it is required) (array) |
35
+ | `-i`, `--image_urls` | No | The URLs of the images to use as a reference for the image generation or editing. Default is []. REQUIRED whenever the task edits, restyles, or must stay visually consistent with an existing image, person, product, or brand — pass the source/reference URL(s) on EVERY such call, including retries: omitting them regenerates from text and silently discards the user's actual image. (array) |
36
36
  | `--repo_id` | No | Optional. Second Brain repo id (provided in the agent's system prompt). Required only when image_urls contains relative paths from a Second Brain project (e.g. 'assets/foo.png'). Absolute http(s) URLs and data: URLs do not need this parameter. (string) |
37
37
  | `-r`, `--aspect_ratio` | No | The aspect ratio of the image to generate. Default 'auto'. When editing with image_urls (image-to-image), use 'auto' so the output keeps the reference image's aspect ratio — never switch between portrait and landscape unless the user explicitly asks. (string, one of: 1:1, 4:3, 16:9, 9:16, 3:4, 2:3, 3:2, auto) |
38
38
  | `-s`, `--image_size` | No | Image size resolution. Default is auto. (string, one of: auto, 0.5k, 1k, 2k, 3k, 4k) |
@@ -4,7 +4,7 @@ version: 1.0.0
4
4
  description: 'Microsoft Teams operations. Actions: send, list_channels, list_chats,
5
5
  read_chat, list_channel_messages, list_channel_replies, list_teams, list_members,
6
6
  search, search_users, create_chat, create_team, react, delete_message, download_attachment,
7
- mark_chat_read.'
7
+ mark_chat_read, api, upload.'
8
8
  metadata:
9
9
  category: general
10
10
  requires:
@@ -19,7 +19,7 @@ metadata:
19
19
 
20
20
  > **Note:** a unified `gsk connector` flow is rolling out (see `../gsk-connector/SKILL.md`: `gsk connector tools <id>` / `gsk connector call <id> -t <tool>`) and may not be enabled for every account yet. THIS command remains fully supported — use it directly, and it stays the fallback whenever `gsk connector` is unavailable.
21
21
 
22
- Microsoft Teams operations. Actions: send, list_channels, list_chats, read_chat, list_channel_messages, list_channel_replies, list_teams, list_members, search, search_users, create_chat, create_team, react, delete_message, download_attachment, mark_chat_read.
22
+ Microsoft Teams operations. Actions: send, list_channels, list_chats, read_chat, list_channel_messages, list_channel_replies, list_teams, list_members, search, search_users, create_chat, create_team, react, delete_message, download_attachment, mark_chat_read, api, upload.
23
23
 
24
24
  ## Usage
25
25
 
@@ -33,9 +33,9 @@ gsk teams [options]
33
33
 
34
34
  | Flag | Required | Description |
35
35
  |------|----------|-------------|
36
- | `<action>` (positional) | Yes | Action to perform. 'send': Send a message in Teams (reply_to_message_id replies in a channel thread or quotes a chat message); 'list_channels': List hosted and shared channels for an associated team; 'list_chats': List recent chats; 'read_chat': Read a chat's recent messages by chat_id; 'list_channel_messages': List root messages in a channel; one traversal is not a deletion snapshot; 'list_channel_replies': List replies to a channel message; one traversal is not a deletion snapshot; 'download_attachment': Download one attachment or inline hosted image from a message; returns a file URL; 'mark_chat_read': Mark a chat as read for the connected user (clears its unread badge; own read state only); 'list_teams': List direct teams and shared-channel host teams; 'search': Search messages; 'search_users': Search for users; 'create_chat': Create a new chat; 'react': Emoji-react to a chat or channel message (or remove your reaction); 'list_members': List ALL members of a team with roles and emails (full roster, internally paginated); 'create_team': Create a new team (you become owner) and optionally add members by email; 'delete_message': Soft-delete one of your own messages (chat, channel, or threaded reply) (string, one of: send, list_channels, list_chats, read_chat, list_channel_messages, list_channel_replies, download_attachment, mark_chat_read, list_teams, search, search_users, create_chat, react, list_members, create_team, delete_message) |
37
- | `--content` | No | [send] The message content to send. Accepts either Markdown or HTML. Markdown (e.g. '## Heading', '**bold**', '- item', tables) is automatically rendered to formatted HTML. You may also pass raw HTML directly: <a href='URL'>text</a> for links, <b>text</b> for bold, <i>text</i> for italic, <br> for line breaks, and other standard HTML tags. INLINE IMAGES are supported: embed <img src="data:image/png;base64,..."> (any image/* data URI) and the bytes are automatically relocated into Microsoft Graph hostedContents so the image renders in the message — no manual Graph calls needed. (string) |
38
- | `--chat_id` | No | [send] Optional chat ID to send the message to. If not specified or set to 'self', sends to yourself as a DM. Use chat IDs from microsoft_teams_search_messages results. \| [read_chat] The Teams chat ID (e.g. '19:...@thread.v2'). Required. \| [download_attachment] Chat ID ('19:…@thread.v2') for a chat message. Mutually exclusive with team_id/channel_id. \| [mark_chat_read] Chat ID ('19:…@thread.v2') to mark as read, from microsoft_teams_list_chats. \| [react] ID of the chat containing the message. Provide either chat_id, or team_id + channel_id for a channel message. \| [list_members] Chat ID ('19:…@thread.v2') to list a group chat's or DM's members instead of a team's. \| [delete_message] ID of the chat containing the message. Provide either chat_id, or team_id + channel_id for a channel message. (string) |
36
+ | `<action>` (positional) | Yes | Action to perform. 'send': Send a message in Teams (reply_to_message_id replies in a channel thread or quotes a chat message); 'list_channels': List hosted and shared channels for an associated team; 'list_chats': List recent chats; 'read_chat': Read a chat's recent messages by chat_id; 'list_channel_messages': List root messages in a channel; one traversal is not a deletion snapshot; 'list_channel_replies': List replies to a channel message; one traversal is not a deletion snapshot; 'download_attachment': Download one attachment or inline hosted image from a message; returns a file URL; 'mark_chat_read': Mark a chat as read for the connected user (clears its unread badge; own read state only); 'api': Raw Graph call with the connected account, for resources the typed actions do not cover; GET immediate, writes held for confirmation; 'list_teams': List direct teams and shared-channel host teams; 'search': Search messages; 'search_users': Search for users; 'create_chat': Create a new chat; 'react': Emoji-react to a chat or channel message (or remove your reaction); 'upload': Share a file into a chat (uploads to the sender's OneDrive Teams folder, posts a file card); 'list_members': List ALL members of a team with roles and emails (full roster, internally paginated); 'create_team': Create a new team (you become owner) and optionally add members by email; 'delete_message': Soft-delete one of your own messages (chat, channel, or threaded reply) (string, one of: send, list_channels, list_chats, read_chat, list_channel_messages, list_channel_replies, download_attachment, mark_chat_read, api, list_teams, search, search_users, create_chat, react, upload, list_members, create_team, delete_message) |
37
+ | `--content` | No | [send] The message content to send. Accepts either Markdown or HTML. Markdown (e.g. '## Heading', '**bold**', '- item', tables) is automatically rendered to formatted HTML. You may also pass raw HTML directly: <a href='URL'>text</a> for links, <b>text</b> for bold, <i>text</i> for italic, <br> for line breaks, and other standard HTML tags. INLINE IMAGES are supported: embed <img src="data:image/png;base64,..."> (any image/* data URI) and the bytes are automatically relocated into Microsoft Graph hostedContents so the image renders in the message — no manual Graph calls needed. \| [upload] Text content to upload as a file (UTF-8). Provide exactly one of 'content' or 'file_path'. (string) |
38
+ | `--chat_id` | No | [send] Optional chat ID to send the message to. If not specified or set to 'self', sends to yourself as a DM. Use chat IDs from microsoft_teams_search_messages results. \| [read_chat] The Teams chat ID (e.g. '19:...@thread.v2'). Required. \| [download_attachment] Chat ID ('19:…@thread.v2') for a chat message. Mutually exclusive with team_id/channel_id. \| [mark_chat_read] Chat ID ('19:…@thread.v2') to mark as read, from microsoft_teams_list_chats. \| [react] ID of the chat containing the message. Provide either chat_id, or team_id + channel_id for a channel message. \| [upload] Target chat ID (e.g. '19:…@thread.v2', from list_chats/search_users). \| [list_members] Chat ID ('19:…@thread.v2') to list a group chat's or DM's members instead of a team's. \| [delete_message] ID of the chat containing the message. Provide either chat_id, or team_id + channel_id for a channel message. (string) |
39
39
  | `--channel_type` | No | [send] Type of channel: 'teams_chat' for 1:1 or group chats, 'teams_channel' for team channels. Default: 'teams_chat' (string, one of: teams_chat, teams_channel) |
40
40
  | `--team_id` | No | [send] Required if channel_type is 'teams_channel'. The team ID where the channel belongs. \| [list_channels] Associated team ID from list_teams. \| [list_channel_messages] Host team ID from the selected list_channels result (host_team_id). \| [list_channel_replies] Host team ID from the selected list_channels result (host_team_id). \| [download_attachment] Team ID (GUID) for a channel message; requires channel_id. \| [react] Team ID, for reacting to a channel message (together with channel_id). \| [list_members] ID of the team to list members of. Mutually exclusive with chat_id. \| [delete_message] Team ID, for deleting a channel message (together with channel_id). (string) |
41
41
  | `--channel_id` | No | [send] Required if channel_type is 'teams_channel'. The channel ID within the team. \| [list_channel_messages] Channel ID from the same selected list_channels result. \| [list_channel_replies] Channel ID from the same selected list_channels result. \| [download_attachment] Channel ID ('19:…@thread.tacv2') for a channel message; requires team_id. \| [react] Channel ID, for reacting to a channel message (together with team_id). \| [delete_message] Channel ID, for deleting a channel message (together with team_id). (string) |
@@ -53,6 +53,12 @@ gsk teams [options]
53
53
  | `--message_id` | No | [list_channel_replies] Root channel message ID whose replies should be listed. \| [download_attachment] The message ID holding the attachment (for a channel reply: the reply's own ID). \| [react] ID of the message to react to. \| [delete_message] ID of the message to delete. (string) |
54
54
  | `--hosted_content_id` | No | [download_attachment] hostedContents item ID — for inline images pasted into the message. (string) |
55
55
  | `--attachment_id` | No | [download_attachment] Attachment ID from the message's attachments list — for file attachments with a contentUrl. (string) |
56
+ | `--path` | No | [api] Graph resource path starting with '/', query string allowed, e.g. '/me/chats?$top=5'. Passed through verbatim — percent-encode segment values yourself. (string) |
57
+ | `--graph_version` | No | [api] Graph API version. Default v1.0; 'beta' is an explicit opt-in. (string, one of: v1.0, beta) |
58
+ | `--method` | No | [api] HTTP method. Default GET. Write methods are held for user confirmation before executing. (string, one of: GET, POST, PATCH, PUT, DELETE) |
59
+ | `--body` | No | [api] JSON request body for write methods (object or array, passed to Graph verbatim). Not allowed on GET. (string) |
60
+ | `--skip_confirmation` | No | [api] Skip the user-confirmation step for a write method. Only honored right after this tool returned pending_confirmation and the user confirmed. Default: false. (boolean) |
61
+ | `--auto_skip_confirmation` | No | [api] Internal: set by workflow nodes configured with skip_confirmation=true. Default: false. (boolean) |
56
62
  | `--query` | No | [search] The search query using KQL (Keyword Query Language). **Query Behavior**: • Spaces = AND: 'project meeting' finds messages with BOTH terms • OR operator: 'project OR meeting' finds messages with EITHER term • KQL modifiers: 'from:john', 'hasAttachment:true', 'IsRead:false' • Date filters: prefer the ``since``/``until`` arguments; inline date ops ('sent>=2026-02-01 sent<=2026-03-05', 'sent:2026-02-01..2026-03-05') are also honored — both bounds are enforced • Examples: 'urgent project', 'bug OR issue', 'from:alice budget', 'hasAttachment:true report' \| [search_users] Search query - can be a name, email, or partial match. Example: 'John', 'john@company.com', 'Smith' (string) |
57
63
  | `--unread_only` | No | [search] Set to true to search for unread messages only. Default is false. (boolean) |
58
64
  | `--question` | No | [search] A specific question to answer based on the search results. (string) |
@@ -64,10 +70,17 @@ gsk teams [options]
64
70
  | `--reply_id` | No | [react] Optional: ID of a threaded reply under the channel message identified by message_id — reacts to that reply instead. Channel target only. \| [delete_message] Optional: ID of a threaded reply under the channel message identified by message_id — deletes that reply instead. Channel target only. (string) |
65
71
  | `--reaction` | No | [react] The emoji to react with, as a unicode character (e.g. '👍', '❤️', '😂'). (string) |
66
72
  | `--remove` | No | [react] Set true to remove your existing reaction of this emoji instead of adding it. Default: false. (boolean) |
73
+ | `--file_path` | No | [upload] File to upload: a local server file path, a Genspark file-wrapper URL (https://…/api/files/s/<code>), or an AI Drive path (aidrive://…). Provide exactly one of 'content' or 'file_path'. (string) |
74
+ | `--file_name` | No | [upload] File name shown in Teams (include the extension). Required with 'content'; defaults to the path basename for 'file_path'. (string) |
75
+ | `--message` | No | [upload] Optional message text posted together with the file card. (string) |
67
76
  | `--display_name` | No | [create_team] Name of the new team. (string) |
68
77
  | `--description` | No | [create_team] Optional team description. (string) |
69
78
  | `--visibility` | No | [create_team] Team visibility. Default: 'private'. (string, one of: private, public) |
70
79
 
80
+ ## Write Confirmation (double-call)
81
+
82
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
83
+
71
84
  ## See Also
72
85
 
73
86
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -36,6 +36,10 @@ gsk notion [options]
36
36
  | `--parent_id` | No | [create] The ID of the parent page or database where the new page will be created. Use notion_search to find available pages/databases first. (string) |
37
37
  | `--parent_type` | No | [create] The type of parent: 'page_id' for creating under a page, 'database_id' for creating in a database. Default is 'page_id'. (string, one of: page_id, database_id) |
38
38
 
39
+ ## Write Confirmation (double-call)
40
+
41
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
42
+
39
43
  ## See Also
40
44
 
41
45
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -50,6 +50,10 @@ gsk onedrive [options]
50
50
 
51
51
  Parameters that accept URLs (`--onedrive_url`) also accept local file paths. The CLI automatically uploads local files before sending to the API.
52
52
 
53
+ ## Write Confirmation (double-call)
54
+
55
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
56
+
53
57
  ## See Also
54
58
 
55
59
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -57,6 +57,7 @@ gsk outlook_calendar [options]
57
57
  | `--auto_skip_confirmation` | No | [create] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. (boolean, default: `False`) |
58
58
  | `--is_all_day` | No | [create] Whether to create an all-day busy/block event. (boolean, default: `False`) |
59
59
  | `--all_day` | No | [create] Alias for is_all_day. (boolean, default: `False`) |
60
+ | `--skip_conflict_check` | No | [create] Set true ONLY after the user has explicitly confirmed they want to book despite a conflict/warning surfaced by a prior needs_confirmation result. Leave false (default) normally. (boolean, default: `False`) |
60
61
  | `--response` | No | [respond] RSVP value. 'accept' / 'decline' / 'tentative' (Yes / No / Maybe). When proposed_new_time is provided, this is forced to 'tentative' because Graph rejects counter-proposals on accept / decline. (string, one of: accept, decline, tentative) |
61
62
  | `--comment` | No | [respond] Optional free-text comment shown to the organizer alongside the response. (string) |
62
63
  | `--proposed_new_time` | No | [respond] Optional counter-proposal slot in '<START_ISO>..<END_ISO>' form (e.g. '2026-05-21T14:00:00-07:00..2026-05-21T14:30:00-07:00'). Forces response='tentative' — Graph rejects proposedNewTime on accept / decline. (string) |
@@ -66,6 +67,10 @@ gsk outlook_calendar [options]
66
67
  | `--remove_attendees` | No | [modify] Remove these attendees from the existing list (case-insensitive email match). (array) |
67
68
  | `--delete_series` | No | [delete] If true and the event is recurring, delete the entire series. If false, only delete the single instance. Default is false. (boolean, default: `False`) |
68
69
 
70
+ ## Write Confirmation (double-call)
71
+
72
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
73
+
69
74
  ## See Also
70
75
 
71
76
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -93,6 +93,10 @@ gsk outlook [options]
93
93
  | `--conversation_id` | No | [group_reply] The ID of the conversation. Available from trigger data as 'conversation_id' or 'emails[0].conversation_id'. (string) |
94
94
  | `--content` | No | [group_reply] The reply content. Can be plain text or HTML. This will be posted as a new message in the group conversation. (string) |
95
95
 
96
+ ## Write Confirmation (double-call)
97
+
98
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
99
+
96
100
  ## See Also
97
101
 
98
102
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -69,14 +69,14 @@ gsk img "Enhance this" -i ./photo.png -o ./result.png
69
69
 
70
70
  Use `-o` / `--output-file` to save generated results directly to a local file.
71
71
 
72
- ### Task agent export (`gsk task ... -o`)
72
+ ### Task agent export (`gsk task create ... -o`)
73
73
 
74
- For task agents (docs, slides, sheets), `-o` triggers an export to standard file formats after the task completes:
74
+ For task agents (docs, slides, sheets), `-o` follows the run live (implies `--follow`) and exports to standard file formats once it completes:
75
75
 
76
76
  ```bash
77
- gsk task docs --prompt "Write a project report" -o ./report.docx
78
- gsk task slides --prompt "Create a pitch deck" -o ./deck.pptx
79
- gsk task sheets --prompt "Build a budget tracker" -o ./budget.xlsx
77
+ gsk task create docs --task_name "Project report" --query "Write a project report" --instructions "Formal tone" -o ./report.docx
78
+ gsk task create slides --task_name "Pitch deck" --query "Create a pitch deck" --instructions "10 slides" -o ./deck.pptx
79
+ gsk task create sheets --task_name "Budget tracker" --query "Build a budget tracker" --instructions "Monthly view" -o ./budget.xlsx
80
80
  ```
81
81
 
82
82
  | Task Type | Default Export Format |
@@ -55,6 +55,10 @@ gsk sharepoint [options]
55
55
 
56
56
  Parameters that accept URLs (`--sharepoint_url`) also accept local file paths. The CLI automatically uploads local files before sending to the API.
57
57
 
58
+ ## Write Confirmation (double-call)
59
+
60
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
61
+
58
62
  ## See Also
59
63
 
60
64
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -30,7 +30,7 @@ gsk slack [options]
30
30
  | Flag | Required | Description |
31
31
  |------|----------|-------------|
32
32
  | `<action>` (positional) | Yes | Action to perform. 'send': Send a message to a channel or user; 'search': Search messages by keyword; 'read': Read recent message history of a channel (or one thread); 'lookup': Look up users, channels, or groups; 'react': Emoji-react to a message (or remove your reaction); 'upload': Upload a file into a channel, group, or DM; 'update': Edit one of the user's own messages; 'delete': Delete one of the user's own messages; 'permalink': Get the permanent link for a message; 'connect_invites': List pending Slack Connect shared-channel invites (workspace owner/admin only); 'connect_approve': Approve a pending Slack Connect shared-channel invite by invite ID (workspace owner/admin only); 'connect_decline': Decline a pending Slack Connect shared-channel invite by invite ID (workspace owner/admin only) (string, one of: send, search, read, lookup, react, upload, update, delete, permalink, connect_invites, connect_approve, connect_decline) |
33
- | `--message` | No | [send] The message content to send. Supports Slack markdown formatting. (string) |
33
+ | `--message` | No | [send] The message content to send. Supports Slack markdown formatting. To @mention someone, embed '<@USER_ID>' (e.g. '<@U01234567>') in the text — a plain '@Name' renders as literal text and notifies nobody. User IDs come from the lookup action. (string) |
34
34
  | `--recipient` | No | [send] Optional recipient: 'self' (default), channel ID (e.g., 'C01234567'), or user ID (e.g., 'U01234567'). If not specified, sends to yourself. (string) |
35
35
  | `--title` | No | [send] Optional title for the message. If provided, creates a rich formatted message with a header. \| [upload] Optional title shown on the Slack file card. Defaults to the file name. (string) |
36
36
  | `--fields` | No | [send] Optional array of field objects with 'title' and 'value' keys to create a structured message layout. (array) |
@@ -52,10 +52,16 @@ gsk slack [options]
52
52
  | `--file_path` | No | [upload] File to upload: a local server file path, a Genspark file-wrapper URL (https://…/api/files/s/<code>), or an AI Drive path (aidrive://…). Provide exactly one of 'content' or 'file_path'. (string) |
53
53
  | `--file_name` | No | [upload] File name shown in Slack (include the extension, e.g. 'report.pdf'). Required with 'content'; defaults to the path basename for 'file_path'. (string) |
54
54
  | `--initial_comment` | No | [upload] Optional message text posted together with the file. (string) |
55
+ | `--skip_confirmation` | No | [update] Skip the user-confirmation step. Only honored right after this tool returned pending_confirmation and the user confirmed. Default: false. \| [delete] Skip the user-confirmation step. Only honored right after this tool returned pending_confirmation and the user confirmed. Default: false. \| [connect_approve] Skip the user-confirmation step. Only honored right after this tool returned pending_confirmation and the user confirmed. Default: false. \| [connect_decline] Skip the user-confirmation step. Only honored right after this tool returned pending_confirmation and the user confirmed. Default: false. (boolean) |
56
+ | `--auto_skip_confirmation` | No | [update] Internal: set by workflow nodes configured with skip_confirmation=true. Default: false. \| [delete] Internal: set by workflow nodes configured with skip_confirmation=true. Default: false. \| [connect_approve] Internal: set by workflow nodes configured with skip_confirmation=true. Default: false. \| [connect_decline] Internal: set by workflow nodes configured with skip_confirmation=true. Default: false. (boolean) |
55
57
  | `--text` | No | [update] The full replacement text (mrkdwn) — Slack replaces the whole message body, not a diff. (string) |
56
58
  | `--invite_id` | No | [connect_approve] The Slack Connect invite ID (e.g. 'I…'), from the connect_invites list. \| [connect_decline] The Slack Connect invite ID (e.g. 'I…'), from the connect_invites list. (string) |
57
59
  | `--target_team` | No | [connect_approve] Optional team/enterprise ID of the other party in the invitation. \| [connect_decline] Optional team/enterprise ID of the other party in the invitation. (string) |
58
60
 
61
+ ## Write Confirmation (double-call)
62
+
63
+ Write actions (send / create / update / delete / react / upload, and write methods through `api` where present) may be confirmation-gated. A response carrying `status: "pending_confirmation"` (or a similar needs-confirmation payload) is NOT a failure — it executes nothing and summarizes what would happen. To complete the write, re-run the IDENTICAL command: the pending record (15-minute TTL) is matched and the operation executes; success clears the record (a further identical call pends again) and a failed execution keeps it, so the retry arc stays open. Where the Flags table lists `--skip_confirmation` for an action, passing `--skip_confirmation true` right after a pending response is honored; gated actions without that flag complete ONLY via the double-call.
64
+
59
65
  ## See Also
60
66
 
61
67
  - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: gsk-task-artifacts
3
+ version: 1.0.0
4
+ description: List a task's produced artifacts (files, rendered exports, generated
5
+ media) as downloadable URLs, plus the exportable formats for docs/slides/sheets
6
+ deliverables.
7
+ metadata:
8
+ category: general
9
+ requires:
10
+ bins:
11
+ - gsk
12
+ cliHelp: gsk task artifacts --help
13
+ ---
14
+
15
+ # gsk-task-artifacts
16
+
17
+ **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
18
+
19
+ List a task's produced artifacts (files, rendered exports, generated media) as downloadable URLs, plus the exportable formats for docs/slides/sheets deliverables.
20
+
21
+ ## Usage
22
+
23
+ ```bash
24
+ gsk task artifacts [options]
25
+ ```
26
+
27
+ ## Flags
28
+
29
+ | Flag | Required | Description |
30
+ |------|----------|-------------|
31
+ | `<project_id>` (positional) | Yes | The task's project_id (from the blocking run's response, or from `gsk task status <run_id>` once an async submit started executing). (string) |
32
+
33
+ ## See Also
34
+
35
+ - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: gsk-task-continue
3
3
  version: 1.0.0
4
- description: Continue an existing task project you previously created with create_task
5
- by sending a follow-up instruction use this to edit, revise, or extend an existing
6
- deliverable (e.g. 'add a slide on pricing', 'shorten the intro') instead of create_task,
7
- which mints and bills a brand-new task. Works for any create_task task type (slides,
8
- docs, sheets, deep_research, website, ...). The project must belong to you or be
9
- shared with you with edit (write) permission. Runs the agent to completion and returns
10
- the task_url plus the updated result artifacts.
4
+ description: Send a follow-up instruction to an existing task project use this to
5
+ edit, revise, extend, or converse with a task's deliverable (e.g. 'add a slide on
6
+ pricing', 'shorten the intro') instead of `task create`, which mints and bills a
7
+ brand-new task. Works for any task type (slides, docs, sheets, deep_research, website,
8
+ super_agent, ...). The project must belong to you or be shared with you with edit
9
+ (write) permission. Submits and returns immediately by default (poll `task status`);
10
+ pass wait=true for the legacy blocking run.
11
11
  metadata:
12
12
  category: general
13
13
  requires:
@@ -20,7 +20,7 @@ metadata:
20
20
 
21
21
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
22
22
 
23
- Continue an existing task project you previously created with create_task by sending a follow-up instruction — use this to edit, revise, or extend an existing deliverable (e.g. 'add a slide on pricing', 'shorten the intro') instead of create_task, which mints and bills a brand-new task. Works for any create_task task type (slides, docs, sheets, deep_research, website, ...). The project must belong to you or be shared with you with edit (write) permission. Runs the agent to completion and returns the task_url plus the updated result artifacts.
23
+ Send a follow-up instruction to an existing task project — use this to edit, revise, extend, or converse with a task's deliverable (e.g. 'add a slide on pricing', 'shorten the intro') instead of `task create`, which mints and bills a brand-new task. Works for any task type (slides, docs, sheets, deep_research, website, super_agent, ...). The project must belong to you or be shared with you with edit (write) permission. Submits and returns immediately by default (poll `task status`); pass wait=true for the legacy blocking run.
24
24
 
25
25
  ## Usage
26
26
 
@@ -32,8 +32,11 @@ gsk task_continue [options]
32
32
 
33
33
  | Flag | Required | Description |
34
34
  |------|----------|-------------|
35
- | `<project_id>` (positional) | Yes | The project_id returned by create_task (data.project_id in its response). (string) |
36
- | `-m`, `--message` | Yes | The follow-up instruction to send to the task agent — state concretely what to change, add, or redo. The agent already has the project's own history, but embed any NEW material or file URLs the change needs. (string) |
35
+ | `<project_id>` (positional) | Yes | The task's project_id from `gsk task status <run_id>` once an async submit started executing, or data.project_id of a blocking (--wait true) run. (string) |
36
+ | `-m`, `--message` | Yes | The follow-up instruction to send to the task agent — state concretely what to change, add, or redo. The agent already has the project's own history. For Design, pass NEW references in attachments (the CLI --image/--file flags build these automatically). (string) |
37
+ | `-last-seen-revision`, `--last_seen_revision` | No | Optional optimistic-concurrency token from task_status. For Design projects the update is rejected when it is already stale before the continuation starts. (string) |
38
+ | `--attachments` | No | Ordered new references for a Design continuation. They are appended only after last_seen_revision passes. (array) |
39
+ | `--wait` | No | Default false: the follow-up is SUBMITTED to the durable runtime and this call returns immediately with its run_id — poll `gsk task status <run_id>`. Pass true to block until the turn completes and get the full result inline (legacy behavior; can take minutes, so set your shell timeout to 1800000 ms). (boolean) |
37
40
 
38
41
  ## See Also
39
42
 
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: gsk-task-info
3
+ version: 1.0.0
4
+ description: 'Read a task''s execution output: recent activity (messages including
5
+ tool usage), current state, and extracted result artifacts — mid-run or after completion.
6
+ Use `task status` for cheap polling; use this when you need the content.'
7
+ metadata:
8
+ category: general
9
+ requires:
10
+ bins:
11
+ - gsk
12
+ cliHelp: gsk task info --help
13
+ ---
14
+
15
+ # gsk-task-info
16
+
17
+ **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
18
+
19
+ Read a task's execution output: recent activity (messages including tool usage), current state, and extracted result artifacts — mid-run or after completion. Use `task status` for cheap polling; use this when you need the content.
20
+
21
+ ## Usage
22
+
23
+ ```bash
24
+ gsk task info [options]
25
+ ```
26
+
27
+ ## Flags
28
+
29
+ | Flag | Required | Description |
30
+ |------|----------|-------------|
31
+ | `<project_id>` (positional) | Yes | The task's project_id (from the blocking run's response, or from `gsk task status <run_id>` once an async submit started executing). (string) |
32
+ | `-n`, `--limit` | No | How many recent activity entries to return (default 10, max 50). (integer) |
33
+
34
+ ## See Also
35
+
36
+ - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags