Agent skill

Grasshopper Voicemail Monitor

by hewi333 in hewi333/Mom-n-Pop-Skills

Turn voicemail-drop emails from a virtual phone provider (Grasshopper — or any service that emails transcribed voicemails) into CRM leads and Telegram notifications.

MITAuto-check: notesProductivity & Automation

Install Grasshopper Voicemail Monitor

skills CLI
$ npx skills add hewi333/Mom-n-Pop-Skills --skill grasshopper-voicemail-monitor -a claude-code

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

GitHub CLI
$ gh skill install hewi333/Mom-n-Pop-Skills grasshopper-voicemail-monitor --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/hewi333/Mom-n-Pop-Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/grasshopper-voicemail-monitor .claude/skills/grasshopper-voicemail-monitor && 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
grasshopper-voicemail-monitor
GitHub stars
122
Token cost
~2.4k tokens
SKILL.md length
1,005 words
Files
3 (incl. references)
Skills in repo
13
Repo updated
First seen
Licence
MIT

At a glance

Turn voicemail-drop emails from a virtual phone provider (Grasshopper — or any service that emails transcribed voicemails) into CRM leads and Telegram notifications.

  • Works in 9 steps: IDLE vs polling: the IMAP host may… → First-run flood prevention: deleting the… → "Transcription unavailable" is handled… → …
  • Tasks that involve Scheduled and recurring tasks
  • SKILL.md covers Overview, Architecture, Components and Pitfalls, plus 3 more sections
  • Calls python and python3

What it does

