@genspark/cli 1.0.12 → 1.0.15

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.
@@ -28,8 +28,8 @@ gsk audio [options]
28
28
 
29
29
  | Flag | Required | Description |
30
30
  |------|----------|-------------|
31
- | `<query>` (positional) | No | For text-to-speech generation: - For google/gemini-2.5-pro-preview-tts: Can use script_url field or query field. When using multi-speaker, include speaker prefixes like 'Speaker1: Hello there! Speaker2: Hi back!' - For elevenlabs/v3-tts: Supports both single and multi-speaker generation. For multi-speaker, include speaker prefixes like 'Speaker 1: Hello there! Speaker 2: Hi back!' - For other TTS models (Minimax): Use plain text without character names (e.g., use 'That's not what she meant, fatass.' instead of 'STAN: That's not what she meant, fatass.' as the character name will be pronounced). For sound effects, provide a detailed description of the audio to generate (e.g., 'A keyboard typing sound, rain, wind, etc.').For background music, provide a detailed description of the music to generate.must be in English if choosing CassetteAI/music-generator music generation.(e.g., 'Smooth chill hip-hop beat with mellow piano melodies, deep bass, and soft drums, perfect for a night drive. Key: D Minor, Tempo: 90 BPM.'). (string) |
32
- | `-m`, `--model` | Yes | The model to use for audio generation. google/gemini-2.5-pro-preview-tts: Best, high-quality, realistic tone text-to-speech model. Supports one or multiple speakers in one generation with speaker prefixes (e.g., 'Speaker1: text, Speaker2: text').elevenlabs/v3-tts: Advanced multilingual text-to-speech model with multi-speaker dialogue support. Supports emotional tags like [excited], [whispers], [laughs]. Best for expressive content and conversations.fal-ai/elevenlabs/tts/multilingual-v2: High-quality multilingual text-to-speech model. For English, this is a preferred model.fal-ai/minimax/speech-2.8-hd: High-quality multilingual text-to-speech model. For Chinese, 'Chinese,Yue', Japanese, Korean, this is a preferred model. Note: Only one speaker can be used per generation. For multiple characters, please generate them one by one in sequence. elevenlabs/sound-effects: Sound effect generation model. Minimum duration is 0.1 seconds, maximum is 22 seconds.elevenlabs/music: ElevenLabs music generation model. Supports both instrumental music AND songs with vocals/singing. NOTE: Does NOT support custom lyrics - lyrics are auto-generated. Minimum duration is 10 seconds, maximum is 5 minutes (300 seconds). Professional music production quality.elevenlabs/voice-clone: ElevenLabs voice cloning model. Clone a voice from audio samples. Returns voice ID for use in TTS generation.elevenlabs/voice-changer: ElevenLabs voice changer model. Transform audio from one voice to another. Requires source audio and target voice ID.CassetteAI/music-generator: Background music generation model. minimum duration is 10 seconds, maximum is up to 180 seconds.mureka/song-generator: Professional song generation with lyrics. Supports style prompts, reference tracks, vocal and melody inputs. Generate full songs with vocals. Maximum duration is 180 seconds.mureka/instrumental-generator: Instrumental music generation. Create background music and instrumental tracks without vocals. Supports style prompts and reference tracks. Maximum duration is 180 seconds.fal-ai/minimax/voice-clone: Voice cloning model. Clone a voice from a sample audio and generate speech from text prompts.fal-ai/lyria2: using Google's Lyria 2 text-to-music model. The model is good at generating music for sound effects and lyrics-free music.maximum duration is 30 seconds.fal-ai/minimax-music/v2.5: Song generation with lyrics using MiniMax Music 2.5. High-fidelity audio with humanized vocals. Supports markers (Verse), (Chorus), (Bridge), (Outro), (Instrumental intro). Requires both style prompt and lyrics. (string, one of: google/gemini-2.5-pro-preview-tts, fal-ai/elevenlabs/tts/multilingual-v2, elevenlabs/v3-tts, elevenlabs/sound-effects, elevenlabs/music, elevenlabs/voice-clone, elevenlabs/voice-changer, CassetteAI/music-generator, fal-ai/minimax/speech-2.8-hd, fal-ai/minimax-music/v2.5, mureka/song-generator, mureka/instrumental-generator, fal-ai/minimax/voice-clone, fal-ai/lyria2) |
31
+ | `<query>` (positional) | No | For text-to-speech generation: - For Gemini TTS (google/gemini-3.1-flash-tts-preview): Can use script_url field or query field. When using multi-speaker, include speaker prefixes like 'Speaker1: Hello there! Speaker2: Hi back!' - For elevenlabs/v3-tts: Supports both single and multi-speaker generation. For multi-speaker, include speaker prefixes like 'Speaker 1: Hello there! Speaker 2: Hi back!' - For other TTS models (Minimax): Use plain text without character names (e.g., use 'That's not what she meant, fatass.' instead of 'STAN: That's not what she meant, fatass.' as the character name will be pronounced). For sound effects, provide a detailed description of the audio to generate (e.g., 'A keyboard typing sound, rain, wind, etc.').For background music, provide a detailed description of the music to generate.must be in English if choosing CassetteAI/music-generator music generation.(e.g., 'Smooth chill hip-hop beat with mellow piano melodies, deep bass, and soft drums, perfect for a night drive. Key: D Minor, Tempo: 90 BPM.'). (string) |
32
+ | `-m`, `--model` | Yes | The model to use for audio generation. google/gemini-3.1-flash-tts-preview: Best, high-quality TTS with enhanced expressivity and granular audio tags ([whispers], [excited], [laughs], [sighs]). Supports inline expression control and multi-speaker dialogue with speaker prefixes (e.g., 'Speaker1: text, Speaker2: text').elevenlabs/v3-tts: Advanced multilingual text-to-speech model with multi-speaker dialogue support. Supports emotional tags like [excited], [whispers], [laughs]. Best for expressive content and conversations.fal-ai/elevenlabs/tts/multilingual-v2: High-quality multilingual text-to-speech model. For English, this is a preferred model.fal-ai/minimax/speech-2.8-hd: High-quality multilingual text-to-speech model. For Chinese, 'Chinese,Yue', Japanese, Korean, this is a preferred model. Note: Only one speaker can be used per generation. For multiple characters, please generate them one by one in sequence. elevenlabs/sound-effects: Sound effect generation model. Minimum duration is 0.1 seconds, maximum is 22 seconds.elevenlabs/music: ElevenLabs music generation model. Supports both instrumental music AND songs with vocals/singing. NOTE: Does NOT support custom lyrics - lyrics are auto-generated. Minimum duration is 10 seconds, maximum is 5 minutes (300 seconds). Professional music production quality.elevenlabs/voice-clone: ElevenLabs voice cloning model. Clone a voice from audio samples. Returns voice ID for use in TTS generation.elevenlabs/voice-changer: ElevenLabs voice changer model. Transform audio from one voice to another. Requires source audio and target voice ID.CassetteAI/music-generator: Background music generation model. minimum duration is 10 seconds, maximum is up to 180 seconds.fal-ai/minimax-music/v2.6: Song generation with lyrics using MiniMax Music 2.6. High-fidelity audio with humanized vocals. Supports markers (Verse), (Chorus), (Bridge), (Outro), (Instrumental intro). Requires both style prompt and lyrics.mureka/song-generator: Professional song generation with lyrics. Supports style prompts, reference tracks, vocal and melody inputs. Generate full songs with vocals. Maximum duration is 180 seconds.mureka/instrumental-generator: Instrumental music generation. Create background music and instrumental tracks without vocals. Supports style prompts and reference tracks. Maximum duration is 180 seconds.google/lyria-music: Google's Lyria 3 music generation model. High-quality 44.1kHz stereo output with vocals and lyrics support. Use sub_model='lyria-3-clip' for 30s clips or 'lyria-3-pro' for full songs (~3min). Supports custom lyrics with section tags like [Verse], [Chorus], [Bridge]. Multilingual vocals: English, Chinese, Japanese, French, Spanish, Korean, etc. (string, one of: google/gemini-3.1-flash-tts-preview, elevenlabs/v3-tts, fal-ai/elevenlabs/tts/multilingual-v2, fal-ai/minimax/speech-2.8-hd, elevenlabs/sound-effects, elevenlabs/music, elevenlabs/voice-clone, elevenlabs/voice-changer, CassetteAI/music-generator, fal-ai/minimax-music/v2.6, mureka/song-generator, mureka/instrumental-generator, google/lyria-music) |
33
33
  | `-r`, `--requirements` | No | Required parameters for TTS generation. If you know the speaker name, you can also pass it in the requirementsDetailed description of how the TTS should be generated, including voice characteristics, emotion, pacing, accent, tone, etc. For example: 'A calm, professional female voice with British accent reading at moderate pace'.or 'Speaker1: Algenib, Speaker2: Kore' if you want to use specific speakersThis will be used by the agent to determine the appropriate voice and style parameters (string) |
