[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-elastic-docs-check-contradictions":3,"mdc-1w5cud-key":33,"related-org-elastic-docs-check-contradictions":1365,"related-repo-elastic-docs-check-contradictions":1539},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":28,"sourceUrl":31,"mdContent":32},"docs-check-contradictions","check documentation for content contradictions","Check whether newly written or updated documentation contradicts existing content elsewhere in the docs. Use when adding or editing any docs content — procedures, concepts, prerequisites, values, names, recommendations, or cross-references — to find stale or conflicting information, both in the local repo and across all published Elastic docs, that needs updating alongside your changes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"elastic","Elastic","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Felastic.png",[12,16,17],{"name":13,"slug":14,"type":15},"Documentation","documentation","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Technical Writing","technical-writing",71,"https:\u002F\u002Fgithub.com\u002Felastic\u002Felastic-docs-skills","2026-08-13T05:04:14.086751",null,10,[26,8,27],"docs","skills",{"repoUrl":21,"stars":20,"forks":24,"topics":29,"description":30},[26,8,27],"Instructions for code agents on how to author Elastic docs","https:\u002F\u002Fgithub.com\u002Felastic\u002Felastic-docs-skills\u002Ftree\u002FHEAD\u002Fskills\u002Freview\u002Fcheck-contradictions","---\nname: docs-check-contradictions\nversion: 1.0.1\ndescription: Check whether newly written or updated documentation contradicts existing content elsewhere in the docs. Use when adding or editing any docs content — procedures, concepts, prerequisites, values, names, recommendations, or cross-references — to find stale or conflicting information, both in the local repo and across all published Elastic docs, that needs updating alongside your changes.\nargument-hint: \u003Cfile-or-directory>\ndisable-model-invocation: true\ncontext: fork\nallowed-tools: Read, Grep, Glob, WebFetch\nsources:\n  - https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002F_mcp\u002F\n---\n\u003C!-- Copyright Elasticsearch B.V. and\u002For licensed to Elasticsearch B.V. under one\nor more contributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright\nownership. Elasticsearch B.V. licenses this file to you under\nthe Apache License, Version 2.0 (the \"License\"); you may\nnot use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n\thttp:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License. -->\n\nYou 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.\n\nThis 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.\n\nThis 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.\n\nElastic 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:\n\n1. **The local checkout** (via `Grep`\u002F`Glob`) — catches conflicts in the repo you're editing, including in-flight content that isn't published yet.\n2. **All published Elastic docs** (via the Elastic Docs MCP server at `https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002F_mcp\u002F`, no auth) — catches conflicts across every repo whose docs are published, without needing them checked out locally.\n\nIf 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.\n\n## Inputs\n\n`$ARGUMENTS` is the file or directory containing the new or updated documentation. If empty, ask the user which file or directory to check.\n\n## Step 1: Read the new content\n\nGlob for all `.md` files in `$ARGUMENTS`. Read each file fully.\n\nAs 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:\n\n| Claim type | Examples |\n|---|---|\n| **Values** | Default values, thresholds, timeouts, limits, maximums, ports, paths, counts |\n| **Naming** | Exact names of settings, API fields, CLI flags, UI elements, files, roles, or product features |\n| **Steps and procedures** | The order of steps, which action comes first, where a setting lives in the UI, how to reach a page |\n| **Prerequisites and requirements** | Required versions, licenses, permissions, dependencies, or setup that must be done first |\n| **Concepts and definitions** | What a term means, how a concept is described, what something is or is not |\n| **Availability and scope** | Deployment types and version ranges something applies to (serverless, ECE, ECH, self-managed, version ranges) |\n| **Relationships** | \"X requires Y\", \"X replaces Y\", \"X is deprecated in favor of Z\", \"X is removed\", \"use X instead of Y\" |\n| **Capabilities** | \"X supports Y\", \"X does not support Y\", \"X is not available in Z\" |\n| **Recommendations** | Recommended defaults, best-practice guidance, \"we recommend X\" where another page recommends something incompatible |\n\nSkip purely subjective or explanatory prose that can't conflict factually — only collect assertions another page could contradict.\n\n## Step 2: Build search terms\n\nFrom the claims list, extract the most specific terms to search for:\n\n- Exact setting names, API parameter names, CLI flag names\n- Feature names and product component names\n- Any specific values (version numbers, default values) that appear in multiple places\n- Phrases unique enough to identify the same topic elsewhere\n\n**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.\n\nPrefer specific multi-word terms over single common words. You'll reuse these terms for both the local and cross-repo searches.\n\n## Step 3a: Search the local checkout\n\nFor each search term, use `Grep` to find `.md` files **outside** `$ARGUMENTS` that mention the same topic:\n\n```\nGrep -r \"\u003Cterm>\" --include=\"*.md\" .\n```\n\nCollect the matching file paths. Exclude the files you already read in Step 1. Also exclude:\n\n- `_snippets\u002F` directories — snippet content is authored in context of the pages that include it; contradictions in snippets show up via the including pages\n- `release-notes\u002F` — historical accuracy by design; don't flag version-specific claims as contradictions\n- `redirects.yml` — not prose content\n- Auto-generated files (e.g., `nav.yml`, `toc.yml`)\n\nIf 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`.\n\n## Step 3b: Search all published Elastic docs (cross-repo)\n\nThe local checkout is only one of many repos. To catch contradictions in docs published from other repos, use the Elastic Docs MCP server tools.\n\nFor each key claim or term:\n\n1. Call `search_docs` with the term (use product\u002Fsection 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.\n2. 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.\n3. 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.\n\n**If MCP tools are unavailable**: use `WebFetch` on specific published doc URLs (e.g., `https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Fopentelemetry\u002Fcompatibility\u002Flimitations`). Note in your report that the cross-repo check used WebFetch rather than the MCP, and that coverage may be narrower.\n\nSkip 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.\n\n## Step 4: Read and compare\n\nFor each candidate page — local (Step 3a) and published (Step 3b) — read the relevant sections. Compare what it says against your claims list:\n\n- Does it state a different value, limit, path, or name for the same thing?\n- Does it describe a step, order, or procedure that conflicts with the new content?\n- Does it list a different prerequisite, requirement, permission, or version?\n- Does it define a term or concept in a way that no longer matches?\n- Does it use a setting, parameter, or feature name that has since changed?\n- Does it say something is available or unavailable where the new content says the opposite?\n- Does it give a different version for the same event (introduction, deprecation, removal)?\n- Does it recommend something incompatible with a new recommendation?\n- Does it describe behavior or guidance that the new content supersedes?\n- 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?\n\nFlag only genuine factual conflicts. Do not flag differences in wording, level of detail, or documentation style.\n\n## Step 5: Generate the report\n\nBefore writing findings, assess each conflict:\n\n**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:\n- **Review draft** — multiple independent existing sources agree, or an explicit limitations\u002Fwarning callout directly contradicts the new claim (strong signal, but still needs confirmation)\n- **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)\n- **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\n\n**Severity**:\n- **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.\n- **Medium** — a user would get inconsistent information but not necessarily a broken outcome. File a follow-up.\n- **Low** — a nuance difference (e.g., a missing qualifier, a missing version floor, an incomplete list). File a follow-up.\n\nPresent 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:\n\n1. **Location** — for local files, a clickable markdown link: `[path\u002Fto\u002Fother-file.md:42](path\u002Fto\u002Fother-file.md#L42)`; for published pages, the doc URL\n2. **Severity** — High \u002F Medium \u002F Low\n3. **Direction** — one of exactly three values: `Review draft` \u002F `Review existing` \u002F `Verify both`. Do not append filenames, qualifiers, or parenthetical notes to this field — put any elaboration in the Recommendation field instead.\n4. **Claim type** — one of: Values, Naming, Steps\u002FProcedure, Prerequisites, Concepts\u002FDefinitions, Availability\u002FScope, Relationships, Capabilities, Recommendations\n5. **Contradiction** — what the existing content says vs. what the new content says, with exact quotes where short enough\n6. **Recommendation** — the likely fix and where it belongs; always note when SME confirmation is needed before acting\n\n### Report format\n\n```markdown\n## Contradiction check: \u003Cinput file or directory>\n\n### Summary\nN contradictions found (X local, Y cross-repo) across M pages. Blockers: B.\nCross-repo check: ran via MCP \u002F ran via WebFetch \u002F skipped — \u003Creason>.\n\n### Local repo\n\n#### [path\u002Fto\u002Fexisting-file.md](path\u002Fto\u002Fexisting-file.md)\n- **[Line 42](path\u002Fto\u002Fexisting-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.\n- **[Line 88](path\u002Fto\u002Fexisting-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.\n\n### Cross-repo (published docs)\n\n#### https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002F\u003Cpath>\n- **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.\n```\n\nIf 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).\n\nEnd 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.\n",{"data":34,"body":42},{"name":4,"version":35,"description":6,"argument-hint":36,"disable-model-invocation":37,"context":38,"allowed-tools":39,"sources":40},"1.0.1","\u003Cfile-or-directory>",true,"fork","Read, Grep, Glob, WebFetch",[41],"https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002F_mcp\u002F",{"type":43,"children":44},"root",[45,53,58,80,85,134,170,177,188,194,214,226,398,403,409,414,438,485,490,496,529,541,546,602,614,620,625,630,709,734,739,745,750,818,823,829,834,844,877,887,920,925,1014,1021,1349,1354,1359],{"type":46,"tag":47,"props":48,"children":49},"element","p",{},[50],{"type":51,"value":52},"text","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.",{"type":46,"tag":47,"props":54,"children":55},{},[56],{"type":51,"value":57},"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.",{"type":46,"tag":47,"props":59,"children":60},{},[61,63,70,72,78],{"type":51,"value":62},"This skill is complementary to ",{"type":46,"tag":64,"props":65,"children":67},"code",{"className":66},[],[68],{"type":51,"value":69},"docs-check-style",{"type":51,"value":71}," (which checks language and formatting) and ",{"type":46,"tag":64,"props":73,"children":75},{"className":74},[],[76],{"type":51,"value":77},"docs-applies-to-tagging",{"type":51,"value":79}," (which checks deployment scope tags). Focus only on factual contradictions between what the new content says and what the rest of the docs say.",{"type":46,"tag":47,"props":81,"children":82},{},[83],{"type":51,"value":84},"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:",{"type":46,"tag":86,"props":87,"children":88},"ol",{},[89,117],{"type":46,"tag":90,"props":91,"children":92},"li",{},[93,99,101,107,109,115],{"type":46,"tag":94,"props":95,"children":96},"strong",{},[97],{"type":51,"value":98},"The local checkout",{"type":51,"value":100}," (via ",{"type":46,"tag":64,"props":102,"children":104},{"className":103},[],[105],{"type":51,"value":106},"Grep",{"type":51,"value":108},"\u002F",{"type":46,"tag":64,"props":110,"children":112},{"className":111},[],[113],{"type":51,"value":114},"Glob",{"type":51,"value":116},") — catches conflicts in the repo you're editing, including in-flight content that isn't published yet.",{"type":46,"tag":90,"props":118,"children":119},{},[120,125,127,132],{"type":46,"tag":94,"props":121,"children":122},{},[123],{"type":51,"value":124},"All published Elastic docs",{"type":51,"value":126}," (via the Elastic Docs MCP server at ",{"type":46,"tag":64,"props":128,"children":130},{"className":129},[],[131],{"type":51,"value":41},{"type":51,"value":133},", no auth) — catches conflicts across every repo whose docs are published, without needing them checked out locally.",{"type":46,"tag":47,"props":135,"children":136},{},[137,139,145,147,153,155,161,163,168],{"type":51,"value":138},"If the Elastic Docs MCP server tools (",{"type":46,"tag":64,"props":140,"children":142},{"className":141},[],[143],{"type":51,"value":144},"search_docs",{"type":51,"value":146},", ",{"type":46,"tag":64,"props":148,"children":150},{"className":149},[],[151],{"type":51,"value":152},"get_document_by_url",{"type":51,"value":154},", etc.) are not available in your session, fall back to ",{"type":46,"tag":64,"props":156,"children":158},{"className":157},[],[159],{"type":51,"value":160},"WebFetch",{"type":51,"value":162}," on specific published doc URLs. Note both approaches in your report. The MCP only sees ",{"type":46,"tag":94,"props":164,"children":165},{},[166],{"type":51,"value":167},"published",{"type":51,"value":169}," 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.",{"type":46,"tag":171,"props":172,"children":174},"h2",{"id":173},"inputs",[175],{"type":51,"value":176},"Inputs",{"type":46,"tag":47,"props":178,"children":179},{},[180,186],{"type":46,"tag":64,"props":181,"children":183},{"className":182},[],[184],{"type":51,"value":185},"$ARGUMENTS",{"type":51,"value":187}," is the file or directory containing the new or updated documentation. If empty, ask the user which file or directory to check.",{"type":46,"tag":171,"props":189,"children":191},{"id":190},"step-1-read-the-new-content",[192],{"type":51,"value":193},"Step 1: Read the new content",{"type":46,"tag":47,"props":195,"children":196},{},[197,199,205,207,212],{"type":51,"value":198},"Glob for all ",{"type":46,"tag":64,"props":200,"children":202},{"className":201},[],[203],{"type":51,"value":204},".md",{"type":51,"value":206}," files in ",{"type":46,"tag":64,"props":208,"children":210},{"className":209},[],[211],{"type":51,"value":185},{"type":51,"value":213},". Read each file fully.",{"type":46,"tag":47,"props":215,"children":216},{},[217,219,224],{"type":51,"value":218},"As you read, build a ",{"type":46,"tag":94,"props":220,"children":221},{},[222],{"type":51,"value":223},"claims list",{"type":51,"value":225},": 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:",{"type":46,"tag":227,"props":228,"children":229},"table",{},[230,249],{"type":46,"tag":231,"props":232,"children":233},"thead",{},[234],{"type":46,"tag":235,"props":236,"children":237},"tr",{},[238,244],{"type":46,"tag":239,"props":240,"children":241},"th",{},[242],{"type":51,"value":243},"Claim type",{"type":46,"tag":239,"props":245,"children":246},{},[247],{"type":51,"value":248},"Examples",{"type":46,"tag":250,"props":251,"children":252},"tbody",{},[253,270,286,302,318,334,350,366,382],{"type":46,"tag":235,"props":254,"children":255},{},[256,265],{"type":46,"tag":257,"props":258,"children":259},"td",{},[260],{"type":46,"tag":94,"props":261,"children":262},{},[263],{"type":51,"value":264},"Values",{"type":46,"tag":257,"props":266,"children":267},{},[268],{"type":51,"value":269},"Default values, thresholds, timeouts, limits, maximums, ports, paths, counts",{"type":46,"tag":235,"props":271,"children":272},{},[273,281],{"type":46,"tag":257,"props":274,"children":275},{},[276],{"type":46,"tag":94,"props":277,"children":278},{},[279],{"type":51,"value":280},"Naming",{"type":46,"tag":257,"props":282,"children":283},{},[284],{"type":51,"value":285},"Exact names of settings, API fields, CLI flags, UI elements, files, roles, or product features",{"type":46,"tag":235,"props":287,"children":288},{},[289,297],{"type":46,"tag":257,"props":290,"children":291},{},[292],{"type":46,"tag":94,"props":293,"children":294},{},[295],{"type":51,"value":296},"Steps and procedures",{"type":46,"tag":257,"props":298,"children":299},{},[300],{"type":51,"value":301},"The order of steps, which action comes first, where a setting lives in the UI, how to reach a page",{"type":46,"tag":235,"props":303,"children":304},{},[305,313],{"type":46,"tag":257,"props":306,"children":307},{},[308],{"type":46,"tag":94,"props":309,"children":310},{},[311],{"type":51,"value":312},"Prerequisites and requirements",{"type":46,"tag":257,"props":314,"children":315},{},[316],{"type":51,"value":317},"Required versions, licenses, permissions, dependencies, or setup that must be done first",{"type":46,"tag":235,"props":319,"children":320},{},[321,329],{"type":46,"tag":257,"props":322,"children":323},{},[324],{"type":46,"tag":94,"props":325,"children":326},{},[327],{"type":51,"value":328},"Concepts and definitions",{"type":46,"tag":257,"props":330,"children":331},{},[332],{"type":51,"value":333},"What a term means, how a concept is described, what something is or is not",{"type":46,"tag":235,"props":335,"children":336},{},[337,345],{"type":46,"tag":257,"props":338,"children":339},{},[340],{"type":46,"tag":94,"props":341,"children":342},{},[343],{"type":51,"value":344},"Availability and scope",{"type":46,"tag":257,"props":346,"children":347},{},[348],{"type":51,"value":349},"Deployment types and version ranges something applies to (serverless, ECE, ECH, self-managed, version ranges)",{"type":46,"tag":235,"props":351,"children":352},{},[353,361],{"type":46,"tag":257,"props":354,"children":355},{},[356],{"type":46,"tag":94,"props":357,"children":358},{},[359],{"type":51,"value":360},"Relationships",{"type":46,"tag":257,"props":362,"children":363},{},[364],{"type":51,"value":365},"\"X requires Y\", \"X replaces Y\", \"X is deprecated in favor of Z\", \"X is removed\", \"use X instead of Y\"",{"type":46,"tag":235,"props":367,"children":368},{},[369,377],{"type":46,"tag":257,"props":370,"children":371},{},[372],{"type":46,"tag":94,"props":373,"children":374},{},[375],{"type":51,"value":376},"Capabilities",{"type":46,"tag":257,"props":378,"children":379},{},[380],{"type":51,"value":381},"\"X supports Y\", \"X does not support Y\", \"X is not available in Z\"",{"type":46,"tag":235,"props":383,"children":384},{},[385,393],{"type":46,"tag":257,"props":386,"children":387},{},[388],{"type":46,"tag":94,"props":389,"children":390},{},[391],{"type":51,"value":392},"Recommendations",{"type":46,"tag":257,"props":394,"children":395},{},[396],{"type":51,"value":397},"Recommended defaults, best-practice guidance, \"we recommend X\" where another page recommends something incompatible",{"type":46,"tag":47,"props":399,"children":400},{},[401],{"type":51,"value":402},"Skip purely subjective or explanatory prose that can't conflict factually — only collect assertions another page could contradict.",{"type":46,"tag":171,"props":404,"children":406},{"id":405},"step-2-build-search-terms",[407],{"type":51,"value":408},"Step 2: Build search terms",{"type":46,"tag":47,"props":410,"children":411},{},[412],{"type":51,"value":413},"From the claims list, extract the most specific terms to search for:",{"type":46,"tag":415,"props":416,"children":417},"ul",{},[418,423,428,433],{"type":46,"tag":90,"props":419,"children":420},{},[421],{"type":51,"value":422},"Exact setting names, API parameter names, CLI flag names",{"type":46,"tag":90,"props":424,"children":425},{},[426],{"type":51,"value":427},"Feature names and product component names",{"type":46,"tag":90,"props":429,"children":430},{},[431],{"type":51,"value":432},"Any specific values (version numbers, default values) that appear in multiple places",{"type":46,"tag":90,"props":434,"children":435},{},[436],{"type":51,"value":437},"Phrases unique enough to identify the same topic elsewhere",{"type":46,"tag":47,"props":439,"children":440},{},[441,446,448,454,455,461,462,468,469,475,477,483],{"type":46,"tag":94,"props":442,"children":443},{},[444],{"type":51,"value":445},"Substitution variables",{"type":51,"value":447},": Elastic docs use variables like ",{"type":46,"tag":64,"props":449,"children":451},{"className":450},[],[452],{"type":51,"value":453},"{{motlp}}",{"type":51,"value":146},{"type":46,"tag":64,"props":456,"children":458},{"className":457},[],[459],{"type":51,"value":460},"{{edot}}",{"type":51,"value":146},{"type":46,"tag":64,"props":463,"children":465},{"className":464},[],[466],{"type":51,"value":467},"{{agent}}",{"type":51,"value":146},{"type":46,"tag":64,"props":470,"children":472},{"className":471},[],[473],{"type":51,"value":474},"{{ech}}",{"type":51,"value":476},". 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., ",{"type":46,"tag":64,"props":478,"children":480},{"className":479},[],[481],{"type":51,"value":482},"motlp",{"type":51,"value":484},"). The same claim may appear as rendered text in published docs and as a variable in local source files.",{"type":46,"tag":47,"props":486,"children":487},{},[488],{"type":51,"value":489},"Prefer specific multi-word terms over single common words. You'll reuse these terms for both the local and cross-repo searches.",{"type":46,"tag":171,"props":491,"children":493},{"id":492},"step-3a-search-the-local-checkout",[494],{"type":51,"value":495},"Step 3a: Search the local checkout",{"type":46,"tag":47,"props":497,"children":498},{},[499,501,506,508,513,515,520,522,527],{"type":51,"value":500},"For each search term, use ",{"type":46,"tag":64,"props":502,"children":504},{"className":503},[],[505],{"type":51,"value":106},{"type":51,"value":507}," to find ",{"type":46,"tag":64,"props":509,"children":511},{"className":510},[],[512],{"type":51,"value":204},{"type":51,"value":514}," files ",{"type":46,"tag":94,"props":516,"children":517},{},[518],{"type":51,"value":519},"outside",{"type":51,"value":521}," ",{"type":46,"tag":64,"props":523,"children":525},{"className":524},[],[526],{"type":51,"value":185},{"type":51,"value":528}," that mention the same topic:",{"type":46,"tag":530,"props":531,"children":535},"pre",{"className":532,"code":534,"language":51},[533],"language-text","Grep -r \"\u003Cterm>\" --include=\"*.md\" .\n",[536],{"type":46,"tag":64,"props":537,"children":539},{"__ignoreMap":538},"",[540],{"type":51,"value":534},{"type":46,"tag":47,"props":542,"children":543},{},[544],{"type":51,"value":545},"Collect the matching file paths. Exclude the files you already read in Step 1. Also exclude:",{"type":46,"tag":415,"props":547,"children":548},{},[549,560,571,582],{"type":46,"tag":90,"props":550,"children":551},{},[552,558],{"type":46,"tag":64,"props":553,"children":555},{"className":554},[],[556],{"type":51,"value":557},"_snippets\u002F",{"type":51,"value":559}," directories — snippet content is authored in context of the pages that include it; contradictions in snippets show up via the including pages",{"type":46,"tag":90,"props":561,"children":562},{},[563,569],{"type":46,"tag":64,"props":564,"children":566},{"className":565},[],[567],{"type":51,"value":568},"release-notes\u002F",{"type":51,"value":570}," — historical accuracy by design; don't flag version-specific claims as contradictions",{"type":46,"tag":90,"props":572,"children":573},{},[574,580],{"type":46,"tag":64,"props":575,"children":577},{"className":576},[],[578],{"type":51,"value":579},"redirects.yml",{"type":51,"value":581}," — not prose content",{"type":46,"tag":90,"props":583,"children":584},{},[585,587,593,594,600],{"type":51,"value":586},"Auto-generated files (e.g., ",{"type":46,"tag":64,"props":588,"children":590},{"className":589},[],[591],{"type":51,"value":592},"nav.yml",{"type":51,"value":146},{"type":46,"tag":64,"props":595,"children":597},{"className":596},[],[598],{"type":51,"value":599},"toc.yml",{"type":51,"value":601},")",{"type":46,"tag":47,"props":603,"children":604},{},[605,607,612],{"type":51,"value":606},"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 ",{"type":46,"tag":64,"props":608,"children":610},{"className":609},[],[611],{"type":51,"value":185},{"type":51,"value":613},".",{"type":46,"tag":171,"props":615,"children":617},{"id":616},"step-3b-search-all-published-elastic-docs-cross-repo",[618],{"type":51,"value":619},"Step 3b: Search all published Elastic docs (cross-repo)",{"type":46,"tag":47,"props":621,"children":622},{},[623],{"type":51,"value":624},"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.",{"type":46,"tag":47,"props":626,"children":627},{},[628],{"type":51,"value":629},"For each key claim or term:",{"type":46,"tag":86,"props":631,"children":632},{},[633,653,673],{"type":46,"tag":90,"props":634,"children":635},{},[636,638,643,645,651],{"type":51,"value":637},"Call ",{"type":46,"tag":64,"props":639,"children":641},{"className":640},[],[642],{"type":51,"value":144},{"type":51,"value":644}," with the term (use product\u002Fsection filters when you know them) to find published pages on the same topic. Optionally call ",{"type":46,"tag":64,"props":646,"children":648},{"className":647},[],[649],{"type":51,"value":650},"find_related_docs",{"type":51,"value":652}," to widen coverage. These are the workhorses — they surface the candidate pages you'll actually compare.",{"type":46,"tag":90,"props":654,"children":655},{},[656,658,663,665,671],{"type":51,"value":657},"For the most on-topic hits, call ",{"type":46,"tag":64,"props":659,"children":661},{"className":660},[],[662],{"type":51,"value":152},{"type":51,"value":664}," with ",{"type":46,"tag":64,"props":666,"children":668},{"className":667},[],[669],{"type":51,"value":670},"includeBody: true",{"type":51,"value":672}," to read the actual content. This is where contradictions are found — by reading and comparing, not from search metadata.",{"type":46,"tag":90,"props":674,"children":675},{},[676,678,684,686,692,694,699,701,707],{"type":51,"value":677},"Optionally call ",{"type":46,"tag":64,"props":679,"children":681},{"className":680},[],[682],{"type":51,"value":683},"find_docs_inconsistencies",{"type":51,"value":685}," (and ",{"type":46,"tag":64,"props":687,"children":689},{"className":688},[],[690],{"type":51,"value":691},"check_docs_coherence",{"type":51,"value":693},") on the main topic to widen the candidate set. Treat their output as ",{"type":46,"tag":94,"props":695,"children":696},{},[697],{"type":51,"value":698},"discovery only",{"type":51,"value":700},": these tools flag pages that ",{"type":46,"tag":702,"props":703,"children":704},"em",{},[705],{"type":51,"value":706},"overlap",{"type":51,"value":708}," 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.",{"type":46,"tag":47,"props":710,"children":711},{},[712,717,719,724,726,732],{"type":46,"tag":94,"props":713,"children":714},{},[715],{"type":51,"value":716},"If MCP tools are unavailable",{"type":51,"value":718},": use ",{"type":46,"tag":64,"props":720,"children":722},{"className":721},[],[723],{"type":51,"value":160},{"type":51,"value":725}," on specific published doc URLs (e.g., ",{"type":46,"tag":64,"props":727,"children":729},{"className":728},[],[730],{"type":51,"value":731},"https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Fopentelemetry\u002Fcompatibility\u002Flimitations",{"type":51,"value":733},"). Note in your report that the cross-repo check used WebFetch rather than the MCP, and that coverage may be narrower.",{"type":46,"tag":47,"props":735,"children":736},{},[737],{"type":51,"value":738},"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.",{"type":46,"tag":171,"props":740,"children":742},{"id":741},"step-4-read-and-compare",[743],{"type":51,"value":744},"Step 4: Read and compare",{"type":46,"tag":47,"props":746,"children":747},{},[748],{"type":51,"value":749},"For each candidate page — local (Step 3a) and published (Step 3b) — read the relevant sections. Compare what it says against your claims list:",{"type":46,"tag":415,"props":751,"children":752},{},[753,758,763,768,773,778,783,788,793,798],{"type":46,"tag":90,"props":754,"children":755},{},[756],{"type":51,"value":757},"Does it state a different value, limit, path, or name for the same thing?",{"type":46,"tag":90,"props":759,"children":760},{},[761],{"type":51,"value":762},"Does it describe a step, order, or procedure that conflicts with the new content?",{"type":46,"tag":90,"props":764,"children":765},{},[766],{"type":51,"value":767},"Does it list a different prerequisite, requirement, permission, or version?",{"type":46,"tag":90,"props":769,"children":770},{},[771],{"type":51,"value":772},"Does it define a term or concept in a way that no longer matches?",{"type":46,"tag":90,"props":774,"children":775},{},[776],{"type":51,"value":777},"Does it use a setting, parameter, or feature name that has since changed?",{"type":46,"tag":90,"props":779,"children":780},{},[781],{"type":51,"value":782},"Does it say something is available or unavailable where the new content says the opposite?",{"type":46,"tag":90,"props":784,"children":785},{},[786],{"type":51,"value":787},"Does it give a different version for the same event (introduction, deprecation, removal)?",{"type":46,"tag":90,"props":789,"children":790},{},[791],{"type":51,"value":792},"Does it recommend something incompatible with a new recommendation?",{"type":46,"tag":90,"props":794,"children":795},{},[796],{"type":51,"value":797},"Does it describe behavior or guidance that the new content supersedes?",{"type":46,"tag":90,"props":799,"children":800},{},[801,803,809,811,816],{"type":51,"value":802},"Do its ",{"type":46,"tag":64,"props":804,"children":806},{"className":805},[],[807],{"type":51,"value":808},"applies_to",{"type":51,"value":810}," tags conflict with the ",{"type":46,"tag":702,"props":812,"children":813},{},[814],{"type":51,"value":815},"availability claim",{"type":51,"value":817}," made in the new content — for example, does it mark a feature as GA where the new content says it's preview?",{"type":46,"tag":47,"props":819,"children":820},{},[821],{"type":51,"value":822},"Flag only genuine factual conflicts. Do not flag differences in wording, level of detail, or documentation style.",{"type":46,"tag":171,"props":824,"children":826},{"id":825},"step-5-generate-the-report",[827],{"type":51,"value":828},"Step 5: Generate the report",{"type":46,"tag":47,"props":830,"children":831},{},[832],{"type":51,"value":833},"Before writing findings, assess each conflict:",{"type":46,"tag":47,"props":835,"children":836},{},[837,842],{"type":46,"tag":94,"props":838,"children":839},{},[840],{"type":51,"value":841},"Direction of likely fix",{"type":51,"value":843}," — 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:",{"type":46,"tag":415,"props":845,"children":846},{},[847,857,867],{"type":46,"tag":90,"props":848,"children":849},{},[850,855],{"type":46,"tag":94,"props":851,"children":852},{},[853],{"type":51,"value":854},"Review draft",{"type":51,"value":856}," — multiple independent existing sources agree, or an explicit limitations\u002Fwarning callout directly contradicts the new claim (strong signal, but still needs confirmation)",{"type":46,"tag":90,"props":858,"children":859},{},[860,865],{"type":46,"tag":94,"props":861,"children":862},{},[863],{"type":51,"value":864},"Review existing",{"type":51,"value":866}," — the new content appears to be a deliberate update (e.g., a nearby version note or changelog entry suggests the change is intentional)",{"type":46,"tag":90,"props":868,"children":869},{},[870,875],{"type":46,"tag":94,"props":871,"children":872},{},[873],{"type":51,"value":874},"Verify both",{"type":51,"value":876}," — conflicting specific values or claims with no clear signal about which reflects current product behavior; an SME must confirm before either page is updated",{"type":46,"tag":47,"props":878,"children":879},{},[880,885],{"type":46,"tag":94,"props":881,"children":882},{},[883],{"type":51,"value":884},"Severity",{"type":51,"value":886},":",{"type":46,"tag":415,"props":888,"children":889},{},[890,900,910],{"type":46,"tag":90,"props":891,"children":892},{},[893,898],{"type":46,"tag":94,"props":894,"children":895},{},[896],{"type":51,"value":897},"High",{"type":51,"value":899}," — 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.",{"type":46,"tag":90,"props":901,"children":902},{},[903,908],{"type":46,"tag":94,"props":904,"children":905},{},[906],{"type":51,"value":907},"Medium",{"type":51,"value":909}," — a user would get inconsistent information but not necessarily a broken outcome. File a follow-up.",{"type":46,"tag":90,"props":911,"children":912},{},[913,918],{"type":46,"tag":94,"props":914,"children":915},{},[916],{"type":51,"value":917},"Low",{"type":51,"value":919}," — a nuance difference (e.g., a missing qualifier, a missing version floor, an incomplete list). File a follow-up.",{"type":46,"tag":47,"props":921,"children":922},{},[923],{"type":51,"value":924},"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:",{"type":46,"tag":86,"props":926,"children":927},{},[928,946,955,985,994,1004],{"type":46,"tag":90,"props":929,"children":930},{},[931,936,938,944],{"type":46,"tag":94,"props":932,"children":933},{},[934],{"type":51,"value":935},"Location",{"type":51,"value":937}," — for local files, a clickable markdown link: ",{"type":46,"tag":64,"props":939,"children":941},{"className":940},[],[942],{"type":51,"value":943},"[path\u002Fto\u002Fother-file.md:42](path\u002Fto\u002Fother-file.md#L42)",{"type":51,"value":945},"; for published pages, the doc URL",{"type":46,"tag":90,"props":947,"children":948},{},[949,953],{"type":46,"tag":94,"props":950,"children":951},{},[952],{"type":51,"value":884},{"type":51,"value":954}," — High \u002F Medium \u002F Low",{"type":46,"tag":90,"props":956,"children":957},{},[958,963,965,970,972,977,978,983],{"type":46,"tag":94,"props":959,"children":960},{},[961],{"type":51,"value":962},"Direction",{"type":51,"value":964}," — one of exactly three values: ",{"type":46,"tag":64,"props":966,"children":968},{"className":967},[],[969],{"type":51,"value":854},{"type":51,"value":971}," \u002F ",{"type":46,"tag":64,"props":973,"children":975},{"className":974},[],[976],{"type":51,"value":864},{"type":51,"value":971},{"type":46,"tag":64,"props":979,"children":981},{"className":980},[],[982],{"type":51,"value":874},{"type":51,"value":984},". Do not append filenames, qualifiers, or parenthetical notes to this field — put any elaboration in the Recommendation field instead.",{"type":46,"tag":90,"props":986,"children":987},{},[988,992],{"type":46,"tag":94,"props":989,"children":990},{},[991],{"type":51,"value":243},{"type":51,"value":993}," — one of: Values, Naming, Steps\u002FProcedure, Prerequisites, Concepts\u002FDefinitions, Availability\u002FScope, Relationships, Capabilities, Recommendations",{"type":46,"tag":90,"props":995,"children":996},{},[997,1002],{"type":46,"tag":94,"props":998,"children":999},{},[1000],{"type":51,"value":1001},"Contradiction",{"type":51,"value":1003}," — what the existing content says vs. what the new content says, with exact quotes where short enough",{"type":46,"tag":90,"props":1005,"children":1006},{},[1007,1012],{"type":46,"tag":94,"props":1008,"children":1009},{},[1010],{"type":51,"value":1011},"Recommendation",{"type":51,"value":1013}," — the likely fix and where it belongs; always note when SME confirmation is needed before acting",{"type":46,"tag":1015,"props":1016,"children":1018},"h3",{"id":1017},"report-format",[1019],{"type":51,"value":1020},"Report format",{"type":46,"tag":530,"props":1022,"children":1026},{"className":1023,"code":1024,"language":1025,"meta":538,"style":538},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","## Contradiction check: \u003Cinput file or directory>\n\n### Summary\nN contradictions found (X local, Y cross-repo) across M pages. Blockers: B.\nCross-repo check: ran via MCP \u002F ran via WebFetch \u002F skipped — \u003Creason>.\n\n### Local repo\n\n#### [path\u002Fto\u002Fexisting-file.md](path\u002Fto\u002Fexisting-file.md)\n- **[Line 42](path\u002Fto\u002Fexisting-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.\n- **[Line 88](path\u002Fto\u002Fexisting-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.\n\n### Cross-repo (published docs)\n\n#### https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002F\u003Cpath>\n- **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.\n","markdown",[1027],{"type":46,"tag":64,"props":1028,"children":1029},{"__ignoreMap":538},[1030,1048,1057,1071,1081,1090,1098,1111,1119,1149,1188,1277,1285,1298,1306,1320],{"type":46,"tag":1031,"props":1032,"children":1035},"span",{"class":1033,"line":1034},"line",1,[1036,1042],{"type":46,"tag":1031,"props":1037,"children":1039},{"style":1038},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1040],{"type":51,"value":1041},"## ",{"type":46,"tag":1031,"props":1043,"children":1045},{"style":1044},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1046],{"type":51,"value":1047},"Contradiction check: \u003Cinput file or directory>\n",{"type":46,"tag":1031,"props":1049,"children":1051},{"class":1033,"line":1050},2,[1052],{"type":46,"tag":1031,"props":1053,"children":1054},{"emptyLinePlaceholder":37},[1055],{"type":51,"value":1056},"\n",{"type":46,"tag":1031,"props":1058,"children":1060},{"class":1033,"line":1059},3,[1061,1066],{"type":46,"tag":1031,"props":1062,"children":1063},{"style":1038},[1064],{"type":51,"value":1065},"### ",{"type":46,"tag":1031,"props":1067,"children":1068},{"style":1044},[1069],{"type":51,"value":1070},"Summary\n",{"type":46,"tag":1031,"props":1072,"children":1074},{"class":1033,"line":1073},4,[1075],{"type":46,"tag":1031,"props":1076,"children":1078},{"style":1077},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1079],{"type":51,"value":1080},"N contradictions found (X local, Y cross-repo) across M pages. Blockers: B.\n",{"type":46,"tag":1031,"props":1082,"children":1084},{"class":1033,"line":1083},5,[1085],{"type":46,"tag":1031,"props":1086,"children":1087},{"style":1077},[1088],{"type":51,"value":1089},"Cross-repo check: ran via MCP \u002F ran via WebFetch \u002F skipped — \u003Creason>.\n",{"type":46,"tag":1031,"props":1091,"children":1093},{"class":1033,"line":1092},6,[1094],{"type":46,"tag":1031,"props":1095,"children":1096},{"emptyLinePlaceholder":37},[1097],{"type":51,"value":1056},{"type":46,"tag":1031,"props":1099,"children":1101},{"class":1033,"line":1100},7,[1102,1106],{"type":46,"tag":1031,"props":1103,"children":1104},{"style":1038},[1105],{"type":51,"value":1065},{"type":46,"tag":1031,"props":1107,"children":1108},{"style":1044},[1109],{"type":51,"value":1110},"Local repo\n",{"type":46,"tag":1031,"props":1112,"children":1114},{"class":1033,"line":1113},8,[1115],{"type":46,"tag":1031,"props":1116,"children":1117},{"emptyLinePlaceholder":37},[1118],{"type":51,"value":1056},{"type":46,"tag":1031,"props":1120,"children":1122},{"class":1033,"line":1121},9,[1123,1128,1134,1139,1144],{"type":46,"tag":1031,"props":1124,"children":1125},{"style":1038},[1126],{"type":51,"value":1127},"#### [",{"type":46,"tag":1031,"props":1129,"children":1131},{"style":1130},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1132],{"type":51,"value":1133},"path\u002Fto\u002Fexisting-file.md",{"type":46,"tag":1031,"props":1135,"children":1136},{"style":1038},[1137],{"type":51,"value":1138},"](",{"type":46,"tag":1031,"props":1140,"children":1142},{"style":1141},"--shiki-light:#E53935;--shiki-light-text-decoration:underline;--shiki-default:#F07178;--shiki-default-text-decoration:underline;--shiki-dark:#F07178;--shiki-dark-text-decoration:underline",[1143],{"type":51,"value":1133},{"type":46,"tag":1031,"props":1145,"children":1146},{"style":1038},[1147],{"type":51,"value":1148},")\n",{"type":46,"tag":1031,"props":1150,"children":1151},{"class":1033,"line":24},[1152,1157,1163,1169,1173,1178,1183],{"type":46,"tag":1031,"props":1153,"children":1154},{"style":1038},[1155],{"type":51,"value":1156},"-",{"type":46,"tag":1031,"props":1158,"children":1160},{"style":1159},"--shiki-light:#39ADB5;--shiki-light-font-weight:bold;--shiki-default:#89DDFF;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:bold",[1161],{"type":51,"value":1162}," **[",{"type":46,"tag":1031,"props":1164,"children":1166},{"style":1165},"--shiki-light:#91B859;--shiki-light-font-weight:bold;--shiki-default:#C3E88D;--shiki-default-font-weight:bold;--shiki-dark:#C3E88D;--shiki-dark-font-weight:bold",[1167],{"type":51,"value":1168},"Line 42",{"type":46,"tag":1031,"props":1170,"children":1171},{"style":1159},[1172],{"type":51,"value":1138},{"type":46,"tag":1031,"props":1174,"children":1175},{"style":1141},[1176],{"type":51,"value":1177},"path\u002Fto\u002Fexisting-file.md#L42",{"type":46,"tag":1031,"props":1179,"children":1180},{"style":1159},[1181],{"type":51,"value":1182},")**",{"type":46,"tag":1031,"props":1184,"children":1185},{"style":1077},[1186],{"type":51,"value":1187}," | 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.\n",{"type":46,"tag":1031,"props":1189,"children":1191},{"class":1033,"line":1190},11,[1192,1196,1200,1205,1209,1214,1218,1223,1228,1233,1237,1242,1246,1251,1255,1260,1264,1268,1272],{"type":46,"tag":1031,"props":1193,"children":1194},{"style":1038},[1195],{"type":51,"value":1156},{"type":46,"tag":1031,"props":1197,"children":1198},{"style":1159},[1199],{"type":51,"value":1162},{"type":46,"tag":1031,"props":1201,"children":1202},{"style":1165},[1203],{"type":51,"value":1204},"Line 88",{"type":46,"tag":1031,"props":1206,"children":1207},{"style":1159},[1208],{"type":51,"value":1138},{"type":46,"tag":1031,"props":1210,"children":1211},{"style":1141},[1212],{"type":51,"value":1213},"path\u002Fto\u002Fexisting-file.md#L88",{"type":46,"tag":1031,"props":1215,"children":1216},{"style":1159},[1217],{"type":51,"value":1182},{"type":46,"tag":1031,"props":1219,"children":1220},{"style":1077},[1221],{"type":51,"value":1222}," | Medium | Review draft | Naming | Existing uses the current setting name ",{"type":46,"tag":1031,"props":1224,"children":1225},{"style":1038},[1226],{"type":51,"value":1227},"`",{"type":46,"tag":1031,"props":1229,"children":1230},{"style":1130},[1231],{"type":51,"value":1232},"refresh_interval",{"type":46,"tag":1031,"props":1234,"children":1235},{"style":1038},[1236],{"type":51,"value":1227},{"type":46,"tag":1031,"props":1238,"children":1239},{"style":1077},[1240],{"type":51,"value":1241},". New content uses the old name ",{"type":46,"tag":1031,"props":1243,"children":1244},{"style":1038},[1245],{"type":51,"value":1227},{"type":46,"tag":1031,"props":1247,"children":1248},{"style":1130},[1249],{"type":51,"value":1250},"index.refresh_interval",{"type":46,"tag":1031,"props":1252,"children":1253},{"style":1038},[1254],{"type":51,"value":1227},{"type":46,"tag":1031,"props":1256,"children":1257},{"style":1077},[1258],{"type":51,"value":1259},". Multiple pages agree on ",{"type":46,"tag":1031,"props":1261,"children":1262},{"style":1038},[1263],{"type":51,"value":1227},{"type":46,"tag":1031,"props":1265,"children":1266},{"style":1130},[1267],{"type":51,"value":1232},{"type":46,"tag":1031,"props":1269,"children":1270},{"style":1038},[1271],{"type":51,"value":1227},{"type":46,"tag":1031,"props":1273,"children":1274},{"style":1077},[1275],{"type":51,"value":1276},". → Likely update the draft, but confirm the rename is complete.\n",{"type":46,"tag":1031,"props":1278,"children":1280},{"class":1033,"line":1279},12,[1281],{"type":46,"tag":1031,"props":1282,"children":1283},{"emptyLinePlaceholder":37},[1284],{"type":51,"value":1056},{"type":46,"tag":1031,"props":1286,"children":1288},{"class":1033,"line":1287},13,[1289,1293],{"type":46,"tag":1031,"props":1290,"children":1291},{"style":1038},[1292],{"type":51,"value":1065},{"type":46,"tag":1031,"props":1294,"children":1295},{"style":1044},[1296],{"type":51,"value":1297},"Cross-repo (published docs)\n",{"type":46,"tag":1031,"props":1299,"children":1301},{"class":1033,"line":1300},14,[1302],{"type":46,"tag":1031,"props":1303,"children":1304},{"emptyLinePlaceholder":37},[1305],{"type":51,"value":1056},{"type":46,"tag":1031,"props":1307,"children":1309},{"class":1033,"line":1308},15,[1310,1315],{"type":46,"tag":1031,"props":1311,"children":1312},{"style":1038},[1313],{"type":51,"value":1314},"#### ",{"type":46,"tag":1031,"props":1316,"children":1317},{"style":1044},[1318],{"type":51,"value":1319},"https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002F\u003Cpath>\n",{"type":46,"tag":1031,"props":1321,"children":1323},{"class":1033,"line":1322},16,[1324,1328,1333,1339,1344],{"type":46,"tag":1031,"props":1325,"children":1326},{"style":1038},[1327],{"type":51,"value":1156},{"type":46,"tag":1031,"props":1329,"children":1330},{"style":1159},[1331],{"type":51,"value":1332}," **",{"type":46,"tag":1031,"props":1334,"children":1336},{"style":1335},"--shiki-light:#E53935;--shiki-light-font-weight:bold;--shiki-default:#F07178;--shiki-default-font-weight:bold;--shiki-dark:#F07178;--shiki-dark-font-weight:bold",[1337],{"type":51,"value":1338},"Medium | Verify both | Prerequisites",{"type":46,"tag":1031,"props":1340,"children":1341},{"style":1159},[1342],{"type":51,"value":1343},"**",{"type":46,"tag":1031,"props":1345,"children":1346},{"style":1077},[1347],{"type":51,"value":1348}," | 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.\n",{"type":46,"tag":47,"props":1350,"children":1351},{},[1352],{"type":51,"value":1353},"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).",{"type":46,"tag":47,"props":1355,"children":1356},{},[1357],{"type":51,"value":1358},"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.",{"type":46,"tag":1360,"props":1361,"children":1362},"style",{},[1363],{"type":51,"value":1364},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1366,"total":1538},[1367,1386,1403,1418,1437,1449,1459,1474,1486,1501,1512,1525],{"slug":1368,"name":1368,"fn":1369,"description":1370,"org":1371,"tags":1372,"stars":1383,"repoUrl":1384,"updatedAt":1385},"accessing-benchmark-results","retrieve and analyze Rally benchmark results","Retrieve Rally benchmark results from an external Elasticsearch metrics store. Use to list past races, get a single race's overall (per-task) results, chart a metric's trend across multiple runs, compare two races, or check whether a run converged — e.g. \"show me recent geonames races\", \"what's the service_time trend for nyc_taxis over the last 30 days?\", \"compare these two race-ids\". Applies when datastore.type = elasticsearch is set in ~\u002F.rally\u002Frally.ini.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1373,1376,1379,1380],{"name":1374,"slug":1375,"type":15},"Analytics","analytics",{"name":1377,"slug":1378,"type":15},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":15},{"name":1381,"slug":1382,"type":15},"Performance","performance",2029,"https:\u002F\u002Fgithub.com\u002Felastic\u002Frally","2026-07-12T07:46:38.54144",{"slug":1387,"name":1387,"fn":1388,"description":1389,"org":1390,"tags":1391,"stars":1383,"repoUrl":1384,"updatedAt":1402},"developing-rally","develop and debug Rally source code","Work on Rally's own codebase, not running benchmarks with it. Use when setting up the dev environment, running Rally's tests or linters, navigating its source, debugging Rally's own code, or making changes to Rally itself.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1392,1395,1396,1399],{"name":1393,"slug":1394,"type":15},"Debugging","debugging",{"name":9,"slug":8,"type":15},{"name":1397,"slug":1398,"type":15},"Engineering","engineering",{"name":1400,"slug":1401,"type":15},"Local Development","local-development","2026-07-12T07:46:35.976807",{"slug":1404,"name":1404,"fn":1405,"description":1406,"org":1407,"tags":1408,"stars":1383,"repoUrl":1384,"updatedAt":1417},"running-benchmarks","run Rally benchmarks against Elasticsearch","Run Rally benchmarks (races) against Elasticsearch — an existing\u002Fexternal cluster or a Rally-provisioned distribution — and read the summary report. Use when running a race (any pipeline, track, challenge, target-hosts, or auth) or when interpreting throughput, latency, and service_time results.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1409,1410,1413,1414],{"name":9,"slug":8,"type":15},{"name":1411,"slug":1412,"type":15},"Elasticsearch","elasticsearch",{"name":1381,"slug":1382,"type":15},{"name":1415,"slug":1416,"type":15},"Testing","testing","2026-07-12T07:46:37.277964",{"slug":1419,"name":1419,"fn":1420,"description":1421,"org":1422,"tags":1423,"stars":1434,"repoUrl":1435,"updatedAt":1436},"cloud-access-management","manage Elastic Cloud organization access","Manage Elastic Cloud organization access: invite users, assign roles to Serverless projects, and create or revoke Cloud API keys. Use when granting, modifying, or auditing user access.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1424,1427,1428,1431],{"name":1425,"slug":1426,"type":15},"Cloud","cloud",{"name":9,"slug":8,"type":15},{"name":1429,"slug":1430,"type":15},"Operations","operations",{"name":1432,"slug":1433,"type":15},"Permissions","permissions",547,"https:\u002F\u002Fgithub.com\u002Felastic\u002Fagent-skills","2026-07-12T07:46:44.946285",{"slug":1438,"name":1438,"fn":1439,"description":1440,"org":1441,"tags":1442,"stars":1434,"repoUrl":1435,"updatedAt":1448},"cloud-create-project","create Elastic Cloud Serverless projects","Creates Elastic Cloud Serverless projects (Elasticsearch, Observability, or Security) via the REST API, saves credentials to file, and bootstraps a scoped Elasticsearch API key. Use when creating a new serverless project, provisioning a search or observability environment, or spinning up a new Elastic Cloud project.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1443,1444,1447],{"name":1425,"slug":1426,"type":15},{"name":1445,"slug":1446,"type":15},"Deployment","deployment",{"name":1411,"slug":1412,"type":15},"2026-07-12T07:46:42.353362",{"slug":1450,"name":1450,"fn":1451,"description":1452,"org":1453,"tags":1454,"stars":1434,"repoUrl":1435,"updatedAt":1458},"cloud-manage-project","manage Elastic Cloud Serverless projects","Manages existing Elastic Cloud Serverless projects: list, get, update, delete, reset credentials, resume, and load saved credentials. Connects to existing projects by resolving endpoints and acquiring scoped Elasticsearch API keys. Use when performing day-2 operations on serverless projects, connecting to an existing project, loading or resetting project credentials, or looking up project details.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1455,1456,1457],{"name":1425,"slug":1426,"type":15},{"name":1411,"slug":1412,"type":15},{"name":1429,"slug":1430,"type":15},"2026-07-12T07:46:41.097412",{"slug":1460,"name":1460,"fn":1461,"description":1462,"org":1463,"tags":1464,"stars":1434,"repoUrl":1435,"updatedAt":1473},"cloud-network-security","manage Elastic Cloud network security","Manage Serverless network security (traffic filters): create, update, and delete IP filters and AWS PrivateLink VPC filters. Use when restricting network access or configuring private connectivity.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1465,1466,1467,1470],{"name":1425,"slug":1426,"type":15},{"name":1411,"slug":1412,"type":15},{"name":1468,"slug":1469,"type":15},"Networking","networking",{"name":1471,"slug":1472,"type":15},"Security","security","2026-07-12T07:46:43.675992",{"slug":1475,"name":1475,"fn":1476,"description":1477,"org":1478,"tags":1479,"stars":1434,"repoUrl":1435,"updatedAt":1485},"cloud-setup","configure Elastic Cloud authentication","Configures Elastic Cloud authentication and environment defaults. Use when setting up EC_API_KEY, configuring Cloud API access, or when another cloud skill requires credentials.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1480,1483,1484],{"name":1481,"slug":1482,"type":15},"Authentication","authentication",{"name":1425,"slug":1426,"type":15},{"name":1411,"slug":1412,"type":15},"2026-07-12T07:46:39.783105",{"slug":1487,"name":1487,"fn":1488,"description":1489,"org":1490,"tags":1491,"stars":1434,"repoUrl":1435,"updatedAt":1500},"elasticsearch-audit","configure Elasticsearch security audit logs","Enable, configure, and query Elasticsearch security audit logs. Use when the task involves audit logging setup, event filtering, or investigating security incidents like failed logins.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1492,1495,1496,1499],{"name":1493,"slug":1494,"type":15},"Audit","audit",{"name":1411,"slug":1412,"type":15},{"name":1497,"slug":1498,"type":15},"Logs","logs",{"name":1471,"slug":1472,"type":15},"2026-07-12T07:47:35.092599",{"slug":1502,"name":1502,"fn":1503,"description":1504,"org":1505,"tags":1506,"stars":1434,"repoUrl":1435,"updatedAt":1511},"elasticsearch-authn","configure Elasticsearch authentication realms","Authenticate to Elasticsearch using native, file-based, LDAP\u002FAD, SAML, OIDC, Kerberos, JWT, or certificate realms. Use when connecting with credentials, choosing a realm, or managing API keys. Assumes the target realms are already configured.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1507,1508,1509,1510],{"name":1481,"slug":1482,"type":15},{"name":9,"slug":8,"type":15},{"name":1411,"slug":1412,"type":15},{"name":1471,"slug":1472,"type":15},"2026-07-12T07:47:41.474547",{"slug":1513,"name":1513,"fn":1514,"description":1515,"org":1516,"tags":1517,"stars":1434,"repoUrl":1435,"updatedAt":1524},"elasticsearch-authz","manage Elasticsearch RBAC and security roles","Manage Elasticsearch RBAC: native users, roles, role mappings, document- and field-level security. Use when creating users or roles, assigning privileges, or mapping external realms like LDAP\u002FSAML.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1518,1519,1520,1523],{"name":9,"slug":8,"type":15},{"name":1411,"slug":1412,"type":15},{"name":1521,"slug":1522,"type":15},"RBAC","rbac",{"name":1471,"slug":1472,"type":15},"2026-07-12T07:47:36.394177",{"slug":1526,"name":1526,"fn":1527,"description":1528,"org":1529,"tags":1530,"stars":1434,"repoUrl":1435,"updatedAt":1537},"elasticsearch-esql","query Elasticsearch data with ES|QL","Execute ES|QL (Elasticsearch Query Language) queries, use when the user wants to query Elasticsearch data, analyze logs, aggregate metrics, explore data, or create charts and dashboards from ES|QL results.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1531,1532,1533,1534],{"name":1374,"slug":1375,"type":15},{"name":1377,"slug":1378,"type":15},{"name":1411,"slug":1412,"type":15},{"name":1535,"slug":1536,"type":15},"SQL","sql","2026-07-12T07:47:40.249533",92,{"items":1540,"total":1610},[1541,1550,1556,1568,1578,1587,1600],{"slug":77,"name":77,"fn":1542,"description":1543,"org":1544,"tags":1545,"stars":20,"repoUrl":21,"updatedAt":1549},"validate applies_to tags in Elastic documentation","Validate and generate applies_to tags in Elastic documentation, including for cumulative docs across versions and deployment types. Use when writing new docs pages, reviewing existing pages for correct applies_to usage, deciding whether to preserve or replace existing version-scoped content, or when content changes lifecycle state (experimental, preview, beta, GA, deprecated, removed).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1546,1547,1548],{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"2026-08-13T04:33:06.673014",{"slug":4,"name":4,"fn":5,"description":6,"org":1551,"tags":1552,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1553,1554,1555],{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"slug":69,"name":69,"fn":1557,"description":1558,"org":1559,"tags":1560,"stars":20,"repoUrl":21,"updatedAt":1567},"check documentation for Elastic style compliance","Check documentation for Elastic style guide compliance using Vale linter output and style rules. Use when writing, editing, or reviewing docs to catch voice, tone, grammar, formatting, accessibility, and word choice issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1561,1564,1565,1566],{"name":1562,"slug":1563,"type":15},"Accessibility","accessibility",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"2026-08-13T04:33:05.641583",{"slug":1569,"name":1569,"fn":1570,"description":1571,"org":1572,"tags":1573,"stars":20,"repoUrl":21,"updatedAt":1577},"docs-content-type-checker","check Elastic documentation content types","Check a docs-content page against Elastic content type guidelines (overview, how-to, tutorial, troubleshooting, changelog), or classify a proposed page idea against the content types before drafting. Use when the user asks to check content type compliance, validate page structure, review a doc against content type standards, or decide which content type a planned page should use.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1574,1575,1576],{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"2026-07-12T07:50:36.826563",{"slug":1579,"name":1579,"fn":1580,"description":1581,"org":1582,"tags":1583,"stars":20,"repoUrl":21,"updatedAt":1586},"docs-draft-workflow-docs","draft Elastic Workflows documentation","Draft or update Elastic Workflows documentation pages in explore-analyze\u002Fworkflows\u002F — step references, use cases, how-tos, concepts, and overviews. Use when writing Workflows docs, documenting a step type, turning workflow YAML into documentation, drafting from a doc issue in docs-content or docs-content-internal, or creating a new page under the Workflows docset.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1584,1585],{"name":13,"slug":14,"type":15},{"name":18,"slug":19,"type":15},"2026-08-13T04:33:08.728147",{"slug":1588,"name":1588,"fn":1589,"description":1590,"org":1591,"tags":1592,"stars":20,"repoUrl":21,"updatedAt":1599},"docs-fix-changelog","improve Elastic changelog YAML files","Suggest improved text for changelog YAML files against current Elastic standards. Mirrors the pattern catalog from docs-review-changelog to provide consistent fixes. Includes type-title alignment checking and technical content assessment to catch overly technical titles that need user-focused rewrites. Features repository-aware area validation and enhanced confidence scoring. Supports single files or directories. Fetches canonical guidance to stay in sync. Use after review identifies quality issues, or when drafting new changelogs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1593,1594,1595,1596],{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":1597,"slug":1598,"type":15},"YAML","yaml","2026-08-07T04:37:37.005407",{"slug":1601,"name":1601,"fn":1602,"description":1603,"org":1604,"tags":1605,"stars":20,"repoUrl":21,"updatedAt":1609},"docs-flag-jargon-skill","flag Elastic jargon in documentation","Flag Elastic-internal jargon in documentation and suggest plain-language replacements. Use when reviewing, writing, or editing docs to catch terms that external readers would not understand.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1606,1607,1608],{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"2026-08-13T04:33:07.579108",19]