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/gsd-build/get-shit-doneWrote 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/gsd-build/get-shit-done/gsd-doc-synthesizer)<a href="https://agentmods.dev/agents/gsd-build/get-shit-done/gsd-doc-synthesizer"><img src="https://agentmods.dev/badge/agents/gsd-build/get-shit-done/gsd-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/gsd-build/get-shit-done/gsd-doc-synthesizer"><img src="https://agentmods.dev/badge/agents/gsd-build/get-shit-done/gsd-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.02315 |
| Opus 5 | $0.00039 | $0.01157 |
| Sonnet 5 | $0.00016 | $0.00463 |
| Haiku 4.5 | $0.00008 | $0.00231 |
Grade A, and why
gsd-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 11d 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.
Copies of this mod
8 near-identical copies found in the catalogue:
- gsd-doc-synthesizer — 100% identical, 90 lines differ
- gsd-doc-synthesizer — 100% identical, 7 lines differ
- gsd-doc-synthesizer — 100% identical, 4 lines differ
- gsd-doc-synthesizer — 100% identical, 0 lines differ
- gsd-doc-synthesizer — 95% identical, 7 lines differ
- gtd-doc-synthesizer — 95% identical, 12 lines differ
- gsd-doc-synthesizer — 88% identical, 69 lines differ
- ferrox-doc-synthesizer — 81% identical, 75 lines differ
How it starts
The opening of the file, as written. The whole thing — 205 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 gsd-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.
<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>
<precedence_rules>
Default ordering: ADR > SPEC > PRD > DOC. Higher-precedence sources win when content contradicts.
Per-doc override: If a classification has a non-null precedence integer, it overrides the default for that doc only. Lower integer = higher precedence.
LOCKED decisions:
- An ADR with
locked: trueproduces decisions that cannot be auto-overridden by any source, including another LOCKED ADR. - LOCKED vs LOCKED: two locked ADRs in the ingest set that contradict → hard BLOCKER, both in
newandmergemodes. Never auto-resolve. - LOCKED vs non-LOCKED: LOCKED wins, logged in auto-resolved bucket with rationale.
- Merge mode, LOCKED in ingest vs existing locked decision in CONTEXT.md: hard BLOCKER.
Same requirement, divergent acceptance criteria across PRDs:
Do NOT pick one. Treat as one requirement with multiple competing acceptance variants. Write all variants to the competing-variants bucket for user resolution.
</precedence_rules>
If any classification is UNKNOWN with low confidence, note it — these will surface as unresolved-blockers (user must type-tag via manifest and re-run).
If cycles exist:
- Record each cycle as an unresolved-blocker entry
- Do NOT proceed with synthesis on the cyclic set — synthesis loops produce garbage
- Docs outside the cycle may still be synthesized
Cap: Max traversal depth 50. If the ref graph exceeds this, abort with a BLOCKER entry directing user to shrink input via --manifest.
-
ADRs →
INTEL_DIR/decisions.md- One entry per ADR: title, source path, status (locked/proposed), decision statement, scope
- Preserve every decision separately; synthesis happens in the next step
-
PRDs →
INTEL_DIR/requirements.md- One entry per requirement: ID (derive
REQ-{slug}), source PRD path, description, acceptance criteria, scope - One PRD usually yields multiple requirements
- One entry per requirement: ID (derive
-
SPECs →
INTEL_DIR/constraints.md- One entry per constraint: title, source path, type (api-contract | schema | nfr | protocol), content block
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.
- 11d ago First seen · 205 lines · 78 tokens per session scan A 397e4b3a35c5
gsd-doc-synthesizer is an agent published in the GitHub repository gsd-build/get-shit-done (64,567 stars, last pushed 3mo ago), licensed MIT. It adds 78 tokens to every session and 2,315 once invoked, about $0.0004 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-30.
Other agents, from other repositories
gsd-doc-classifier
Classifies a single planning document as ADR, PRD, SPEC, DOC, or UNKNOWN. Extracts title, scope summary, and cross-references. Spawned in parallel by /gsd:ingest-docs. Writes a JSON classification file and returns a one-line confirmation.
gsd-doc-classifier
Classifies a single planning document as ADR, PRD, SPEC, DOC, or UNKNOWN. Extracts title, scope summary, and cross-references. Spawned in parallel by /gsd:ingest-docs. Writes a JSON classification file and returns a one-line confirmation.
gsd-executor
Executes GSD plans with atomic commits, deviation handling, checkpoint protocols, and state management. Spawned by execute-phase orchestrator or execute-plan command.
gsd-phase-researcher
Researches how to implement a phase before planning. Produces RESEARCH.md consumed by gsd-planner. Spawned by /gsd:plan-phase orchestrator.
gsd-planner
Creates executable phase plans with task breakdown, dependency analysis, and goal-backward verification. Spawned by /gsd:plan-phase orchestrator.
gsd-debug-session-manager
Manages multi-cycle /gsd:debug checkpoint and continuation loop in isolated context. Spawns gsd-debugger agents, handles checkpoints via AskUserQuestion, dispatches specialist skills, applies fixes. Returns compact summary to main context. Spawned by /gsd:debug command.