34
34
  | `--previous_audio_params` | No | Required parameters for TTS generation. The `generated_audios[].params` object from previous generation,get from previous tool call, when you need to fix the voice of a specific character, it will be useful. (object) |
35
35
  | `-d`, `--duration` | No | The desired duration of the generated audio in seconds. Only applicable for sound effects generation.Default is 0, which means the model will determine the appropriate duration.For background music generation, set default to 30 seconds. (number, default: `0`) |
@@ -37,7 +37,7 @@ gsk audio [options]
37
37
  | `--voice_files` | No | URLs or paths to voice sample files for voice cloning. Multiple samples improve clone quality. Required for ElevenLabs voice cloning model. (array) |
38
38
  | `--source_audio_file` | No | URL or path to the source audio file for voice transformation. Required for ElevenLabs voice changer model. This is the audio that will be transformed to the target voice. (string) |
39
39
  | `--image_urls` | No | The URLs of the images to use as a reference for the audio generation.(default is [], if the task is based on one or more reference images, it is required) (array) |
40
- | `-l`, `--lyrics` | No | Lyrics for song generation. Required for Mureka song generator and MiniMax Music 2.5. The lyrics will be used to generate vocals for the song. (string) |
40
+ | `-l`, `--lyrics` | No | Lyrics for song generation. For google/lyria-music: custom lyrics with section tags like [Verse], [Chorus], [Bridge]. Works with both Clip and Pro. For Mureka song generator and MiniMax Music 2.6: required for vocal generation. (string) |
41
41
 
42
42
  ## Local File Support
43
43
 
@@ -30,7 +30,7 @@ gsk task [options]
30
30
 
31
31
  | Flag | Required | Description |
32
32
  |------|----------|-------------|
33
- | `<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 - slides: Create presentation slides. Convert collected materials into a set of slides written in HTML format and display them. 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; - 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 - website: Create a professional agent for building websites and web pages - 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. - sheets: Create spreadsheet. This tool can convert collected materials into a spreadsheet, use only when user is explicitly requesting you to create a spreadsheet or excel table. (string, one of: super_agent, podcasts, docs, slides, deep_research, website, video_generation, audio_generation, meeting_notes, cross_check, sheets) |
33
+ | `<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 - slides: Create presentation slides. Convert collected materials into a set of slides written in HTML format and display them. 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 - 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. - sheets: Create spreadsheet. This tool can convert collected materials into a spreadsheet, use only when user is explicitly requesting you to create a spreadsheet or excel table. (string, one of: super_agent, podcasts, docs, slides, website, deep_research, video_generation, audio_generation, cross_check, meeting_notes, sheets) |
34
34
  | `--task_name` | Yes | Name for the task/project (string) |
35
35
  | `--query` | Yes | Query for the task. The ending should clearly state what needs to be done, such as generating a doc/slides etc. (string) |
36
36
  | `--instructions` | Yes | Detailed instructions for the task. This will be set as system prompt to the specialized agent. (string) |
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  name: gsk-gmail
3
3
  version: 1.0.0
4
- description: 'Gmail operations. Actions: search, read, send, reply, forward, delete,
5
- archive, move, mark_as_read, add_label, remove_label, create_label, get_attachment,
4
+ description: 'Gmail operations. Actions: search, read, send, draft, reply, forward,
5
+ delete, archive, move, mark_as_read, add_label, remove_label, create_label, get_attachment,
6
6
  list_send_as.'
7
7
  metadata:
8
8
  category: general
@@ -16,7 +16,7 @@ metadata:
16
16
 
17
17
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
18
18
 
19
- Gmail operations. Actions: search, read, send, reply, forward, delete, archive, move, mark_as_read, add_label, remove_label, create_label, get_attachment, list_send_as.
19
+ Gmail operations. Actions: search, read, send, draft, reply, forward, delete, archive, move, mark_as_read, add_label, remove_label, create_label, get_attachment, list_send_as.
20
20
 
21
21
  ## Usage
22
22
 
@@ -28,28 +28,30 @@ gsk gmail [options]
28
28
 
29
29
  | Flag | Required | Description |
30
30
  |------|----------|-------------|
31
- | `<action>` (positional) | Yes | Action to perform. 'search': Search emails by query; 'read': Read a specific email by ID; 'send': Compose and send an email; 'reply': Reply to an existing email; 'forward': Forward an email to new recipients; 'delete': Delete an email; 'archive': Archive an email; 'move': Move an email to a different label/folder; 'mark_as_read': Mark an email as read or unread; 'add_label': Add a label to an email; 'remove_label': Remove a label from an email; 'create_label': Create a new Gmail label; 'get_attachment': Download an email attachment; 'list_send_as': List available send-as aliases (string, one of: search, read, send, reply, forward, delete, archive, move, mark_as_read, add_label, remove_label, create_label, get_attachment, list_send_as) |
31
+ | `<action>` (positional) | Yes | Action to perform. 'search': Search emails by query; 'read': Read a specific email by ID; 'send': Compose and send an email; 'draft': Save an email to the Drafts folder without sending; 'reply': Reply to an existing email; 'forward': Forward an email to new recipients; 'delete': Delete an email; 'archive': Archive an email; 'move': Move an email to a different label/folder; 'mark_as_read': Mark an email as read or unread; 'add_label': Add a label to an email; 'remove_label': Remove a label from an email; 'create_label': Create a new Gmail label; 'get_attachment': Download an email attachment; 'list_send_as': List available send-as aliases (string, one of: search, read, send, draft, reply, forward, delete, archive, move, mark_as_read, add_label, remove_label, create_label, get_attachment, list_send_as) |
32
32
  | `--query` | No | [search] Query to filter emails using Gmail search syntax. Examples:\n- Simple: 'meeting'\n- From Sender: 'from:boss@example.com'\n- Subject: 'subject:report'\n- In Folder: 'in:spam', 'in:inbox', 'in:trash', 'in:sent'\n- Label: 'label:important'\n- Unread: 'is:unread'\n- Unread in Spam: 'in:spam is:unread'\n- Has Attachment: 'has:attachment'\n- Date Range: 'after:2024/01/01 before:2024/01/31'\n- Newer Than: 'newer_than:7d' (7 days)\n- Older Than: 'older_than:1m' (1 month)\nNote: Some queries like 'is:recent' are invalid. (string) |
