Agent skill
reply-classification
Classify inbound replies into a 9-label taxonomy with confidence scores and route to downstream skills.
Filed under Outbound email.
From devangk003/gtm-agent-skills · 32 skills · 0 · pushed 2026-06-18
What it does when it runs
Classify inbound replies into a 9-label taxonomy with confidence scores and route to downstream skills. Use when the user says "triage replies", "classify inbox", "sort campaign responses", or "categorize inbound messages.
Read from the skill and the 4 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- AGENTIC_APP_TOKEN
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It does act, so it runs under whatever permissions your session already grants. - Actions present in the files
- shell
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/devangk003/gtm-agent-skills.git /tmp/gtm-agent-skills git -C /tmp/gtm-agent-skills sparse-checkout set "reply-classification" mkdir -p ~/.claude/skills/reply-classification cp -R "/tmp/gtm-agent-skills/reply-classification/." ~/.claude/skills/reply-classification/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
Before you install: this skill will not complete its job on a bare agent. It needs AGENTIC_APP_TOKEN, which you have to obtain separately.
The skill
Source on GitHub ↗Reproduced in full from devangk003/gtm-agent-skills/blob/6b9a1b0094ffd83d6c02bc03b7ce1610661a1644/reply-classification/SKILL.md, which is licensed MIT (skill frontmatter). 476 words, 6 headings.
Reply Classification
Classify each inbound reply (email, LinkedIn, SMS, call disposition) into one of nine routing labels with confidence, then dispatch to the right downstream skill or manual review.
When to Use
- Campaign generating reply volume that needs triage
- Bulk reply categorization for a sales rep or founder inbox
- Pre-discovery-call-prep confirmation of positive classification
- Low-confidence reply needs human review
- Founder inbox overwhelmed — sort hot vs warm vs dead
- User says "triage today's replies" or "categorize campaign responses"
Quick Reference
| Concept | Value |
|---|---|
| 9-label taxonomy | positive / not-now / not-interested / wrong-person / unsubscribe / out-of-office / referral / question / unclear |
| Confidence floor | 0.75 default; below routes to manual review |
| Cadence-exit triggers | positive (handoff) / not-interested (12mo cooldown) / unsubscribe (forever) / wrong-person (re-enrich) |
| Pre-classify short-circuits | Auto-reply header → out-of-office; unsubscribe regex → unsubscribe; bounce → route to channel skill |
| Routing | positive → discovery-call-prep; objection → objection-handling-library; not-now/OOO → follow-up-management; referral → data-enrichment |
Procedure
- Ingest reply. Read text + headers + cadence context. Detect channel, sender, timestamp, parent Touch.
- Pre-classify on hard signals. Auto-reply header →
out-of-office. Unsubscribe phrases →unsubscribe. Bounce → route back to channel skill (not a reply). - LLM-backed classification. Pass reply + 1-line cadence context to LLM. Output:
{label, confidence, rationale, embedded_objection}. See${HERMES_SKILL_DIR}/references/taxonomy.md. - Confidence gate. ≥0.75 → proceed. <0.75 → route to manual review queue with LLM best guess + rationale. Never auto-act on uncertain.
- Cadence-state effects. positive/not-interested/unsubscribe → exit cadence. not-now → pause with resume date. wrong-person → exit + flag data-enrichment. question/referral → cadence continues + route reply.
- Dispatch to next skill. positive → discovery-call-prep. embedded objection → objection-handling-library. not-now/OOO → follow-up-management. referral → data-enrichment. See
${HERMES_SKILL_DIR}/references/routing-map.md. - Push to CRM + emit run summary. Per-reply
interaction:replywith classification + confidence. PATCH person record with reply state. Run summary: total replies, label distribution, manual-review count. See${HERMES_SKILL_DIR}/scripts/push_to_crm.py.
Pitfalls
- Auto-acting on low-confidence classifications — always route <0.75 to manual review
- Confusing OOO with not-interested — pre-classify via header signals before LLM
- Missing embedded objections — "not now, already using X" is BOTH not-now AND competitor objection
- Treating bounces as replies — route to channel skill instead
- Ignoring cadence context — "yes" means different things at touch 1 vs touch 5
- Unsubscribe only on received channel — must exit ALL channels globally
- Multi-language assumption — classify in source language, translate summary only
Verification
- Every reply classified or routed to manual review (no silent drops)
- No confidence <0.75 auto-acted on
- Pre-classification rules applied before LLM call
- Cadence-state effects propagated per label
- Push to CRM emitted: per-reply interaction + person PATCH + run record
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- reply-classification by impecablemee · 66
- reply-classifier by janskuba · 199
- persona-classification by louisblythe · 136
- reply-prediction by louisblythe · 136
- reply-draft-assistant by LaGrowthMachine · 34
- reply-handler by xx254 · 16
- reply-analysis by ilya-a11y · 3
Need help setting it up?
This page tells you what reply-classification does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.