readdle/spark-cli-skills1 file

Use Spark

>-

Specification
Skill ID
readdle/spark-cli-skills/use-spark
Publisher
readdle
Repository
spark-cli-skills
Installs
0
Files
1
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

readdle/spark-cli-skills/use-sparkInstalls these files
  • SKILL.md

What this skill tells the agent

Using spark

spark is a CLI for the Spark email client. Use it to query the user's mailbox, calendar, contacts, meetings, and team data.

Running spark

spark <command> [options]

Environment: spark is a thin client that talks over IPC to the user's running Spark Desktop app - it does not ship its own mailbox, network stack, or credentials. Run it directly on the user's computer against the live Spark Desktop process. Do not try to execute it inside a sandbox, container, CI runner, or any environment isolated from the user's desktop session - it will fail to connect. If Spark Desktop is not running, ask the user to launch it instead of retrying.

Commands

CommandDescription
accountsList accounts, calendars, teams, shared inboxes, and access levels
foldersList folders/labels with message counts
emailsList emails with filters and pagination
searchHybrid keyword + semantic search with full bodies
threadRead full thread - headers, bodies, attachments
attachmentRead a single email attachment by its ID (auto-downloads)
draftCreate, edit, or delete an email draft (new, reply, forward, from template), or list account signatures
templatesList saved message templates (personal and team)
templateShow a single template by ID or name with its placeholders
commentPost a team comment on a thread
eventsList calendar events for a time range
eventCreate, update, delete, or RSVP to a calendar event, including managing attendees / invitations
availabilityFind free time slots, optionally with attendees
contactsSearch contacts by name or email
teamShow team info, members, shared inboxes, assignments
meetingsList meeting transcripts
meetingRead a single meeting transcript
actionPerform actions on emails (archive, pin, snooze, assign, etc.)
contact-actionPerform actions on contacts (block, accept, categorize, etc.)

accounts

List all configured accounts with their aliases, calendars, teams, and shared inboxes. Each account and shared inbox shows its access level in parentheses, which controls what operations Spark can perform.

spark accounts

Run this first to discover what accounts, calendars, and teams are available, and to check their access levels.

Access levels:

LevelAllowed operations
read-onlyList, search, and read emails, threads, folders, events, contacts, meetings, teams
triageEverything in read-only plus all write operations: drafts, team comments, email actions (archive, move, pin, snooze, assign, etc.), contact actions (block, accept, categorize, etc.)
sendEverything in triage plus mail-emitting operations: sending drafts (action send, including scheduled "Send Later"), and the entire event command: event create / event update / event delete / event rsvp, including attaching or detaching attendees via --add / --remove and the iTIP REQUEST / UPDATE / CANCEL / REPLY mail that goes with them.

Access levels are configured separately for each account and each shared inbox in Spark Desktop under Settings -> AI Agents. Shared inboxes can have a different access level than the parent account - for example, a personal account may have triage access while a shared inbox under the same team is read-only or disabled.

If a command requires a higher access level than the account or shared inbox has, it returns an error with instructions on how to change the level.

folders

List folders with message counts. Output includes folder identifiers in parentheses - use these as arguments to emails and search. Mailboxes backed by a Google account show (Gmail labels) on the Email Account or Shared Inbox header. Teams show the team name as a usable identifier for emails.

spark folders                        # all accounts
spark folders user@example.com       # single account

emails

List emails with metadata (ID, From, Date, Subject, Flags). Supports pagination and Gmail-style filters.

spark emails                                                   # Unified Inbox
spark emails user@example.com:Archive                          # specific folder
spark emails "My Team"                                         # all shared threads in a team
spark emails --filter "from:alice@co.com 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 filtering: When viewing the Inbox with GateKeeper in explicit mode, new sender emails are automatically filtered out and a "New Senders" count is shown at the top. Use --new-senders to view those emails. Use contact-action acceptContact <email> or contact-action blockContact <email> to accept or block a sender.

Folder identifier formats (run folders to see available ones):

FormatExampleMeaning
Bare nameInbox, ArchiveUnified folder (cross-account)
emailuser@example.comAccount inbox shorthand
email:Folderuser@example.com:ArchiveSpecific account folder
"Team Name""My Team"All shared threads in a team (quote if spaces)
shared@email:Inboxshared@co.com:InboxShared inbox open items (conversation view, matches Desktop)
shared@email:Archiveshared@co.com:ArchiveShared inbox done/archived items (conversation view)
shared@email:Foldershared@co.com:LabelOther shared inbox folder / label

Filter operators (combinable, Gmail-style):

OperatorExample
from:<addr>from:alice@co.com
to:<addr>to:bob@co.com
cc:<addr>cc:team@co.com
subject:<text>subject:"quarterly report"
before:yyyy/MM/ddbefore:2026/03/01
after:yyyy/MM/ddafter:2026/01/01
newer_than:Xdnewer_than:7d (also w, m, y)
older_than:Xdolder_than:30d
has:attachmentalso document, spreadsheet, presentation, reminder
is:unreadalso read, starred, pinned, unreplied
is:sharedemails shared to any team (alias for is:shared_email)
is:shared_inbox_openopen items in shared inbox
is:shared_inbox_donecompleted/closed items in shared inbox
category:personalalso priority, notification, newsletter, invitation, invitation_response
assigned_to:meemails assigned to current user
assigned_to:<email>emails assigned to specific teammate
assigned_to:unassignedshared inbox items with no assignee
assigned_to:otheremails assigned to someone else (not me)
assigned_by:meemails delegated by current user
filename:<name>filename:report.pdf

search

Two modes:

  • With a topic (keyword mode): Hybrid keyword + semantic search returning up to 20 emails with full bodies, sorted by relevance.
  • Without a topic (list mode): Paged compact table of every email matching --filter / --in across all folders and all accounts, sorted newest first. Same output as emails, but the default scope is "all folders" instead of the Unified Inbox. Trash, Spam, and Blocked are excluded (matching Spark's search field) unless --in explicitly targets one of those folders.
spark search "quarterly report"
spark search "API integration" --filter "from:alice@co.com"
spark search "budget" --in user@example.com:Archive
spark search "vacation" --in user@example.com              # all folders in account

Use this skill in a project

Open any RiverX project, search the Skills panel for readdle/spark-cli-skills/use-spark, and install it in one click.

Use this skill