Agent skill

Inbox Management

by vellum-ai in vellum-ai/vellum-assistant

Ongoing Gmail inbox management via scheduled runs. An agent skill from vellum-ai/vellum-assistant.

MITAuto-check passedProductivity & Automation

Install Inbox Management

skills CLI
$ npx skills add vellum-ai/vellum-assistant --skill inbox-management -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install vellum-ai/vellum-assistant inbox-management --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/vellum-ai/vellum-assistant.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/inbox-management .claude/skills/inbox-management && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
inbox-management
GitHub stars
1.4k
Token cost
~4.7k tokens
SKILL.md length
2,256 words
Files
5 (incl. scripts, assets)
Skills in repo
108
Repo updated
First seen
Licence
MIT

At a glance

Ongoing Gmail inbox management via scheduled runs. An agent skill from vellum-ai/vellum-assistant.

  • Works in 12 steps: Informed consent → Stage → Safe-list → …
  • Tasks that involve Email management
  • SKILL.md covers Trust Ladder, Setup (one-time, before…, Pipeline (only when the poll… and Stage 0 Summary, plus 4 more sections
  • Runs TypeScript scripts from its folder; calls bun

What it does

Inbox Management is an agent skill from vellum-ai/vellum-assistant. Ongoing Gmail inbox management via scheduled runs. Archives known noise, flags urgent items, drafts replies in-thread (never auto-sends), and catches stale follow-ups. Empty polls spend no model tokens. Starts in flag-only mode.

Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts and assets (for example `scripts/__tests__/poll-lib.test.ts`, `scripts/poll-lib.ts` and `scripts/poll.ts`). Compatibility notes: Designed for Vellum personal assistants

It sits in Productivity & Automation, covering Email management. It works with Gmail. The repository describes itself as: An AI Assistant that’s easy to setup, does your work 24/7, knows your preferences and gets better over time. The licence is MIT.

When your agent uses it

  • Tasks that involve Email management

Example prompts

  • “/inbox-management”

Requirements

  • Node.js
  • Compatibility (from SKILL.md): Designed for Vellum personal assistants

Workflow steps

12 steps, taken from the step headings in SKILL.md.

  1. Informed consent
  2. Stage
  3. Safe-list
  4. Interrupt threshold
  5. Schedule
  6. Voice profile
  7. Draft preference
  8. Missed-run check & resume
  9. Archive known noise (Stage 1+ only)
  10. Cold outreach judgment (Stage 2: archive / Stage 0-1: flag)
  11. Urgent scan (all stages)
  12. Draft replies (all stages, if enabled)

What it can do on your machine

Read from SKILL.md and the folder at commit 33cc983. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 3 files in scripts/ (TypeScript), which the agent can run.

    Shell commands in SKILL.md call:

    • bun

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Designed for Vellum personal assistants

    From compatibility in the SKILL.md frontmatter.

Context cost

Inbox Management loads about 4.7k tokens when it runs. Until then it costs about 61 tokens; SKILL.md has 2,256 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~61
When it runs · the whole SKILL.md, loaded when a task matches
~4.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from vellum-ai/vellum-assistant at commit 33cc983, republished under its MIT licence (© vellum-ai). 2,256 words, ~4,653 tokens.

Download SKILL.mdSave it as .claude/skills/inbox-management/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
inbox-management
description
Ongoing Gmail inbox management via scheduled runs. Archives known noise, flags urgent items, drafts replies in-thread (never auto-sends), and catches stale follow-ups. Empty polls spend no model tokens. Starts in flag-only mode.
compatibility
Designed for Vellum personal assistants
metadata.icon
assets/icon.svg
metadata.emoji
📬

Inbox Management Skill

Companion to inbox-cleanup. Cleanup drains the backlog once. Management keeps the inbox clean on a schedule: archiving noise, flagging urgents, drafting replies, and catching stale follow-ups.

Runs as a script-mode schedule. Each fire polls Gmail deterministically. An empty poll (no new inbox mail and no due follow-up) exits without waking the assistant, so leftover Stage 0 mail is not re-judged every few hours. The assistant runs only when the poll attaches a digest.

Default posture: high recall on noise archiving, high precision on user interruption. Archive aggressively on known-safe patterns. Ping sparingly. Never auto-send a reply. When unsure, flag instead of archiving.


Trust Ladder

A single wrong archive of an important email kills trust. Earn autonomy in stages:

StageArchive behaviorDraft behaviorAlerts
0. Flag-only (default)Nothing archived. All archive calls use --dry-run. Summary shows what would be archived for user review.Drafts created in-thread, listed in summary.Urgent scan active.
1. StandardSilent archive of known-safe categories only (calendar responses, no-reply, newsletters). Cold outreach still flagged. Batches > 1,000 ops auto-dry-run.Drafts created in-thread, summarized per run.Urgent scan active.
2. AggressiveAbove + cold outreach archived by LLM judgment (default archive, flag only when relevant to user). All ops logged for reversal.Same as Stage 1.Urgent scan active.

Graduation requires the user to explicitly say "graduate me" or equivalent. Do not infer from silence.

Never auto-send a draft. No toggle for this rule.


Setup (one-time, before enabling schedule)

Before anything else, explain what the user is opting into. Be direct:

"Here's what inbox management does: on a schedule you choose (e.g. every few hours on weekdays), I'll scan new mail and take action based on a trust level you control. Quiet polls (no new mail) do not use the model.

Stage 0 (the default starting point): I watch but don't touch. I'll tell you what I would archive among new mail, show you draft replies I wrote, and flag urgent items, but I won't move or delete anything. This lasts until you explicitly tell me to graduate.

Stage 1 (you opt in): I silently archive obvious noise (calendar responses, no-reply senders, newsletters). Everything else is still flagged for your review.

Stage 2 (you opt in): I also archive cold outreach using my judgment. Higher autonomy, slightly higher risk of a wrong call.

At every stage: I will never send an email on your behalf. I create drafts for you to review. You can pause or stop this at any time."

Wait for explicit confirmation before proceeding. If the user hesitates or asks clarifying questions, answer them. Don't rush past this step.

1. Stage

Default to Stage 0 (flag-only). When the user (directly or via a caller like admin-copilot setup) has made an explicit, informed choice to start higher, honor it: Stage 1 (silent archive of known-safe categories only) or Stage 2 (also cold outreach by judgment). Do not infer a higher stage from enthusiasm; require an explicit choice made after the §0 consent framing for that stage. Store the chosen stage via gmail-prefs.ts --action set-management-config --stage <0|1|2>.

2. Safe-list

Ask for senders/domains that may look like outreach but matter. Seed categories:

  • Financial advisors, lawyers, accountants
  • Active investors and VCs
  • Customer domains
  • Family/personal contacts
  • Paid subscriptions (billing addresses)

Store via gmail-prefs.ts --action add-safelist --emails "...". The safe-list is shared with inbox-cleanup.

3. Interrupt threshold

Default urgency bar for alerts:

  • Customer at risk (churn, renewal, escalation)
  • Investor/board with time-sensitive ask
  • Legal/compliance deadline
  • Team member flagging urgency
  • Explicit markers ("EOD today", "ASAP", "urgent") from real humans

Store threshold level via gmail-prefs.ts --action set-management-config --interrupt-threshold "default".

4. Schedule

Do not create an execute-mode job. Empty inbox fires must not start an agent turn. This skill only sets up new script-mode schedules. Do not convert or rewrite leftover execute-mode jobs.

  1. Create a recurring script-mode schedule:
  • Name: Inbox Management
  • Default cadence: 0 */3 * * 1-5 (every 3 hours on weekdays)
  • Mode: script
  • Script: bun "$VELLUM_WORKSPACE_DIR/schedules/$__SCHEDULE_ID/poll.ts"
  • timeout_ms: 900000 (the poll's runtime includes the woken assistant turn)
  • inference_profile: "cost-optimized" (applies to wake handoff turns)
  • quiet: true
  • reuse_conversation: false (each wake is a fresh conversation)

If assistant oauth status google shows more than one active connection, ask which inbox to watch and append one --account user@example.com flag per chosen mailbox.

By default the first poll baselines at now and does not escalate pre-existing mail (that is what stops the leftover Stage 0 pile from being re-billed). If the user wants the first sync to include recent mail, append --lookback <duration> (90m/4h/2d/1w).

  1. Copy the shipped poll script into the schedule's directory. Read the id from the create result:
bash
mkdir -p "$VELLUM_WORKSPACE_DIR/schedules/<id>"
cp "$VELLUM_WORKSPACE_DIR/skills/inbox-management/scripts/poll.ts" \
   "$VELLUM_WORKSPACE_DIR/skills/inbox-management/scripts/poll-lib.ts" \
   "$VELLUM_WORKSPACE_DIR/schedules/<id>/"

The schedule owns this copy. poll.ts self-provisions JSON state on first run (schedules/<id>/state/state.json).

  1. Verify with assistant schedules execute <id>. The first run records {"ok":true,"new":0,...,"baselined":true}. Later empty polls record "new":0 without waking the assistant.

Confirm cadence with the user. Overnight wakes (when the digest is non-empty): urgent-scan only.

5. Voice profile

Run messaging_analyze_style on the user's recent sent mail. Store the style profile in the Personal Knowledge Base for draft generation.

6. Draft preference

Confirm the user wants drafts generated. Some prefer flag-only forever.


Pipeline (only when the poll wakes you)

The poll attached a digest as untrusted external content. Run these steps only against message ids in that digest. Do not search in:inbox or in:sent for the whole mailbox. Do not re-judge mail that is not in the digest.

Each step is silent unless something qualifies for interrupt.

Step 0: Missed-run check & resume

Resume interrupted runs first. Before starting a new pipeline pass, check bun run scripts/gmail-runs.ts list. If the most recent run has status: "interrupted", resume it via bun run scripts/gmail-archive.ts archive --resume "<run-id>" before proceeding. Also run bun run scripts/gmail-runs.ts prune to clean up logs older than 30 days.

Read the last-run timestamp via gmail-prefs.ts --action get-management-config. If last-run is more than 2x the scheduled interval ago (e.g. >6 hours for a 3-hour schedule), notify the user:

  • Slack: "📬 Inbox management hasn't run since [time]. I'm catching up now."
  • No Slack: In-app notification.

Then update last-run to now via gmail-prefs.ts --action set-management-config --last-run "..." before continuing.

Step 1: Archive known noise (Stage 1+ only)

Restrict the usual archive queries to digest inbox ids (or --dry-run the matching ids). Queries for context:

subject:(Accepted: OR Declined: OR Tentative: OR "has accepted" OR "has declined") in:inbox
from:(noreply OR no-reply OR donotreply) in:inbox
subject:("newsletter" OR "weekly digest" OR "monthly digest") in:inbox

Cross-check the safe-list before each batch. Use gmail-prefs.ts --action list to load the safe-list. Remove any safe-listed sender from the batch before archiving.

Stage 0: Collect digest matches but do not archive. Include in summary with "would archive" label.

Step 2: Cold outreach judgment (Stage 2: archive / Stage 0-1: flag)

Scope the scan to the poll window, then intersect it with the digest:

bash
bun run scripts/gmail-scan.ts outreach-scan --time-range 1d

--time-range feeds Gmail's newer_than:, whose granularity is days, so 1d is the smallest window that covers the default 0 */3 * * 1-5 cadence. On a first sync, use the schedule's --lookback value rounded up to whole days. Append one --account user@example.com flag per mailbox when the schedule watches specific inboxes.

Then drop every result that is not in the digest: keep only senders that appear among the digest's inbox messages, and ignore the rest. The scan has no digest filter and its cache spans the whole window, so its results reach back past the mail this run is allowed to judge.

For each surviving sender, judge: is this person/offer potentially relevant to the user?

  • Relevant → leave in inbox, include in summary
  • Not relevant → archive (Stage 2) / flag as "would archive" (Stage 0-1)

Archive only the digest ids for that sender, as one comma-separated list:

bash
bun run scripts/gmail-archive.ts --message-ids <id1>,<id2>,<id3>

Never archive through the --cache-key + --sender-emails path here. That path replays the scan's cache and pulls the sender's older messages, which are outside the digest.

Step 3: Urgent scan (all stages)

Scan digest inbox messages (unread or not) for urgency signals:

SignalWhy
"past due", "overdue", "final notice", "balance due"Financial consequence
"will be suspended", "service interruption", "account closure"Operational consequence
"signature required", "agreement", "DocuSign pending" from real senderLegal action needed
.gov domain, "IRS", "state of", "department of"Regulatory
Safe-list sender with deadline languageKnown-important, urgent framing

If any qualify, send one alert:

  • Slack connected: Slack DM with 🚨 urgent email: count + per-item bullets (sender · subject · why)
  • Slack not connected: In-app notification via notification pipeline
  • If nothing qualifies: skip silently. Never ping just to ping.

Overnight wakes: stop after this step.

Show full SKILL.md (881 more words)Show less
Step 4: Draft replies (all stages, if enabled)

From digest inbox messages, filter out anything caught by Steps 1-2, calendar responses, receipts, no-reply senders, one-way FYIs.

For each remaining email from real humans expecting a response:

  1. Check whether the thread already has a draft (the Gmail thread view shows it). If it does, skip.
  2. Read the full thread before drafting so the reply answers what was actually asked.
  3. Decide: does this need a reply? If no, skip.
  4. Create draft in-thread via gmail-email.ts draft --thread-id "..." --in-reply-to "...". Draft must be fully written in the user's voice (use Personal Knowledge Base style profile), substantive, no placeholders. Never auto-send.

After the pass, send one summary:

  • Slack: [N] drafts ready for review: + per-item bullets
  • No Slack: In-app notification
Step 5: Follow-up scanner (all stages)

The poll script ages sent mail in JSON state and only includes a follow-up in the digest when it is 2 to 14 days old and the thread still has no later message. Look only at digest followups (and any digest sent items the script already judged due). Do not search in:sent newer_than:14d yourself.

For each of those threads:

Ask: did this email clearly expect a response? Only flag if 2+ signals are present:

  • The email contains a direct question
  • The email proposes a meeting, call, or next step
  • The email requests a deliverable or decision
  • The recipient is on the safe-list (known-important contact)

Do not flag: cold outreach the user sent, intros where silence is normal, thank-yous, FYIs, one-line acknowledgments, or threads where the user's last message was itself a reply to a no-reply sender.

If yes, alert with: recipient, subject, date sent, and a ready-to-send follow-up draft.


Stage 0 Summary

At Stage 0, send one summary for this digest only. This wake is a new conversation and only sees the current digest, so do not claim a full-day rollup. Skip the recap when the digest is a single obvious item.

📬 Inbox digest (flag-only mode):

Would archive ([N]):
• [category]: [count] ([sample sender/subject])

Cold outreach flagged ([N]):
• [sender] · [subject] · relevant: [y/n]

Drafts ready ([N]):
• [sender] · [subject]: [one-line summary]

Follow-ups suggested ([N]):
• [recipient] · [subject] · sent [date]

User responds with:

  • "approve X": graduates a category to auto-archive
  • "safe-list X": permanently protects a sender/domain
  • "graduate me": advances to Stage 1

Capture every correction: add protected senders to safe-list immediately.


How the poll works

Cursor state is JSON at schedules/<id>/state/state.json (same idea as the gmail skill's data/gmail-preferences.json). There is no SQLite database.

  • Deterministic poll, LLM only on new inbox work or a due follow-up. poll.ts syncs incrementally with Gmail's History API via assistant oauth request --provider google. New INBOX mail is judged now. New SENT mail is stored as a follow-up candidate and does not wake the model by itself. Drafts, spam, and other non-inbox/non-sent additions are ignored. No model call when history is empty and no follow-up is due.
  • Aged follow-ups. A stored sent message becomes due when it is 2 to 14 days old and Gmail still shows that message as the latest in the thread. Younger sent mail stays in JSON with no model call. Older than 14 days is dropped.
  • Baseline skips the leftover pile. The first run stores the current historyId and reports new: 0 unless --lookback was set. Mail already sitting in the inbox is not attached to a digest.
  • Digest cap and pending overflow. The digest is capped at 50 items (due follow-ups first, then inbox). Overflow inbox ids stay in pending and are retried on the next poll. The History API will not resend them after historyId advances, so pending is the retry queue. Overflow is never marked reported.
  • Commit after a successful wake. The script writes pending + watermark before wake. After a successful wake it marks only the delivered ids reported. A failed wake retries the same pending ids.
  • Fenced escalation. New work wakes a fresh conversation. The digest goes through --external-content (untrusted data). The pipeline hint is the trusted framing. The prompt is this digest only, not a day-wide journal.
  • Expiry recovery. If a stored historyId has expired, the account re-baselines and catches up with a one-day inbox+sent search; the reported-id ledger absorbs the overlap.

Managing it

  • Change cadence: update the schedule's expression.
  • Add or remove a watched account: edit the schedule's command string (--account flags).
  • Customize behavior: edit the schedule's copy of poll.ts / poll-lib.ts.
  • Update to a newer shipped script: re-copy both files from the skill directory into schedules/<id>/, re-applying any custom edits.
  • Pause / resume: disable / enable the schedule.
  • Remove: delete the schedule; optionally clean up its schedules/<id>/ directory.
  • If polls start failing on auth, try assistant oauth ping google; if that fails, load the vellum-oauth-integrations skill to reconnect.

Safe-List Rules

  1. Every batch archive cross-references the safe-list. No exceptions.
  2. Any user correction ("don't archive this") auto-adds to safe-list permanently.
  3. Supports exact sender (name@domain) and domain-level (example.com) matches.
  4. Safe-list entries never expire.
  5. Shared with inbox-cleanup. Both skills read/write the same store via gmail-prefs.ts.

Integration

  • Run inbox-cleanup first. Management assumes the backlog is drained.
  • Auto-filters bridge the gap. Cleanup Phase 6 runs gmail-auto-filters.ts generate to propose Gmail filters for safe categories (no-reply, calendar, sketchy TLDs, confirmed newsletters). The user confirms before any filter is created. These filters prevent re-accumulation immediately. Management Step 1 handles only new digest mail that slips through.
  • Shared safe-list and blocklist via gmail-prefs.ts.
  • Filter dedup is automatic. If auto-filters already cover a category, new matching mail never reaches the inbox, so it never appears in a digest.

© vellum-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files (scripts, assets) in skills/inbox-management of vellum-ai/vellum-assistant.

  • SKILL.md
  • assets/icon.svg
  • scripts/__tests__/poll-lib.test.ts
  • scripts/poll-lib.ts
  • scripts/poll.ts

Open the folder on GitHubat commit 33cc983

Compare with similar skills

Inbox Management next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Inbox Management compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Inbox Management this skillvellum-ai/vellum-assistant1.4k—~4.7kAutomated safety check: PassMIT
Career-Ops Gmail Lead Plugincareer-ops-hq/career-ops74k—~233Automated safety check: NotesMIT
Gmailteam-attention/plugins-for-claude-natives827—~967Automated safety check: PassMIT
Connect Apps with ComposioComposioHQ/awesome-claude-skills77k3 repos~557Automated safety check: PassNone
Gmail Emailopen-gitagent/gitagent714—~235Automated safety check: NotesMIT
Google Workspaceyc-software/qm15k—~1.8kAutomated safety check: PassMIT

Similar skills

  • Career-Ops Gmail Lead Plugin

    career-ops-hq/career-ops

    Pulls job leads from a Gmail label into the career-ops pipeline, extracting job URLs from DMARC-passing emails and de-duplicating against existing leads.

    74k GitHub stars~233 tokensUpdated today
    Productivity & AutomationAuto-check: notes
  • Gmail

    team-attention/plugins-for-claude-natives

    This skill should be used when the user asks to "check email", "read emails", "send email", "reply to email", "search inbox", or manages Gmail.

    827 GitHub stars~967 tokensUpdated 5 mo ago
    Productivity & AutomationAuto-check passed
  • Connect Apps with Composio

    ComposioHQ/awesome-claude-skills

    Connects an agent to 1000+ external apps through the Composio Tool Router plugin, so it can actually send emails, create issues and post messages instead of only drafting them.

    77k GitHub starsUsed in 3 repos~557 tokens
    Productivity & AutomationAuto-check passed
  • Gmail Email

    open-gitagent/gitagent

    Send emails via Gmail SMTP using App Password authentication.

    714 GitHub stars~235 tokensUpdated 2 days ago
    Productivity & AutomationAuto-check: notes
  • Google Workspace

    yc-software/qm

    Read and act on the user's Gmail, Google Calendar, and Google Tasks through per-user OAuth.

    15k GitHub stars~1.8k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Gmcli

    badlogic/pi-skills

    Gmail CLI for searching emails, reading threads, sending messages, managing drafts, and handling labels/attachments.

    2.6k GitHub stars~470 tokensUpdated 4 mo ago
    Productivity & AutomationAuto-check passed

More from vellum-ai/vellum-assistant

All 108 skills in this repo
  • Vellum GitHub App Setup

    vellum-ai/vellum-assistant

    Create and configure a GitHub App so the assistant can push commits, open PRs, and comment under its own bot identity.

    1.4k GitHub stars~3.1k tokensUpdated yesterday
    Auto-check passed
  • Discord App Setup

    vellum-ai/vellum-assistant

    Connect a Discord bot to the assistant via the Discord Gateway with guided application creation and intent configuration

    1.4k GitHub stars~4.2k tokensUpdated yesterday
    Auto-check passed
  • Sentry App Setup

    vellum-ai/vellum-assistant

    Create and configure a Sentry internal integration so the assistant can manage issues, alerts, and releases under its own identity

    1.4k GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Memory Corpus Ingest

    vellum-ai/vellum-assistant

    Ingest a large dataset into memory as a skimmed map. An agent skill from vellum-ai/vellum-assistant.

    1.4k GitHub stars~3k tokensUpdated yesterday
    Auto-check: notes
  • Plugin Builder

    vellum-ai/vellum-assistant

    A skill your agent uses when the user wants to build, scaffold, ship, or edit a Vellum plugin that bundles multiple surfaces (hooks, tools, skills, and more) into one installable package.

    1.4k GitHub stars~3.1k tokensUpdated yesterday
    Auto-check passed
  • Slack App Setup

    vellum-ai/vellum-assistant

    Connect a Slack app to the Vellum Assistant via Socket Mode.

    1.4k GitHub stars~2.5k tokensUpdated yesterday
    Auto-check: warnings

Works with

Questions about Inbox Management

What does Inbox Management do?

Ongoing Gmail inbox management via scheduled runs. An agent skill from vellum-ai/vellum-assistant. Inbox Management is an agent skill from vellum-ai/vellum-assistant. Ongoing Gmail inbox management via scheduled runs.

When should I use Inbox Management?

Inbox Management fits situations like: tasks that involve Email management.

How do I install Inbox Management in Claude Code?

Run `npx skills add vellum-ai/vellum-assistant --skill inbox-management -a claude-code`. Or copy the skill folder (skills/inbox-management in vellum-ai/vellum-assistant) into .claude/skills/inbox-management in your project. Claude Code loads it when a task matches its description.

How do I install Inbox Management in Codex?

Run `npx skills add vellum-ai/vellum-assistant --skill inbox-management -a codex`. Or copy the skill folder (skills/inbox-management in vellum-ai/vellum-assistant) into .agents/skills/inbox-management in your project. Codex loads it when a task matches its description.

Can I use Inbox Management in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add vellum-ai/vellum-assistant --skill inbox-management -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/inbox-management, .gemini/skills/inbox-management, .github/skills/inbox-management and .opencode/skills/inbox-management in your project.

What does Inbox Management need to run?

Going by SKILL.md and its folder, Inbox Management needs TypeScript for the scripts in its folder and the command-line tools its instructions call (bun). Our summary lists: Node.js. Compatibility (from SKILL.md): Designed for Vellum personal assistants.

Does Inbox Management access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Inbox Management safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Inbox Management use?

Inbox Management is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Inbox Management use?

About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Inbox Management?

Skills that share tags, products or a category with Inbox Management: Career-Ops Gmail Lead Plugin (career-ops-hq/career-ops, 74k stars), Gmail (team-attention/plugins-for-claude-natives, 827 stars), Connect Apps with Composio (ComposioHQ/awesome-claude-skills, 77k stars) and Gmail Email (open-gitagent/gitagent, 714 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Inbox Management?

vellum-ai (a GitHub organization) maintains it in vellum-ai/vellum-assistant, which has 1,408 GitHub stars. The repository holds 108 skills in this directory. The repository was last updated on October 9, 2026.

Source: vellum-ai/vellum-assistant on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.