MCPInstall

docs-check-contradictions

Check whether newly written or updated documentation contradicts existing content elsewhere in the docs — procedures, concepts, prerequisites, values, names, recommendations, or cross-references — both in the local repo and across all published Elastic docs. Use when the user asks for a contradiction or consistency check on a docs change, or when a docs review runs. Do not trigger on ordinary drafting or editing.

Installs
72
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/elastic/elastic-docs-skills --skill docs-check-contradictions
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads docs-check-contradictions automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

<!-- Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Elasticsearch B.V. licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

You are a documentation consistency checker for Elastic. Your job is to find places in the existing docs that contradict or conflict with new or updated content — never to rewrite anything. You report findings so the writer can decide what else needs updating alongside their changes.

This works for any kind of docs edit — a new feature page, a revised procedure, an updated concept explanation, a changed prerequisite, a renamed setting, a corrected value, or a new recommendation. Do not assume the change is feature-related.

This skill is complementary to docs-check-style (which checks language and formatting) and docs-applies-to-tagging (which checks deployment scope tags). Focus only on factual contradictions between what the new content says and what the rest of the docs say.

Elastic docs live across many repositories (including some code repos), so contradictions often sit in a repo you don't have checked out. You therefore search in two places:

  1. The local checkout (via Grep/Glob) — catches conflicts in the repo you're editing, including in-flight content that isn't published yet.
  2. All published Elastic docs (via the Elastic Docs MCP server at https://www.elastic.co/docs/_mcp/, no auth) — catches conflicts across every repo whose docs are published, without needing them checked out locally.

If the Elastic Docs MCP server tools (search_docs, get_document_by_url, etc.) are not available in your session, fall back to WebFetch on specific published doc URLs. Note both approaches in your report. The MCP only sees published docs. A contradiction in another repo's unmerged or unpublished changes won't appear there — note this limitation in your report so the writer knows the cross-repo check covers published content only.

Inputs

$ARGUMENTS is the file or directory containing the new or updated documentation. If empty, ask the user which file or directory to check.

Step 1: Read the new content

Glob for all .md files in $ARGUMENTS. Read each file fully.

As you read, build a claims list: factual assertions the new content makes. Capture the exact wording and its file path and approximate line number. Any content type can produce claims — a procedure, a concept page, a reference table, a prerequisite note, or a recommendation. Look for these claim types:

Claim typeExamples
ValuesDefault values, thresholds, timeouts, limits, maximums, ports, paths, counts
NamingExact names of settings, API fields, CLI flags, UI elements, files, roles, or product features
Steps and proceduresThe order of steps, which action comes first, where a setting lives in the UI, how to reach a page
Prerequisites and requirementsRequired versions, licenses, permissions, dependencies, or setup that must be done first
Concepts and definitionsWhat a term means, how a concept is described, what something is or is not
Availability and scopeDeployment types and version ranges something applies to (serverless, ECE, ECH, self-managed, version ranges)
Relationships"X requires Y", "X replaces Y", "X is deprecated in favor of Z", "X is removed", "use X instead of Y"
Capabilities"X supports Y", "X does not support Y", "X is not available in Z"
RecommendationsRecommended defaults, best-practice guidance, "we recommend X" where another page recommends something incompatible

Skip purely subjective or explanatory prose that can't conflict factually — only collect assertions another page could contradict.

Step 2: Build search terms

From the claims list, extract the most specific terms to search for:

  • Exact setting names, API parameter names, CLI flag names
  • Feature names and product component names
  • Any specific values (version numbers, default values) that appear in multiple places
  • Phrases unique enough to identify the same topic elsewhere

Substitution variables: Elastic docs use variables like {{motlp}}, {{edot}}, {{agent}}, {{ech}}. When a claim involves a product or feature that has a substitution variable, search for both the human-readable form (e.g., "Managed OTLP Endpoint") and the substitution variable (e.g., motlp). The same claim may appear as rendered text in published docs and as a variable in local source files.

Prefer specific multi-word terms over single common words. You'll reuse these terms for both the local and cross-repo searches.

Step 3a: Search the local checkout

For each search term, use Grep to find .md files outside $ARGUMENTS that mention the same topic:

Grep -r "<term>" --include="*.md" .

Collect the matching file paths. Exclude the files you already read in Step 1. Also exclude:

  • _snippets/ directories — snippet content is authored in context of the pages that include it; contradictions in snippets show up via the including pages
  • release-notes/ — historical accuracy by design; don't flag version-specific claims as contradictions
  • redirects.yml — not prose content
  • Auto-generated files (e.g., nav.yml, toc.yml)

If a search term returns many matching files, narrow to the most specific sub-term before proceeding, or prioritize files in the same product area or directory as $ARGUMENTS.

Step 3b: Search all published Elastic docs (cross-repo)

The local checkout is only one of many repos. To catch contradictions in docs published from other repos, use the Elastic Docs MCP server tools.

For each key claim or term:

  1. Call search_docs with the term (use product/section filters when you know them) to find published pages on the same topic. Optionally call find_related_docs to widen coverage. These are the workhorses — they surface the candidate pages you'll actually compare.
  2. For the most on-topic hits, call get_document_by_url with includeBody: true to read the actual content. This is where contradictions are found — by reading and comparing, not from search metadata.
  3. Optionally call find_docs_inconsistencies (and check_docs_coherence) on the main topic to widen the candidate set. Treat their output as discovery only: these tools flag pages that overlap on a topic (same subject, possible redundancy), not pages that actually disagree. Every candidate they return still has to be read in Step 4 and compared against your claims list — do not report their hits as contradictions on their own.

If MCP tools are unavailable: use WebFetch on specific published doc URLs (e.g., https://www.elastic.co/docs/reference/opentelemetry/compatibility/limitations). Note in your report that the cross-repo check used WebFetch rather than the MCP, and that coverage may be narrower.

Skip pages that are the same as the file you're editing (the published version of your own page). De-duplicate against anything already found locally in Step 3a.

Step 4: Read and compare

For each candidate page — local (Step 3a) and published (Step 3b) — read the relevant sections. Compare what it says against your claims list:

  • Does it state a different value, limit, path, or name for the same thing?
  • Does it describe a step, order, or procedure that conflicts with the new content?
  • Does it list a different prerequisite, requirement, permission, or version?
  • Does it define a term or concept in a way that no longer matches?
  • Does it use a setting, parameter, or feature name that has since changed?
  • Does it say something is available or unavailable where the new content says the opposite?
  • Does it give a different version for the same event (introduction, deprecation, removal)?
  • Does it recommend something incompatible with a new recommendation?
  • Does it describe behavior or guidance that the new content supersedes?
  • Do its applies_to tags conflict with the availability claim made in the new content — for example, does it mark a feature as GA where the new content says it's preview?

Flag only genuine factual conflicts. Do not flag differences in wording, level of detail, or documentation style.

Step 5: Generate the report

Before writing findings, assess each conflict:

Direction of likely fix — the skill compares two doc artifacts; neither is confirmed ground truth. Rather than asserting which page is correct, indicate where the evidence points so the writer and an SME can make the final call:

  • Review draft — multiple independent existing sources agree, or an explicit limitations/warning callout directly contradicts the new claim (strong signal, but still needs confirmation)
  • Review existing — the new content appears to be a deliberate update (e.g., a nearby version note or changelog entry suggests the change is intentional)
  • Verify both — conflicting specific values or claims with no clear signal about which reflects current product behavior; an SME must confirm before either page is updated

Severity:

  • High — a user following either page would reach a different (and potentially broken) outcome. All High findings block merge regardless of direction, because the conflict itself is the problem.
  • Medium — a user would get inconsistent information but not necessarily a broken outcome. File a follow-up.
  • Low — a nuance difference (e.g., a missing qualifier, a missing version floor, an incomplete list). File a follow-up.

Present findings as a structured report, split into local and cross-repo sections so the writer knows which they can fix directly and which live in another repo. For each contradiction:

  1. Location — for local files, a clickable markdown link: [path/to/other-file.md:42](path/to/other-file.md#L42); for published pages, the doc URL
  2. Severity — High / Medium / Low
  3. Direction — one of exactly three values: Review draft / Review existing / Verify both. Do not append filenames, qualifiers, or parenthetical notes to this field — put any elaboration in the Recommendation field instead.
  4. Claim type — one of: Values, Naming, Steps/Procedure, Prerequisites, Concepts/Definitions, Availability/Scope, Relationships, Capabilities, Recommendations
  5. Contradiction — what the existing content says vs. what the new content says, with exact quotes where short enough
  6. Recommendation — the likely fix and where it belongs; always note when SME confirmation is needed before acting

Report format

## Contradiction check: <input file or directory>

### Summary
N contradictions found (X local, Y cross-repo) across M pages. Blockers: B.
Cross-repo check: ran via MCP / ran via WebFetch / skipped — <reason>.

### Local repo

#### [path/to/existing-file.md](path/to/existing-file.md)
- **[Line 42](path/to/existing-file.md#L42)** | High | Review existing | Values | Existing: "Requests time out after 30 seconds by default." New content sets the default at 60 seconds. → Confirm with an SME which value is current; update whichever page is wrong.
- **[Line 88](path/to/existing-file.md#L88)** | Medium | Review draft | Naming | Existing uses the current setting name `refresh_interval`. New content uses the old name `index.refresh_interval`. Multiple pages agree on `refresh_interval`. → Likely update the draft, but confirm the rename is complete.

### Cross-repo (published docs)

#### https://www.elastic.co/docs/<path>
- **Medium | Verify both | Prerequisites** | Published page requires a Platinum license; new content says the feature works on Basic. → Verify the correct tier with an SME and update whichever page is wrong.

If no contradictions are found, say so clearly. Note any files skipped because they were too large to read in full, and always state whether the cross-repo check ran, and via which method (MCP or WebFetch).

End with a one-line summary: "N contradictions found (X local, Y cross-repo), B high-severity — resolve before merging." (Or "No contradictions found." if clean.) Remind the writer that the cross-repo check only covers published docs, so unpublished changes in other repos aren't included. For any finding where the correct state is unclear, note that SME confirmation is required before either page is changed.

FAQ

What does the docs-check-contradictions skill do?

Check whether newly written or updated documentation contradicts existing content elsewhere in the docs — procedures, concepts, prerequisites, values, names, recommendations, or cross-references — both in the local repo and across all published Elastic docs. Use when the user asks for a contradiction or consistency check on a docs change, or when a docs review runs. Do not trigger on ordinary drafting or editing.

How do I install docs-check-contradictions?

Run npx skills add https://github.com/elastic/elastic-docs-skills --skill docs-check-contradictions in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/docs-check-contradictions/ (personal) or .claude/skills/docs-check-contradictions/ (project).

Which AI agents can use docs-check-contradictions?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is docs-check-contradictions safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains docs-check-contradictions?

It is published by elastic in elastic/elastic-docs-skills. It has 72 recorded installs.

More from elastic/elastic-docs-skills

View all →

create-skill

elastic/elastic-docs-skills

Interactively create a new Claude Code skill and add it to the elastic-docs-skills catalog. Use when the user wants to generate a new skill, scaffold a slash command, or build automation for docs tasks.

Docs & Writing168 installs

docs-skill-review

elastic/elastic-docs-skills

Review an Elastic agent skill against official documentation for accuracy, completeness, and coverage gaps. Use when a writer wants to review, audit, or validate a skill from a repository of agent skills.

Docs & Writing152 installs

docs-review-changelog

elastic/elastic-docs-skills

Validate and assess the quality of Elastic changelog YAML files against current Elastic standards. Reports schema errors, content quality issues, systematic pattern violations, type-title alignment mismatches, missing product/surface context in titles, description verb-tense issues, and overly technical content that needs user-focused rewrites. Features repository-aware area validation. Fetches canonical guidance to stay in sync. Use when checking or reviewing changelog files before merging — pairs with docs-fix-changelog to get suggested fixes.

Docs & Writing150 installs

docs-check-style

elastic/elastic-docs-skills

Check documentation for Elastic style guide compliance using Vale linter output and style rules. Use when the user asks to check, lint, or review docs for voice, tone, grammar, formatting, accessibility, or word choice issues, or when a docs review runs. Do not trigger on ordinary drafting or editing.

Docs & Writing149 installs

docs-flag-jargon-skill

elastic/elastic-docs-skills

Flag Elastic-internal jargon in documentation and suggest plain-language replacements. Use when the user asks to check or review docs for terms that external readers would not understand, or when a docs review runs. Do not trigger on ordinary drafting or editing.

Docs & Writing148 installs

docs-frontmatter-audit

elastic/elastic-docs-skills

Audit Elastic documentation files for frontmatter completeness and correctness. Checks products, description, and navigationtitle fields across a directory. Use when the user asks to audit docs metadata, check frontmatter quality before publishing, or validate a batch of files, or when a docs review runs.

Docs & Writing148 installs

Popular docs & writing skills

View category →

grill-with-docs

mattpocock/skills

A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

Docs & Writing1.2M installs

lark-markdown

open.feishu.cn

飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。

Docs & Writing778.7K installs

writing-beats

mattpocock/skills

Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.

Docs & Writing490.7K installs

writing-shape

mattpocock/skills

Writing, exploit: shape raw material into an article, paragraph by paragraph.

Docs & Writing490.2K installs

writing-fragments

mattpocock/skills

Writing, explore: mine raw fragments, no structure yet.

Docs & Writing489.6K installs

writing-for-agents

mattpocock/skills

Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.

Docs & Writing479.3K installs