source-ingester

source-ingester is an agent for Claude Code from cogni-work/insight-wave. It costs 141 tokens per session (7,803 once invoked), scanned C, original, Apache-2.0.

An agent that turns one cached web source into a structured wiki source page. It extracts factual claims from the saved source and stores them with the page.

In plain words
What is it for?
Use it to import cached web pages or interview notes into a research wiki with their verifiable claims.
Why use it?
It organizes fetched material for later research and verification without fetching the URL again. Keeping claims at intake makes later checking possible without another network request.

Agent for Claude Code

Written for Claude Code: ${CLAUDE_PLUGIN_ROOT} variable. Also seen: model in frontmatter; mentions subagents.

Runs only inside its plugin — its command needs a path that Claude Code sets for a plugin’s own hooks and for nothing else. Install the plugin, not this.

Part of the cogni-knowledge plugin — 23 skills, 16 agents shipped together

Good fit Use it to import cached web pages or interview notes into a research wiki with their verifiable claims.

Compare 6 agents from other repositories ↓
Install

Getting it into your agent

This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.

Claude Code
/plugin marketplace add cogni-work/insight-wave
Claude Code
/plugin install cogni-knowledge

Made for: Claude Code.

Or install cogni-knowledge, the plugin that ships this one along with the rest of its 23 skills, 16 agents.

Wrote 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.

agentmods badge for source-ingester

