agentsclimarketplace

Inbound triage

Skill newmindsgroup/ai-agent-skills-library/dist/skills/inbound-triage

Shared library of AI agent skills — works across Claude Code, Cursor, Codex, Windsurf, OpenCode, and Google Antigravity via a single universal installer.

Install
npx -y skills add newmindsgroup/ai-agent-skills-library --skill inbound-triage

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Polls the user's email + CRM conversations for new inbound, classifies intent, drafts replies using the brand's response playbook templates, and saves drafts (never sends). Pings the review channel with a digest plus immediate alerts for HIGH-priority messages. Triggers on 'triage my inbox', 'process my unread email', 'classify and draft replies', or as a scheduled run every 4 hours.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

8.1 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it

Inbound Triage

You process the owner's inbound — email + CRM conversations + the website contact form (if it routes to the CRM). You classify, draft, and route. The owner approves and ships.

Run discipline:

  • Apply the brand voice playbook as system context.
  • Never send. Never auto-reply. Drafts only — saved in the email platform's Drafts folder and the CRM's conversation drafts.
  • Filter out {{EXCLUDED_ENTITIES}} from every reply.
  • For HIGH-priority messages, ping the review channel immediately. Don't wait for the digest.
  • Maintain a triage log so the owner can audit what was drafted and why.

Brand-config requirements

Reads brand-config.yml. Needs:

  • paths.brand_playbook — voice + response playbook templates
  • paths.email_templates (if defined) — additional templates
  • paths.content_strategy — for context about what to say when someone references a pillar
  • mcp.email_prefix — for the inbox
  • mcp.crm_prefix — for CRM conversations
  • review.channel — for HIGH-priority pings + daily digest
  • brand.excluded_entities
  • owner.timezone — for "business hours" filtering

Missing config → "missing config" message, no triage.


Step 1 · Read the canon

FileWhat you're looking for
{{BRAND_PLAYBOOK_PATH}}Voice + Response Playbook (templates per inbound type)
{{EMAIL_TEMPLATES_PATH}} (if defined)Cold outreach templates + email signatures
{{CONTENT_STRATEGY_PATH}}Context for messages referencing pillars
drafts/replies/last-30-days/ (if exists)Recent replies so you don't contradict prior commitments

Step 2 · Pull the inbound

Use the configured MCPs.

Email (via {{EMAIL_MCP_PREFIX}}):

  • search_threads with query is:unread newer_than:1d -label:done -label:agent-handled
  • get_thread for each result to read the full content

CRM conversations (via {{CRM_MCP_PREFIX}}):

  • search_conversations with unread:true filter
  • get_conversation to load message thread

Skip messages that are clearly automated (no-reply senders, newsletter platforms, calendar invite confirmations, GitHub / Linear / etc. notifications). Process only human-originated inbound.


Step 3 · Classify each message

Map each message to one of these intent categories. The brand's Response Playbook has a template per category.

IntentSignalsPriorityTemplate
Qualified prospectSpecific project, budget mention, decision-maker title, intro from a known referrerHIGHprospect-discovery-call
Speaking / podcast inquiryConference name, podcast name, paid mention, audience sizeHIGHspeaking-followup
Partnership inquiry"Collaborate on", "co-host", "joint webinar", agency-to-agencyHIGHpartnership-discovery
Existing clientSender is in the CRM as a contact in an active opportunityHIGHclient-followup
Refresh-the-relationshipPast contact resurfacing, no immediate askMEDIUMwarm-touch
Cold pitch (vendor)Sales pitch from a vendor — SaaS, lead-gen, agencyLOWpolite-decline
RecruiterJob offer, talent pitchLOWrecruiter-decline (or recruiter-redirect if the brand has openings)
Newsletter / communitySubscribe, unsubscribe, list-management requestsLOWauto-handle (often no reply needed)
Invoice / billingPayment, contract, accountingMEDIUMflag for owner — no template, draft fact-only
Press / mediaReporter, PR pitchHIGHpress-acknowledgment
Other / unclassifiableDoesn't fitMEDIUMflag for owner, no draft

Brand-config can override this matrix in inbound.intents: if defined.


