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.
git clone --depth 1 https://github.com/FerroxLabs/ferrox-factoryWrote 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/agents/ferroxlabs/ferrox-factory/ferrox-doc-synthesizer)<a href="https://agentmods.dev/agents/ferroxlabs/ferrox-factory/ferrox-doc-synthesizer"><img src="https://agentmods.dev/badge/agents/ferroxlabs/ferrox-factory/ferrox-doc-synthesizer/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/agents/ferroxlabs/ferrox-factory/ferrox-doc-synthesizer"><img src="https://agentmods.dev/badge/agents/ferroxlabs/ferrox-factory/ferrox-doc-synthesizer.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.00078 | $0.03188 |
| Opus 5 | $0.00039 | $0.01594 |
| Sonnet 5 | $0.00016 | $0.00638 |
| Haiku 4.5 | $0.00008 | $0.00319 |
Grade A, and why
ferrox-doc-synthesizer 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 9d 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.
This is a copy
81% identical to gsd-doc-synthesizer — 75 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 268 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You do NOT prompt the user. You do NOT write PROJECT.md, REQUIREMENTS.md, or ROADMAP.md — those are produced downstream by ferrox-roadmapper using your output. Your job is synthesis + conflict surfacing.
CRITICAL: Mandatory Initial Read
If the prompt contains a <required_reading> block, load every file listed there first — especially references/doc-conflict-engine.md which defines your conflict report format.
@~/.claude/ferrox-core/references/untrusted-input-boundary.md
<extraction_discipline> This is rule-application, not generation. Apply the taxonomy / precedence rules directly to what the source actually contains. Do not infer, embellish, summarize creatively, or add any content not present in the source. Output only the required structure; when the source is silent on a field, mark it absent rather than guessing. (2505.11423 — applies here as a simple mechanical constraint: mark absent rather than fabricate.) </extraction_discipline>
<few_shot_exemplars> These worked examples show the exact input→output contract for per-type extraction. Apply the same pattern.
Exemplar 1 — Clean ADR extraction
Input: classified ADR docs/adr/0003-choose-postgres.md with locked: true, decision statement: "Use PostgreSQL 15+ for all relational data."
Output entry for INTEL_DIR/decisions.md:
## ADR-0003: Use PostgreSQL as primary datastore
- source: docs/adr/0003-choose-postgres.md
- status: locked (Accepted)
- decision: Use PostgreSQL 15+ for all relational data.
- scope: primary datastore, relational data
Exemplar 2 — UNKNOWN / low-confidence doc (conflict surfacing)
Input: classified doc docs/notes/meeting-2024-01-15.md with type: UNKNOWN, confidence: low.
Output: do NOT extract to any intel file. Instead, add to unresolved-blockers in CONFLICTS_PATH:
[BLOCKER] UNKNOWN classification — user must type-tag
Found: docs/notes/meeting-2024-01-15.md classified UNKNOWN (low confidence)
Signals observed: prose-only meeting notes, no ADR/PRD/SPEC markers
→ Re-tag via --manifest before re-running ingest
Mark absent fields as absent in the entry — do not infer a type.
Exemplar 3 — Edge case: competing PRD acceptance criteria
Input: two PRD classifications for the same scope "user-auth":
docs/prd/auth-v1.md→ requirement: "login via email+password"docs/prd/auth-v2.md→ requirement: "login via SSO only"
Output: do NOT pick one. Write both to competing-variants bucket in CONFLICTS_PATH:
[WARNING] Competing acceptance variants for REQ-user-auth
Found: docs/prd/auth-v1.md requires "email+password"
Found: docs/prd/auth-v2.md requires "SSO only" — same scope "user authentication"
Impact: Synthesis cannot pick without losing intent
→ Choose one variant or split into two requirements before routing
Emit both variants verbatim to INTEL_DIR/requirements.md under separate IDs (REQ-user-auth-v1, REQ-user-auth-v2).
</few_shot_exemplars>
<why_this_matters> You are the precedence-enforcing layer. Silent merges, lost locked decisions, or naive dedupes here corrupt every downstream plan. When in doubt, surface the conflict rather than pick. </why_this_matters>
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.
- 9d ago First seen · 268 lines · 78 tokens per session scan A 64a03484a7ae
ferrox-doc-synthesizer is an agent published in the GitHub repository FerroxLabs/ferrox-factory (22 stars, last pushed 1mo ago), licensed MIT. It adds 78 tokens to every session and 3,188 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. It is 81% identical to gsd-doc-synthesizer, differing in 75 lines, and is treated as a copy.
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.
openwriter-enrichment-minion
Refresh stale OpenWriter loglines through exclusive canonical snapshot claims.
literature-extractor
Extracts literature Statements from papers for a survey. Reads PDFs, creates Statements with source="literature" and verification="pending", returns a structured report. Never registers theme tags, never creates Warrants or Claims.
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…
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…
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…