mcpField
U
use-spark

use-spark

github.com/readdle生産性154515 回インストール6 日前に更新
リポジトリ

use-spark について

use-spark は、Spark メールクライアントを spark コマンドラインから利用するためのスキルです。メール、カレンダー、連絡先、会議、チーム情報を扱う用途向けで、CLI は起動中の Spark Desktop と IPC で通信し、検索・閲覧・操作を行います。

主な機能

  1. 01メール、フォルダー、スレッドの検索
  2. 02キーワードとセマンティック検索
  3. 03メール添付ファイルと会議記録の閲覧
  4. 04下書き、予定、連絡先の管理
  5. 05アカウントのアクセスレベルによる操作制限

活用シーン

  1. 01複数フォルダーを対象にメールを検索・絞り込み
  2. 02メールスレッドと添付ファイルの閲覧
  3. 03カレンダーの空き時間確認と予定管理
  4. 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ヘッダー、本文、添付ファイルを含むスレッド全体を読み取ります
attachmentIDを指定して、メールの添付ファイルを1つ読み取ります(自動ダウンロード)
draftメールの下書きを作成、編集、削除します(新規作成、返信、転送、テンプレートから作成)。またはアカウントの署名を一覧表示します
templates保存済みのメッセージテンプレート(個人用とチーム用)を一覧表示します
templateIDまたは名前を指定して、プレースホルダーを含むテンプレートを1つ表示します
commentスレッドにチームコメントを投稿します
events指定した期間のカレンダーイベントを一覧表示します
event参加者/招待の管理を含め、カレンダーイベントの作成、更新、削除、出欠回答を行います
availability参加者を指定して、または指定せずに空き時間枠を検索します
contacts名前またはメールアドレスで連絡先を検索するか、使用頻度の高い連絡先を一覧表示します
contact連絡先1件の詳細と設定を表示します
teamチーム情報、メンバー、共有受信トレイ、担当状況を表示します
meetings会議の文字起こしを一覧表示します
meeting会議の文字起こしを1件読み取ります
actionメールに対するアクション(アーカイブ、ピン留め、スヌーズ、割り当てなど)を実行します
contact-action連絡先に対するアクション(ブロック、承認、カテゴリ分けなど)を実行します
accounts

設定されているすべてのアカウントを、エイリアス、カレンダー、チーム、共有受信トレイとともに一覧表示します。各アカウントと共有受信トレイには、Spark で実行できる操作を決めるアクセスレベルが括弧内に表示されます。

spark accounts

最初にこれを実行して、利用できるアカウント、カレンダー、チームを確認し、アクセスレベルを確認してください。

アクセスレベル:

