Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/aeonfun/aeon/send-emailnpx skills add aeonfun/aeon --skill send-emailgit clone --depth 1 https://github.com/aeonfun/aeonWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/aeonfun/aeon/send-email)<a href="https://agentmods.dev/skills/aeonfun/aeon/send-email"><img src="https://agentmods.dev/badge/skills/aeonfun/aeon/send-email.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00039 | $0.03206 |
| Opus 5 | $0.00019 | $0.01603 |
| Sonnet 5 | $0.00008 | $0.00641 |
| Haiku 4.5 | $0.00004 | $0.00321 |
Grade A, and why
send-email scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
Copies of this mod
1 near-identical copy found in the catalogue:
- send-email — 100% identical, 0 lines differ
How it starts
The opening of the file, as written. The whole thing — 133 lines — stays where its author put it; the contents beside it link to each section on GitHub.
${var} — who to email and why, e.g.
[email protected] | subject=Intro | about=propose a 20-min call on X. Freeform also works ("email [email protected] to follow up on yesterday's demo").cc=is optional. The reply-shaperevise:<instruction>(Telegram force-reply, e.g.revise:make it warmer) refines the last composed draft for review only — it never sends.
Read soul/ (for voice) and memory/MEMORY.md (for context) before composing.
What this does
Composes a single, purposeful email and sends it in-run via Resend (./secretcurl), gated by the shared send caps + kill-switch and logged to the shared ledger memory/email-log.json. The send is irreversible, so it's the skill's final action, behind a set of fail-closed checks (see "Send (in-run)" below): a skipped or failed check means do not send, never send anyway. This is the general-purpose sibling of disclosure-emailer (vuln-scanner Arm C) — same caps + audit CC, any recipient and purpose instead of only vuln maintainers.
This is not a bulk or cold-outreach tool. One deliberate recipient per run, with a genuine reason to write. If the request reads as mass-mailing, list-blasting, or spam, refuse and log SEND_EMAIL_REFUSED: not a 1:1 purposeful email.
Steps
Revise intercept (Telegram force-reply — re-stage for review only, NEVER auto-send)
Before anything else, if ${var} starts with revise:, the operator replied to a "refine this email?" prompt. Handle it here and end the run — the normal compose/send flow below does NOT run, and nothing is ever sent:
- Strip the prefix. The instruction is
${var#revise:}(keep any inner colons), e.g.make it warmer,shorten to 3 lines,drop the meeting ask. - Load the last draft from
memory/drafts/send-email-latest.md(the review copy the normal run saves in step 4). If it's missing or empty, there's nothing to refine: send./notify "Nothing to revise yet — compose an email first, then reply here to refine it."and end the run. - Regenerate the email applying the instruction — re-read
soul/for voice; keep the same recipient / cc / subject unless the instruction changes them; keep the body as the exact send-ready text (operator-only notes stay out). - Re-stage for REVIEW ONLY. Overwrite
memory/drafts/send-email-latest.mdwith the revised draft. Do NOT run the Send step. Arevise:reply never sends — the operator confirms a real send by invoking send-email normally (which re-composes and sends in-run). - Notify the operator with the full revised draft for review — multi-line ⇒
./notify -f <file>:revised draft (not sent) → <to>: <subject> <body> - Re-offer a further revision (the operator is iterating — skip the daily dedup guard here):
./notify "Want another pass? Reply with a change and I'll revise the draft again (still won't send)." \ --force-reply --placeholder "e.g. make it warmer" \ --context "send-email::revise" - Log
- SEND_EMAIL_REVISED (draft re-staged for review, not sent)under a### send-emailheading inmemory/logs/${today}.md, then end the run.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 133 lines · 39 tokens per session scan A 67d4c34d7fcd
send-email is a skill published in the GitHub repository aeonfun/aeon (716 stars, last pushed today), licensed MIT. It adds 39 tokens to every session and 3,206 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-05.
Other skills, from other repositories
octopus-quick
Quick execution for ad-hoc tasks without workflow overhead. Use when: Use this skill when user says "quick fix", "ad-hoc task", or explicitly. requests fast execution without full workflow overhead.
skill-factory
Analyze session work and automatically convert reusable patterns into Claude Code skills. Use when: "세션을 스킬로", "스킬 만들어", "이거 스킬로", "skill factory", "이 작업 자동화해", "스킬 추출", "make this a skill", "extract skill", "convert to skill", "스킬 팩토리", "자동 스킬 생성". Differs from skill-creator (archived) and manage-skills (drift…
caveman-help
Quick-reference card for all caveman modes, skills, and commands. One-shot display, not a persistent mode. Trigger: /caveman-help, "caveman help", "what caveman commands", "how do I use caveman".
relay
Session relay — compresses what's been done so far (writes a one-liner for /compact) and generates a "next task" prompt (a baton) for the user to hand off. Use on requests like "relay / hand off / next session / continue after compact / baton / handoff / clean up context and continue next task." Does not run /compact…
flowcraft-config
Author, validate, and troubleshoot complete FlowCraft deployment configuration (deploy.yaml with the runtime section, inference/workspace/sandbox/tool sub-documents, core/memory contracts, and graph JSON node wiring). Use when writing or reviewing FlowCraft configs, assembling an agent deployment, adding…
toolbox
Pre/post dev toolbox — named bundles of skills/agents loaded before development work and councils of experts invoked after. Run /toolbox or the toolbox.py CLI to list, activate, initialize, export, import, and validate toolboxes. Invoke at the start or end of a dev session, when setting up a new repo, or when sharing…