
Docs Check Style
- 60 installs
- 71 repo stars
- Updated July 31, 2026
- elastic/elastic-docs-skills
docs-check-style is an Elastic documentation skill for documentation style checking.
About
The docs-check-style skill supports Elastic technical writers and contributors. documentation style checking. Validates Elastic documentation against style guide rules and flags violations. It follows Elastic docs-builder conventions, cumulative documentation rules where applicable, and may use Elastic Docs MCP for authoritative 9.x references. Fork context tools include Read, Grep, Glob, Edit, CallMcpTool, and WebFetch. Use when writing, reviewing, or fixing Elastic documentation pages that need documentation style checking.
- Style guide rule validation.
- Violation reporting with fixes.
- Elastic voice and terminology checks.
Docs Check Style by the numbers
- 60 all-time installs (skills.sh)
- Ranked #752 of 1,879 Documentation skills by installs in the Skillselion catalog
- Data as of Aug 1, 2026 (Skillselion catalog sync)
docs-check-style capabilities & compatibility
- Capabilities
- style guide rule validation. · violation reporting with fixes. · elastic voice and terminology checks.
- Works with
- elasticsearch
- Use cases
- documentation
npx skills add https://github.com/elastic/elastic-docs-skills --skill docs-check-styleAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 60 |
|---|---|
| repo stars | ★ 71 |
| Last updated | July 31, 2026 |
| Repository | elastic/elastic-docs-skills ↗ |
How do I documentation style checking in Elastic docs?
documentation style checking
Who is it for?
Elastic documentation authors and reviewers.
Skip if: Skip for non-Elastic documentation repositories.
When should I use this skill?
User needs Elastic docs help with documentation style checking.
What you get
Documentation updated per docs-check-style skill rules.
Files
<!-- 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 style reviewer for Elastic documentation. Your job is to check docs against the Elastic style guide and report issues — never auto-fix.
Inputs
$ARGUMENTS is the file or directory to check. If empty, ask the user what to review.
Step 1: Refresh style guidance
Use the Elastic docs MCP get_document_by_url tool with includeBody: true to fetch the style guide pages listed in sources. If the MCP is unavailable, fetch the .md page URLs directly. Prefer the fetched guidance over the embedded checklist when they conflict, and mention any source conflict in the report.
Step 2: Run Vale
Run the Vale CLI:
vale --output=line $ARGUMENTSIf Vale is not installed, skip this step and note it in your report. Proceed with manual review.
Step 3: Read the document(s)
Glob for .md files in $ARGUMENTS (or read the single file). Read each file fully.
Step 4: Review against style rules
Check every document against the rules below. Categorize each issue by area.
---
Voice and tone
- Active voice: Prefer active over passive. Passive is acceptable only when active sounds awkward.
- Present tense: Write in present tense. Avoid "will," "would," "should," "could," "currently," "now."
- Second person: Use "you/your/yours." Never use "I/me/my." Use "we" sparingly ("we recommend" is OK).
- No "please": Remove "please" from instructions. Exception: when users must wait or face inconvenience.
- Contractions: Use them for conversational tone. Don't mix contractions with spelled-out equivalents in the same context. Avoid ambiguous contractions ("there'd," "it'll," "they'd").
- Concise sentences: Limit conjunctions to two per sentence. Prefer simple present over gerunds in prose.
- Informational tone: Most docs should be direct, neutral, and scannable. Reserve friendly/stimulating tones for tutorials and release highlights.
Word choice
Flag any usage that conflicts with this table:
| Word | Status | Guidance |
|---|---|---|
| abort | Avoid | Offensive. Use _shut down_, _cancel_, or _stop_. |
| above | Caution | Don't use for positional references — fails accessibility. |
| add | Preferred | Establishing a new relationship. Opposite: _remove_. |
| app, application | Caution | Use _app_ only when needed for clarity. |
| begin | Caution | Context-dependent. Less formal than _start_. Opposite: _end_. |
| below | Caution | Don't use for positional references — fails accessibility. |
| blacklist | Avoid | Rooted in racism. Use _blocklist_. |
| boot | Avoid | Use _start_ or _run_. |
| can | Preferred | Conveys permission. |
| cancel | Preferred | Stop an action without saving pending changes. |
| cannot, can't | Preferred | Indicates inability. Often confused with _unable_. |
| choose | Avoid | Use _select_. |
| click | Caution | OK for mouse actions. Otherwise use device-neutral verbs like _select_. |
| clone | Caution | Copy linked to the original. Distinct from _copy_ and _duplicate_. |
| copy | Caution | Exact copy in same location. Distinct from _clone_ and _duplicate_. |
| could | Avoid | Use _can_ or _might_. |
| create | Preferred | Creating from scratch. Not "create new." Opposite: _delete_. |
| delete | Preferred | Data permanently unavailable to users. Opposite: _create_. |
| disable | Caution | Don't use for broken things. Use _inactive_, _unavailable_, _deactivate_, _turn off_, or _deselect_ depending on context. |
| duplicate | Caution | Copy in same location. Distinct from _copy_ and _clone_. |
| easy, easily | Avoid | Frustrating when users struggle. Remove — same meaning without it. |
| edit | Preferred | Not _change_ or _modify_. Better for localization. |
| e.g. | Avoid | Use _for example_ or _such as_. |
| enable | Preferred | Turning on or activating a feature. |
| enter | Preferred | User text input. Not _type_. |
| execute | Avoid | Use _run_ or _start_. |
| hack | Avoid | Noun: _tip_ or _work-around_. Verb: _configure_ or _modify_. |
| hit | Avoid | Noun: _visits_. Verb: _click_ or _press_. |
| i.e. | Avoid | Don't use Latin abbreviations. |
| invalid | Avoid | Use _not valid_ or _incorrect_. |
| kill | Caution | Use _cancel_ or _stop_ unless the actual command is kill. |
| launch | Avoid | Use _open_. |
| may | Caution | _may_ = permissibility, _can_ = capability, _might_ = possibility. |
| open | Preferred | Use instead of _launch_. |
| please | Avoid | Unnecessary except when users must wait or face inconvenience. |
| remove | Preferred | Removes a relationship, not data. Opposite: _add_. |
| select | Preferred | Preferred over _choose_. |
| simple, simply | Avoid | Adds no value. Implies users shouldn't need help. |
| start | Caution | Context-dependent. Less formal than _begin_. |
| terminate | Avoid | Use _stop_ or _exit_. |
| type | Avoid | Use _enter_ — accommodates multiple input methods. |
| unable | Caution | Means not being able to perform an action. Distinct from _cannot_. |
| utilize | Caution | Use _use_ instead. |
| view | Preferred | More inclusive than _see_. |
| whitelist | Avoid | Use _allowlist_. |
Also flag Latin abbreviations: replace "e.g." with "for example," "i.e." with "that is," "etc." with "and more," "via" with "through."
Grammar and spelling
- American English: -ize/-yze verbs, -or nouns, -ense nouns, -og nouns (organize, color, license, dialog).
- Oxford comma: Always use in lists of three or more.
- Abbreviations: Spell out on first use. Pluralize without apostrophes (APIs, SDKs, OSes).
- Capitalization: Sentence-style for headings. Capitalize proper nouns and product names only. Don't capitalize spelled-out acronyms unless proper nouns. Match UI capitalization.
- Hyphens: Compound adjectives before nouns (real-time results), two vowels together (re-enable), self-/ex-/all- prefixes. No hyphen for predicate adjectives ("up to date") or adverbs ending in -ly ("newly installed").
- Gerunds: Use in top-level task titles. Use action verbs in lower-level titles. Avoid gerunds in prepositional phrases ("how to configure" not "on configuring").
- Noun vs. verb compounds: backup/back up, login/log in, setup/set up, startup/start up.
- Quotation marks: Use double quotation marks to quote error messages or introduce an unfamiliar term on first use only. Do not use quotation marks for code/commands (use monospace instead), for emphasis (use bold or italic), or for product/feature/UI names. Place commas and periods inside closing quotation marks. Place colons, semicolons, question marks, and exclamation points outside closing quotation marks (unless part of the quoted material). Use single quotation marks only for quotations within quotations.
Formatting
- Bold: UI element names (apps, buttons, menu items, page names, tabs, columns).
- Italic: New terms and concepts, Elastic documentation resource titles.
- Monospace: API endpoints, class names, code, commands, config settings, data types, directories, env vars, error messages, field names, function names, index names, parameters, process names, property names, role names, variables.
- Numbers: Write out 1–9 in prose, numerals for 10+. Use numerals in tables, for decimals, dimensions, percentages. Separate large numbers with commas (1,234,567).
- Dates and times: Use
Month DD, YYYYfor dates. Use 12-hour time with uppercaseAM/PM. Use UTC as the primary time zone, or include UTC with local time when needed. Avoid relative terms such as "last month," "recently," and "currently." - Lists: Minimum two items. Parallel structure. Capitalize first letter. No periods unless complete sentences. Introduce with a heading, sentence, or fragment ending with a colon.
- Paragraphs: Keep under seven lines.
- Line spacing: Single line break between elements.
- Admonitions: Use notes, tips, warnings, important blocks, and plain admonitions for their documented purpose. Do not stack admonitions, overuse them, or use regular admonitions for prerequisites when a plain requirements admonition fits better.
- Code samples: Use consistent indentation, syntax highlighting, runnable examples when possible, and short comments before the code they explain. For JSON, use footnotes only when needed because footnotes are less accessible.
- Sensitive information: Flag screenshots, examples, logs, tokens, hostnames, IPs, internal links, customer data, and secrets that need redaction or replacement with documentation-safe placeholders.
Accessibility
- Alt text: Required for all images, icons, and media. No backticks in alt text.
- Link text: Descriptive — never "click here" or bare URLs.
- No directional language: Avoid "above," "below," "left," "right" for positional references.
- Device-neutral verbs: Prefer device-neutral language. Use "select" for choices — tabs, checkboxes, dropdowns, and radio buttons. Use "click" for button actions, icons, and following links. Avoid "click" when the user is making a selection rather than triggering an action.
- Plain language: Short sentences. Expand acronyms on first use. Parallel structures in lists.
- Gender-neutral: Use they/their. Replace gendered defaults (use "folks" not "guys").
- Avoid: Buzzwords, superhero terms, violent imagery, ableist language, non-specific superlatives.
UI writing
- Buttons: "Click Save" — don't add "button" after the label.
- Checkboxes/radio buttons: "Select Logs" / "Clear Metrics."
- Select vs. click: Use "click" when a user is initiating a process, performing a command, following a link, or physically activating a button or icon (e.g., "Click Save", "Click the Help icon"). Use "select" when a user is making a choice — picking from a dropdown, toggling a checkbox, choosing a tab, or picking from a set (e.g., "Select the Logs tab", "Select the Enforce HTTPS checkbox"). ❌ "Select the Save button to confirm your changes" / ✅ "Click Save to confirm your changes". ❌ "Click Logs" [for a tab] / ✅ "Select the Logs tab to view events".
- Text fields: "In the Name field, enter
value." - Toggles: "Turn on Feature" / "Turn off Feature" — not "enable/disable" as verbs. Use "toggle" as a noun to refer to the UI element (e.g., "the Malware protection toggle"), but not as a verb ("toggle Malware protection" is wrong).
- Keys: "Press Enter" / "Press Command+Alt+L."
- Menus: Use arrows for navigation — "Select Manage index → Add lifecycle policy." Do not use the verbs "open" or "close" for menus; use "From the menu,..." instead. Refer to the element as "menu" — not "dropdown menu" or "dropdown list."
- Icons: Reference by tooltip text, include inline icon. Avoid parentheses around icons.
- Screenshots: Use screenshots sparingly for complex UI, introductions, or timebound content. Check that screenshots use a consistent aspect ratio, 100% zoom, only essential UI, a screenshot border when appropriate, accessible alt text, and no sensitive information.
- Procedures: 5–9 steps. Focus on use cases, not piece-by-piece UI description. Eliminate obvious steps.
- Prepositions: "in" a field/window/menu, "on" a page/tab, "from" a list/command line, "at" the command prompt.
- Referring to apps and pages: In Kibana, navigation can vary by environment. Use solution-agnostic patterns when directing users to apps or pages: "Find APP in the navigation menu or use the [global search field]." When the app is only reachable via search: "To open APP, find PARENT in the navigation menu or use the global search field." Flag instructions that assume a fixed navigation path without offering the search alternative.
- Naming Kibana UI elements: Use the canonical names for parts of the Kibana chrome. Flag any other variants you see.
| Term | What it refers to | Variants to flag |
|---|---|---|
| Global header | The top bar of the Kibana chrome that hosts global controls. | "Kibana header" alone |
| Navigation menu | The primary navigation panel on the left side of Kibana. | "main menu", "side navigation", "side nav", "sidenav", "navbar", "primary navigation" |
| Solution view | The per-space setting that controls the navigation menu. | — |
| Classic view | The non-solution option in the Solution view setting. | "Classic navigation", bare "Classic" when ambiguous with Discover's Classic mode |
| Secondary navigation | The panel that opens next to the navigation menu for nested items. | "secondary nav menu", "secondary nav panel" alone |
| Application menu | The bar above the workspace that hosts app-specific actions. | "App menu bar", "app menu" |
| Workspace | The main content area of the current app. | "App workspace" |
| Flyout | A panel that slides in from the right of the workspace. | "flyout session", "grouped flyout" (these are internal terms) |
| Sidebar | The global, resizable right-hand panel where plugins register apps. | — |
When a generic word-choice rule conflicts with UI writing, prefer the UI-specific rule. For example, click is correct for action buttons and icons, while select is correct for choices such as tabs, checkboxes, radio buttons, and dropdown options.
---
Step 5: Generate the report
Present findings as a structured report. Group issues by area. For each issue:
1. File and line — path/to/file.md:42 2. Area — one of: Voice/Tone, Word Choice, Grammar/Spelling, Formatting, Accessibility, UI Writing 3. Issue — what's wrong 4. Suggestion — how to fix it
Report format
## Style review: <file or directory>
### Summary
- X issues found (Y from Vale, Z from manual review)
- Breakdown by area: ...
### Issues
#### Voice and tone
- `file.md:12` — Passive voice: "Settings can be configured..." → "You can configure settings..."
#### Word choice
- `file.md:25` — Avoid "click" for device-neutral context → use "select"
- `file.md:30` — Latin abbreviation "e.g." → "for example"
...If no issues are found, say so. Always end with a one-line summary.
Style guide reference
For deeper investigation, consult these pages:
{
"skill_name": "docs-check-style",
"evals": [
{
"id": 1,
"prompt": "Check this paragraph for style issues:\n\n\"Please click the button below to launch the application. The user will be able to easily configure their settings. We will provide you with the necessary information, e.g. API keys, which can be utilized to execute the relevant queries.\"",
"expected_output": "Flags multiple style violations: please, click, below, launch, easily, e.g., will, utilized, execute",
"expectations": [
"Flags 'please' as unnecessary per style guide",
"Flags 'below' as a positional reference (accessibility issue)",
"Flags 'launch' and suggests 'open'",
"Flags 'easily' as adding no value",
"Flags 'e.g.' and suggests 'for example'",
"Flags 'utilized' and suggests 'use'",
"Flags 'execute' and suggests 'run'",
"Categorizes issues by area (Word Choice, Voice/Tone, Accessibility)"
]
},
{
"id": 2,
"prompt": "Review this heading and procedure for style:\n\n## How To Setup The Elasticsearch Cluster\n1. First, type your cluster name in the Name field\n2. Choose a region from the dropdown\n3. Click the Save button",
"expected_output": "Flags capitalization issues in heading, 'type' should be 'enter', 'choose' should be 'select', 'click the Save button' should be 'click Save'",
"expectations": [
"Flags heading capitalization (should be sentence-style, not title case)",
"Flags 'Setup' should be 'Set Up' (verb form) or suggests 'Set up'",
"Flags 'type' and suggests 'enter'",
"Flags 'Choose' and suggests 'Select'",
"Flags 'Click the Save button' and suggests 'Click **Save**' (no 'button' after label)"
]
},
{
"id": 3,
"prompt": "Check this paragraph for style issues:\n\n\"To create a data view, open Stack Management and select **Data Views**. Enter a name and an index pattern that matches your data. Click **Save**.\"",
"expected_output": "Reports no or minimal style issues — the paragraph uses active voice, direct address, correct UI element formatting, and appropriate verbs",
"expectations": [
"Does NOT flag 'open' as a word choice issue (it's the correct verb for navigating to a page)",
"Does NOT flag 'select' as a word choice issue (it's the correct verb for choosing a menu item)",
"Does NOT flag 'Click **Save**' (correct UI interaction format — no 'button' after label)",
"Does NOT flag 'enter' as a word choice issue (it's the preferred verb for text input)",
"Reports the paragraph as clean or flags only minor issues"
]
},
{
"id": 4,
"prompt": "Check this docs snippet for style:\n\n\"Recently, the API started returning errors at 16:30 PST. Use 10.1.2.3 and https://internal.example.com/token in the example below. The screenshot has no alt text.\"",
"expected_output": "Flags relative time wording, time zone/time format issues, sensitive placeholder data, directional language, and missing alt text",
"expectations": [
"Flags 'Recently' as a relative time reference",
"Flags 24-hour time and seasonal time zone usage, and suggests a 12-hour time with UTC context",
"Flags IP address, internal URL, and token-like example as sensitive information needing redaction or documentation-safe placeholders",
"Flags 'below' as directional language",
"Flags missing alt text for the screenshot"
]
}
]
}
Related skills
FAQ
What does docs-check-style do?
docs-check-style is an Elastic documentation skill for documentation style checking.
When should I use docs-check-style?
User needs Elastic docs help with documentation style checking.
Is this skill safe to install?
Review the Security Audits panel on this page before installing in production.