レベル許可される操作
read-onlyメール、スレッド、フォルダー、イベント、連絡先、ミーティング、チームの一覧表示、検索、閲覧
triageread-only のすべての操作に加え、すべての書き込み操作:下書き、チームコメント、メール操作(アーカイブ、移動、ピン留め、スヌーズ、割り当てなど)、連絡先操作(ブロック、承認、分類など)
sendtriage のすべての操作に加え、メール送信を伴う操作:下書きの送信(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/ddbefore:2026/03/01
after:yyyy/MM/ddafter:2026/01/01
newer_than:Xdnewer_than:7d(w、m、y も使用できます)
older_than:Xdolder_than:30d
has:attachmentdocument、spreadsheet、presentation、reminder も使用できます
is:unreadread、starred、pinned、unreplied も使用できます
is:shared任意のチームに共有されたメール(is:shared_email の別名)
is:shared_inbox_open共有受信トレイの未処理アイテム
is:shared_inbox_done共有受信トレイの完了/クローズ済みアイテム
category:personalpriority、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![Q3 revenue](chart.png)' --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 形式の本文です。新しい下書きでは、テンプレートで本文が指定されていない限り必須です。![alt](file name) を指定すると、本文に添付画像が表示されます。下記の本文中の画像を参照してください。
--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 <idname> を使ってテンプレートの手動入力プレースホルダーを確認してください。手動入力プレースホルダーが不足している場合、下書きが作成される前にハードエラーになります。自動入力可能なプレースホルダーの解決に失敗した場合(例:--to` が複数指定されているときの宛先名)は、本文にローカライズされたラベルが残り、警告として応答に表示されます。

本文中の画像。 添付ファイル一覧ではなく本文内に画像を表示するには、画像を添付し、ファイル名を使った Markdown の画像構文で表示します:--attach /path/to/chart.png --body "![Q3 revenue](chart.png)"。ファイルは --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_idupdate/delete/rsvpの場合位置引数の2番目です。update/deleteの場合はカレンダーイベントID(eventsを使用)です。rsvpの場合は、カレンダーイベントID または 招待メールのメッセージID(emails/threadを使用)です。
statusrsvpの場合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_prioritymarkContactAsPrimary / unmarkContactAsPrimary
notificationsmarkContactAsImportant / unmarkContactAsImportant
blocked / accepted(GateKeeper。新しい送信者の場合はどちらでもありません)blockContact / acceptContact
grouped、grouped_in_inboxgroupEmailsFromContact[AndShowInInbox] / ungroupEmailsFromContact
auto_summaryenableAutosummaryForContact / 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

カテゴリ優先のトリアージパターン: 優先順位に従って受信トレイを処理します。まず優先メール、次に個人メール、招待、通知、ニュースレターの順です。これにより、最も重要なメッセージに先に対応できます。

代表的なワークフロー

メールに関する質問に回答する:

  1. spark search "topic" - 本文を含む関連メールを検索します
  2. 出力を読み、ユーザーの質問に回答します

特定のメールを検索して読む:

  1. spark emails --filter "from:sender subject:keyword" - メールを見つけます
  2. spark thread <ID> - 会話全体を読みます

返信の下書きを作成する:

  1. spark emails --filter "from:sender" - メールを見つけます
  2. spark draft --reply-to <ID> --body "Thanks for the update!"
  3. 出力の Link: をクリック可能な Markdown リンクとしてユーザーに渡し、Spark で下書きを確認できるようにします

保存済みテンプレートからメールを送信する:

  1. spark templates - テンプレートを一覧表示します(または spark templates --personal / spark templates --team "<name>")
  2. spark template "<name>" - 適用する前にプレースホルダーを確認します
  3. spark draft --template "<name>" --to <recipient> --placeholder "<manual>=<value>" - 下書きを作成します(手動入力する項目ごとに --placeholder を繰り返します)

ミーティングに向けて相手の予定を確認する:

  1. spark availability --tomorrow --attendees [email protected],[email protected]
  2. 空き時間から候補の時間を提案します

共有スレッドにコメントする:

  1. spark emails --filter "from:sender" - メールを見つけます
  2. spark comment <ID> --body "Looks good, approved!"

チームの作業量の概要を確認する:

  1. spark team "Team Name" - メンバーと割り当てられたメールを確認します

連絡先を検索する:

  1. spark contacts "name or domain" - メールアドレスを検索します

メールに対してアクションを実行する:

  1. spark emails --filter "from:sender" - メールを見つけます
  2. spark action archive <ID> - メールをアーカイブします(またはピン留め、スヌーズなど)

チームとメールを共有する:

  1. spark emails --filter "subject:keyword" - メールを見つけます
  2. spark action shareInTeam <ID> --user [email protected] - チームメイトと共有します

チームメイトにメールを委任する:

  1. spark emails --filter "subject:keyword" - メールを見つけます
  2. spark action assign <ID> --assignee [email protected] --date 2026-04-15 --comment "Please handle this"

委任したメールを完了としてマークする:

  1. spark emails --filter "subject:keyword" - メールを検索します
  2. spark action delegationComplete <ID1> <ID2> - 複数のメールを完了としてマークします

未割り当ての共有受信トレイのメールを検索する:

  1. spark emails [email protected]:Inbox --filter "assigned_to:unassigned" - 未割り当ての項目を一覧表示します
  2. spark action assign <ID> --assignee [email protected] - チームメイトに割り当てます

チームメイトに割り当てられている内容を確認する:

  1. spark emails --filter "assigned_to:[email protected]" - 割り当てられた項目を確認します
  2. spark emails --filter "is:shared_inbox_open" - 未完了の共有受信トレイの項目をすべて表示します
  3. spark emails --filter "is:shared_inbox_done" - 完了した項目を表示します

連絡先を管理する:

  1. spark contacts "name or domain" - 連絡先のメールアドレスを検索します
  2. 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 を使用してください。

コメント