33
33
  | `--after_date` | No | [search] Filter emails received after this date (inclusive). Format: YYYY/MM/DD (e.g., '2024/01/01'). This is equivalent to adding 'after:YYYY/MM/DD' to the query. (string) |
34
34
  | `--before_date` | No | [search] Filter emails received before this date (exclusive). Format: YYYY/MM/DD (e.g., '2024/01/31'). This is equivalent to adding 'before:YYYY/MM/DD' to the query. (string) |
35
35
  | `--next_page_token` | No | [search] Next page token to retrieve more emails (optional). (string) |
36
36
  | `--auto_paginate` | No | [search] If true, automatically fetches multiple pages until reaching max_total_results (default: 500). Returns ALL emails matching the query. (boolean) |
37
37
  | `--max_total_results` | No | [search] Maximum total results to fetch when auto_paginate is true. Default: 500, Maximum: 500. (integer) |
38
- | `--from_account` | No | [search] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [read] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [send] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [reply] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [forward] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [delete] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [archive] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [move] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [mark_as_read] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [add_label] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [remove_label] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [create_label] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [get_attachment] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [list_send_as] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. (string) |
38
+ | `--from_account` | No | [search] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [read] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [send] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [draft] Sender email account to use. \| [reply] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [forward] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [delete] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [archive] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [move] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [mark_as_read] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [add_label] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [remove_label] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [create_label] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [get_attachment] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. \| [list_send_as] Optional: Email address of the Gmail account to use. Use this when the user has multiple Gmail accounts connected. If not specified, uses the default Gmail account. (string) |
39
39
  | `--id` | No | [read] The ID of the email to retrieve and read (string) |
40
40
  | `--title` | No | [read] The title of the email to retrieve and read (string) |
41
41
  | `--question` | No | [read] Question to answer guiding how to process the email content (string) |
42
42
  | `--download_attachments` | No | [read] Whether need to download attachments from the email to analysis (boolean) |
43
43
  | `--aidrive_path` | No | [read] Path in AIDrive where attachments should be saved. Default is /gmail_attachments/ \| [get_attachment] The path in AIDrive to save the attachment. Default: /gmail_attachments/ (string) |
