Inbox Automations and Gmail Filters

SkillCommunication

Lets your agent set up automatic handling of incoming email, like labeling, archiving, starring, or filtering mail.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the Inbox Automations and Gmail Filters skill

About this skill

Natural-language inbox automation rules (manage-email-rules, trigger-automations) and provider-native Gmail filters (manage-gmail-filters), including how the two differ. Use when the user asks to auto-label, auto-archive, auto-star, or otherwise handle incoming mail automatically, or to create/repla

What this skill tells your AI

The instructions your AI receives, as published by builderio/agent-native in templates/mail/.agents/skills/inbox-automations/SKILL.md and read by ahel’s review.

AI filter

Use apply-ai-filter when the user manually marks mail as unwanted or keeps a message that was filtered. It adds or removes the reversible agent-native-filtered label, archives or restores the conversation, and records the feedback for future classification. User comments become editable natural-language AI filter instructions; the AI filter uses Luna when available, auto-filters only above its configured confidence threshold, and keeps lower-confidence matches in the review queue. It never claims the custom label is Gmail's provider-controlled Spam system label.

Automation rules

manage-email-rules rules match new inbound mail against a natural-language condition using AI. Label/archive/notify rules use the canonical kind=ai-filter path shared with Mail AI filter settings; mark-read, star, and trash rules keep legacy automation behavior. Mixed action sets remain legacy rules for compatibility.

For a new AI rule, call manage-email-rules with action: "create", one plain-language sentence, and mode: "tag" | "important" | "notify" | "filter" | "archive"; tag mode also takes tagName. The shared create path stores the AI rule, pins tag labels as inbox tabs, and queues bounded recent-mail application. Inspect existing rules and update a matching rule before creating a duplicate. Update a rule with its id, revised sentence, and mode (and tagName for a tag). The inbox-tab cog lists AI tags first; unchecking a tag only hides its tab and never deletes its rule.

For a direct request to add or change one rule, make one manage-email-rules create/update call and report its structured result. It saves the rule and queues recent-mail application before returning; model availability and matching run in the background. Do not call the backfill/status action or trigger-automations to finish the same request. A queued result is a saved rule with work continuing in the background, not a reason to retry the rule mutation.

For an AI rule that marks matching mail important, use the agent-native-important label without archiving. For unwanted mail, pair the agent-native-filtered label with archive; a plain archive request can use the archive action alone.

Use notify mode to add the agent-native-important label and send a core notification for each matching new message. Recent-mail backfill applies the highlighting label only; it never sends notifications for historical matches. Mail's notification bell polls saved notifications while Mail is open and can show browser system popups after permission is enabled. This isn't offline web push. Mobile app notifications are coming soon.

For other prompt-driven actions such as auto-replies, use an event-triggered automation on mail.message.received. Its payload includes accountEmail and messageId; pass both to get-email to read the exact message. Mail's existing send approval setting continues to gate automated sends.

Creating or updating an enabled AI-filter rule queues a backfill over recent mail (at most 200 inbox threads from the last 14 days). A queued result has appliedCounts: null plus backfillRunId and backfillStatus; report it as queued, not completed. When the action returns per-rule appliedCounts, report those exact counts. settingsHref opens Mail's AI filter settings for review. Rules also process new inbound mail on the per-minute cron; trigger-automations forces immediate processing (debounced — a just-triggered run may report "skipped, try again in 30 seconds").

Priority sort uses enabled AI Important rules as its Jev instruction. Use record-ai-priority-feedback when the user says a specific email should or should not be important. It stores per-email important/not-important votes; Priority treats a vote as an explicit score override for that message.

Use refine-ai-filter when the user supplies checked recent-email corrections for an existing AI-filter rule. It rewrites and saves that rule's condition, then queues the same bounded backfill and returns its run id/status and a Settings link; do not invent correction examples or report queued work as done.

Gmail filters are a different mechanism

Gmail filters (manage-gmail-filters) are a distinct, provider-native mechanism from automation rules — filters run inside Gmail itself, apply before automations, and support raw Gmail criteria/actions. Gmail has no filter-update endpoint: the replace operation works by creating a new filter and deleting the old one.

Pick the mechanism deliberately: use a Gmail filter when the rule is expressible in Gmail's own criteria and should apply even when this app isn't running; use an automation rule when the condition needs natural-language judgement.

Related Skills

  • inbox-reads-and-triage — one-off triage and refreshing the UI afterwards.
  • mail-backends — Gmail filters require a connected Google account.

Signals

GitHub stars
7k
Forks
613
Last commit
Sep 2026
Advanced
Item type
skill
Key
inbox-automations
Source
github.com/builderio/agent-native