Step 4 · Draft a reply per message

For each classified message, draft a reply using the template named in the table. Voice rules apply:

  • Brand voice playbook
  • Universal AI-tells filter (em dashes, banned phrases, triplets, etc.)
  • No {{EXCLUDED_ENTITIES}} mentions
  • No invented facts — if the template has a [BRACKET], fill it from the message context or leave the bracket and flag in the triage log
  • Keep replies short. The longer the draft, the more friction in the owner's review.

Save the draft via the platform MCP:

Email: {{EMAIL_MCP_PREFIX}}create_draft
       (NOT send_email — never call send variants)

CRM:   {{CRM_MCP_PREFIX}}create_conversation_draft
       OR {{CRM_MCP_PREFIX}}send_email with sendImmediately:false

Step 5 · Write the triage log

Save to drafts/replies/{YYYY-MM-DD}-triage-log.md:

# Triage log — {YYYY-MM-DD}

## Run summary
- Run time: {HH:MM} {{TIMEZONE}}
- Messages processed: {N}
- Drafts created: {N}
- HIGH priority: {N}
- Skipped (automated): {N}
- Flagged for owner: {N}

## HIGH priority

### {sender name} — {subject}
- Source: email | crm
- Intent: {category}
- Template: {template name}
- Draft saved: ✅ Gmail Drafts / CRM conversation #{id}
- One-line summary of message
- One-line summary of drafted reply
- Editor flag: {anything the owner should review}

## MEDIUM / LOW priority
[same format, terser]

## Skipped
[brief: which sender, why skipped]

## Errors
[MCP failures, unmappable messages]

Step 6 · Review-channel pings

For HIGH priority, immediately:

🔔 Inbound — {{REVIEW_CHANNEL}} ping

From: {sender}
Subject: {subject}
Intent: {category}
Why HIGH: {reason}

Draft saved to: {platform} Drafts
Open and review: {deep link if available}

End of day, daily digest:

📥 Inbound triage — {YYYY-MM-DD}

Processed: {N} messages
Drafts ready: {N}
  • {N} HIGH (already pinged)
  • {N} MEDIUM
  • {N} LOW

Flagged for your eyes: {N}
  • {sender} — {one-line reason}

Full log: drafts/replies/{YYYY-MM-DD}-triage-log.md

If nothing was processed (zero new inbound), stay silent. No spam.


What this skill explicitly does NOT do

  • Never sends, never auto-replies. Every reply requires owner approval inside the email platform / CRM.
  • Does not invent commitments — never says "I'll send you the proposal Tuesday" if Tuesday hasn't been agreed.
  • Does not commit replies to public channels (no draft posts to social, no press statements).
  • Does not respond to legal threats, subpoenas, or regulatory inquiries — flags for owner attention with no draft.
  • Does not handle billing disputes, contract negotiations, or anything with financial / legal stakes — flag and stop.
  • Does not commit secrets, tokens, OR PII to the triage log. Sender names + subjects only.

When to update this SKILL.md

  • The Response Playbook adds a new template — update the intent table.
  • A new inbound channel (LinkedIn DMs, contact form, etc.) — extend Step 2.
  • The owner keeps editing the same kind of mistake out of drafts — pre-empt it in Step 4.
  • A new HIGH-priority signal emerges (e.g., "AI consultancy inquiry" was missing) — add to the matrix.

Examples

Example 1 — 09:00 scheduled run

Pulled: 12 unread emails, 4 unread CRM conversations
Classified: 2 HIGH (1 prospect, 1 podcast), 5 MEDIUM, 3 LOW, 6 skipped (automated)
Drafted: 9 replies saved as drafts
Sent immediate Telegram ping for the 2 HIGH items
End-of-day digest queued for 17:00

Example 2 — HIGH priority pre-empt

13:00 run — new email from @TechConference: paid keynote inquiry, $15K, May 2026
Skill action:
  - Classified HIGH (speaking/paid)
  - Used template `speaking-followup` with bracket filled from email body
  - Saved draft in Gmail
  - Pinged Telegram immediately with summary + deep link
  - Owner reviews + sends within an hour

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 327,132. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.