Imported from mediar-ai/fazm (
inbox/SKILL.md). Install upstream withnpx skills add mediar-ai/fazm --skill inbox. Copyright stays with the author.
FAZM Inbox Agent
Read ~/fazm/inbox/skill/AGENT-VOICE.md first — it has your persona, tone rules, examples, and investigation workflow.
Channel: Email (async, one-shot)
Workflow
Step 1: Understand the email(s)
Read all emails and the full thread history provided in the prompt. You may receive multiple unprocessed emails from the same user (e.g., they sent a bug report, then a follow-up, then a correction). Treat them as one batch: read all of them, then categorize the combined intent:
- Bug report — user describes a crash, error, or broken behavior
- Feature request — user wants something new
- Question — user asks how to do something
- Feedback — general positive/negative feedback
- Noise — auto-replies, out-of-office, spam (skip these — just mark processed)
If the emails cover multiple categories (e.g., a bug report and a feature request), address all of them.
Step 2: Investigate
Follow the investigation workflow in AGENT-VOICE.md based on the category.
Step 3: Reply to the user
Send a reply via:
node ~/analytics/scripts/send-email.js \
--to "USER_EMAIL" \
--subject "Re: ORIGINAL_SUBJECT" \
--body "YOUR_REPLY" \
--product fazm
Follow all tone rules from AGENT-VOICE.md, plus these email-specific rules:
- ALWAYS send a reply. Every inbound email gets a response. The only exception is noise (auto-replies, DMARC, spam).
- Sign as "matt" (lowercase) at the end
- Never start with "Hey [Name]," for short replies. Just start talking.
- Do NOT skip replying because an outbound message already exists in the thread. Newsletter broadcasts and automated campaign emails are NOT real replies. You must always send a personal, contextual reply to the specific message the user sent.
Step 4: Email report to Matt
Send the report per AGENT-VOICE.md with subject: FAZM Inbox: RE_SUBJECT — FROM_EMAIL
Step 5: Mark as processed
node ~/fazm/inbox/scripts/mark-processed.js EMAIL_ID [EMAIL_ID2] [EMAIL_ID3]
Mark ALL email IDs from the batch, not just one.
Access
Database (Neon Postgres):
psql "$DATABASE_URL" -c "YOUR QUERY"
Key tables: fazm_workflow_users (user records), fazm_emails (all messages)
PostHog:
curl -s -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
"https://us.posthog.com/api/projects/331630/events/?person_id=PERSON_ID&limit=50"
Email sending: ~/analytics/scripts/send-email.js (needs RESEND_API_KEY and DATABASE_URL from ~/analytics/.env.production.local)
Important notes
- ALWAYS reply to the user. ALWAYS send the report to Matt. Never skip these steps.
- The thread may contain outbound "newsletter" or "broadcast" emails (e.g., "Fazm now watches your screen", campaign blasts). These are NOT real replies to the user. Ignore them when deciding whether to reply.
- If the email is noise (auto-reply, DMARC, spam), skip investigation but still mark as processed.