Borrowing it
Nothing to install: this file belongs to wintermeyer/heinzel. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/wintermeyer/heinzel/main/.claude/skills/heinzel-email/SKILL.mdgit clone --depth 1 https://github.com/wintermeyer/heinzelWrote 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/wintermeyer/heinzel/heinzel-email)<a href="https://agentmods.dev/skills/wintermeyer/heinzel/heinzel-email"><img src="https://agentmods.dev/badge/skills/wintermeyer/heinzel/heinzel-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.00155 | $0.06670 |
| Opus 5 | $0.00077 | $0.03335 |
| Sonnet 5 | $0.00031 | $0.01334 |
| Haiku 4.5 | $0.00015 | $0.00667 |
Grade D, and why
heinzel-email scanned grade D with 2 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 7d ago.
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.
Asks for rootmediumPrivilege escalation
A mod that escalates privileges can change anything on the machine, not only the project.
The install step (5R.3) still requires root/sudo — that is Reaches for credential fileshighPrivilege escalation
SSH keys, cloud credentials, git-credentials, .npmrc, /etc/shadow: reading these is how a config file becomes a credential leak.
material, `shadow`, `msmtprc`, `.netrc`, cloud How it starts
The opening of the file, as written. The whole thing — 609 lines — stays where its author put it; the contents beside it link to each section on GitHub.
heinzel-email
Send ad-hoc text and file attachments by email about a managed server. The report content is about the server; whether the mail leaves from the server or from your workstation is a per-host preference that's asked once and remembered.
The full heinzel first-connection onboarding pipeline still applies before any of this runs.
Workflow
-
Onboarding pipeline. Run
rules/first-connection.mdin full. No "quick question" exception — even a one-line email still goes through blacklist/read-only check, DNS alias detection, SSH user lookup, OS detection, server memory load, and activity check. -
Load overrides. Apply the heinzel rule-override chain (later wins):
memory/custom-rules/heinzel-email.mdif present.memory/servers/<host>/memory.md(recipient, source, transport, policies — see "Per-server memory" below).memory/servers/<host>/rules.mdif present.memory/custom-rules/all.mdis already loaded by the session-start preflight — do not re-read it.
-
Resolve recipient. In order of precedence:
- User said an explicit address ("send to alice@…", "mail it to [email protected]") → use that. Don't override it with stored values.
- Per-server memory —
memory/servers/<host>/memory.mdhas anAlert email:line (the established pattern) → use that. - "Send me" shorthand ("email me", "send me", "mail it
to me") and the user's default email is recorded in
Claude Code's auto-memory (the
MEMORY.mdindex will show a "Default email" entry under User → load that file and use the address) → use it without prompting. Still write the address back to the per-servermemory.mdas- Alert email: <addr>on first use so the skill stays self-contained for future runs. - Otherwise, ask once via the picker, then persist to
memory.mdas in (3).
- Never guess or invent a recipient.
-
Consent gate 0 — sender side (local vs remote). Check
memory.mdforEmail source: local | remote:local→ jump to step 5L.remote→ continue with step 5R.- Missing → ask the user with four options:
"First-time email for
<host>. Send from where?"- Remote — once: send from the server this time, ask again next time.
- Remote — always for this host: write
Email source: remoteintomemory.md, then continue to 5R. - Local — once: send from this workstation this time, ask again next time.
- Local — always for this host: write
Email source: localintomemory.md, then jump to 5L.
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.
- 7d ago First seen · 609 lines · 155 tokens per session scan D 4aa809abda1c
heinzel-email is a skill published in the GitHub repository wintermeyer/heinzel (90 stars, last pushed 19d ago), licensed MIT. It adds 155 tokens to every session and 6,670 once invoked, about $0.0008 per session on Opus 5. A static security scan graded it D with 2 findings (asks for root, reaches for credential files). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
warpctrl
Control and inspect the currently running local Warp application with the warpctrl CLI. Use this skill whenever the user asks the agent to manipulate Warp's own windows, tabs, panes, sessions, input buffer, themes, or UI surfaces; open a file in Warp; inspect local Warp state; or explain how to invoke Warp Control…
change-keybinding
Customize Warp keyboard shortcuts (keybindings, keymappings) by editing the user's keybindings.yaml file. Use when the user asks to remap a key combination, rebind an action, change a shortcut, or remove a default keybinding (e.g. "change ctrl+space to ctrl+s", "rebind the command palette to cmd+p", "remove the…
create-tab-config
Create new Warp tab config TOML files from natural-language requests. Use when the user wants a new tab config, a new tab layout, or asks for a slash command to generate a tab config.
Google Workspace integration — Gmail, Drive, Calendar, Contacts, Tasks, and Sheets via gogcli.
notion
Read, create, update, and manage Notion pages, databases, and blocks.
automations
YOU OWN THIS. Wolffish's scheduled automations (the heartbeat) — list, create, edit, delete, check status, and run jobs that fire on a schedule and run autonomously. Reach for it by INTENT whenever a need or issue touches a schedule, a recurring job, or the heartbeat — even when the user never says "automation".