Grasshopper Voicemail Monitor is an agent skill from hewi333/Mom-n-Pop-Skills. Turn voicemail-drop emails from a virtual phone provider (Grasshopper — or any service that emails transcribed voicemails) into CRM leads and Telegram notifications. Cron-based IMAP polling with the noagent=True pattern — zero cost when idle. The same architecture works for any structured notification email: contact forms, booking alerts, review notifications.

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/cron-script-arguments.md` and `references/notification-email-monitor.md`).

It sits in Productivity & Automation, covering Scheduled and recurring tasks. It works with Telegram. The repository describes itself as: Collection of skills for small businesses using AI Agents. The licence is MIT.

When your agent uses it

  • Tasks that involve Scheduled and recurring tasks

Example prompts

  • “/grasshopper-voicemail-monitor”

Requirements

  • Python 3

Workflow steps

9 steps, taken from the first numbered list in SKILL.md.

  1. IDLE vs polling: the IMAP host may support IDLE (check CAPABILITY),
  2. First-run flood prevention: deleting the tracking file does NOT replay
  3. "Transcription unavailable" is handled gracefully; no audio fallback
  4. Phone matching uses the last 10 digits, so (555) 234-9876 and
  5. Dual delivery: if both inboxes are configured as recipients for the
  6. Progress-message flooding: with tool_progress: all, a long
  7. Cascading delegation re-entry: background delegation results re-enter
  8. Gateway restarts confuse end-users: restart notifications look like
  9. Propose, then build: a monitor that texts real people and writes to a

What it can do on your machine

Read from SKILL.md and the folder at commit 70a2273. 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

    Shell commands in SKILL.md call:

    • python
    • python3

    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.

Context cost

Grasshopper Voicemail Monitor loads about 2.4k tokens when it runs, and up to ~3.8k if it reads all its reference files. Until then it costs about 98 tokens; SKILL.md has 1,005 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~98
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.8k

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteRuns commands with sudoSKILL.md:190
    sudo systemctl stop hermes-gateway.service   # stops the service + prevents restart
  • NoteRuns commands with sudoSKILL.md:193
    If the agent has no sudo access it cannot manage the gateway lifecycle — by

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from hewi333/Mom-n-Pop-Skills at commit 70a2273, republished under its MIT licence (© hewi333). 1,005 words, ~2,398 tokens.

Download SKILL.mdSave it as .claude/skills/grasshopper-voicemail-monitor/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
grasshopper-voicemail-monitor
description
Turn voicemail-drop emails from a virtual phone provider (Grasshopper — or any service that emails transcribed voicemails) into CRM leads and Telegram notifications. Cron-based IMAP polling with the no_agent=True pattern — zero cost when idle. The same architecture works for any structured notification email: contact forms, booking alerts, review notifications.
version
1.0.0
author
Hermes Agent
license
MIT

Voicemail & Notification-Email Monitor

Overview

Many virtual phone products auto-transcribe voicemails and email the transcript to one or more inboxes (Grasshopper — GoDaddy's virtual phone — does this; Google Voice, OpenPhone and similar services have equivalents). That email is all you need for a fully automated lead-intake pipeline — no audio processing, no transcription API, no polling the provider's dashboard.

This skill describes a monitor that polls those inboxes every 3 minutes via IMAP, extracts the transcript and caller info, logs the voicemail to the CRM database, and delivers a formatted summary to the right person's Telegram.

Key insight: the provider already gives you speech-to-text in the email body. Don't build transcription — parse the notification.

Architecture

Voicemail left → provider auto-transcribes → notification email → IMAP inbox
  ↓ (cron script polls every 3 min, no_agent=True)
Python monitor script: ~/.hermes/scripts/voicemail_monitor.py
  ├─ IMAP search for unread mail FROM the provider
  ├─ Parse: caller #, transcript, extension, timestamp, callback numbers
  ├─ CRM: create lead (new caller) or log activity (returning caller)
  └─ Format clean Telegram message (tappable phone links)
  ↓ (empty stdout = silent = zero tokens when no new voicemails)
Deliver to the right person (extension routing → their Telegram chat)

Components

Monitor script

~/.hermes/scripts/voicemail_monitor.py — takes one argument identifying which inbox to poll (e.g. owner-a / owner-b, one per extension recipient).

Wrapper scripts (required): the Hermes cron script field treats the entire string as a filename — including spaces and arguments. A script that needs an argument cannot be called directly from a cron job. Create one wrapper per variant:

bash
#!/bin/bash
# ~/.hermes/scripts/voicemail_owner_a.sh
exec python3 "$(dirname "$0")/voicemail_monitor.py" owner-a

See references/cron-script-arguments.md for the full pattern.

First-run behavior: with no tracking file, the script marks ALL existing provider emails as processed. This prevents a historical flood of every voicemail ever received from being delivered on day one. Only genuinely new voicemails are delivered going forward.

UID tracking: processed IMAP UIDs persist in ~/.hermes/cron/state/voicemail_{inbox}_uids.json. Survives restarts, prevents re-delivery.

Silent when idle: no new voicemails → empty stdout → the no_agent=True cron delivers nothing. Zero tokens, zero cost when idle.

Cron jobs

One job per inbox:

  • Owner A's inbox → Owner A's Telegram, */3 * * * *
  • Owner B's inbox → Owner B's Telegram, */3 * * * *

Both no_agent=True (script-only, no LLM involvement). The script's stdout is delivered verbatim as the Telegram message.

Use 5-field cron syntax (*/3 * * * *) with recurring repeat — NOT "once in 3m". "once in 3m" is a one-shot: runs once, completes, stops. A dead one-shot looks identical to a healthy recurring job until you check state and enabled in cronjob(action='list').

Email format (Grasshopper example)
  • From: Grasshopper <notifications@grasshopper.com>
  • Subject: Voicemail from (XXX) XXX-XXXX
  • Body fields: Caller, Extension (0 = owner A, 1 = owner B), business line, Timestamp
  • Transcript: inline text between predictable markers
  • Attachment: .mp3 (not processed — the transcript is sufficient)
  • Edge case: some voicemails show "Transcription unavailable" when the provider's own STT fails. Still create the CRM entry; the message shows "(transcript unavailable)". Future enhancement: download the .mp3 and transcribe with Whisper as a fallback.
CRM integration

Writes to the crm-lite SQLite database:

  • New caller: customers record (lead_source='voicemail', lead_status='new')
    • leads + activities + communications records.
  • Returning caller: matched by last 10 digits of the phone number → new activities record only; the message shows "returning caller — N previous".
  • Caller name extraction: parse "Hi, this is X" / "my name is X" from the transcript; fall back to "Caller (XXX) XXX-XXXX".
  • Callback numbers: extract numbers mentioned in the transcript that differ from the caller ID ("call me back at ...").
Telegram message format

All phone numbers are tappable tel: markdown links — tapping opens the dialer on mobile:

📞 **New Voicemail**

**From:** [(555) 123-4567](tel:+15551234567)
👤 **Name (from transcript):** Jane Smith
**When:** 6/24/2026 12:05 PM Eastern Daylight Time

> Hi, this is Jane Smith — I'm calling about the odor in
> a condo we're listing, can you give me a quote...

📋 **New lead** created in CRM — Jane Smith
📞 **Callback:** [(555) 987-6543](tel:+15559876543)

Returning caller:

📞 **New Voicemail**

**From:** [(555) 234-9876](tel:+15552349876) *(returning caller — 2 previous)*
**When:** 3/24/2026 5:03 PM Eastern Daylight Time

> (transcript)

📋 Activity logged in CRM — Jane Smith
Show full SKILL.md (512 more words)Show less

Pitfalls

  1. IDLE vs polling: the IMAP host may support IDLE (check CAPABILITY), but polling is simpler and needs no persistent process. 3-min polling is near-instant for a business getting a few voicemails a day.
  2. First-run flood prevention: deleting the tracking file does NOT replay history — it starts fresh from that point.
  3. "Transcription unavailable" is handled gracefully; no audio fallback is implemented yet.
  4. Phone matching uses the last 10 digits, so (555) 234-9876 and 1-555-234-9876 are the same caller.
  5. Dual delivery: if both inboxes are configured as recipients for the same voicemail, both monitors deliver it. Check the provider's extension routing so each voicemail lands in one inbox.
  6. Progress-message flooding: with tool_progress: all, a long multi-tool turn streams every intermediate step to end-users' chats — it looks like the agent is glitching. Use tool_progress: final for end-user platforms. See the hermes-production-ops skill.
  7. Cascading delegation re-entry: background delegation results re-enter the session as new inbound messages and can trigger unplanned turns. Don't dispatch background delegations from messaging sessions unless explicitly requested — do the work inline.
  8. Gateway restarts confuse end-users: restart notifications look like errors to non-technical users and generate confused "what's wrong?" texts. Suppress with gateway_restart_notification: false and plan restarts deliberately. See the hermes-production-ops skill.
  9. Propose, then build: a monitor that texts real people and writes to a live CRM should never be spun up from a passing comment. Get explicit owner approval on the design first — which inbox, which routing, who gets pinged — before creating scripts, cron jobs, or CRM records.

Monitoring & Recovery

Cron job health

Call cronjob(action='list') from any session. Red flags:

  • last_status: "error" + enabled: false — job failed and auto-disabled
  • state: "completed" + enabled: false — a one-shot that ran once and stopped (you wanted recurring)
  • Healthy: enabled: true, recurring, recent last_run_at

To fix a dead job, try cronjob(action='update', job_id='...') with the correct script path and schedule. A one-shot must be recreated with cronjob(action='create') using recurring cron syntax.

Gateway dependency

The cron script's stdout reaches Telegram through the gateway. If the gateway is down or stuck, delivery stops even when cron jobs are healthy. Under systemd with Restart=always, killing the PID is futile — systemd revives it in seconds. Stopping it properly requires root:

bash
sudo systemctl stop hermes-gateway.service   # stops the service + prevents restart

If the agent has no sudo access it cannot manage the gateway lifecycle — by design. Recognize this after one attempt and ask the operator to run it from SSH, rather than trying five approaches in sequence (each failure is another streamed message under tool_progress: all).

Reusable Pattern

The IMAP-polling + no_agent=True cron architecture works for any structured notification email — contact form submissions, booking confirmations, review alerts. See references/notification-email-monitor.md for a second application (website contact form → CRM + owner's Telegram), including the RFC 2047 subject-encoding pitfall that causes silent parse failures.

Verification

  • First run: silent (marks all existing as processed)
  • Second run: silent (no new voicemails)
  • Simulate a new voicemail by removing a UID from the tracking file → message delivered
  • CRM entry created with lead_source='voicemail'
  • Returning caller detected by phone match → activity logged, no duplicate customer
  • Cron jobs show as recurring every 3 min with no_agent=True

© hewi333, 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 2 other files (references) in skills/grasshopper-voicemail-monitor of hewi333/Mom-n-Pop-Skills.

  • SKILL.md
  • references/cron-script-arguments.md
  • references/notification-email-monitor.md

Open the folder on GitHubat commit 70a2273

Compare with similar skills

Grasshopper Voicemail Monitor 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.

Grasshopper Voicemail Monitor compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Grasshopper Voicemail Monitor this skillhewi333/Mom-n-Pop-Skills122—~2.4kAutomated safety check: NotesMIT
Onboardinggrandamenium/cortextos101—~1.2kAutomated safety check: NotesMIT
Send User MessageTinyAGI/tinyagi3.6k—~829Automated safety check: PassMIT
Cortext Self Diagnosisgrandamenium/cortextos101—~3.7kAutomated safety check: PassMIT
Actionizeinfranodus/skills119—~3.8kAutomated safety check: NotesNone
Cronsmixs/agent-second-brain393—~856Automated safety check: PassMIT

Similar skills

  • Onboarding

    grandamenium/cortextos

    You have just booted for the first time — there is no .onboarded flag in your state directory — and you need to set up your identity, connect your Telegram bot, configure your goals, and establish…

    101 GitHub stars~1.2k tokensUpdated 18 days ago
    Productivity & AutomationAuto-check: notes
  • Send User Message

    TinyAGI/tinyagi

    Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp).

    3.6k GitHub stars~829 tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check passed
  • Cortext Self Diagnosis

    grandamenium/cortextos

    Diagnose cortextOS itself when the framework misbehaves — an agent has gone silent or wedged, agents are crash-looping, Telegram or agent-to-agent messages are not arriving, crons did not fire, an…

    101 GitHub stars~3.7k tokensUpdated 18 days ago
    Productivity & AutomationAuto-check passed
  • Actionize

    infranodus/skills

    Turn insights, findings, or research into an actionable plan with deadlines and scheduled Telegram reminders.

    119 GitHub stars~3.8k tokensUpdated 20 days ago
    Productivity & AutomationAuto-check: notes
  • Cron

    smixs/agent-second-brain

    Управление собственным расписанием — напоминания, рутины, периодические задачи.

    393 GitHub stars~856 tokensUpdated 2 mo ago
    Productivity & AutomationAuto-check passed
  • Task Manager

    0xranx/golembot

    Creates and manages scheduled tasks, cron jobs, recurring reminders, and timers via the Task HTTP API.

    322 GitHub stars~694 tokensUpdated 12 days ago
    Productivity & AutomationAuto-check passed

More from hewi333/Mom-n-Pop-Skills

All 13 skills in this repo
  • Construction Business Agent

    hewi333/Mom-n-Pop-Skills

    Runs a construction company's back office by bridging Gmail, Drive and JobTread: routing email attachments to the PM system, checking project status and sending daily Telegram briefings.

    122 GitHub stars~2.3k tokensUpdated 1 mo ago
    Auto-check: notes
  • Lead-to-Payment Sales Flow

    hewi333/Mom-n-Pop-Skills

    Runs a small service business lead from intake through estimate, owner approval over Telegram, Stripe payment link and customer email draft to payment tracking.

    122 GitHub stars~2.8k tokensUpdated 1 mo ago
    Auto-check: notes
  • QuickBooks Online Integration

    hewi333/Mom-n-Pop-Skills

    Connects a small business to QuickBooks Online for customers, estimates, invoices and payments, using Intuit OAuth 2.0 with token refresh and sandbox or production setups.

    122 GitHub stars~1.9k tokensUpdated 1 mo ago
    Auto-check passed
  • Hermes Production Gateway Operations

    hewi333/Mom-n-Pop-Skills

    Procedures for changing the model, restarting and quietly tuning a live Hermes gateway that serves end-users on messaging platforms such as Telegram.

    122 GitHub stars~2k tokensUpdated 1 mo ago
    Auto-check: warnings
  • CRM Lite

    hewi333/Mom-n-Pop-Skills

    A skill your agent uses when tracking customer interactions, managing leads, or building a lightweight CRM for small businesses without dedicated CRM software.

    122 GitHub stars~1.5k tokensUpdated 1 mo ago
    Auto-check passed
  • Estimator Engine

    hewi333/Mom-n-Pop-Skills

    A skill your agent uses when calculating service estimates for jobs.

    122 GitHub stars~3.1k tokensUpdated 1 mo ago
    Auto-check passed

Works with

Questions about Grasshopper Voicemail Monitor

What does Grasshopper Voicemail Monitor do?

Turn voicemail-drop emails from a virtual phone provider (Grasshopper — or any service that emails transcribed voicemails) into CRM leads and Telegram notifications. Grasshopper Voicemail Monitor is an agent skill from hewi333/Mom-n-Pop-Skills. Turn voicemail-drop emails from a virtual phone provider (Grasshopper — or any service that emails transcribed voicemails) into CRM leads and Telegram notifications.

When should I use Grasshopper Voicemail Monitor?

Grasshopper Voicemail Monitor fits situations like: tasks that involve Scheduled and recurring tasks.

How do I install Grasshopper Voicemail Monitor in Claude Code?

Run `npx skills add hewi333/Mom-n-Pop-Skills --skill grasshopper-voicemail-monitor -a claude-code`. Or copy the skill folder (skills/grasshopper-voicemail-monitor in hewi333/Mom-n-Pop-Skills) into .claude/skills/grasshopper-voicemail-monitor in your project. Claude Code loads it when a task matches its description.

How do I install Grasshopper Voicemail Monitor in Codex?

Run `npx skills add hewi333/Mom-n-Pop-Skills --skill grasshopper-voicemail-monitor -a codex`. Or copy the skill folder (skills/grasshopper-voicemail-monitor in hewi333/Mom-n-Pop-Skills) into .agents/skills/grasshopper-voicemail-monitor in your project. Codex loads it when a task matches its description.

Can I use Grasshopper Voicemail Monitor 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 hewi333/Mom-n-Pop-Skills --skill grasshopper-voicemail-monitor -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/grasshopper-voicemail-monitor, .gemini/skills/grasshopper-voicemail-monitor, .github/skills/grasshopper-voicemail-monitor and .opencode/skills/grasshopper-voicemail-monitor in your project.

What does Grasshopper Voicemail Monitor need to run?

Going by SKILL.md and its folder, Grasshopper Voicemail Monitor needs the command-line tools its instructions call (python and python3). Our summary lists: Python 3.

Does Grasshopper Voicemail Monitor 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 Grasshopper Voicemail Monitor safe to install?

Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Grasshopper Voicemail Monitor use?

Grasshopper Voicemail Monitor is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Grasshopper Voicemail Monitor use?

About 2.4k tokens (SKILL.md is roughly 9.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.4k tokens, read only when the agent opens those files.

What are the alternatives to Grasshopper Voicemail Monitor?

Skills that share tags, products or a category with Grasshopper Voicemail Monitor: Onboarding (grandamenium/cortextos, 101 stars), Send User Message (TinyAGI/tinyagi, 3.6k stars), Cortext Self Diagnosis (grandamenium/cortextos, 101 stars) and Actionize (infranodus/skills, 119 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Grasshopper Voicemail Monitor?

hewi333 (a GitHub user) maintains it in hewi333/Mom-n-Pop-Skills, which has 122 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on September 11, 2026.

Source: hewi333/Mom-n-Pop-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.