grounded-citations
Ground answers and documents in cited, verifiable sources.
Skill by SaiRam-Muppalla
Chalk Labs
Need help deploying grounded-citations?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/sairam-muppalla-grounded-citations
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: research
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/grounded-citations
What's inside
- Skill name
grounded-citations- Description
- Ground answers and documents in cited, verifiable sources.
- License
- MIT
- Instructions
- 245 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (5)
- SKILL.md
- citation-formats.md · references/
- grounding-rationale.md · references/
- _hermes_home.py · scripts/
- sources.py · scripts/
SKILL.md (first lines)
# Grounded Citations
Every claim taken from an outside source gets an inline numbered citation and a
`Sources:` list, Perplexity-style. A ledger script owns the `url → [n]` mapping
so the numbers and URLs come from retrieval, never from memory — the model only
ever emits small integers it was handed.
For high-stakes work the same ledger doubles as a fact-checking chain: verbatim
quotes are attached to each source (rejected unless they literally appear in
the fetched page text), claims from model knowledge are flagged `[unverified]`,
and `verify --evidence` fails any draft whose cited sources carry no evidence.
This skill covers answers in chat, written documents (markdown, PDF, docx,
slides), and research reports. It does not cover academic BibTeX pipelines —
for conference papers use the `arxiv` skill, which this skill
feeds (see `references/citation-formats.md`).
## When to Use
Use whenever an answer or artifact rests on information you fetched rather than
knew:
- Research, comparisons, news summaries, "what is the current state of X"
- Any deliverable you write to disk that quotes, paraphrases, or reports
outside facts — reports, briefs, docs, decks, wiki pages
- Fact-finding where the user will want to check your work
- Multi-source synthesis where conflicting sources must be attributed
Skip inline citations when the retrieval is incidental to another task — a
quick syntax/version lookup mid-coding, casual conversation, creative writing.
Mention a URL only if the user would plausibly want the link.
## Prerequisites
None beyond the standard toolset. `scripts/sources.py` is stdlib-only Python 3.
Retrieval comes from whatever is configured: `web_search`, `web_extract`,
`browser_navigate`, or `terminal` (curl, CLIs).
Ledger location: `$HERMES_HOME/cache/citations/ledger.json` (profile-aware).
Override per task with `--ledger <path>` or `HERMES_CITATION_LEDGER`.
## How to Run
```bash
S=~/.hermes/skills/research/grounded-citations/scripts/sources.py
python "$S" reset # start a clean ledger
python "$S" add https://example.com/a --title "A" # prints: [1]
python "$S" add https://example.com/b --title "B" # prints: [2]
python "$S" list # ledger table
python "$S" render # Sources: block
python "$S" verify draft.md # catch bad citations
```
`add` is idempotent and URL-normalized: the same page always returns the same
id within a ledger, so ids stay stable across many search/extract rounds.
## Quick Reference
| Action | Command |
|---|---|
| Fresh ledger for a new task | `sources.py reset` |
| Register a source, get its id | `sources.py add <url> [--title T]` |
| Register several at once | `sources.py add <url1> <url2> ...` |
| Register from JSON tool output | `sources.py ingest results.json` |
| Attach verbatim evidence to a source | `sources.py quote <id> --text "exact wording" --from page.txt` |
| Show ledger | `sources.py list [--json]` |
| Render the Sources block | `sources.py render [--style markdown\|plain\|footnotes\|bibtex\|evidence] [--only 1,3]` |
| Render only what a draft cites | `sources.py render --cited-in draft.md` |
| Rewrite a draft's Sources block in place | `sources.py render --replace-in draft.md` |
| Check a draft's citations | `sources.py verify draft.md [--strict] [--min-coverage 0.6] [--evidence]` |
## Procedure
① **Reset the ledger** at the start of a task that will produce a grounded
answer or document. Skip the reset when continuing work whose ids are already
in a draft — reusing the ledger keeps the numbering stable.
② **Register every source at retrieval time.** After each `web_search` /
`web_extract` / `browser_navigate` / fetch, pass the URLs to `sources.py add`
(or pipe the raw JSON through `sources.py ingest`). Do this *before* writing
prose. Registering later, from memory, is the failure mode this skill exists to
prevent.
③ **Write cite-while-drafting.** Place the bracketed id(s) immediately after
each sentence the source supports:
```
Ice floats because it is less dense than liquid water.[1][2]
```
- No space before the bracket; each id in its own brackets.
- Max 3 ids per sentence. Cite per sentence, not one dump at the end.
- Only ids the ledger returned. Never invent an id or a URL.
- Claims from your own knowledge get no citation.
- Conflicting sources: present both readings, each with its own id.
- Quote exact figures, dates, and names as the source states them; flag gaps
explicitly ("no source found for X") instead of smoothing them over.
④ **Append the Sources block** with `sources.py render --cited-in <draft>` so
the id → URL mapping is generated mechanically from the ledger, not retyped.
For non-markdown targets pick the matching `--style` and follow
`references/citation-formats.md` for placement (footnotes in docx, endnotes in
PDF/LaTeX, a Sources slide in decks, per-page source lists in wiki output).
⑤ **Verify before delivering** — `sources.py verify <draft>` exits non-zero on
unknown ids, on a Sources block that disagrees with the ledger, or (with
`--min-coverage`) on prose that is too thinly cited. Fix and re-run.
⑥ **Chat answers** follow the same steps with the draft in your reply: register
sources, cite inline, end with the rendered `Sources:` list. For a short answer
you may render the block from `sources.py render --only <ids>` instead of
writing to a file.
## Multi-Platform Sweeps
"What are people saying about X" / "research X across the web" is not one
`web_search`. Fan out across source types, collect in parallel, then synthesise
with every claim attributed to the platform it came from:From SaiRam-Muppalla/hermes-skills-backup, MIT.
More from SaiRam-Muppalla/hermes-skills-backup
- 0.570score
pulse
SaiRam-Muppalla
Multi-source recency research skill that takes the pulse of any topic across Reddit, Hacker News, the open web, and optionally X/Twitter within a configurable…
SkillAFreshness: AClaude Code +9 - 0.570score
syllabus
SaiRam-Muppalla
Generates a curated supplementary reading list from any course syllabus using Consensus academic search.
SkillAFreshness: AClaude Code +9 - 0.566score
litreview
SaiRam-Muppalla
Academic literature orientation skill that searches papers via free keyless APIs (PubMed E-utilities + OpenAlex) by default — with the Consensus MCP as an…
SkillAFreshness: AClaude Code +9 - 0.565score
deep-research
SaiRam-Muppalla
Run a disciplined, multi-source research investigation for a high-stakes question or decision — fan-out web search across many channels, parallel sub-agents…
SkillAFreshness: AClaude Code +9 - 0.565score
research
SaiRam-Muppalla
Default entry point for any research request — a hybrid router that classifies the question deterministically and either delegates to a specialist research…
SkillAFreshness: AClaude Code +9 - 0.565score
prospecting
SaiRam-Muppalla
When the user wants to find, qualify, and build a list of prospects to reach out to — across B2B SaaS, general B2B, or local small businesses.
SkillAFreshness: AClaude Code +9 - 0.560score
pdf
SaiRam-Muppalla
PDF files: create, read, merge, fill, OCR, edit text.
SkillAFreshness: AClaude Code +9 - 0.560score
powerpoint
SaiRam-Muppalla
Create, read, edit .pptx decks with python-pptx.
SkillAFreshness: AClaude Code +9 - 0.560score
xlsx
SaiRam-Muppalla
Create, read, edit Excel .xlsx workbooks and CSVs.
SkillAFreshness: AClaude Code +9 - 0.550score
mow-curriculum-architect
SaiRam-Muppalla
Use when designing hands-on bootcamps and code labs.
SkillAFreshness: AClaude Code +9 - 0.539score
interview-system-designer
SaiRam-Muppalla
This skill should be used when the user asks to "design interview processes", "create hiring pipelines", "calibrate interview loops", "generate interview…
SkillAFreshness: AClaude Code +9 - 0.536score
research-summarizer
Alireza Rezvani
Structured research summarization agent skill for non-dev users.
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 20, 2026 (11 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from SaiRam-Muppalla
- 0.570score
pulse
SaiRam-Muppalla
Multi-source recency research skill that takes the pulse of any topic across Reddit, Hacker News, the open web, and optionally X/Twitter within a configurable…
SkillAFreshness: AClaude Code +9 - 0.570score
syllabus
SaiRam-Muppalla
Generates a curated supplementary reading list from any course syllabus using Consensus academic search.
SkillAFreshness: AClaude Code +9 - 0.566score
litreview
SaiRam-Muppalla
Academic literature orientation skill that searches papers via free keyless APIs (PubMed E-utilities + OpenAlex) by default — with the Consensus MCP as an…
SkillAFreshness: AClaude Code +9 - 0.565score
prospecting
SaiRam-Muppalla
When the user wants to find, qualify, and build a list of prospects to reach out to — across B2B SaaS, general B2B, or local small businesses.
SkillAFreshness: AClaude Code +9 - 0.565score
research
SaiRam-Muppalla
Default entry point for any research request — a hybrid router that classifies the question deterministically and either delegates to a specialist research…
SkillAFreshness: AClaude Code +9 - 0.565score
deep-research
SaiRam-Muppalla
Run a disciplined, multi-source research investigation for a high-stakes question or decision — fan-out web search across many channels, parallel sub-agents…
SkillAFreshness: AClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get grounded-citations running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
grounded-citations skill. Agent Mart. https://agentmart.dev/skills/sairam-muppalla-grounded-citations (last updated 2026-10-24)