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/melodic-software/claude-code-plugins/map-corpusnpx skills add melodic-software/claude-code-plugins --skill map-corpusgit clone --depth 1 https://github.com/melodic-software/claude-code-pluginsWrote 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/melodic-software/claude-code-plugins/map-corpus)<a href="https://agentmods.dev/skills/melodic-software/claude-code-plugins/map-corpus"><img src="https://agentmods.dev/badge/skills/melodic-software/claude-code-plugins/map-corpus.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.00211 | $0.03636 |
| Opus 5 | $0.00105 | $0.01818 |
| Sonnet 5 | $0.00042 | $0.00727 |
| Haiku 4.5 | $0.00021 | $0.00364 |
Grade A, and why
map-corpus 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.
How it starts
The opening of the file, as written. The whole thing — 217 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Map Corpus
Turn a topic plus seed URLs into a corpus slice that PROVES what was read: every discovered URL
classified, every in-corpus resource decomposed by a deterministic script into a node manifest,
every node carrying a relevance verdict backed by a byte-verified quote. The mapper supplies
the layer docpage-digest names as its own non-goal ("Does not crawl. One page per run")
without reimplementing, renaming, or modifying it.
The failure this skill exists to prevent: an agent handed a multi-page corpus glosses content and asserts it read everything. Here the denominators are never the agent's. Scripts emit the URL set from discovery snapshots and the node set from resource snapshots, and script gates diff the agent's classifications and verdicts against both.
Prerequisite (declared at point of use): python3 (3.9+) on PATH for the bundled scripts
under this skill's discovery/, extraction/, and verification/ directories. Missing Python
means say so and stop. There is no agent-judgment fallback for a deterministic denominator.
Arguments
<topic>: short phrase naming the corpus; slugified into the slice name.<seed-url>...: one or more starting URLs.--epic <slug>, the epic under the work root (default: the topic slug).--max-resources N, the in-corpus bound declared in the link map (default 30). A breach stops the run and re-asks; it never silently proceeds.--granularity deep|section. JUDGMENT granularity, never row granularity: the inventory always carries exactly one row per manifest node (the gate's coverage invariant).deep(default) judges each node independently;sectionlets child rows inherit their top-level section's verdict/rationale (viaparent_id), each keeping its own in-node evidence quote. Granularity and depth are per-invocation arguments by design, notuserConfig.
Work root
Configured library dir: ${user_config.library_dir}
The work root resolves through the knowledge plugin's library_dir seam (the topic-docs
carve-out, not memory_dir, not .claude/, not ${CLAUDE_PLUGIN_DATA}). Resolve once before
the first write and record the absolute path in the checklist: unset or a surviving
${user_config.library_dir} token means the default .; relative resolves against
${CLAUDE_PROJECT_DIR}; absolute and ~ are verbatim; a ${NAME}/%NAME% env-var reference is
read by you, never handed to a shell, an unset variable must fail loudly, not expand empty.
What ships with it
12 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.
- discovery/check_linkmap.py 11 KB runs code
- discovery/link-map-format.md 7.1 KB
- discovery/parse_discovery.py 8.4 KB runs code
- discovery/test_discovery.py 16 KB runs code
- evals/evals.json 4.4 KB
- extraction/extract_nodes.py 15 KB runs code
- extraction/node-manifest-format.md 6.9 KB
- extraction/test_extract_nodes.py 11 KB runs code
- lib/gate_common.py 1006 B runs code
- verification/check_inventory.py 13 KB runs code
- verification/inventory-format.md 5.1 KB
- verification/test_check_inventory.py 15 KB runs code
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 · 217 lines · 211 tokens per session scan A c0334a689790
map-corpus is a skill published in the GitHub repository melodic-software/claude-code-plugins (14 stars, last pushed yesterday), licensed MIT. It adds 211 tokens to every session and 3,636 once invoked, about $0.0011 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-03.
Other skills, from other repositories
phpunit-unit-test-reviewing
Internal sub-skill. Do not auto-activate. Use only when explicitly invoked by name by another skill or agent.
structuring-documentation
Use when writing, editing, auditing, splitting, or measuring Markdown documentation surfaces — README.md, AGENTS.md, CLAUDE.md, and docs/ siblings. Triggers include "is this doc too long", "split this README", "measure the docs", "where does this documentation belong", "audit the documentation", and any request to…
phpunit-integration-test-generation
Use this skill when the user asks to generate, write, or create integration tests for a Shopware 6 source class whose contract requires wired-up code — phrases like "generate integration tests for X", "write an integration test for this controller", "test this indexer", "create an integration test for the message…
phpunit-unit-test-writing
Use this skill when the user asks to write, generate, create, or add PHPUnit unit tests for a Shopware 6 source class — phrases like "write unit tests for X", "generate tests for ClassName", "create PHPUnit tests", "add test coverage", "test this class", "cover this with tests", "I need tests for", "unit test this"…
phpunit-migration-test-generation
Use this skill when the user asks to generate, write, or create migration tests for a Shopware 6 migration class — phrases like "generate migration tests", "write a migration test", "create migration test", "test this migration", "test Migration1234Foo". Analyzes the source migration's SQL operations to pick an…
phpunit-test-reconciling
Internal sub-skill. Do not auto-activate. Use only when explicitly invoked by name by another skill or agent.