second-reader

A source-checked Markdown knowledge vault that can be opened in Obsidian, a note-taking app. It turns books, PDFs, transcripts, and articles into linked notes with citations and independent verification.

In plain words
What is it for?
Use it to collect research, preserve source locations, connect related notes, and answer questions with claims traced back to the original material.
Why use it?
It reduces the risk of relying on incomplete, invented, or poorly supported notes and answers.

Skill for Claude CodeCodex

Install

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.

agentmods
npx agentmods add skills/mplind/second-reader/second-reader
Any agent
npx skills add mplind/second-reader --skill second-reader
Clone the repo
git clone --depth 1 https://github.com/mplind/second-reader

Made for: Claude Code, Codex.

Per session 191 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 6,783 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00191 $0.06783
Opus 5 $0.00096 $0.03392
Sonnet 5 $0.00038 $0.01357
Haiku 4.5 $0.00019 $0.00678

Measured yesterday against content hash 74d89cee1592, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

second-reader 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.

SKILL.md · 487 lines

How it starts

The opening of the file, as written. The whole thing — 487 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Second Reader

Not a second brain. A second reader: nothing enters this vault, and nothing leaves it for the owner to act on, until an independent second reader has verified it against the sources.

What you are building

A Markdown knowledge repository, one folder that Obsidian opens as a vault, where raw source material becomes distilled, atomic, densely cross-linked, and fully sourced knowledge. The owner asks it questions and gets answers traced to their sources. It compounds: every question answered and every source read is filed back, so the vault gets richer with use.

Two properties separate this from a pile of notes, and both are non-negotiable.

Coverage. A reader of the vault should not need to have read the source. All the core, durable, useful information from a source lives in the vault, cited to its exact location. A shallow summary fails this bar.

Trust. Every claim traces to a source. Nothing is invented, nothing is over-firmed, interpretation is labelled as interpretation. The owner uses this vault to make real decisions and to speak with authority, so a fluent wrong answer is worse than an honest gap.

You hold both properties with one mechanism, described next. It is the heart of this skill.

The one rule: build, then independently validate, then loop

Never ship work from a single pass. A single pass is where defects enter, and the pass cannot see its own blind spots. Instead:

  1. Build the note, page, or answer in one pass (the digest).
  2. Validate it with a separate, independent pass that did not do the build, re-reading the source cold and auditing the build against the bar.
  3. Loop. If validation finds gaps or defects, run the build again with the validator's specific findings as targeted instructions, then validate again. Repeat until a validation round finds nothing.

The loop stops when a round finds nothing, not when the last batch of corrections has been made. The correction pass is itself unvalidated, and fix passes are where new defects sneak in, so a clean round after the last fix is what proves you are done.

Read the full file on GitHub · 487 lines

Changes

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.

  1. yesterday First seen · 487 lines · 191 tokens per session scan A 74d89cee1592

Subscribe to this mod's changes

second-reader is a skill published in the GitHub repository mplind/second-reader (1 stars, last pushed 4d ago), licensed MIT. It adds 191 tokens to every session and 6,783 once invoked, about $0.0010 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-31.

Related

Other skills, from other repositories

design-mcp-server

Design the tool surface, resources, and service layer for a new MCP server. Use when starting a new server, planning a major feature expansion, or when the user describes a domain/API they want to expose via MCP. Produces a design doc at docs/design.md that drives implementation.

cyanheads/obsidian-mcp-server · 62 tokens

add-tool

Scaffold a new MCP tool definition. Use when the user asks to add a tool, create a new tool, or implement a new capability for the server.

cyanheads/obsidian-mcp-server · 35 tokens

api-linter

MCP definition linter rules reference. Use when bun run lint:mcp or bun run devcheck reports a lint error or warning (format-parity, schema-is-object, name-format, server-json-, etc.) and you need to understand the rule, its severity, and how to fix it. Every rule ID the linter emits has an entry in this doc.

cyanheads/obsidian-mcp-server · 86 tokens

api-context

Canonical reference for the unified Context object passed to every tool and resource handler in @cyanheads/mcp-ts-core. Covers the full interface, its RequestContext base, all sub-APIs (ctx.log, ctx.state, ctx.requestInput, ctx.inputs, ctx.enrich, ctx.content), and when to use each.

cyanheads/obsidian-mcp-server · 79 tokens

api-canvas

DataCanvas primitive reference — a Tier 3 SQL/analytical workspace for tabular MCP servers, backed by DuckDB. Use when registering tables from upstream APIs, running ad-hoc SQL across them, and exporting results. Covers the acquire → register → query → export flow, per-table TTL, the token-sharing pattern for…

cyanheads/obsidian-mcp-server · 85 tokens

api-errors

McpError constructor, JsonRpcErrorCode reference, and error handling patterns for @cyanheads/mcp-ts-core. Use when looking up error codes, understanding where errors should be thrown vs. caught, or using ErrorHandler.tryCatch in services.

cyanheads/obsidian-mcp-server · 54 tokens