Skip to main content
Grounded Docs is a local documentation indexer that lets you scrape, store, and search versioned documentation on your own machine. Several tutorials on this site use it to fact-check content against specific documentation versions. Complete this setup once and skip it in any tutorial that links here.

Prerequisites

Node.js 22+

Required for the Grounded Docs CLI. Includes npm.

git

Required to clone the skills repository

Install Grounded Docs

1

Install the Grounded Docs CLI

Install the Grounded Docs CLI globally:
npm install -g @arabold/docs-mcp-server
2

Install the Claude skills

The Grounded Docs repository ships three Claude skills. Install them so Claude knows how to index and search documentation on your behalf. The following command uses a sparse checkout to grab just the skills/ directory, not the full repo.
git clone --depth 1 --filter=blob:none --sparse \
  https://github.com/arabold/docs-mcp-server.git /tmp/docs-mcp-server
cd /tmp/docs-mcp-server && git sparse-checkout set skills

mkdir -p ~/.claude/skills/docs-manage \
         ~/.claude/skills/docs-search \
         ~/.claude/skills/fetch-url

cp /tmp/docs-mcp-server/skills/docs-manage/SKILL.md \
   ~/.claude/skills/docs-manage/SKILL.md
cp /tmp/docs-mcp-server/skills/docs-search/SKILL.md \
   ~/.claude/skills/docs-search/SKILL.md
cp /tmp/docs-mcp-server/skills/fetch-url/SKILL.md \
   ~/.claude/skills/fetch-url/SKILL.md

# clean up the temp clone
rm -rf /tmp/docs-mcp-server
Each skill teaches Claude a different capability:
SkillWhat Claude can do
docs-manageScrape, refresh, and remove documentation from the local index
docs-searchList indexed libraries, search content, and fact-check against indexed docs
fetch-urlFetch a single URL and convert it to Markdown without indexing it
3

Verify the install

Ask Claude to list any currently indexed libraries:
/docs-search List everything in the docs index
If Grounded Docs is installed correctly, Claude will run the list command and return a table of indexed libraries (or confirm the index is empty if nothing has been scraped yet).

Enhance the docs-search skill

1

Add the citation block format

By default, the docs-search skill has no fact-checking protocol. The CLI returns structured JSON, but Claude’s response doesn’t cite sources or classify findings.Enhance the docs-search skill so Claude produces the following for each finding:
  1. Doc path (local): the path portion of the URL from the indexed content, labeled as (local) to indicate it came from the local index.
  2. Public URL: The full URL from the indexed content.
  3. Quote: A verbatim excerpt from the content that supports or refutes the claim.
  4. Finding: A classification of the claim based on the content, ending with a severity emoji (✅ accurate, ⚠️ outdated or imprecise, ❌ incorrect, ❓ not found).
With this format in place, you can see exactly where Claude is pulling its information from, read the relevant passage directly, and evaluate each finding against the evidence.Ask Claude to update the skill:
Enhance ~/.claude/skills/docs-search/SKILL.md for fact-checking.
If a fact-checking workflow or citation block format already
exists in this file, replace those sections rather than
appending duplicates.

Add a fact-checking workflow and citation block format: when
fact-checking, search the index, locate the relevant passage in
the content field, classify the finding, then emit one citation
block per claim:

Doc path (local): <path portion of the url field — everything
                  after the domain. The "(local)" is part of the
                  field label only — do not append it to the path
                  value itself.>
Public URL:       <full url field value>
Quote:            "<verbatim excerpt from content>"
Finding:          [DOCS SAY] / [INFERRED from <doc path>] /
                  [NOT FOUND]

Classification:
- [DOCS SAY] — a direct quote from content supports the claim
- [INFERRED from <doc path>] — deduced from context; name source
- [NOT FOUND] — no indexed source addresses the claim

Severity emoji (end every Finding line with exactly one):
✅  accurate — docs confirm the claim as stated
⚠️  warning — claim is outdated, deprecated, or imprecise
❌  incorrect — docs directly contradict the claim
❓  unknown — no indexed source found ([NOT FOUND] only)

Rules:
- Quote must be verbatim from content — never paraphrase
- Never use [DOCS SAY] without a quote to back it
- The field label is "Doc path (local):" — never repeat "(local)"
  in the path value

Include a concrete example citation block.
2

Verify the enhancement

Ask Claude to confirm the new workflow is in place:
/docs-search What citation block format do you use when fact-checking?
Claude will describe the four-field format (Doc path, Public URL, Quote, Finding).
You’re ready. Return to the tutorial that sent you here, or start with Fact-check tutorials with versioned docs.

Found an issue with this page? Open a GitHub issue.