README.md
[![agentmods](https://agentmods.dev/badge/agents/cogni-work/insight-wave/source-ingester/github.svg)](https://agentmods.dev/agents/cogni-work/insight-wave/source-ingester)
Your own site
<a href="https://agentmods.dev/agents/cogni-work/insight-wave/source-ingester"><img src="https://agentmods.dev/badge/agents/cogni-work/insight-wave/source-ingester/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.

agentmods 80×15 button for source-ingester

Your own site · 80×15
<a href="https://agentmods.dev/agents/cogni-work/insight-wave/source-ingester"><img src="https://agentmods.dev/badge/agents/cogni-work/insight-wave/source-ingester.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 141 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 7,803 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 1 finding. A grade says what 26 rules found in the file — not that it is safe.
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.1 $0.00141 $0.07803
Opus 5.5 $0.00056 $0.03121
Sonnet 5.5 $0.00028 $0.01561
Haiku 4.5 $0.00014 $0.00780

Measured 1mo ago against content hash 351053f9e7a2, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade C, and why

source-ingester scanned grade C 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 1mo 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.

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

rm -rf "$WORK_DIR"
cogni-knowledge/agents/source-ingester.md · 272 lines

How it starts

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

Source Ingester Agent (inverted pipeline, Phase 4)

Role

You take one fetched-source entry from <project>/.metadata/fetch-manifest.json, read its cached body, run a claim-extractor over it, and write the resulting wiki page at <wiki-root>/wiki/<page-type-dir>/<slug>.md — defaulting to wiki/sources/<slug>.md (type: source). An additive PAGE_TYPE parameter (default source) selects the page type and landing directory — source → wiki/sources/ (the byte-identical research-path default), interview → wiki/interviews/ (a local interview note from knowledge-ingest-source); Phase 0 step 4 resolves it. You emit a per-source JSON envelope so the calling orchestrator can merge into the project's ingest-manifest.json without re-reading the page.

You never re-fetch the URL. The body is in the cache. You never highlight excerpts in the body — excerpt_position in pre_extracted_claims: is the indexing primitive, per references/inverted-pipeline.md Phase 4 and references/claim-at-ingest.md:57.

Input Parameters

Parameter Required Description
KNOWLEDGE_ROOT Yes Absolute path to the knowledge-base root (the dir containing .cogni-knowledge/). Forwarded to fetch-cache.py as --knowledge-root.
WIKI_ROOT Yes Absolute path to the bound wiki root (the dir containing .cogni-wiki/config.json and wiki/). Resolved by the orchestrator from binding.wiki_path.
URL Yes The original (un-normalized) URL of the source. Becomes the single sources: frontmatter entry on the page.
SLUG Yes Final wiki-page slug, resolved by the orchestrator from the candidate title (with src-<short-hash> fallback if title was empty/unsafe). The ingester treats this as authoritative — see Phase 0 step 2 for the sanity guard.
SUB_QUESTION_REFS Yes Comma-separated sq-NN ids from candidates.json for this URL. Carried through to claim-extractor and used at the wiki-page level (the page is relevant to these sub-questions).
THEME_LABEL No The thematic index category this source files under (the orchestrator resolves it from this URL's first sub_question_ref theme_label, the same value it passes to wiki_index_update.py --category). Written verbatim into the page's theme_label: frontmatter — the authoritative, frontmatter-resident membership signal sub_index.py reads to group the source under its theme (so a curated root index no longer needs to carry per-page bullets for membership). Omit / leave empty when no theme resolves; the field is then dropped (a legacy page with no theme_label: falls back to the portal-bullet map).
MARKET No The run-level market this source was researched for (the orchestrator reads it from plan.json::market — one value per research run, e.g. dach). Written verbatim into the page's market: frontmatter — the frontmatter-resident geography signal the perspectives overlay's Where facet groups by, the source-side sibling of theme_label:. Omit / leave empty when no market resolves; the field is then dropped (a legacy page with no market: simply does not appear in the Where grouping).
PUBLISHER No Registered-domain publisher (no subdomain) — europa.eu, not eur-lex.europa.eu. Carried into the page frontmatter when present.
TITLE_HINT No Source title from the candidate metadata. Used as the page's title: and as the first-line # <title> body header. Falls back to a derived title from the body if absent.
PAGE_TYPE No The wiki page type to write. Defaults to source (so the research-pipeline dispatch is byte-identical). Must be a key of cogni-wiki's _wikilib.PAGE_TYPE_DIRS (source → wiki/sources/, interview → wiki/interviews/); the standalone knowledge-ingest-source surface passes interview for a local interview note. An unrecognized value is treated as invalid_page_type (skip, do not guess).
BATCH_OUTPUT_PATH Yes Absolute path to write the per-source JSON envelope (the orchestrator merges several into ingest-manifest.json).

Read the full file on GitHub · 272 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. 1mo ago Changed · +4 lines 351053f9e7a2
  2. 1mo ago First seen · 268 lines · 141 tokens per session scan C 3697ff0a1c69

Subscribe to this mod's changes

source-ingester is an agent published in the GitHub repository cogni-work/insight-wave (13 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 141 tokens to every session and 7,803 once invoked, about $0.0006 per session on Opus 5.5. A static security scan graded it C with 1 finding (recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other agents, from other repositories

quarto-critic

Adversarial QA agent that compares Quarto HTML against Beamer PDF benchmark. Produces harsh, actionable criticism. Does NOT edit files — read-only analysis only.

brycewang-stanford/Auto-Empirical-Research-Skills · 38 tokens

openwriter-enrichment-minion

Refresh stale OpenWriter loglines through exclusive canonical snapshot claims.

travsteward/openwriter · 19 tokens

report-generator

Use this agent when building the intelligence report synthesis layer — fusing multi-source findings into structured analyst reports, implementing confidence scoring, generating PDF/JSON exports, and designing the report data models. Examples: Context: Building the final output layer of the OSINT pipeline. user: "Build…

daemon-blockint-tech/Grond · 195 tokens

chronology-builder

Isolated worker that reads case documents iteratively and extracts sourced timeline events (date, neutral fact, mandatory document+locus provenance, undisputed/alleged/contested status, party attribution). Deduplicates and cross-references across documents and languages. Emits events.json for the legal-chronology…

fedec65/bettercallclaude · 103 tokens

flow-documenter

Use this agent when you need to generate comprehensive, natural language documentation for a Power Automate flow from its JSON definition. This agent should be invoked when:\n\n- A user provides a flow.json file and requests documentation\n- A new flow has been created and needs to be documented\n- An existing flow…

MacroMan5/AutomationHelper_plugins · 368 tokens

ops-documentacao

Especialista em documentação interna estruturada (Notion, Confluence, GitBook, wikis) para PMEs aplicando framework Diátaxis (Procida), BPMN, ITIL v4, ISO 9001, RACI. Use proativamente quando o usuário (a) escrever SOP / procedimento operacional padrão com estrutura completa (id, owner, escopo, ferramentas, fluxo…

asv-digital/agents-funcionarios · 0 tokens