44
- | `--to` | No | [send] Email address(es) of the recipient(s). For multiple recipients, separate with commas. \| [forward] Email address(es) of the recipient(s). For multiple recipients, separate with commas. (string) |
45
- | `--subject` | No | [send] The email subject line (string) |
46
- | `--body` | No | [send] The email body content. **IMPORTANT**: The format of this field MUST match the content_type parameter: - If content_type='text/plain': Use plain text - If content_type='text/html': Use HTML format with tags like <h1>, <p>, <ul>, <li>, etc. **Note**: Email clients DO NOT support Markdown rendering. If you have Markdown content and want formatted display, you must convert it to HTML and set content_type='text/html'. \| [reply] The reply message body. **IMPORTANT**: The format of this field MUST match the content_type parameter: - If content_type='text/plain': Use plain text - If content_type='text/html': Use HTML format with tags like <h1>, <p>, <ul>, <li>, etc. **Note**: Email clients DO NOT support Markdown rendering. If you have Markdown content and want formatted display, you must convert it to HTML and set content_type='text/html'. \| [forward] Optional: Additional message to include above the forwarded content. This is your personal note to the recipients. (string) |
47
- | `--cc` | No | [send] Optional: CC email address(es). For multiple recipients, separate with commas. \| [forward] Optional: CC email address(es). For multiple recipients, separate with commas. (string) |
48
- | `--bcc` | No | [send] Optional: BCC email address(es). For multiple recipients, separate with commas. (string) |
44
+ | `--to` | No | [send] Email address(es) of the recipient(s). For multiple recipients, separate with commas. \| [draft] Recipient email address(es), comma-separated. \| [forward] Email address(es) of the recipient(s). For multiple recipients, separate with commas. (string) |
45
+ | `--subject` | No | [send] The email subject line \| [draft] Email subject line. (string) |
46
+ | `--body` | No | [send] The email body content. **IMPORTANT**: The format of this field MUST match the content_type parameter: - If content_type='text/plain': Use plain text - If content_type='text/html': Use HTML format with tags like <h1>, <p>, <ul>, <li>, etc. **Note**: Email clients DO NOT support Markdown rendering. If you have Markdown content and want formatted display, you must convert it to HTML and set content_type='text/html'. \| [draft] Email body content (plain text or HTML). \| [reply] The reply message body. **IMPORTANT**: The format of this field MUST match the content_type parameter: - If content_type='text/plain': Use plain text - If content_type='text/html': Use HTML format with tags like <h1>, <p>, <ul>, <li>, etc. **Note**: Email clients DO NOT support Markdown rendering. If you have Markdown content and want formatted display, you must convert it to HTML and set content_type='text/html'. \| [forward] Optional: Additional message to include above the forwarded content. This is your personal note to the recipients. (string) |
47
+ | `--cc` | No | [send] Optional: CC email address(es). For multiple recipients, separate with commas. \| [draft] CC recipient(s), comma-separated. \| [forward] Optional: CC email address(es). For multiple recipients, separate with commas. (string) |
48
+ | `--bcc` | No | [send] Optional: BCC email address(es). For multiple recipients, separate with commas. \| [draft] BCC recipient(s), comma-separated. (string) |
49
49
  | `--content_type` | No | [send] Content type of the email body. Default: text/html (recommended) **CRITICAL**: This parameter defines the format of the 'body' field: - 'text/plain': body should be plain text only - 'text/html': body MUST be valid HTML (e.g., '<h1>Title</h1><p>Content</p>') **Common mistake**: Setting content_type='text/html' but providing Markdown text (# Title, **bold**). This will display raw Markdown symbols in the email. Always convert Markdown to HTML before passing to this tool. \| [reply] Content type of the reply body. Default: text/html (recommended) **CRITICAL**: This parameter defines the format of the 'body' field: - 'text/plain': body should be plain text only - 'text/html': body MUST be valid HTML (e.g., '<h1>Title</h1><p>Content</p>') **Common mistake**: Setting content_type='text/html' but providing Markdown text. This will display raw Markdown symbols. Always convert Markdown to HTML first. \| [forward] Content type of the body. Default: text/html (recommended) **CRITICAL**: This parameter defines the format of the 'body' field: - 'text/plain': body should be plain text only - 'text/html': body MUST be valid HTML (e.g., '<h1>Title</h1><p>Content</p>') **Common mistake**: Setting content_type='text/html' but providing Markdown text. This will display raw Markdown symbols. Always convert Markdown to HTML first. (string, one of: text/plain, text/html) |
50
50
  | `--from_address` | No | [send] Send-as email address to use as the sender. Use this to send as a group/alias address (e.g., 'feedback@company.com'). Must be configured in Gmail's 'Send mail as' settings. \| [reply] Send-as email address to use as the sender. Use this to reply as a group/alias address (e.g., 'feedback@company.com'). Must be configured in Gmail's 'Send mail as' settings. \| [forward] Send-as email address to use as the sender. Use this to forward as a group/alias address. Must be configured in Gmail's 'Send mail as' settings. (string) |
51
51
  | `--skip_confirmation` | No | [send] If true, skip user confirmation and send immediately. Default is false (require confirmation before sending). \| [reply] If true, skip user confirmation and send immediately. Default is false (require confirmation before sending). \| [forward] If true, skip user confirmation and send immediately. Default is false (require confirmation before sending). \| [delete] If true, skip user confirmation and delete immediately. Default is false (require confirmation before deleting). \| [move] If true, skip user confirmation and move immediately. Default is false (require confirmation before moving). (boolean, default: `False`) |
52
52
  | `--auto_skip_confirmation` | No | [send] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. \| [reply] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. \| [forward] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. \| [delete] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. \| [move] 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`) |
53
+ | `--attachments` | No | [send] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [draft] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [reply] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [forward] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). (array) |
54
+ | `--body_type` | No | [draft] Body format: 'html' (default) or 'text'. (string) |
53
55
  | `--message_id` | No | [reply] The Gmail message ID to reply to \| [forward] The Gmail message ID to forward \| [delete] The Gmail message ID to delete \| [archive] The Gmail message ID to archive \| [move] The Gmail message ID to move \| [mark_as_read] (Deprecated, use message_ids) A single Gmail message ID to mark \| [add_label] The Gmail message ID to add label to \| [remove_label] The Gmail message ID to remove label from \| [get_attachment] The Gmail message ID containing the attachment (string) |
54
56
  | `--reply_all` | No | [reply] Whether to reply to all recipients (TO and CC). Default: true (reply to all recipients including CC) (boolean) |
55
57
  | `--include_attachments` | No | [forward] Whether to include original email attachments in the forward. Default: true (boolean, default: `True`) |
@@ -28,7 +28,7 @@ gsk img [options]
28
28
 
29
29
  | Flag | Required | Description |
30
30
  |------|----------|-------------|
31
- | `-m`, `--model` | No | Default model: use nano-banana-2 fal-ai/gpt-image-1.5: GPT Image 1.5 - Supports text-to-image and image editing with multi-image input. nano-banana-pro: [GEMINI NANO BANANA PRO] State of the Art (SOTA) for both generation and image editing. Multi-image fusion: Combine different images into one seamless new visual. Character & style consistency: Maintain the same subject or visual style across multiple generations. Conversational editing: Edit images with simple, natural language instructions. Perfect for creative use cases, marketing, training, advertising. Supports up to 14 images as reference input. Supports high resolution output up to 2K/4K. nano-banana-2: [GEMINI NANO BANANA 2] Gemini 3.1 Flash Image. Fast and efficient with advanced reasoning. Multi-image fusion with up to 14 reference images. Supports 0.5K/1K/2K/4K resolution. Google Search grounding for real-time data. Best for high-volume, speed-optimized workflows. imagen4: A latest model for generating high quality image, upgrade from Imagen 3. currently in preview mode.recraft-v3: A model for generating realistic image.fal-ai/bytedance/seedream/v5/lite: Bytedance Seedream v5 Lite model for text-to-image, image-to-image (single and multiple image editing) generation with native 2K resolution and excellent text layout.fal-ai/flux-2: Flux 2 model for text-to-image and image editing with enhanced realism, crisp text generation, and native editing capabilities. Fast processing with flexible aspect ratios. Supports up to 3 images for edit mode.fal-ai/flux-2-pro: Flux 2 Pro model - higher quality version of Flux 2 with professional-grade output. Enhanced realism, superior text generation, and advanced editing capabilities. Ideal for high-quality realistic images and complex editing tasks.fal-ai/z-image/turbo: Z-Image Turbo model optimized for speed without sacrificing quality. Supports both text-to-image and image-to-image modes. Perfect for quick iterations, bulk generation, style transfer, and cost-effective projects.ideogram/V_3: [FACE CONSISTENCY] Character reference specialist with superior facial feature preservation, character consistency across styles/poses/scenes, natural language understanding, excellent text rendering.qwen-image: [CHINESE POSTER SPECIALIST] Outstanding Chinese poster creation, superior Chinese text rendering, cultural context mastery, exceptional Chinese understanding, cost efficient.bbox-segment: A model for extracting subjects from images based on bbox region.fal-bria-rmbg: A model specialized for remove background from image. Should prioritize this tool if the user wants to remove background from image. fal-ai/recraft-clarity-upscale: A model specialized for upscale image. fal-ai/image-editing/text-removal: A specialized model for removing text and watermarks from images. Automatically detects and removes text while preserving the background and other visual elements. Use when users want to clean images, remove watermarks, or eliminate text overlays. flux-pro/outpaint: A model specialized for expand image to a specific aspect ratio. (string, one of: fal-ai/gpt-image-1.5, imagen4, recraft-v3, fal-ai/bytedance/seedream/v5/lite, fal-ai/flux-2, fal-ai/flux-2-pro, fal-ai/z-image/turbo, ideogram/V_3, qwen-image, bbox-segment, fal-bria-rmbg, fal-ai/recraft-clarity-upscale, fal-ai/image-editing/text-removal, flux-pro/outpaint, nano-banana-pro, nano-banana-2) |
31
+ | `-m`, `--model` | No | Default model: use nano-banana-2 gpt-image-2: GPT Image 2 - Latest OpenAI image model. Superior text rendering, editing, and face preservation. Supports text-to-image and image editing with multi-image input. nano-banana-pro: [GEMINI NANO BANANA PRO] State of the Art (SOTA) for both generation and image editing. Multi-image fusion: Combine different images into one seamless new visual. Character & style consistency: Maintain the same subject or visual style across multiple generations. Conversational editing: Edit images with simple, natural language instructions. Perfect for creative use cases, marketing, training, advertising. Supports up to 14 images as reference input. Supports high resolution output up to 2K/4K. nano-banana-2: [GEMINI NANO BANANA 2] Gemini 3.1 Flash Image. Fast and efficient with advanced reasoning. Multi-image fusion with up to 14 reference images. Supports 0.5K/1K/2K/4K resolution. Google Search grounding for real-time data. Best for high-volume, speed-optimized workflows. imagen4: A latest model for generating high quality image, upgrade from Imagen 3. currently in preview mode.recraft-v3: A model for generating realistic image.fal-ai/bytedance/seedream/v5/lite: Bytedance Seedream v5 Lite model for text-to-image, image-to-image (single and multiple image editing) generation with native 2K resolution and excellent text layout.fal-ai/flux-2: Flux 2 model for text-to-image and image editing with enhanced realism, crisp text generation, and native editing capabilities. Fast processing with flexible aspect ratios. Supports up to 3 images for edit mode.fal-ai/flux-2-pro: Flux 2 Pro model - higher quality version of Flux 2 with professional-grade output. Enhanced realism, superior text generation, and advanced editing capabilities. Ideal for high-quality realistic images and complex editing tasks.fal-ai/z-image/turbo: Z-Image Turbo model optimized for speed without sacrificing quality. Supports both text-to-image and image-to-image modes. Perfect for quick iterations, bulk generation, style transfer, and cost-effective projects.ideogram/V_3: [FACE CONSISTENCY] Character reference specialist with superior facial feature preservation, character consistency across styles/poses/scenes, natural language understanding, excellent text rendering.qwen-image: [CHINESE POSTER SPECIALIST] Outstanding Chinese poster creation, superior Chinese text rendering, cultural context mastery, exceptional Chinese understanding, cost efficient.bbox-segment: A model for extracting subjects from images based on bbox region.fal-bria-rmbg: A model specialized for remove background from image. Should prioritize this tool if the user wants to remove background from image. fal-ai/recraft-clarity-upscale: A model specialized for upscale image. fal-ai/image-editing/text-removal: A specialized model for removing text and watermarks from images. Automatically detects and removes text while preserving the background and other visual elements. Use when users want to clean images, remove watermarks, or eliminate text overlays. flux-pro/outpaint: A model specialized for expand image to a specific aspect ratio. (string, one of: gpt-image-2, nano-banana-pro, nano-banana-2, imagen4, recraft-v3, fal-ai/bytedance/seedream/v5/lite, fal-ai/flux-2, fal-ai/flux-2-pro, fal-ai/z-image/turbo, ideogram/V_3, qwen-image, bbox-segment, fal-bria-rmbg, fal-ai/recraft-clarity-upscale, fal-ai/image-editing/text-removal, flux-pro/outpaint) |
32
32
  | `<query>` (positional) | Yes | 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'). (string) |
33
33
  | `--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) |
