Claude Code Content Validator
Teaching content about a fast-moving tool rots quietly. A lesson that was correct when
written can, months later, tell a learner to run a command that no longer exists, install
a package that has been archived, or follow a file convention that has changed. The reader
hits a wall and loses trust in the whole course.
This skill keeps Claude Code teaching content honest against the source of truth —
Anthropic's official documentation at https://code.claude.com/docs — and proposes the
fixes. It is the companion to writing the content: write it once, re-run this whenever the
product moves or before you re-share.
This is different from a docs-vs-code sync. This skill validates content about Claude
Code against Anthropic's external, live docs, not a repo against its own code.
When to use it
- Before publishing or re-sharing a Claude Code course, tutorial, or internal guide.
- After a Claude Code release, when commands, conventions, or models may have changed.
- Periodically (e.g. quarterly) on any "evergreen" Claude Code training material.
What to check (against the live docs — never from memory)
Read the content (markdown lessons, docs, slides-as-text), then verify every Claude Code
claim by fetching the relevant page under https://code.claude.com/docs. Common drift
points, with the facts to confirm each run:
- Slash commands are real and current — e.g.
/clear, /compact, /context,
/memory, /skills, /agents, /init, /help, /mcp, plan mode (Shift+Tab). Flag
any invented command. (A frequent one: there is no /agent <name> — subagents
auto-delegate by description or are asked for by name, and are managed with /agents.)
- Skills convention: a folder
.claude/skills/<name>/SKILL.md.
- Subagents convention: a single file
.claude/agents/<name>.md with name /
description frontmatter — not a per-agent folder containing an AGENT.md.
- Hooks: configured in
settings.json; many events exist (PreToolUse, PostToolUse,
UserPromptSubmit, Stop, Notification, and more). Don't present a small fixed number as
the complete set. Tool matchers use real tool names (Read, Write, Edit), not
invented ones like WriteFileTool.
- MCP: added with
claude mcp add (or by asking Claude); configured under
mcpServers. Only name @modelcontextprotocol/server-* packages that are still active
reference servers (filesystem, fetch, git, memory, sequentialthinking, time, everything);
others (slack, github, gdrive, postgres, sqlite…) are archived or vendor-maintained —
point to the registry / vendor instead of a dead package name. Re-verify each run.
- Settings:
settings.json, permissions.allow / permissions.deny, exact tool names.
- Memory: project
CLAUDE.md (./CLAUDE.md or .claude/CLAUDE.md) and user
~/.claude/CLAUDE.md; /init to generate.
- CLI flags used in headless examples actually exist (e.g. there is no
--cwd; use
--add-dir or cd into the directory).
- Model ids: no superseded ids — check the current latest before flagging.
Quality pass — garbage out, value in
- Flag filler, duplicated guidance, and dead/orphan files (e.g. content not reachable by
the site's own router).
- Flag genuine gaps where one accurate tip would materially help a learner.
- Respect the content's audience. If the material is deliberately no-code (for business
users), do not inject developer concepts (token caching, exit codes, env-var plumbing)
just because the docs mention them. Match the existing altitude.
Respect the project's own rules
Before changing anything, read the project's CLAUDE.md / style guide and obey it —
especially scope rules (e.g. "this course is closed: corrections yes, new lessons no") and
voice. Corrections, factual fixes, and removing dead content are safe. Anything that
changes scope is a proposal for the author, not an edit you make.
Output
- A section-by-section report: ✅ valid / ⚠️ needs fix, each with the specific issue
and the official source URL.
- A proposed-edits list (file + change), grouped: factual fixes · removals
(garbage/dead) · useful additions.
- Make the safe corrections (factual fixes, dead-content removal, title/heading sync).
For anything touching scope or judgment, list it for the author to approve.
- Verify the content still builds/renders if it's a live site, then summarise what changed.
The honesty bar (non-negotiable)
Never validate a Claude Code fact from memory — the product moves faster than any model's
training. Fetch the doc, cite the URL, and if a page can't be reached, say so rather than
guessing. A report that says "couldn't confirm /foo, verify manually" is worth more than
a confident wrong tick.
1---2name: claude-code-content-validator3description: Keeps Claude Code teaching content factually correct against Anthropic's live documentation. Claude Code changes fast, so any course, tutorial, lesson set, or internal guide about it drifts out of date: invented commands, renamed conventions, archived MCP packages, stale model ids. This skill reads your content, checks every Claude Code claim against the current official docs (never from memory), and returns a section-by-section validity report plus the safe fixes. Use before you publish or re-share any Claude Code training material. Works on any course or docs repo.4---56# Claude Code Content Validator78Teaching content about a fast-moving tool rots quietly. A lesson that was correct when9written can, months later, tell a learner to run a command that no longer exists, install10a package that has been archived, or follow a file convention that has changed. The reader11hits a wall and loses trust in the whole course.1213This skill keeps Claude Code teaching content **honest against the source of truth** —14Anthropic's official documentation at `https://code.claude.com/docs` — and proposes the15fixes. It is the companion to writing the content: write it once, re-run this whenever the16product moves or before you re-share.1718> This is different from a docs-vs-code sync. This skill validates content *about Claude19> Code* against *Anthropic's external, live docs*, not a repo against its own code.2021## When to use it2223- Before publishing or re-sharing a Claude Code course, tutorial, or internal guide.24- After a Claude Code release, when commands, conventions, or models may have changed.25- Periodically (e.g. quarterly) on any "evergreen" Claude Code training material.2627## What to check (against the live docs — never from memory)2829Read the content (markdown lessons, docs, slides-as-text), then verify every Claude Code30claim by fetching the relevant page under `https://code.claude.com/docs`. Common drift31points, with the facts to confirm each run:3233- **Slash commands** are real and current — e.g. `/clear`, `/compact`, `/context`,34 `/memory`, `/skills`, `/agents`, `/init`, `/help`, `/mcp`, plan mode (Shift+Tab). Flag35 any invented command. (A frequent one: there is no `/agent <name>` — subagents36 auto-delegate by description or are asked for by name, and are managed with `/agents`.)37- **Skills** convention: a folder `.claude/skills/<name>/SKILL.md`.38- **Subagents** convention: a single file `.claude/agents/<name>.md` with `name` /39 `description` frontmatter — not a per-agent folder containing an `AGENT.md`.40- **Hooks**: configured in `settings.json`; many events exist (PreToolUse, PostToolUse,41 UserPromptSubmit, Stop, Notification, and more). Don't present a small fixed number as42 the complete set. Tool matchers use real tool names (`Read`, `Write`, `Edit`), not43 invented ones like `WriteFileTool`.44- **MCP**: added with `claude mcp add` (or by asking Claude); configured under45 `mcpServers`. Only name `@modelcontextprotocol/server-*` packages that are still active46 reference servers (filesystem, fetch, git, memory, sequentialthinking, time, everything);47 others (slack, github, gdrive, postgres, sqlite…) are archived or vendor-maintained —48 point to the registry / vendor instead of a dead package name. Re-verify each run.49- **Settings**: `settings.json`, `permissions.allow` / `permissions.deny`, exact tool names.50- **Memory**: project `CLAUDE.md` (`./CLAUDE.md` or `.claude/CLAUDE.md`) and user51 `~/.claude/CLAUDE.md`; `/init` to generate.52- **CLI flags** used in headless examples actually exist (e.g. there is no `--cwd`; use53 `--add-dir` or `cd` into the directory).54- **Model ids**: no superseded ids — check the current latest before flagging.5556## Quality pass — garbage out, value in5758- Flag filler, duplicated guidance, and dead/orphan files (e.g. content not reachable by59 the site's own router).60- Flag genuine gaps where one accurate tip would materially help a learner.61- **Respect the content's audience.** If the material is deliberately no-code (for business62 users), do not inject developer concepts (token caching, exit codes, env-var plumbing)63 just because the docs mention them. Match the existing altitude.6465## Respect the project's own rules6667Before changing anything, read the project's `CLAUDE.md` / style guide and obey it —68especially scope rules (e.g. "this course is closed: corrections yes, new lessons no") and69voice. Corrections, factual fixes, and removing dead content are safe. Anything that70changes scope is a proposal for the author, not an edit you make.7172## Output73741. A **section-by-section report**: ✅ valid / ⚠️ needs fix, each with the specific issue75 and the official source URL.762. A **proposed-edits list** (file + change), grouped: factual fixes · removals77 (garbage/dead) · useful additions.783. **Make the safe corrections** (factual fixes, dead-content removal, title/heading sync).79 For anything touching scope or judgment, list it for the author to approve.804. Verify the content still builds/renders if it's a live site, then summarise what changed.8182## The honesty bar (non-negotiable)8384Never validate a Claude Code fact from memory — the product moves faster than any model's85training. Fetch the doc, cite the URL, and if a page can't be reached, say so rather than86guessing. A report that says "couldn't confirm `/foo`, verify manually" is worth more than87a confident wrong tick.