use-spark について
use-spark は、Spark メールクライアントを spark コマンドラインから利用するためのスキルです。メール、カレンダー、連絡先、会議、チーム情報を扱う用途向けで、CLI は起動中の Spark Desktop と IPC で通信し、検索・閲覧・操作を行います。
主な機能
- 01メール、フォルダー、スレッドの検索
- 02キーワードとセマンティック検索
- 03メール添付ファイルと会議記録の閲覧
- 04下書き、予定、連絡先の管理
- 05アカウントのアクセスレベルによる操作制限
活用シーン
- 01複数フォルダーを対象にメールを検索・絞り込み
- 02メールスレッドと添付ファイルの閲覧
- 03カレンダーの空き時間確認と予定管理
- 04共有受信トレイやチームメールの処理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ readdle/ spark-cli-skills --skill use-sparkインストール後、Claude Code で/use-sparkを入力して読み込まれたか確認します。
詳細
spark の使用方法
spark は Spark メールクライアント用の CLI です。ユーザーのメールボックス、カレンダー、連絡先、会議、チームデータを照会するために使用します。
spark の実行
spark <command> [options]
環境: spark は IPC 経由で、実行中のユーザーの Spark Desktop アプリと通信する軽量クライアントです。独自のメールボックス、ネットワークスタック、認証情報は付属しません。ユーザーのコンピューター上で、実行中の Spark Desktop プロセスに対して直接実行してください。サンドボックス、コンテナー、CI ランナー、またはユーザーのデスクトップセッションから隔離された環境内では実行しないでください。接続に失敗します。Spark Desktop が起動していない場合は、再試行せず、ユーザーに起動を依頼してください。
JSON 出力: 任意のコマンドに --json を追加すると、テキストではなく JSON で結果が得られます。データは同じですが、値は省略されず、キーは snake_case、日付は ISO 8601 形式になります。失敗した場合は、{"error": {"message": "…"}} が標準出力に出力され、ゼロ以外の終了コードで終了します。結果を読むだけの場合はデフォルトのテキスト出力を優先し、処理が必要な場合(例:spark emails --json | jq '.emails[].id')に --json を使用してください。フィールドは追加されることはあっても、名前の変更や削除はされません。
コマンド
| コマンド | 説明 |
|---|---|
accounts | アカウント、カレンダー、チーム、共有受信トレイ、アクセスレベルを一覧表示します |
folders | フォルダー/ラベルをメッセージ数とともに一覧表示します |
emails | フィルターとページネーションを指定してメールを一覧表示します |
search | 本文全体を対象とした、キーワード検索とセマンティック検索のハイブリッド検索です |
thread | ヘッダー、本文、添付ファイルを含むスレッド全体を読み取ります |
attachment | IDを指定して、メールの添付ファイルを1つ読み取ります(自動ダウンロード) |
draft | メールの下書きを作成、編集、削除します(新規作成、返信、転送、テンプレートから作成)。またはアカウントの署名を一覧表示します |
templates | 保存済みのメッセージテンプレート(個人用とチーム用)を一覧表示します |
template | IDまたは名前を指定して、プレースホルダーを含むテンプレートを1つ表示します |
comment | スレッドにチームコメントを投稿します |
events | 指定した期間のカレンダーイベントを一覧表示します |
event | 参加者/招待の管理を含め、カレンダーイベントの作成、更新、削除、出欠回答を行います |
availability | 参加者を指定して、または指定せずに空き時間枠を検索します |
contacts | 名前またはメールアドレスで連絡先を検索するか、使用頻度の高い連絡先を一覧表示します |
contact | 連絡先1件の詳細と設定を表示します |
team | チーム情報、メンバー、共有受信トレイ、担当状況を表示します |
meetings | 会議の文字起こしを一覧表示します |
meeting | 会議の文字起こしを1件読み取ります |
action | メールに対するアクション(アーカイブ、ピン留め、スヌーズ、割り当てなど)を実行します |
contact-action | 連絡先に対するアクション(ブロック、承認、カテゴリ分けなど)を実行します |
accounts
設定されているすべてのアカウントを、エイリアス、カレンダー、チーム、共有受信トレイとともに一覧表示します。各アカウントと共有受信トレイには、Spark で実行できる操作を決めるアクセスレベルが括弧内に表示されます。
spark accounts
最初にこれを実行して、利用できるアカウント、カレンダー、チームを確認し、アクセスレベルを確認してください。
アクセスレベル:
| レベル | 許可される操作 |
|---|---|
| read-only | メール、スレッド、フォルダー、イベント、連絡先、ミーティング、チームの一覧表示、検索、閲覧 |
| triage | read-only のすべての操作に加え、すべての書き込み操作:下書き、チームコメント、メール操作(アーカイブ、移動、ピン留め、スヌーズ、割り当てなど)、連絡先操作(ブロック、承認、分類など) |
| send | triage のすべての操作に加え、メール送信を伴う操作:下書きの送信(action send。予約送信の「Send Later」を含む)と、event コマンド全体:event create / event update / event delete / event rsvp。これには、--add / --remove による出席者の追加または削除、およびそれに伴う iTIP REQUEST / UPDATE / CANCEL / REPLY メールも含まれます。 |
アクセスレベルは、Spark Desktop の Settings -> AI Agents で、アカウントごと、共有受信トレイごとに個別に設定します。共有受信トレイには、親アカウントとは異なるアクセスレベルを設定できます。たとえば、個人アカウントには triage アクセスを許可し、同じチーム配下の共有受信トレイには read-only を許可するか、無効にできます。
コマンドに必要なアクセスレベルがアカウントまたは共有受信トレイに設定されていない場合、レベルの変更方法を示すエラーが返されます。
folders
メッセージ数とともにフォルダーを一覧表示します。出力にはフォルダー識別子が括弧内に含まれます。これらを emails と search の引数として使用してください。Google アカウントを使用するメールボックスでは、Email Account または Shared Inbox のヘッダーに「(Gmail labels)」と表示されます。チームでは、チーム名を emails の識別子として使用できます。
spark folders # all accounts
spark folders [email protected] # single account
emails
メタデータ(ID、差出人、日付、件名、フラグ)を含むメールの一覧を表示します。ページネーションと Gmail 形式のフィルターに対応しています。
spark emails # Unified Inbox
spark emails [email protected]:Archive # specific folder
spark emails "My Team" # all shared threads in a team
spark emails --filter "from:[email protected] is:unread" # filtered
spark emails --filter "newer_than:7d has:attachment" # recent with attachments
spark emails --page 2 --page-size 20 # pagination
spark emails --order ascending # oldest first
spark emails --new-senders # show only new sender emails
GateKeeper によるフィルタリング: GateKeeper が明示モードのときに受信トレイを表示すると、新しい差出人からのメールは自動的に除外され、上部に「新しい差出人」の件数が表示されます。これらのメールを表示するには、--new-senders を使用します。差出人を承認またはブロックするには、contact-action acceptContact <email> または contact-action blockContact <email> を使用します。
フォルダー識別子の形式(使用できる識別子を確認するには folders を実行してください):
| 形式 | 例 | 意味 |
|---|---|---|
| 名前のみ | Inbox、Archive | 統合フォルダー(全アカウント対象) |
email | [email protected] | アカウントの受信トレイの省略形 |
email:Folder | [email protected]:Archive | 特定のアカウントのフォルダー |
"Team Name" | "My Team" | チーム内の共有スレッドすべて(スペースがある場合は引用符で囲みます) |
shared@email:Inbox | [email protected]:Inbox | 共有受信トレイの未処理アイテム(会話表示。デスクトップと同じ) |
shared@email:Archive | [email protected]:Archive | 共有受信トレイの完了済み/アーカイブ済みアイテム(会話表示) |
shared@email:Folder | [email protected]:Label | その他の共有受信トレイのフォルダー/ラベル |
フィルター演算子(Gmail 形式で組み合わせ可能):
| 演算子 | 例 |
|---|---|
from:<addr> | from:[email protected] |
to:<addr> | to:[email protected] |
cc:<addr> | cc:[email protected] |
subject:<text> | subject:"quarterly report" |
before:yyyy/MM/dd | before:2026/03/01 |
after:yyyy/MM/dd | after:2026/01/01 |
newer_than:Xd | newer_than:7d(w、m、y も使用できます) |
older_than:Xd | older_than:30d |
has:attachment | document、spreadsheet、presentation、reminder も使用できます |
is:unread | read、starred、pinned、unreplied も使用できます |
is:shared | 任意のチームに共有されたメール(is:shared_email の別名) |
is:shared_inbox_open | 共有受信トレイの未処理アイテム |
is:shared_inbox_done | 共有受信トレイの完了/クローズ済みアイテム |
category:personal | priority、notification、newsletter、invitation、invitation_response も使用できます |
assigned_to:me | 現在のユーザーに割り当てられたメール |
assigned_to:<email> | 特定のチームメイトに割り当てられたメール |
assigned_to:unassigned | 担当者がいない共有受信トレイのアイテム |
assigned_to:other | 他の人(自分以外)に割り当てられたメール |
assigned_by:me | 現在のユーザーが委任したメール |
filename:<name> | filename:report.pdf |
search
2 つのモードがあります。
- トピックあり(キーワードモード): キーワード検索とセマンティック検索を組み合わせ、関連度順に並べたメールを最大 20 件、本文全体を含めて返します。
- トピックなし(一覧モード): すべてのフォルダーとアカウントを対象に、
--filter/--inに一致するメールを新しい順に並べた、ページ分割された簡潔な表で表示します。出力はemailsと同じですが、既定の対象は統合受信トレイではなく「すべてのフォルダー」です。--inで明示的に指定しない限り、ゴミ箱、迷惑メール、ブロック済みは除外されます(Spark の検索フィールドと同じ動作です)。
spark search "quarterly report"
spark search "API integration" --filter "from:[email protected]"
spark search "budget" --in [email protected]:Archive
spark search "vacation" --in [email protected] # all folders in account
# Keywordless list mode - filter across every folder
spark search --filter "from:[email protected]" # every email from alice, all folders
spark search --filter "from:[email protected]" --in [email protected]
spark search --filter "is:unread newer_than:7d" --page 2
| パラメーター | 必須 | 説明 |
|---|---|---|
<about> | いいえ | 検索トピック(位置引数)。省略すると一覧モードに切り替わります。 |
--filter | いいえ | Gmail 形式のフィルター(emails と同じ演算子) |
--in | いいえ | 対象範囲:アカウント、チーム、フォルダー、共有受信トレイ。省略するとすべてのフォルダーが対象です。 |
--page | いいえ | ページ番号。1 から始まります(既定値:1)。一覧モードのみ。 |
--page-size | いいえ | 1 ページあたりのメール数(既定値:50)。一覧モードのみ。 |
--order | いいえ | 並べ替え順:ascending または descending。一覧モードのみ。 |
ユーザーがメールの内容について尋ねている場合は、トピックを指定して search を使用してください。質問に回答できるよう、メール本文が返されます。すべてのフォルダーを対象にメールを絞り込む必要がある場合(特に from: による絞り込み)は、トピックを指定せずに search を使用してください。emails は統合受信トレイしか参照しないため、「どこにあるものでも、[email protected] からのメールをすべて表示する」といった要望には対応できません。受信トレイや単一のフォルダーを通常どおり閲覧する場合は emails を使用してください。
thread
スレッド内のすべてのメッセージを出力します。ヘッダー、プレーンテキストの本文全体、添付ファイル情報が含まれます。スレッドの要約行の後に、カスタム(システム以外)フォルダーのラベルをスレッド全体で一度だけ、[email protected]:MyLabel のような修飾名で一覧表示します(folders と同じ形式です)。
spark thread 1114 # by message ID from emails/search output
spark thread --download-attachments 1114 # also fetch attachments via IMAP
spark thread "https://sparkmailapp.com/dpl/bl?token=ABC..." # by Spark deep link
位置引数には、数値のメッセージ ID(ID: 行)または前回の実行で出力された Spark ディープリンク(Link: 行)のいずれかを指定できます。https://sparkmailapp.com/dpl/bl?token=...、readdle-spark://bl=...、readdlespark://bl=... が使用できます。
Reply-To: 行は、そのヘッダーの宛先が From と異なる場合にのみ表示されます。メーリングリストやウェブサイトのお問い合わせフォームでは、実際の差出人がここに記載されています。draft --reply-to はすでにその宛先に返信するため、自分で --to を渡す必要はありません。
各メッセージの Attachments: ブロックは、ID、Name、Size、MIME Type、Path の列を持つテーブルです。ID 列は添付ファイルの安定した pk です。ファイルの内容を読み取るには、これを attachment に渡します(必要に応じて自動ダウンロードされます)。Path 列には、ローカルファイルのパス、または未取得の添付ファイルの場合は (not downloaded, ...) が表示されます。
emails または search を使ってメッセージ ID(ID 列)を見つけてから、thread を使って会話全体を読み取ります。action attachLabel/detachLabel に使用できるラベル識別子を一覧表示するには、folders を使います。
attachment
thread の Attachments テーブルにある ID(pk)を指定して、単一のメール添付ファイルを読み取ります。ローカルにキャッシュされていない場合、ファイルは自動的にダウンロードされます。
spark attachment 42 # print metadata (ID, Name, Size, MIME Type, Path, Message ID)
spark attachment 42 --stream > report.pdf # write raw file bytes to stdout
| パラメーター | 必須 | 説明 |
|---|---|---|
<id> | はい | thread の Attachments テーブルにある添付ファイル ID(pk)。 |
--stream | いいえ | メタデータのテキストではなく、ファイルの生バイト列を stdout に書き込みます。CLI の stdout は読み取れてもローカルファイルシステムのパスを参照できない、サンドボックス化されたエージェントで役立ちます。CLI はファイルを 64 KB のチャンクでストリーミングするため、実質的なサイズ制限はありません。逆に、アプリが読み取れないファイルを添付する場合は、--attach-stream を付けて draft/comment にパイプで渡してください。 |
thread を使って添付ファイル ID(Attachments: テーブルの ID 列)を確認します。既定のテキスト出力は、スクリプトで解析しやすいよう、1 行につき Key: value 形式で表示されます。
draft
必要なアクセスレベル:triage
新しいメールの下書きを作成するか、既存の下書きを編集します。本文は Markdown で記述され、HTML に変換されます。
spark draft --to "[email protected]" --subject "Hello" --body "Hi Alice, ..."
spark draft --to "[email protected]" --to "[email protected]" --cc "[email protected]" --subject "Meeting" --body "..."
spark draft --edit 1234 --subject "Updated subject" --body "Updated body"
spark draft --reply-to 5678 --body "Thanks for the update!"
spark draft --reply-all 5678 --body "Thanks everyone!" # keeps the other recipients and the CCs
spark draft --forward 5678 --to "[email protected]" --body "FYI"
spark draft --account "[email protected]" --to "[email protected]" --subject "Hi" --body "..."
spark draft signatures # the signature each account appends
spark draft --to "[email protected]" --subject "Quick note" --body "..." --no-signature # send without a signature
spark draft --edit 1234 --no-signature # strip the signature from an existing draft
spark draft --to "[email protected]" --subject "Report" --body "See attached" --attach /path/to/report.pdf
spark draft --to "[email protected]" --subject "Files" --body "Two files" --attach /path/to/a.pdf --attach /path/to/b.xlsx
spark draft --to "[email protected]" --subject "Q3" --body $'Revenue is up:\n\n' --attach /path/to/chart.png # show an attached image in the text
spark draft --reply-to 5678 --body "Resending the file" --attach-id 42 # attach a file from the original email
cat report.pdf | spark draft --to "[email protected]" --subject "Report" --body "See attached" --attach-stream report.pdf # pipe a file the app can't read directly
spark draft --to "[email protected]" --subject "Proposal" --body "..." --team "Engineering" --user [email protected] --user [email protected]
spark draft --edit 1234 --team "Engineering" --user [email protected] --allow-send
spark draft --edit 1234 --user [email protected] # invite carol on an already-shared draft
spark draft --edit 1234 --allow-send # grant send-on-behalf permission on an already-shared draft
spark draft --edit 1234 --no-allow-send # revoke previously-granted send-on-behalf permission
spark draft --edit 1234 --remove-user [email protected] # kick alice from a shared draft (keeps share, comments, other collaborators)
spark draft --edit 1234 --remove-user [email protected] --user [email protected] # swap collaborators: remove alice, invite dave
spark draft --edit 1234 --unshare
spark draft --delete 1234 # remove the draft for good (no Trash, no undo)
spark draft --template "Cold outbound v3" --to "[email protected]" --placeholder "Project name=Acme Q3" --placeholder "Deadline=Friday EOD"
spark draft --template 124 --edit 9821 --placeholder "Project name=Acme Q3" --placeholder "Deadline=Friday EOD"
| パラメーター | 必須 | 説明 |
|---|---|---|
--to | いいえ | 宛先アドレス(RFC822)です。複数指定する場合は繰り返します。 |
--cc | いいえ | CC アドレスです。複数指定する場合は繰り返します。 |
--bcc | いいえ | BCC アドレスです。複数指定する場合は繰り返します。 |
--subject | いいえ | 件名です。 |
--body | はい(新規作成時、--template なし) | Markdown 形式の本文です。新しい下書きでは、テンプレートで本文が指定されていない限り必須です。 を指定すると、本文に添付画像が表示されます。下記の本文中の画像を参照してください。 |
--edit | いいえ | 更新する既存の下書きのメッセージ ID です。 |
--reply-to | いいえ | 返信先のメッセージ ID です。送信者のみに返信します(メッセージに Reply-To: アドレスがある場合は、そのアドレス宛てです)。 |
--reply-all | いいえ | 返信先のメッセージ ID です。スレッド内の他の全員を含めて返信します。元の To: の宛先は To に、元の Cc: の宛先は CC に設定され、自分のアドレスは除外されます。--reply-to と同時には指定できません。--to/--cc を指定すると、このオプションが設定する宛先リストが上書きされます。 |
--forward | いいえ | 転送するメッセージ ID です。 |
--delete | いいえ | 完全に削除する下書きのメッセージ ID です。このオプションのみを指定してください。下書きにはゴミ箱がないため、削除を取り消すことはできません。予約済みの下書きとチームメイトと共有中の下書きは削除できません。先に action unschedule または draft --edit <pk> --unshare を実行してください。 |
--account | いいえ | 送信元のアカウントメールアドレスです。通常のメールアカウント、エイリアス、共有受信トレイのメールアドレスを指定できます。 |
--attach | いいえ | 添付するファイルの絶対パスです。複数指定する場合は繰り返します。Spark アプリがそのパスを読み取れる必要があります。App Store 版のサンドボックスビルドでは、アプリのコンテナ外のパスは読み取れず、明確なエラーとともに拒否されます。その場合は代わりに --attach-stream でファイルをパイプしてください。ファイルごとの上限は 25 MB です。 |
--attach-id | いいえ | 既存のメールの添付ファイルをこの下書きにコピーするための添付ファイル ID です。thread <message-id> の添付ファイルテーブルから取得します。複数指定する場合は繰り返します。受信したファイルを再送信する場合に使用します。返信には添付ファイルは引き継がれません(--forward のみ引き継がれます)。 |
--attach-stream | いいえ | stdin から読み取ったバイト列を <name> として受信者に表示する、単一ファイルを添付します。ファイルがアプリのサンドボックス外にある場合に使用してください(App Store 版では任意のパスを読み取れません)。これは attachment --stream の受信側にあたる機能です。1 コマンドにつきストリームで添付できるファイルは 1 つです。アプリが読み取れるパスには --attach を併用してください。上限は 25 MB です。例:cat report.pdf | spark draft --edit 123 --attach-stream report.pdf。実際の stdin が必要なため、spark バイナリを自分で実行する場合にのみ動作します。それ以外の場合は --attach-id/--attach を使用してください。 |
--team | いいえ | チーム名です。複数のチームに所属している場合は必須です。すでに共有されている下書きを編集する場合は、共有を所有するチームと一致する必要があります。 |
--user | いいえ | 共有相手となるチームメイトのメールアドレスです。複数指定する場合は繰り返します。すでに共有されている下書きでは、既存の共有相手を削除せずに共同編集者を追加します。誰かを削除する場合は --remove-user を使用してください。 |
--remove-user | いいえ | すでに共有されている下書きから削除するチームメイトのメールアドレスです。複数指定する場合は繰り返します。共有下書き、コメント、残りの共同編集者は保持されます(共有全体を解除する --unshare とは異なります)。--edit <shared-pk> が必要です。自分自身は削除できません。その場合は --unshare を使用してください。1 つのコマンドで --user と併用して共同編集者を入れ替えることもできます。削除は招待より先に実行されます。 |
--allow-send | いいえ | チームメイトに、自分に代わって共有下書きを送信する権限を付与します。新たに共有する場合、指定がなければデフォルトでオフになります。共有下書きを編集する場合、指定がなければ現在の値が維持されます。--no-allow-send と同時には指定できません。 |
--no-allow-send | いいえ | チームメイトが自分に代わって共有下書きを送信する権限を取り消します。送信許可が現在オンになっている共有下書きを編集するときに便利です。--allow-send と同時には指定できません。 |
--unshare | いいえ | 共有済みの下書きを個人用の下書きに戻します。--edit が必要です。また、--team/--user/--remove-user/--allow-send/--no-allow-send、および内容の編集(--to/--cc/--bcc/--subject/--body/--attach/--attach-id/--attach-stream)とは併用できません。編集(またはユーザーごとの削除)と共有解除は、別々のコマンドで実行してください。 |
--template | いいえ | ID または名前を指定して保存済みテンプレートを適用します。--edit と併用すると、既存の下書きにテンプレートを重ねて適用できます。 |
--placeholder | テンプレートに手動プレースホルダーがある場合 | 手動テンプレートプレースホルダーに値を設定します。形式は "<name>=<value>" です。プレースホルダーごとに繰り返します。自動入力可能なプレースホルダー(受信者名/自分の名前)はここでは指定できません。--to と --account で制御してください。 |
--no-signature | いいえ | 署名なしで送信します。この下書きでは、アカウントのメールボックスごとのデフォルト署名を適用しません。--edit と併用すると、下書きにすでに設定されている署名を削除します(本文と引用されたスレッドは保持されます)。アカウントのデフォルト署名を引き続き使用する場合は、このフラグを省略してください。 |
signatures | いいえ | フラグではなく位置引数です。署名が追加される、下書きを作成可能なすべてのメールボックスを出力します。これだけを引数として指定してください。 |
明示的なフラグは、常にテンプレートのフィールドより優先されます。draft --template を呼び出す前に `template <id | name> を使ってテンプレートの手動入力プレースホルダーを確認してください。手動入力プレースホルダーが不足している場合、下書きが作成される前にハードエラーになります。自動入力可能なプレースホルダーの解決に失敗した場合(例:--to` が複数指定されているときの宛先名)は、本文にローカライズされたラベルが残り、警告として応答に表示されます。 |
本文中の画像。 添付ファイル一覧ではなく本文内に画像を表示するには、画像を添付し、ファイル名を使った Markdown の画像構文で表示します:--attach /path/to/chart.png --body ""。ファイルは --attach、--attach-stream、--attach-id で指定するか、すでに下書きに添付されているものを使えます。https:// の画像アドレスはそのまま使用されます。添付ファイルに一致しないローカル画像や、画像ファイルではないファイルを指定するとエラーになり、画像が壊れた状態で下書きが送信されることはありません。--edit と --body を使う場合、新しい本文によって残す画像が決まります。下書きにすでにある画像を残すには、thread <draft-id> に表示される名前で本文に記載し、削除するには記載しません。
署名は自動で追加されます。自分で結びの言葉を書かないでください。 Spark は、下書きの本文にメールボックスの既定の署名を追加します。spark draft signatures を実行すると、下書きの作成元にできる各メールボックスで追加される内容が表示されます。
ユーザーが署名とは異なる結びの言葉を求めた場合は、--no-signature を指定し、結びの言葉全体を自分で記述してください。
成功すると、出力には下書きの ID:(--edit および action send で使用)と、Spark で下書きを直接開く Spark ディープリンク(https://sparkmailapp.com/dpl/bl?token=...)を含む Link: 行が表示されます。また、作成した本文全体が Body: の下に表示されます。これは、署名を含み、引用されたスレッドを除いた、受信者が読むメッセージです。下書きの内容が意図どおりであることを確認し、アカウントの署名の横に自分の結びの言葉が重複していないか確認するため、本文を読み返してください。
必ずディープリンクをユーザーに渡してください。 下書きの作成または更新後、応答に Link: の URL をクリック可能な Markdown リンクとして含めてください(例:[Open draft in Spark](https://sparkmailapp.com/dpl/bl?token=...))。これにより、ユーザーは下書きを開いてすぐに確認または送信できます。Spark を開いて下書きを手動で探すようユーザーに指示しないでください。
--edit、--reply-to、--reply-all、--forward に使うメッセージ ID を探すには emails を使います。
--account に使うアカウントのメールアドレスを探すには accounts を使います。個人アカウント、その Alias: エントリ、共有受信トレイがすべて一覧表示され、下書きとコメントへのアクセス権があるアカウントであれば、いずれも差出人アドレスとして使用できます。
--team に使うチーム名と、--user に使うチームメンバーのメールアドレスを探すには teams を使います。
スレッドへの返信は非常に重要です。 新しいメッセージが既存の会話に属する場合は必ず、そのスレッドの最後のメッセージを指定して --reply-to を渡してください。これにより、下書きが会話に紐づきます(適切な In-Reply-To / References ヘッダーが設定され、受信者のメールボックスで同じスレッドに表示されます)。--reply-to を指定しないと下書きは新しいスレッドになり、既存の会話の文脈でユーザーが「返信」「返答」「フォローアップ」「回答」「催促」などを依頼した場合には、ほとんどの場合、意図に反します。thread <id> を使って会話を確認し、最も新しいメッセージの ID を --reply-to に指定してください。参加者が複数いるスレッドでは、送信者への非公開の返信をユーザーが希望している場合を除き、--reply-all を使います。
フォローアップ(まだ返信がない場合)。 すでにメールを送った相手から返信がない状態でフォローアップを求められた場合(例:「Alice に軽く催促して。前回のメールに返信がない」「提案のスレッドをもう一度動かして」)、そのスレッドの最新メッセージは自分が送信したものです。そのメッセージの ID を --reply-to に指定してください。フォローアップは元の送信メッセージに紐づき、受信者には新規の突然のメールではなく、既存の会話への再通知として表示されます。
--team または --user が指定されると共有が開始されます。アクティブなメンバーが他にちょうど1人いるチームでは全員と自動的に共有されます。それ以外の場合は --user が必要です。
既存の共有下書きに共同編集者を追加したり、送信許可の設定を変更したりするには、共有フラグとともに --edit <pk> を使用します。変更は新しい共有を作成するのではなく、既存の共有に適用されます。
送信許可をオフにするには、--no-allow-send を指定します。
共有を終了せずに特定の共同編集者を削除するには、--remove-user <email> を指定します。共有下書き、そのコメント、残りの共同編集者はそのまま維持されます。1回の操作で共同編集者を入れ替えるには、1つのコマンドで --user と --remove-user を組み合わせます。削除は招待より先に実行されます。
コンテンツの編集(--to、--cc、--bcc、--subject、--body、--attach)と共有の更新(--team、--user、--remove-user、--allow-send、--no-allow-send)は、別々の draft コマンドで実行する必要があります。
下書きの削除は取り消せません。 --delete <pk> は下書きを完全に削除します。受信メールとは異なり、復元するためのゴミ箱はなく、history --undo でも Spark の取り消し機能でも元に戻せません。ユーザーから破棄するよう依頼された下書きだけを削除し、復元できるかのように示さず、応答ではその旨を明確に伝えてください。下書き自体は残したまま、下書きのテキストだけを破棄するには、下書きを編集します(draft --edit <pk> --body "...")。
テンプレート
Spark のメッセージテンプレート(ユーザーが draft --template で適用できる保存済み下書き)を一覧表示します。テンプレートはデスクトップとの間で同期されるため、ユーザーのコンピューターに保存されているものはここに表示されます。
spark templates # all personal + team templates
spark templates --personal # only personal templates
spark templates --team "Marketing" # only that team's templates
spark templates --page 2 --page-size 20 # pagination
出力列:ID、Scope(Personal/<team name>)、Name、Subject(40文字で切り捨て)、Modified。ID または Name の値を template <id|name> と draft --template で使用します。
テンプレート
読み取り専用です。 1つのテンプレートの全文と、プレースホルダーの要件を表示します。テンプレートに必要な --placeholder "<name>=<value>" 引数を確認するため、draft --template の前に実行してください。
spark template 123 # by ID
spark template "Welcome reply" # by name (case-insensitive)
出力には、スコープ、宛先、件名、本文(HTMLをテキストに変換)、添付ファイル、およびテンプレート内のすべてのプレースホルダーを一覧表示する Placeholders: セクションが含まれます。
[auto]- 自動入力可能(宛先/自分の名前)。適用時に--toと--accountから解決されます。--placeholderで上書きすることはできません。[manual]- 自由記述のプレースホルダー。必須です。draft --templateに--placeholder "<name>=<value>"として渡す必要があります。
名前が複数のテンプレートに一致する場合、一致した ID の一覧を含むエラーが表示されます。ID を指定して対象を特定してください。
comment
必要なアクセスレベル:triage。
スレッドにチームコメント(チャットメッセージ)を投稿します。スレッドがまだ共有されていない場合は、自動的に共有されます。テキストコメント、ファイル添付、またはその両方に対応しています。既存のコメントを更新するには、--edit を使用します。
spark comment 1234 --body "Looks good, let's proceed."
spark comment 1234 --body "Please review this" --team "Engineering"
spark comment 1234 --body "FYI" --team "Engineering" --user [email protected] --user [email protected]
spark comment 1234 --attach /path/to/screenshot.png
spark comment 1234 --body "See attached" --attach /path/to/report.pdf --attach /path/to/data.csv
cat screenshot.png | spark comment 1234 --attach-stream screenshot.png # pipe a file the app can't read directly
spark comment --edit 5678 --body "Updated comment text"
| パラメーター | 必須 | 説明 |
|---|---|---|
<message-id> | はい(投稿時) | コメント対象のスレッド内にあるメッセージのメッセージ ID。 |
--body | --attach を指定しない場合 | 投稿するコメントのテキスト。--edit を使用する場合は必須です。 |
--attach | --body を指定しない場合 | 添付するファイルの絶対パス。複数のファイルを添付する場合は、繰り返し指定します。各ファイルは別々のメッセージとして送信されます。--edit とは併用できません。Spark アプリがそのパスを読み取れる必要があります。サンドボックス化された App Store ビルドでは、アプリのコンテナ外にあるパスは読み取れず、明確なエラーとともに拒否されるため、代わりに --attach-stream でファイルをパイプしてください。ファイルごとの上限は 25 MB です。 |
--attach-stream | --body を指定しない場合 | 標準入力からバイト列を読み込み、<name> として表示し、単独のコメントメッセージとして送信するファイルを 1 つ添付します。ファイルがアプリのサンドボックス外にある場合は、こちらを使用してください(App Store ビルドでは任意のパスを読み取れません)。これは attachment --stream の受信側に相当します。1 コマンドにつきストリーミングできるファイルは 1 つです。--edit とは併用できません。上限は 25 MB です。例:cat shot.png | spark comment 456 --attach-stream shot.png --team "Engineering"。実際の標準入力が必要なため、spark バイナリを自分で実行する場合にのみ機能します。それ以外の場合は --attach を使用してください。 |
--edit | いいえ | 編集する既存コメントのメッセージ ID。--body が必要です。 |
--team | チームが 1 つより多い場合 | チーム名。複数のチームに所属している場合は必須です。 |
--user | チームメンバーが 2 人より多い場合 | 共有先のチームメイトのメールアドレス。複数指定する場合は繰り返します。共有されていないスレッドを自動共有する場合にのみ使用されます。メンバーが 2 人以下のチームでは、チーム全体が自動的に共有されます。 |
emails を使用してメッセージ ID を確認します。thread を使用すると、会話内のコメント ID を確認できます。team を使用してチームとメンバーを一覧表示します。
events
指定した期間のカレンダーイベントを一覧表示します。
spark events # today's remaining events
spark events --tomorrow
spark events --week
spark events --week --in [email protected] # specific account
spark events --week --in [email protected]:Work # specific calendar
spark events --start 2026-03-16 --end 2026-03-20 # custom range
spark events --week --include-hidden # hidden calendars too
日付形式:yyyy-MM-dd、dd/MM/yyyy、または yyyy-MM-ddTHH:mm。
accounts を実行すると、利用可能なカレンダーアカウントとカレンダー名を確認できます。
**非表示のカレンダー:**ユーザーが Spark のカレンダービューでオフにしたカレンダーには、accounts で (hidden) のマークが付けられます。events は Spark のカレンダービューと同様に、非表示のカレンダーを除外します。表示するには --include-hidden を指定するか、--in [email protected]:Name でカレンダーを指定して、そのカレンダーだけを一覧表示します。表示されないイベントがあるとユーザーが考えている場合は、カレンダーが空または未対応だと結論づける前に、accounts で非表示のカレンダーを確認してください。
event
**必要なアクセスレベル:対象カレンダーの所有アカウントで send。**どのモードでもカレンダーサービス経由でメールを送信する可能性があります(作成時/更新時の招待、参加者がいるイベントの更新/削除時の iTIP UPDATE/CANCEL、rsvp 時の iTIP REPLY)。また、参加者を追加すると、メールとは別にプロバイダーの招待チャネルを通じてイベントが認識可能になるため、このコマンド全体に send が必要です。
参加者の管理を含め、カレンダーイベントを作成、更新、削除、または RSVP します。create または update で --add/--remove を使用すると、参加者を追加または削除し、カレンダープロバイダー(CalDAV/Google/Exchange)経由で招待またはキャンセルを送信します。
spark event create --title "Sync" --start 2026-07-01T12:00 --end 2026-07-01T13:00
spark event create --title "OOO" --start 2026-07-01 --all-day
spark event create --title "Standup" --start 2026-07-01T09:00 --end 2026-07-01T09:15 --video-conference auto
spark event create --title "Sync" --start 2026-07-01T10:00 --end 2026-07-01T10:30 --video-conference zoom
spark event create --title "1:1" --start 2026-07-01T14:00 --end 2026-07-01T14:30 --calendar "[email protected]:Work"
spark event create --title "Sync" --start 2026-07-01T12:00 --add "[email protected],[email protected]" # create + invite
spark event update ABC-123 --title "New title"
spark event update ABC-123 --location "Room 7"
spark event update ABC-123 --video-conference meet # add a meeting link
spark event update ABC-123 --add [email protected] --remove [email protected] # swap attendees
spark event delete ABC-123
spark event rsvp ABC-123 accept # calendar event ID
spark event rsvp ABC-123 decline
spark event rsvp 44268 maybe # invitation email message ID
| パラメーター | 必須 | 説明 |
|---|---|---|
mode | はい | create、update、delete、または rsvp(位置引数)。 |
event_id | update/delete/rsvpの場合 | 位置引数の2番目です。update/deleteの場合はカレンダーイベントID(eventsを使用)です。rsvpの場合は、カレンダーイベントID または 招待メールのメッセージID(emails/threadを使用)です。 |
status | rsvpの場合 | RSVPステータス(位置引数の3番目):accept、decline、または maybe。 |
--title | いいえ | イベントのタイトル/概要です。 |
--start | はい(createの場合) | 開始日時(yyyy-MM-dd、dd/MM/yyyy、yyyy-MM-ddTHH:mm、または yyyy-MM-ddTHH:mm:ssXXX)。 |
--end | いいえ | 終了日時です。 |
--all-day | いいえ | イベントを終日として設定します。 |
--description | いいえ | イベントの説明/メモです。 |
--alerts | いいえ | カンマ区切りのアラート通知オフセット(N秒前を示すNs形式。例:300s,600s)、または絶対日時です。 |
--location | いいえ | イベントの場所を示すテキストです。 |
--video-conference | いいえ | ビデオ会議を追加します(値が必要です)。autoはアカウントの種類を自動選択します(最近使用したもの、なければデフォルト)。meet、zoom、または teamsを指定すると特定の種類が選択され、アカウントが対応していない場合はエラーになります。 |
--calendar | いいえ | createの対象カレンダーです。形式:[email protected](アカウントのデフォルトカレンダー)または [email protected]:Name(指定した名前のカレンダー)。非表示のカレンダーも使用できます。そこにイベントを保存すると、Sparkのカレンダービューで再び有効になります。 |
--add | いいえ | 招待する参加者のメールアドレス(create/updateのみ)。フラグを繰り返すか、カンマ区切りのリストを渡します。新しい参加者にはiTIP REQUEST(招待)が届きます。 |
--remove | いいえ | 削除する参加者のメールアドレス(updateのみ)。フラグを繰り返すか、カンマ区切りのリストを渡します。削除された参加者にはiTIP CANCELが届きます。主催者は削除できません。 |
参加者(--add/--remove):
createとupdateでのみ有効です。deleteまたはrsvpに渡すと拒否されます。参加者を入れ替える場合は、1回のupdateで両方を指定してください。削除が追加より先に実行されます。- 参加者を追加または削除すると、必ずiTIPメール(REQUEST/CANCEL)が送信されます。参加者のいないイベントは、カレンダーサービスの招待チャネルには表示されません。
- 参加者を設定すると、メールの配信とは無関係に、カレンダープロバイダーの招待チャネルを通じてイベントを見つけられるようになります(Google カレンダーの同一プロバイダーによる自動追加動作を含む)。そのため、コマンド全体で
sendが必要です。
event updateの動作:
--video-conferenceは、既存のイベントに会議リンク(meet/zoom/teams、またはauto)を追加します。リンクはcreateと同じ経路で生成されます。参加者がいるイベントの場合、これは共有される変更であるため、iTIP UPDATEが送信されます。- 参加者がいないイベント → ローカルで更新され、メールは送信されません。
- 参加者がいるイベント → 更新後、全参加者にiTIP UPDATEが送信され、各自のカレンダーに新しい状態が反映されます。出力には参加者数が表示されます。
- アラートのみの編集は個人的なリマインダーであり、参加者がいるイベントでも誰にも通知されません。
event deleteの動作:
- 参加者がいないイベント → ローカルで削除され、メールは送信されません。
- 参加者がいるイベント → 削除後、全参加者にiTIP CANCELが送信され、各自のカレンダーからも削除されます。出力には参加者数が表示されます。キャンセルせずに削除すると、参加者のカレンダーに招待が残ります(特にGoogleの同一プロバイダーによる自動追加チャネルで顕著です)。
event rsvpの意味: - 招待に対する自分自身の出席状況を、
accept、decline、またはmaybe(tentativeの別名)に設定します。返信すると、iTIP REPLY が主催者に送信されます。 - ID には、カレンダーイベント ID または招待メールのメッセージ ID のどちらも指定できます。Google を含む多くのプロバイダーでは、未回答の招待がカレンダーに追加されず、受信トレイに残ります。そのため、ユーザーから招待への返信を求められた場合は、
emails/threadで検索し、そのメッセージ IDを渡してください。カレンダーイベントは必要ありません。招待が自動的にカレンダーに追加されている場合は、カレンダーイベント ID も使用できます。 - メッセージ ID を指定すると、返信は Spark Desktop と同じように処理されます。同期済みの対応するカレンダーイベントがあれば更新し、なければ iTIP REPLY を主催者に直接メールで送信します(
acceptの場合は、イベントをカレンダーに追加します)。 - 対象が返信可能な招待ではない場合(通常のメール、RSVP のない自分が主催するイベント、または返信を許可していないプロバイダー)はエラーになります。
- カレンダーイベントの場合、現在のステータスと同じステータスに再度 RSVP しても何も行われず、その旨が報告されます。
新しい会議を予定する場合の一般的な流れ:まず event create ... を呼び出してイベントを作成し、日時と詳細をユーザーに確認してから、event update <event-id> --add ... を呼び出して招待を送信します。こうすることで、外部にメールが送信される前に、ユーザーがイベントを確認したり(または、あなたがイベントを修正したり)できます。参加者がすでに決まっている場合は、event create ... --add ... を使うと一度に実行できます。
accounts を実行すると、書き込み可能なカレンダーと、各アカウントのアクセスレベルを確認できます。
availability
空き時間を検索します。--attendees を指定しない場合は、ユーザー自身の空き状況を表示します。--attendees を指定すると、全員が空いている時間帯を算出します。
spark availability # today
spark availability --tomorrow
spark availability --week --attendees [email protected]
spark availability --start 2026-03-16 --end 2026-03-20 --attendees [email protected],[email protected]
空き時間は営業時間(08:00-20:00)内で、週末を除き、「空き」とマークされたイベントは無視されます。
contacts
名前またはメールアドレスで連絡先を検索します。まず完全一致で検索し、次にあいまい検索を行います。クエリを指定しない場合は、ユーザーが最も頻繁にメールを送信する連絡先を、利用頻度の高い順に一覧表示します。--limit で一覧の上限を指定できます(1-1000、デフォルトは25)。
spark contacts "john"
spark contacts "example.com"
spark contacts --limit 500 --json # most-used contacts; "query" is null, "match" is "top"
contact
連絡先1件の詳細を表示します。名前、その他のアドレス、および contact-action で変更できる各設定が含まれます。変更する前に、送信者の状態(たとえば、すでに優先連絡先になっているか、ブロックされているか)を確認してください。アドレスが不明な場合はエラーになります。
spark contact [email protected]
spark contact [email protected] --json
| フィールド | 変更する操作 |
|---|---|
category(personal / notification / newsletter) | changeCategory* |
is_priority | markContactAsPrimary / unmarkContactAsPrimary |
notifications | markContactAsImportant / unmarkContactAsImportant |
blocked / accepted(GateKeeper。新しい送信者の場合はどちらでもありません) | blockContact / acceptContact |
grouped、grouped_in_inbox | groupEmailsFromContact[AndShowInInbox] / ungroupEmailsFromContact |
auto_summary | enableAutosummaryForContact / disableAutosummaryForContact |
team
チーム情報を表示します。メタデータ、メンバーと共有受信トレイ、全メンバー一覧、割り当て済みメール、割り当ての概要が含まれます。
spark team # list available teams
spark team "Readdle" # specific team
meetings
会議の文字起こしを、任意のフィルターとページネーションを指定して一覧表示します。
spark meetings
spark meetings --filter "newer_than:30d"
spark meetings --filter "subject:standup" --page-size 10
フィルター演算子:subject:<text>、before:yyyy/MM/dd、after:yyyy/MM/dd、newer_than:Xd、older_than:Xd。
meeting
1件の会議の文字起こしの要約を表示します。必要に応じて、全文の文字起こしやメモも含められます。
spark meeting 42 # summary only
spark meeting --transcript 42 # include transcript
spark meeting --notes 42 # include notes
spark meeting --transcript --notes 42 # everything
spark meeting "https://sparkmailapp.com/dpl/bl?token=ABC..." # by Spark deep link
位置引数には、数値の会議メッセージ ID または Spark のディープリンクを指定できます。
会議 ID を探すには meetings を使用してください。
action
必要なアクセスレベル:triage。
1件以上のメールに対して操作を実行します。標準的なメール操作とチーム操作に対応しています。
spark action <action-name> <message-id...> [options]
サポートされているアクション:
pin- メッセージをリストの先頭に固定しますunpin- メッセージの固定を解除しますmute- スレッドをミュートして、通知を受け取らないようにしますunmute- ミュート済みのスレッドのミュートを解除しますsnooze- 指定した日付までメッセージをスヌーズします(--dateが必要です)unsnooze- スヌーズを解除し、メッセージを受信トレイに戻しますchangeReminder- 指定した日付までに返信がない場合のフォローアップリマインダーを設定します(--dateが必要です)clearReminder- メッセージのフォローアップリマインダーを削除しますsetAside- 後で確認できるようにメッセージを保留しますarchive- メッセージをアーカイブし、受信トレイから削除しますmoveToInbox- メッセージを受信トレイに戻しますmoveToTrash- メッセージをゴミ箱に移動しますmoveToFolder- メッセージを指定したフォルダーに移動します(--folderが必要です)attachLabel- 他のラベルを削除せずに、Gmail または Spark Team のラベルを追加します(--folderが必要です)detachLabel- メッセージから Gmail または Spark Team のラベルを削除します(--folderが必要です)markAsDone- メッセージを完了としてマークしますmarkAsUndone- メッセージを未完了としてマークしますmarkAsSeen- メッセージを既読としてマークしますmarkAsUnseen- メッセージを未読としてマークしますmarkAsSpam- メッセージを迷惑メールとしてマークしますmarkThreadAsPriority- スレッドを優先としてマークしますunmarkThreadAsPriority- スレッドの優先マークを解除しますunsubscribe- 送信者またはメーリングリストの登録を解除しますchangeCategoryPersonal- メールのカテゴリを「個人」に変更しますchangeCategoryNotification- メールのカテゴリを「通知」に変更しますchangeCategoryNewsletters- メールのカテゴリを「ニュースレター」に変更しますshareInTeam- スレッドをチームメンバーと共有します(チームが複数ある場合は--teamが必要です)assign- メールをチームメンバーに割り当てます(--assigneeが必要です)delegationComplete- 委任を完了としてマークしますdelegationReopen- 完了済みの委任を再開します
send 動詞(送信アクセス権が必要です):
既存の下書き(spark draft または Spark Desktop で作成)を、所有アカウントの送信メール経路を通じて送信します。デスクトップのメール作成画面と同じ検証が適用されます。下書きがアクセスレベル send のアカウント(Settings -> AI Agents)に保存されていること、宛先が1件以上あること、件名が空でないこと、すべての添付ファイルがアップロード済みであること、手動入力が必要なテンプレートのプレースホルダーが未解決のまま残っていないことが必要です。
spark action send 1234
出力には、元の下書き ID と送信済みメッセージの PK が表示されます。
Draft 1234 sent. Sent message ID: 5678.
一般的な流れは、spark draft ... で作成し、下書きを確認してから、spark action send <pk> で送信を確定することです。2つの操作を分けることで、外部にメールが送信される前に、自分またはユーザーが下書きを編集できます。spark draft だけでは送信されません。
send は1回の呼び出しで複数の下書き ID を受け付けます(それぞれ独立して検証され、応答には下書きごとの成功または失敗が表示されます)。ただし、一般的には ID を1つだけ指定します。
送信予約(「後で送信」): 任意の --date を渡すと、今すぐ送信する代わりに下書きの送信を予約できます。日付は未来でなければなりません(形式:yyyy-MM-dd、dd/MM/yyyy、yyyy-MM-ddTHH:mm)。過去の日付や形式が不正な日付を指定すると、送信処理を開始する前に拒否されます。
spark action send 1234 --date 2026-04-10T09:00
出力で予約内容が確認できます。Draft 1234 scheduled to send on 2026-04-10 09:00. Message ID: 5678. メッセージは送信トレイに置かれ、指定した時刻に配信されます。
すでに送信予約済みの「後で送信」メッセージを管理するには、 send でメッセージ ID を指定します。
- 再予約: 新しい
--dateを指定してsendを実行すると、既存の予約が更新されます(通常の下書きではなくなっているため、新しいメッセージは作成されません)。
spark action send 5678 --date 2026-04-12T15:00
出力:Message 5678 rescheduled to send on 2026-04-12 15:00. Message ID: 5678.
- 今すぐ送信:
--dateを指定せずにsendを実行すると、予約を解除してすぐに送信します。
spark action send 5678
出力:Scheduled message 5678 sent now. Message ID: 5678.
- 予約解除:
unscheduleを実行すると予約をキャンセルし、メッセージを下書きに戻します(編集したり、後で送信したりできます)。
spark action unschedule 5678
出力:Message 5678 unscheduled - returned to drafts. Find it in the Drafts folder. 予定を解除すると新しい下書きが作成されるため、元の ID(5678)は参照できなくなります。編集または送信する前に、Drafts フォルダーを再度一覧表示して新しい下書き ID を取得してください。
予定済みメッセージに対する send(--date の有無を問わず)と unschedule には、所有アカウントへの送信アクセス権が必要です。
オプション:
--date-snoozeとchangeReminderでは必須、assignでは期限日として任意(形式:yyyy-MM-dd、dd/MM/yyyy、yyyy-MM-ddTHH:mm)--folder-moveToFolder、attachLabel、detachLabelでは必須(修飾名:[email protected]:FolderName。共有受信トレイを含むラベルの一覧表示にはfoldersを使用します)--team- チームアクションで使用するチーム名。複数のチームに所属している場合は必須--user-shareInTeamで共有するチームメイトのメールアドレス。複数のユーザーには繰り返し指定します。チームのメンバーが 2 人を超える場合は必須--assignee- メールの割り当て先となるチームメイトのメールアドレス(assign用)--comment-assignアクションのコメントテキスト
spark action pin 12345 # pin a message
spark action archive 100 200 300 # archive multiple messages
spark action markAsSeen 100 200 # mark as read
spark action snooze 12345 --date 2026-04-10T09:00 # snooze until date/time
spark action snooze 12345 --date 2026-04-10 # snooze until date
spark action moveToFolder 12345 --folder "[email protected]:Archive" # move to folder
spark action attachLabel 12345 --folder "[email protected]:MyLabel" # add Gmail/Team label
spark action detachLabel 12345 --folder "[email protected]:SomeLabel" # remove label
spark action changeReminder 12345 --date 2026-04-15 # set reminder
spark action shareInTeam 1234 --team "Engineering" --user [email protected] # share with teammate
spark action shareInTeam 1234 --user [email protected] --user [email protected] # share with multiple
spark action assign 1234 --assignee [email protected] # assign to teammate
spark action assign 1234 --assignee [email protected] --date 2026-04-15 --comment "Please review"
spark action delegationComplete 1234 # mark delegation done
spark action delegationComplete 100 200 300 # complete multiple delegations
spark action delegationReopen 1234 # reopen delegation
メッセージ ID の検索には emails コマンドを使用します。moveToFolder、attachLabel、detachLabel で使う修飾名の確認には folders を使用します。チームアクションで使うチームとメンバーの一覧表示には team を使用します。
contact-action
必要なアクセスレベル:triage。
メールアドレスを指定して、1 件以上の連絡先にアクションを実行します。
spark contact-action <action-name> <email...>
対応しているアクション:
| アクション | 説明 |
|---|---|
changeCategoryPersonal | 連絡先のメールカテゴリを「個人」に変更します |
changeCategoryNotification | 連絡先のメールカテゴリを「通知」に変更します |
changeCategoryNewsletters | 連絡先のメールカテゴリを「ニュースレター」に変更します |
groupEmailsFromContact | 連絡先からのメールをカテゴリ別にグループ化します |
groupEmailsFromContactAndShowInInbox | 連絡先からのメールをグループ化して受信トレイに表示します |
ungroupEmailsFromContact | 連絡先からのメールのグループ化を解除します |
markContactAsImportant | 連絡先の通知を有効にします |
unmarkContactAsImportant | 連絡先の通知を無効にします |
markContactAsPrimary | 連絡先に優先マークを付けます(メールを自動的に優先扱いにします) |
unmarkContactAsPrimary | 連絡先の優先マークを解除します |
acceptContact | 連絡先を受け入れるか、ブロックを解除します(Gatekeeper を回避します) |
blockContact | 連絡先をブロックします |
acceptDomain | 連絡先のドメイン全体を受け入れるか、ブロックを解除します |
blockDomain | 連絡先のドメイン全体をブロックします |
enableAutosummaryForContact | 連絡先からのメールの自動要約を有効にします |
disableAutosummaryForContact | 連絡先からのメールの自動要約を無効にします |
例:
spark contact-action blockContact [email protected]
spark contact-action acceptContact [email protected] [email protected]
spark contact-action changeCategoryPersonal [email protected]
spark contact-action markContactAsPrimary [email protected]
spark contact-action enableAutosummaryForContact [email protected]
メールアドレスの検索には contacts コマンドを使用します。
スマートカテゴリ
Spark は受信メールを 6 つのカテゴリに自動分類します。カテゴリ別にメールを表示するには、emails と search で category: フィルター演算子を使用します。分類の変更や調整には action/contact-action を使用します。
| カテゴリ | フィルター | 主な内容 |
|---|---|---|
| 優先 | category:priority | 自動的に優先扱いされたメール、または手動で優先マークが付けられたメール |
| 個人 | category:personal | 個人間の直接のメール |
| 通知 | category:notification | サービス通知、アラート、領収書 |
| ニュースレター | category:newsletter | 定期購読、ダイジェスト、マーケティング |
| 招待 | category:invitation | カレンダーへの招待 |
| 招待への返信 | category:invitation_response | 出欠返信、承諾、辞退 |
カテゴリ別に表示(読み取り専用):
spark emails Inbox --filter "category:priority is:unread" # unread priority mail
spark emails Inbox --filter "category:personal is:unread" # unread people mail
spark emails Inbox --filter "category:invitation" # pending invites
spark emails Inbox --filter "category:notification is:unread" # unread notifications
spark emails Inbox --filter "category:newsletter newer_than:7d" # recent newsletters
メッセージを再分類(トリアージ):
spark action changeCategoryPersonal <id> # move to People
spark action changeCategoryNotification <id> # move to Notifications
spark action changeCategoryNewsletters <id> # move to Newsletters
連絡先ごとのカテゴリルールを調整(トリアージ) - 変更は送信者から今後届くすべてのメールに適用されます:
spark contact-action changeCategoryPersonal [email protected] # reclassify as People
spark contact-action changeCategoryNewsletters [email protected] # reclassify as Newsletters
spark contact-action groupEmailsFromContact [email protected] # group by category
spark contact-action markContactAsImportant [email protected] # enable notifications
spark contact-action markContactAsPrimary [email protected] # auto-prioritize
spark contact-action enableAutosummaryForContact [email protected] # AI summaries
カテゴリ優先のトリアージパターン: 優先順位に従って受信トレイを処理します。まず優先メール、次に個人メール、招待、通知、ニュースレターの順です。これにより、最も重要なメッセージに先に対応できます。
代表的なワークフロー
メールに関する質問に回答する:
spark search "topic"- 本文を含む関連メールを検索します- 出力を読み、ユーザーの質問に回答します
特定のメールを検索して読む:
spark emails --filter "from:sender subject:keyword"- メールを見つけますspark thread <ID>- 会話全体を読みます
返信の下書きを作成する:
spark emails --filter "from:sender"- メールを見つけますspark draft --reply-to <ID> --body "Thanks for the update!"- 出力の
Link:をクリック可能な Markdown リンクとしてユーザーに渡し、Spark で下書きを確認できるようにします
保存済みテンプレートからメールを送信する:
spark templates- テンプレートを一覧表示します(またはspark templates --personal/spark templates --team "<name>")spark template "<name>"- 適用する前にプレースホルダーを確認しますspark draft --template "<name>" --to <recipient> --placeholder "<manual>=<value>"- 下書きを作成します(手動入力する項目ごとに--placeholderを繰り返します)
ミーティングに向けて相手の予定を確認する:
spark availability --tomorrow --attendees [email protected],[email protected]- 空き時間から候補の時間を提案します
共有スレッドにコメントする:
spark emails --filter "from:sender"- メールを見つけますspark comment <ID> --body "Looks good, approved!"
チームの作業量の概要を確認する:
spark team "Team Name"- メンバーと割り当てられたメールを確認します
連絡先を検索する:
spark contacts "name or domain"- メールアドレスを検索します
メールに対してアクションを実行する:
spark emails --filter "from:sender"- メールを見つけますspark action archive <ID>- メールをアーカイブします(またはピン留め、スヌーズなど)
チームとメールを共有する:
spark emails --filter "subject:keyword"- メールを見つけますspark action shareInTeam <ID> --user [email protected]- チームメイトと共有します
チームメイトにメールを委任する:
spark emails --filter "subject:keyword"- メールを見つけますspark action assign <ID> --assignee [email protected] --date 2026-04-15 --comment "Please handle this"
委任したメールを完了としてマークする:
spark emails --filter "subject:keyword"- メールを検索しますspark action delegationComplete <ID1> <ID2>- 複数のメールを完了としてマークします
未割り当ての共有受信トレイのメールを検索する:
spark emails [email protected]:Inbox --filter "assigned_to:unassigned"- 未割り当ての項目を一覧表示しますspark action assign <ID> --assignee [email protected]- チームメイトに割り当てます
チームメイトに割り当てられている内容を確認する:
spark emails --filter "assigned_to:[email protected]"- 割り当てられた項目を確認しますspark emails --filter "is:shared_inbox_open"- 未完了の共有受信トレイの項目をすべて表示しますspark emails --filter "is:shared_inbox_done"- 完了した項目を表示します
連絡先を管理する:
spark contacts "name or domain"- 連絡先のメールアドレスを検索しますspark contact-action blockContact [email protected]- 相手をブロックします(または承認、カテゴリ変更など)
このスキルを最新の状態に保つ
CLI とこのスキルは同じバージョンを使用します(上記のフロントマターにある metadata.version)。新しい Spark Desktop リリースの新機能は、更新された組み込みスキルとともに提供されます。メジャーバージョン内では後方互換性が保証されているため、ここに記載されたコマンドとフラグは引き続き機能します。ただし、新たに追加された機能は、このファイルを再インストールするまで反映されません。
次の兆候のいずれかがあった場合に限り、更新を確認してください。
- ユーザーが、ここに記載されていない Spark の機能、コマンド、またはフラグについて質問した。
- 予期していなかった「unknown command」または「unknown option」エラーで、
sparkコマンドが失敗した。 - ユーザーが Spark をアップグレードした、またはスキルが古くなっていると明言した。
その場合は、次のようにします。
spark --version
表示されたバージョンが上記の metadata.version より新しい場合は、回答する前にこのファイルを更新してください。spark skill は SKILL.md を標準出力に出力します。出力を取得し、現在読み取っているファイル(パスはコンテキストにあります)に上書きして保存してください。例:
mkdir -p <parent-of-use-spark>/use-spark
spark skill > <parent-of-use-spark>/use-spark/SKILL.md
<parent-of-use-spark> は、この SKILL.md が格納されている use-spark/ フォルダーを含むディレクトリです。ファイル書き込みツールがある場合は、spark skill の出力を直接そこにパイプすることもできます。CLI 自体がファイルを書き込むことはありません。
毎回のセッションやコマンドの前に確認する必要はありません。上記の兆候がない限り、このスキルを信頼できる情報源として扱ってください。
ヒント
- 複数語の引数は必ず引用符で囲んでください:
spark search "project update" - フィルター演算子は、1 つの
--filter文字列にまとめてください:--filter "from:[email protected] is:unread newer_than:7d" emailsまたはsearch --inに渡す正確なフォルダー識別子を確認するには、foldersを使用してください。events --inに渡すカレンダー名を確認するには、accountsを使用してください。- トピックに基づく検索には
searchコマンドが最適です。メタデータによる閲覧や絞り込みにはemailsが最適です。 threadは会話全体を返します。メタデータだけでなくメール本文全体が必要な場合に使用してください。- メールの作成には
draftを使用してください。新規下書き、返信、転送、既存の下書きの編集に対応しています。 - 下書きを作成した後は、ユーザーに Spark を開くよう求めるのではなく、
Link:のディープリンクをクリック可能な Markdown リンクとして必ず共有してください。 draft --delete <pk>は下書きを完全に削除します。ゴミ箱も取り消しもないため、ユーザーから依頼された場合にのみ使用してください。- 下書き本文の末尾に署名を付けないでください。Spark がアカウントの署名を自動で追加します(
draft signaturesで確認できます)。 - スレッドにチームチャットメッセージを投稿するには
commentを使用してください。必要に応じてスレッドが自動で共有されます。 - ピン留め、アーカイブ、スヌーズ、フォルダーへの移動など、メールの操作には
actionを使用してください。 - 連絡先の管理(ブロック、承認、カテゴリの変更、自動要約の切り替えなど)には
contact-actionを使用してください。