34
34
  | `-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) |
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: gsk-outlook-email
3
3
  version: 1.0.0
4
- description: 'Outlook Email operations. Actions: search, read, send, reply, reply_draft,
5
- forward, delete, archive, move, mark_as_read, add_category, remove_category, get_attachment,
6
- group_list, group_search, group_read, group_reply.'
4
+ description: 'Outlook Email operations. Actions: search, read, send, draft, reply,
5
+ reply_draft, forward, delete, archive, move, mark_as_read, add_category, remove_category,
6
+ get_attachment, group_list, group_search, group_read, group_reply.'
7
7
  metadata:
8
8
  category: general
9
9
  requires:
@@ -16,7 +16,7 @@ metadata:
16
16
 
17
17
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
18
18
 
19
- Outlook Email operations. Actions: search, read, send, reply, reply_draft, forward, delete, archive, move, mark_as_read, add_category, remove_category, get_attachment, group_list, group_search, group_read, group_reply.
19
+ Outlook Email operations. Actions: search, read, send, draft, reply, reply_draft, forward, delete, archive, move, mark_as_read, add_category, remove_category, get_attachment, group_list, group_search, group_read, group_reply.
20
20
 
21
21
  ## Usage
22
22
 
@@ -30,7 +30,7 @@ gsk outlook [options]
30
30
 
31
31
  | Flag | Required | Description |
32
32
  |------|----------|-------------|
33
- | `<action>` (positional) | Yes | Action to perform. 'search': Search emails by query; 'read': Read a specific email by ID; 'send': Compose and send an email; 'reply': Reply to an existing email; 'reply_draft': Create a reply draft without sending; 'forward': Forward an email to new recipients; 'delete': Delete an email; 'archive': Archive an email; 'move': Move an email to a different folder; 'mark_as_read': Mark an email as read or unread; 'add_category': Add a category to an email; 'remove_category': Remove a category from an email; 'get_attachment': Download an email attachment; 'group_list': List Microsoft 365 groups; 'group_search': Search group emails; 'group_read': Read a group email; 'group_reply': Reply to a group email (string, one of: search, read, send, reply, reply_draft, forward, delete, archive, move, mark_as_read, add_category, remove_category, get_attachment, group_list, group_search, group_read, group_reply) |
33
+ | `<action>` (positional) | Yes | Action to perform. 'search': Search emails by query; 'read': Read a specific email by ID; 'send': Compose and send an email; 'draft': Save an email to the Drafts folder without sending; 'reply': Reply to an existing email; 'reply_draft': Create a reply draft without sending; 'forward': Forward an email to new recipients; 'delete': Delete an email; 'archive': Archive an email; 'move': Move an email to a different folder; 'mark_as_read': Mark an email as read or unread; 'add_category': Add a category to an email; 'remove_category': Remove a category from an email; 'get_attachment': Download an email attachment; 'group_list': List Microsoft 365 groups; 'group_search': Search group emails; 'group_read': Read a group email; 'group_reply': Reply to a group email (string, one of: search, read, send, draft, reply, reply_draft, forward, delete, archive, move, mark_as_read, add_category, remove_category, get_attachment, group_list, group_search, group_read, group_reply) |
34
34
  | `--queryString` | No | [search] The search query using KQL (Keyword Query Language). Examples:\n- Simple: 'project meeting'\n- From Sender: 'from:boss@example.com'\n- With Subject: 'subject:"Weekly Report"'\n- Unread Emails: 'isRead=false'\n- Has Attachments: 'hasAttachments=true'\n- Cc Recipient: 'cc:user@example.com'\n- Important: 'importance:high'\n- Complex: 'from:admin@co.com AND (subject:urgent OR body:critical)'\nNote: Use after_date/before_date params for date filtering (recommended), or use KQL syntax like 'received:2024-06-01..2024-06-30' in queryString. (string) |
35
35
  | `--after_date` | No | [search] Filter emails received on or after this date (inclusive). Format: YYYY-MM-DD (e.g., '2024-01-01'). Works for both enterprise and personal accounts. (string) |
36
36
  | `--before_date` | No | [search] Filter emails received before this date (exclusive). Format: YYYY-MM-DD (e.g., '2024-01-31'). Works for both enterprise and personal accounts. (string) |
@@ -40,21 +40,23 @@ gsk outlook [options]
40
40
  | `--max_total_results` | No | [search] Maximum total results to fetch when auto_paginate is true. Default: 500, Maximum: 500. \| [group_search] Maximum total results to fetch across all groups when auto_paginate is true. Default: 500, Maximum: 500. (integer) |
41
41
  | `--folder` | No | [search] The mail folder to search in. Options:\n- 'inbox': Inbox folder (default)\n- 'junkemail' or 'spam': Junk/Spam folder\n- 'deleteditems' or 'trash': Deleted Items folder\n- 'drafts': Drafts folder\n- 'sentitems' or 'sent': Sent Items folder\n- 'archive': Archive folder\n- 'all': Search across all folders (uses Search API) (string) |
42
42
  | `--search_mode` | No | [search] Search mode to use:\n- 'auto' (default): Automatically choose best method\n- 'kql': Use Microsoft Search API with full KQL syntax (enterprise only, supports 'isread:false from:john subject:meeting')\n- 'filter': Use $filter for property filtering (supports 'isRead eq false', works with folder parameter) (string, one of: auto, kql, filter) |
43
- | `--from_account` | No | [search] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [read] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [send] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [reply] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [reply_draft] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [forward] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [delete] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [archive] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [move] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [mark_as_read] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [add_category] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [remove_category] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [get_attachment] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_list] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_search] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_read] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_reply] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. (string) |
43
+ | `--from_account` | No | [search] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [read] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [send] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [draft] Sender email account to use. \| [reply] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [reply_draft] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [forward] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [delete] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [archive] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [move] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [mark_as_read] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [add_category] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [remove_category] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [get_attachment] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_list] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_search] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_read] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. \| [group_reply] Optional: Email address of the Outlook account to use. Use this when the user has multiple Outlook accounts connected. If not specified, uses the default Outlook account. (string) |
44
44
  | `--id` | No | [read] The ID of the email to retrieve and read (string) |
45
45
  | `--title` | No | [read] The title of the email to retrieve and read \| [group_read] The title of the email thread to retrieve. (string) |
46
46
  | `--question` | No | [read] Question to answer guiding how to process the email content \| [group_read] Question to answer guiding how to process the email content (string) |
47
47
  | `--download_attachments` | No | [read] Whether need to download attachments from the email to analysis (boolean) |
48
48
  | `--aidrive_path` | No | [read] Path in AIDrive where attachments should be saved. Default is /outlook_attachments/ \| [get_attachment] The path in AIDrive to save the attachment. Default: /outlook_attachments/ (string) |
49
- | `--to` | No | [send] A list of email addresses for primary recipients. At least one recipient is required. \| [reply] Optional: A list of email addresses for primary recipients. If not provided, defaults to the original sender. By default (reply_all=true), all original recipients are included in CC. \| [reply_draft] Optional: A list of email addresses for primary recipients. If not provided, defaults to the original sender. By default (reply_all), all original recipients are included in CC. \| [forward] A list of email addresses for primary recipients to forward the email to. \| [group_reply] Optional list of recipient email addresses to add as new participants. These recipients will be notified about the reply. (array) |
50
- | `--subject` | No | [send] The email subject line. (string) |
51
- | `--body` | No | [send] The email body content. **IMPORTANT**: The format MUST match the content_type parameter: - If content_type='text': Use plain text - If content_type='html': Use HTML format with tags like <h1>, <p>, <ul>, etc. **Note**: Email clients DO NOT support Markdown. Convert Markdown to HTML if needed. \| [reply] The reply message body. **IMPORTANT**: The format MUST match the content_type parameter: - If content_type='text': Use plain text - If content_type='html': Use HTML format with tags like <h1>, <p>, <ul>, etc. **Note**: Email clients DO NOT support Markdown. Convert Markdown to HTML if needed. \| [reply_draft] The reply content in HTML format. Use HTML tags for formatting (e.g., <br>, <b>, <i>). \| [forward] Optional: Additional message to include above the forwarded content. This is your personal note to recipients. (string) |
52
- | `--cc` | No | [send] Optional: A list of email addresses for CC recipients. \| [reply] Optional: A list of email addresses for CC recipients. If not provided and 'reply_all' is true (default), includes original CC and TO recipients. If 'reply_all' is false, no CC recipients are added. \| [reply_draft] Optional: A list of email addresses for CC recipients. If not provided and 'reply_type' is 'reply_all' (default), includes original CC and TO recipients. If 'reply_type' is 'reply', no CC recipients are added. \| [forward] Optional: A list of email addresses for CC recipients. (array) |
53
- | `--bcc` | No | [send] Optional: A list of email addresses for BCC recipients. \| [reply] Optional: A list of email addresses for BCC recipients. \| [reply_draft] Optional: A list of email addresses for BCC recipients. \| [forward] Optional: A list of email addresses for BCC recipients. (array) |
49
+ | `--to` | No | [send] A list of email addresses for primary recipients. At least one recipient is required. \| [draft] Recipient email address(es), comma-separated. \| [reply] Optional: A list of email addresses for primary recipients. If not provided, defaults to the original sender. By default (reply_all=true), all original recipients are included in CC. \| [reply_draft] Optional: A list of email addresses for primary recipients. If not provided, defaults to the original sender. By default (reply_all), all original recipients are included in CC. \| [forward] A list of email addresses for primary recipients to forward the email to. \| [group_reply] Optional list of recipient email addresses to add as new participants. These recipients will be notified about the reply. (array) |
50
+ | `--subject` | No | [send] The email subject line. \| [draft] Email subject line. (string) |
51
+ | `--body` | No | [send] The email body content. **IMPORTANT**: The format MUST match the content_type parameter: - If content_type='text': Use plain text - If content_type='html': Use HTML format with tags like <h1>, <p>, <ul>, etc. **Note**: Email clients DO NOT support Markdown. Convert Markdown to HTML if needed. \| [draft] Email body content (plain text or HTML). \| [reply] The reply message body. **IMPORTANT**: The format MUST match the content_type parameter: - If content_type='text': Use plain text - If content_type='html': Use HTML format with tags like <h1>, <p>, <ul>, etc. **Note**: Email clients DO NOT support Markdown. Convert Markdown to HTML if needed. \| [reply_draft] The reply content in HTML format. Use HTML tags for formatting (e.g., <br>, <b>, <i>). \| [forward] Optional: Additional message to include above the forwarded content. This is your personal note to recipients. (string) |
52
+ | `--cc` | No | [send] Optional: A list of email addresses for CC recipients. \| [draft] CC recipient(s), comma-separated. \| [reply] Optional: A list of email addresses for CC recipients. If not provided and 'reply_all' is true (default), includes original CC and TO recipients. If 'reply_all' is false, no CC recipients are added. \| [reply_draft] Optional: A list of email addresses for CC recipients. If not provided and 'reply_type' is 'reply_all' (default), includes original CC and TO recipients. If 'reply_type' is 'reply', no CC recipients are added. \| [forward] Optional: A list of email addresses for CC recipients. (array) |
53
+ | `--bcc` | No | [send] Optional: A list of email addresses for BCC recipients. \| [draft] BCC recipient(s), comma-separated. \| [reply] Optional: A list of email addresses for BCC recipients. \| [reply_draft] Optional: A list of email addresses for BCC recipients. \| [forward] Optional: A list of email addresses for BCC recipients. (array) |
54
54
  | `--from_mailbox` | No | [send] Optional: The email address to send from (e.g., team@company.com). If not specified, the email will be sent from the current user's mailbox. Requires 'Mail.Send.Shared' permission for shared/group mailboxes. \| [reply] Optional: The email address to send the reply from (e.g., team@genspark.ai). If not specified, the reply will be sent from the current user's mailbox. Requires 'Mail.Send.Shared' permission for shared/group mailboxes. \| [reply_draft] Optional: The email address to create the draft from (e.g., team@genspark.ai). If not specified, the draft will be created in the current user's mailbox. Requires 'Mail.Send.Shared' permission for shared/group mailboxes. \| [forward] Optional: The email address to send from (e.g., team@genspark.ai). If not specified, forwards from the current user's mailbox. Requires 'Mail.Send.Shared' permission for shared/group mailboxes. (string) |
55
55
  | `--content_type` | No | [send] Content type of the body. Default: text/html (recommended) **CRITICAL**: body field format MUST match this parameter: - 'text/plain': body should be plain text - 'text/html': body MUST be valid HTML (not Markdown) Always convert Markdown to HTML before passing to this tool. \| [reply] Content type of the reply body. Default: text/html (recommended) **CRITICAL**: body field format MUST match this parameter: - 'text/plain': body should be plain text - 'text/html': body MUST be valid HTML (not Markdown) Always convert Markdown to HTML before passing to this tool. \| [forward] Content type of the body. Default: text/html \| [group_reply] The format of the content. Use 'text/plain' for plain text or 'text/html' for HTML content. Default is 'text/plain'. (string, one of: text/plain, text/html) |
56
56
  | `--skip_confirmation` | No | [send] If true, skip user confirmation and send immediately. Default is false (require confirmation before sending). \| [reply] If true, skip user confirmation and send immediately. Default is false (require confirmation before sending). \| [forward] If true, skip user confirmation and send immediately. Default is false (require confirmation before sending). \| [delete] If true, skip user confirmation and delete immediately. Default is false (require confirmation before deleting). \| [move] If true, skip user confirmation and move immediately. Default is false (require confirmation before moving). (boolean, default: `False`) |
57
57
  | `--auto_skip_confirmation` | No | [send] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. \| [reply] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. \| [forward] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. \| [delete] Set to true ONLY if the workflow step has [AUTO_SKIP_CONFIRMATION] marker. This indicates the node is configured to always skip confirmation. \| [move] 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
+ | `--attachments` | No | [send] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [draft] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [reply] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [reply_draft] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [forward] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). \| [group_reply] Optional file attachments. Each item is either a local file path (read inline by the gsk CLI — the bytes ride in the request body as base64 and are not persisted to blob storage) or an already-hosted URL (file-wrapper URL or other public https). Files are delivered as real email attachments (not links): inline base64 for items ≤3 MB, Microsoft Graph upload session for larger Outlook attachments. CLI alias: --attach / --attachment (repeatable). CLI inline cap: 5 MiB per local file — larger files must be uploaded via 'gsk upload' first and passed as a URL. Per-message raw-payload cap: 18 MiB for Gmail (Gmail's 25 MB send cap is on the base64-encoded RFC 822 message; 18 MiB raw leaves headroom for ~33% encoding overhead) and 150 MB for Outlook (via Graph upload session). (array) |
59
+ | `--body_type` | No | [draft] Body format: 'html' (default) or 'text'. (string) |
58
60
  | `--message_id` | No | [reply] The Outlook message ID to reply to. \| [forward] The Outlook message ID to forward. \| [delete] The Outlook message ID to delete \| [archive] The Outlook message ID to archive \| [move] The Outlook message ID to move \| [mark_as_read] (Deprecated, use message_ids) A single Outlook message ID to mark \| [add_category] The Outlook message ID to add category to \| [remove_category] The Outlook message ID to remove category from \| [get_attachment] The Outlook message ID containing the attachment (string) |
59
61
  | `--reply_all` | No | [reply] Optional: If true (default), reply to all original recipients (TO and CC). If false, reply only to the original sender. (boolean, default: `True`) |
60
62
  | `--include_original` | No | [reply] Optional: Whether to include the original email content as a quote in the reply. Defaults to true. \| [reply_draft] Optional: Whether to include the original email content as a quote in the draft. Defaults to true. (boolean, default: `True`) |
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: gsk-salesforce
3
+ version: 1.0.0
4
+ description: 'Salesforce DX CLI (`sf`) operations in a pre-authenticated sandbox.
5
+ Actions: run (forwards any `sf` subcommand).'
6
+ metadata:
7
+ category: general
8
+ requires:
9
+ bins:
10
+ - gsk
11
+ cliHelp: gsk sf --help
12
+ ---
13
+
14
+ # gsk-salesforce
15
+
16
+ **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
17
+
18
+ Salesforce DX CLI (`sf`) operations in a pre-authenticated sandbox. Actions: run (forwards any `sf` subcommand).
19
+
20
+ ## Usage
21
+
22
+ ```bash
23
+ gsk sf [options]
24
+ ```
25
+
26
+ **Aliases:** `sf`
27
+
28
+ ## Flags
29
+
30
+ | Flag | Required | Description |
31
+ |------|----------|-------------|
32
+ | `<action>` (positional) | Yes | Action to perform. 'run': Run an `sf` subcommand inside the pre-authenticated sandbox. Provide the subcommand and flags as you would type them after `sf`. (string, one of: run) |
33
+ | `--args` | No | [run] The `sf` subcommand and its arguments (everything after `sf`). Example: `data query --query "SELECT COUNT() FROM Account"`. (string) |
34
+ | `--timeout` | No | [run] Optional timeout in seconds. Default 120. Raise for long-running ops like bulk import. (integer, default: `120`) |
35
+
36
+ ## See Also
37
+
38
+ - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags
@@ -2,7 +2,7 @@
2
2
  name: gsk-sharepoint
3
3
  version: 1.0.0
4
4
  description: 'SharePoint site and file operations. Actions: list, search, read_content,
5
- read_file.'
5
+ read_file, upload.'
6
6
  metadata:
7
7
  category: general
8
8
  requires:
@@ -15,7 +15,7 @@ metadata:
15
15
 
16
16
  **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
17
17
 
18
- SharePoint site and file operations. Actions: list, search, read_content, read_file.
18
+ SharePoint site and file operations. Actions: list, search, read_content, read_file, upload.
19
19
 
20
20
  ## Usage
21
21
 
@@ -27,11 +27,11 @@ gsk sharepoint [options]
27
27
 
28
28
  | Flag | Required | Description |
29
29
  |------|----------|-------------|
30
- | `<action>` (positional) | Yes | Action to perform. 'list': List files in a site or library; 'search': Search across sites; 'read_content': Read content from a list item or page; 'read_file': Read and extract content from a file (string, one of: list, search, read_content, read_file) |
31
- | `--sharepoint_url` | No | [list] A SharePoint URL to list files from. Can be a site URL, document library URL (AllItems.aspx), or a folder URL. Example: 'https://company.sharepoint.com/sites/TeamSite/Shared Documents/Forms/AllItems.aspx' (string) |
32
- | `--site_id` | No | [list] The SharePoint site ID. Use this to list the default document library of a specific site. Get site IDs from sharepoint_search results. \| [read_content] Site ID from SharePoint search results siteInfo. Required for listItem content type. (string) |
33
- | `--drive_id` | No | [list] The document library (drive) ID. Use this to list files in a specific document library. (string) |
34
- | `--folder_id` | No | [list] The folder item ID within a drive. Use this with drive_id to navigate into subfolders. Get folder IDs from previous sharepoint_list_files results. (string) |
30
+ | `<action>` (positional) | Yes | Action to perform. 'list': List files in a site or library; 'search': Search across sites; 'read_content': Read content from a list item or page; 'read_file': Read and extract content from a file; 'upload': Upload a file to a site or library (string, one of: list, search, read_content, read_file, upload) |
31
+ | `--sharepoint_url` | No | [list] A SharePoint URL to list files from. Can be a site URL, document library URL (AllItems.aspx), or a folder URL. Example: 'https://company.sharepoint.com/sites/TeamSite/Shared Documents/Forms/AllItems.aspx' \| [upload] Target folder URL on SharePoint. Example: 'https://company.sharepoint.com/sites/Team/Shared Documents/Reports'. The tool resolves this to a drive + folder. (string) |
32
+ | `--site_id` | No | [list] The SharePoint site ID. Use this to list the default document library of a specific site. Get site IDs from sharepoint_search results. \| [read_content] Site ID from SharePoint search results siteInfo. Required for listItem content type. \| [upload] SharePoint site ID. The file is uploaded to the default document library; combine with ``folder_id`` to target a subfolder. (string) |
33
+ | `--drive_id` | No | [list] The document library (drive) ID. Use this to list files in a specific document library. \| [upload] Document library (drive) ID. Combine with ``folder_id`` to target a specific folder. (string) |
34
+ | `--folder_id` | No | [list] The folder item ID within a drive. Use this with drive_id to navigate into subfolders. Get folder IDs from previous sharepoint_list_files results. \| [upload] Folder item ID inside ``drive_id`` or the site's default drive. If omitted, the upload goes to the drive root. (string) |
35
35
  | `--limit` | No | [list] Maximum number of items to return (1-200). Default: 50 (integer) |
36
36
  | `--query` | No | [search] The search query string using KQL syntax. **Query Behavior**: • Spaces = AND: 'project report' finds items with BOTH terms • OR operator: 'project OR report' finds items with EITHER term • Empty string: '*' returns all items • Mixed language: automatically optimized (e.g., '项目 project' → '项目 OR project') • Examples: 'budget 2024', 'meeting OR conference', 'from:john project', 'hasAttachment:true report' (string) |
37
37
  | `--entity_types` | No | [search] Types of SharePoint content to search. Defaults to all types. (array, default: `['site', 'listItem', 'list', 'driveItem']`) |
@@ -41,6 +41,11 @@ gsk sharepoint [options]
41
41
  | `--list_id` | No | [read_content] List ID from SharePoint search results siteInfo. Required for listItem content type. (string) |
42
42
  | `--list_item_id` | No | [read_content] List item ID from SharePoint search results siteInfo. Required for listItem content type. (string) |
43
43
  | `--file_id` | No | [read_file] The ID of the file OR the SharePoint URL to read from Microsoft OneDrive/SharePoint/Teams. Can be either a file ID (like '01W56PINYRO3...') or a full SharePoint URL (like 'https://domain.sharepoint.com/...'). (string) |
44
+ | `--file_path` | No | [upload] Local file path to upload. Mutually exclusive with ``content``. (string) |
45
+ | `--content` | No | [upload] Text content to upload as the file body (encoded as UTF-8). Useful for creating .txt/.md/.json/.csv files without a local copy. Mutually exclusive with ``file_path``. (string) |
46
+ | `--file_name` | No | [upload] File name to create on SharePoint, including the extension (e.g. 'report.pdf'). Required when ``content`` is used; if omitted with ``file_path``, the basename of the local file is used. (string) |
47
+ | `--mime_type` | No | [upload] MIME type of the file. Auto-detected from the file extension if omitted. (string) |
48
+ | `--conflict_behavior` | No | [upload] How to handle a name conflict on SharePoint: 'rename' appends a suffix (default), 'replace' overwrites, 'fail' returns an error. (string, one of: rename, replace, fail) |
44
49
 
45
50
  ## Local File Support
46
51
 
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: gsk-sharepoint-upload
3
+ version: 1.0.0
4
+ description: Upload a file to a SharePoint document library.
5
+ metadata:
6
+ category: sharepoint
7
+ requires:
8
+ bins:
9
+ - gsk
10
+ cliHelp: gsk sharepoint upload --help
11
+ ---
12
+
13
+ # gsk-sharepoint-upload
14
+
15
+ **PREREQUISITE:** Read `../gsk-shared/SKILL.md` for auth, global flags, and security rules.
16
+
17
+ Upload a file to a SharePoint document library.
18
+
19
+ ## Usage
20
+
21
+ ```bash
22
+ gsk sharepoint upload [options]
23
+ ```
24
+
25
+ ## Flags
26
+
27
+ | Flag | Required | Description |
28
+ |------|----------|-------------|
29
+ | `<file_path>` (positional) | No | Local file path to upload. Mutually exclusive with ``content``. (string) |
30
+ | `--content` | No | Text content to upload as the file body (encoded as UTF-8). Useful for creating .txt/.md/.json/.csv files without a local copy. Mutually exclusive with ``file_path``. (string) |
31
+ | `-n`, `--file_name` | No | File name to create on SharePoint, including the extension (e.g. 'report.pdf'). Required when ``content`` is used; if omitted with ``file_path``, the basename of the local file is used. (string) |
32
+ | `-u`, `--sharepoint_url` | No | Target folder URL on SharePoint. Example: 'https://company.sharepoint.com/sites/Team/Shared Documents/Reports'. The tool resolves this to a drive + folder. (string) |
33
+ | `-s`, `--site_id` | No | SharePoint site ID. The file is uploaded to the default document library; combine with ``folder_id`` to target a subfolder. (string) |
34
+ | `-d`, `--drive_id` | No | Document library (drive) ID. Combine with ``folder_id`` to target a specific folder. (string) |
35
+ | `-f`, `--folder_id` | No | Folder item ID inside ``drive_id`` or the site's default drive. If omitted, the upload goes to the drive root. (string) |
36
+ | `--mime_type` | No | MIME type of the file. Auto-detected from the file extension if omitted. (string) |
37
+ | `--conflict_behavior` | No | How to handle a name conflict on SharePoint: 'rename' appends a suffix (default), 'replace' overwrites, 'fail' returns an error. (string, one of: rename, replace, fail) |
38
+
39
+ ## Local File Support
40
+
41
+ Parameters that accept URLs (`--sharepoint_url`) also accept local file paths. The CLI automatically uploads local files before sending to the API.
42
+
43
+ ## See Also
44
+
45
+ - [gsk-shared](../gsk-shared/SKILL.md) — Authentication and global flags