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/wintermeyer/heinzel/heinzel-securitynpx skills add wintermeyer/heinzel --skill heinzel-securitygit 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-security)<a href="https://agentmods.dev/skills/wintermeyer/heinzel/heinzel-security"><img src="https://agentmods.dev/badge/skills/wintermeyer/heinzel/heinzel-security.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 | $0.00137 | $0.01114 |
| Opus 5 | $0.00068 | $0.00557 |
| Sonnet 5 | $0.00027 | $0.00223 |
| Haiku 4.5 | $0.00014 | $0.00111 |
Grade A, and why
heinzel-security 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 5d 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.
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.
How it starts
The opening of the file, as written. The whole thing — 97 lines — stays where its author put it; the contents beside it link to each section on GitHub.
heinzel-security
Security configuration audit for a server or the local machine. Never run automatically — only on explicit user request. The whole of the heinzel first-connection onboarding pipeline still applies before any of this runs.
Workflow
-
Load overrides. Before running any check, apply the full heinzel rule-override chain (later wins):
memory/custom-rules/heinzel-security.mdif present (global custom overrides for this skill —## Add:,## Replace:,## Remove:prefixes perCLAUDE.md).memory/servers/<hostname>/memory.mdfor context (services, legitimate external bindings, VPN role).memory/servers/<hostname>/rules.mdif present (per-server rule overrides — same prefixes as above, highest precedence). Note:memory/custom-rules/all.mdis already loaded by the CLAUDE.md session-start preflight — do not re-read it.
-
Run checks in 2–3 parallel batches for speed — not one massive batch. If a single parallel tool call errors, Claude Code cancels sibling calls, so grouping limits blast radius. Put commands with complex quoting (awk, sed) in their own batch so a quoting mistake does not cancel simple commands.
-
SSH quoting warning: avoid awk's
!~operator — zsh interprets!as history expansion and mangles it even inside quotes. Use positive~match withnextinstead (see System Accounts check inreferences/user-accounts.md). -
Select checks per the references below. Use the preferred method when privileges allow; fall back to the unprivileged method otherwise.
-
Emit the report using the format in
references/report-format.md. -
Do NOT update
memory.md. These are config observations, not state changes. Memory tracks what is installed and running, not security posture details. -
Log the summary to the system journal and mirror to the local changelog per
rules/changelog.md:logger -t heinzel "Security audit: 1 WARN, 1 INFO"
What ships with it
10 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/file-permissions.md 1.8 KB
- references/firewall.md 1.1 KB
- references/intrusion-prevention.md 339 B
- references/kernel-os.md 919 B
- references/listening-services.md 1.1 KB
- references/macos-security.md 345 B
- references/report-format.md 1.2 KB
- references/ssh.md 3.5 KB
- references/unprivileged.md 1.2 KB
- references/user-accounts.md 1.3 KB
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.
- 5d ago First seen · 97 lines · 137 tokens per session scan A 3b4631868a57
heinzel-security is a skill published in the GitHub repository wintermeyer/heinzel (90 stars, last pushed 17d ago), licensed MIT. It adds 137 tokens to every session and 1,114 once invoked, about $0.0007 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-08-30.
Other skills, from other repositories
claude-api
Build, debug, and optimize Claude API / Anthropic SDK apps. Apps built with this skill should include prompt caching. Also handles migrating existing Claude API code between Claude model versions (4.5 → 4.6, 4.6 → 4.7, retired-model replacements). TRIGGER when: code imports anthropic/@anthropic-ai/sdk; user asks for…
create-skill
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
gui-onboarding-verification-skill
GUI desktop app only. Launch two parallel Oz cloud agents with computer use to download and install the latest stable Linux Warp build, capture screenshots while walking through first-time onboarding in both logged-out and logged-in states, then selectively fan out follow-up cloud agents for distinct onboarding…
logging-and-error-reporting
How and when to log (log:: levels, safe macros) and report errors to Sentry (reporterror!) in the Warp codebase. Use when adding or reviewing any logging or error reporting — picking a log level, deciding log vs. reporterror!, keeping sensitive data out of logs, or surfacing an error to Sentry.
gui-integration-test
GUI desktop app only. Writes, runs, and debugs Warp integration tests using the custom Builder/TestStep framework in crates/integration. Use when adding a new integration test, fixing a failing integration test, wiring a test into the manual runner or nextest suite, or verifying end-to-end UI and terminal behavior in…
gui-settings-ui
GUI desktop app only. How to build a Settings page in the Warp client (app/src/settingsview) so its widgets and settings search behave correctly — picking a PageType, deciding whether a heading belongs in the page-title slot or inside a widget, gating a widget, and scoping searchterms per widget. Use when adding or…