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 skills add dnsdoctor/claude-plugin --skill fix-dmarcgit clone --depth 1 https://github.com/dnsdoctor/claude-pluginWrote 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/dnsdoctor/claude-plugin/fix-dmarc)<a href="https://agentmods.dev/skills/dnsdoctor/claude-plugin/fix-dmarc"><img src="https://agentmods.dev/badge/skills/dnsdoctor/claude-plugin/fix-dmarc/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/dnsdoctor/claude-plugin/fix-dmarc"><img src="https://agentmods.dev/badge/skills/dnsdoctor/claude-plugin/fix-dmarc.svg" alt="Reviewed on agentmods" width="80" 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.00094 | $0.05272 |
| Opus 5.5 | $0.00038 | $0.02109 |
| Sonnet 5.5 | $0.00019 | $0.01054 |
| Haiku 4.5 | $0.00009 | $0.00527 |
Grade B, and why
fix-dmarc scanned grade B with 1 finding 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.
Strips warnings and disclaimersmediumAnti-refusal
Omitting safety caveats hides risk from the user and is a common jailbreak preamble.
signature that proves the mail is really yours)"), and don't lecture or scare. Copies of this mod
1 near-identical copy found in the catalogue:
- verify-change — 91% identical, 95 lines differ
How it starts
The opening of the file, as written. The whole thing — 271 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Fix my DMARC
Scan, get the one next record, the user publishes it, check it. Each step ends on the next action, so the user never has to ask "what now?".
Rules
- Never compose or edit a DMARC record. Every record comes from a DNS Doctor tool result and is printed verbatim, host and value exactly as returned. Never rewrite, reformat or "improve" it.
- The ladder is
p=none→p=quarantine→p=reject, one step at a time, never withpct. A scan can justify at mostp=quarantine, and only with alignment evidence.p=rejectneeds weeks of aggregate-report evidence that every real sender passes; no scan gives it. - SPF is diagnose-only. Relay SPF findings; never propose an SPF record or
edit (not even
~allto-all). - The user publishes every DNS change; you never change DNS for them.
- Plain words for a non-expert: see "Explain it for a non-expert" at the end of this skill.
Flow
- Scan. Call
scan_domain. It publishes a public report page, and so doesbuild_dmarc_upgrade(it scans fresh too): if the user wants the domain kept private, run neither and say why. Read DMARC, SPF and DKIM failing-first:temperroris a lookup that did not complete, never a failure;infois "not found", never a failure. If the report hasnot_registered: true, the domain does not resolve: propose no records and ask which domain they meant. - Get the record. Call
build_dmarc_upgradewith the domain. It scans fresh and decides the step itself.recordpresent: print it verbatim and where it goes (_dmarc.<domain>, a TXT record). It replaces their current DMARC record; a domain must have only one. Say in one line what this step changes. End with: "Publish it at your DNS host and tell me when it's done; I'll check it."recordisnull: relay itsrationaleas the answer and stop there. Never fill the gap with a record of your own.policydescribes the returned record, so it isnulltoo; the domain's observed policy is incurrent_policy. Common reasons: already at least as strong as the evidence allows, no alignment signal yet (reporting comes first), the DMARC lookup did not complete (try again shortly), the domain does not exist, or the domain is on Automatic DMARC (DNS Doctor serves the record and the owner applies steps from the dashboard).
- Re-check. When they say it is published, call
check_recordwithkind: dmarcandexpected_valueset to the record. Ondone, callscan_domainonce more and say whether DMARC now passes. Onwait, say when to look again (check_again_after_seconds) and ask them to tell you then. Onedit, relayfound_atif it names where the value landed instead. For "has it reached everywhere?" usecheck_propagationon_dmarc.<domain>, typeTXT(see the verify-change skill). - Next step. After
p=quarantine, say plainly thatp=rejectneeds about 30 days of aggregate-report evidence, which a chat cannot collect. If the user owns the domain and wants that evidence gathered, offer DNS Doctor monitoring, set up as the dns-doctor skill describes; never promise a date.
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 · 271 lines · 94 tokens per session scan B 84be322f0133
fix-dmarc is a skill published in the GitHub repository dnsdoctor/claude-plugin (3 stars, last pushed yesterday), licensed Apache-2.0. It adds 94 tokens to every session and 5,272 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it B with 1 finding (strips warnings and disclaimers). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-11-04.
Other skills, from other repositories
analyzing-email-headers-for-phishing-investigation
Parse and analyze email headers (Received chain, Return-Path, Message-ID) to trace the true origin of a phishing email and validate SPF, DKIM, and DMARC results to confirm or rule out sender spoofing. Use when triaging a suspicious or reported email, investigating a phishing incident, or verifying whether a message's…
analyzing-email-headers-for-phishing-investigation
Parse and analyze email headers to trace the origin of phishing emails, verify sender authenticity, and identify spoofing through SPF, DKIM, and DMARC validation.
email-deliverability
Use when mail already sent lands in spam, is rejected, or fails the Gmail/Yahoo bulk-sender checks and the fix is authentication and reputation, not the sending code: SPF/DKIM/DMARC alignment, domain warmup, spam-complaint rate, one-click unsubscribe, BIMI. NOT putting mail on the wire through a provider API (that is…
email-security
DMARC/SPF/DKIM check, email spoofing, SMTP test, and security header analysis.
analyzing-email-headers-for-phishing-investigation
Parse and analyze email headers to trace the origin of phishing emails, verify sender authenticity, and identify spoofing through SPF, DKIM, and DMARC validation.
email-service-integration
Send reliable transactional emails (order confirmations, shipping updates) via SendGrid, SES, or Postmark with templates and deliverability best practices.