Docs Check Style logo

Docs Check Style

Organization
elastic
docs-check-style

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.

Overview

Publisherelastic
Repositoryelastic-docs-skills
Skill namedocs-check-style
Stars
71
Forks
10
Bundled files
1
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by elastic on GitHub. Read the source before you install it.

Installation

Install the Docs Check Style AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/elastic/elastic-docs-skills.git /tmp/elastic-docs-skills
mkdir -p .claude/skills
cp -r /tmp/elastic-docs-skills/skills/review/docs-check-style .claude/skills/docs-check-style
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Docs Check Style in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Docs Check Style on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Docs Check Style is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

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 $ARGUMENTS

If 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:

WordStatusGuidance
abortAvoidOffensive. Use shut down, cancel, or stop.
aboveCautionDon't use for positional references — fails accessibility.
addPreferredEstablishing a new relationship. Opposite: remove.
app, applicationCautionUse app only when needed for clarity.
beginCautionContext-dependent. Less formal than start. Opposite: end.
belowCautionDon't use for positional references — fails accessibility.
blacklistAvoidRooted in racism. Use blocklist.
bootAvoidUse start or run.
canPreferredConveys permission.
cancelPreferredStop an action without saving pending changes.
cannot, can'tPreferredIndicates inability. Often confused with unable.
chooseAvoidUse select.
clickCautionOK for mouse actions. Otherwise use device-neutral verbs like select.
cloneCautionCopy linked to the original. Distinct from copy and duplicate.
copyCautionExact copy in same location. Distinct from clone and duplicate.
couldAvoidUse can or might.
createPreferredCreating from scratch. Not "create new." Opposite: delete.
deletePreferredData permanently unavailable to users. Opposite: create.
disableCautionDon't use for broken things. Use inactive, unavailable, deactivate, turn off, or deselect depending on context.
duplicateCautionCopy in same location. Distinct from copy and clone.
easy, easilyAvoidFrustrating when users struggle. Remove — same meaning without it.
editPreferredNot change or modify. Better for localization.
e.g.AvoidUse for example or such as.
enablePreferredTurning on or activating a feature.
enterPreferredUser text input. Not type.
executeAvoidUse run or start.
hackAvoidNoun: tip or work-around. Verb: configure or modify.
hitAvoidNoun: visits. Verb: click or press.
i.e.AvoidDon't use Latin abbreviations.
invalidAvoidUse not valid or incorrect.
killCautionUse cancel or stop unless the actual command is kill.
launchAvoidUse open.
mayCautionmay = permissibility, can = capability, might = possibility.
openPreferredUse instead of launch.
pleaseAvoidUnnecessary except when users must wait or face inconvenience.
removePreferredRemoves a relationship, not data. Opposite: add.
selectPreferredPreferred over choose.
simple, simplyAvoidAdds no value. Implies users shouldn't need help.
startCautionContext-dependent. Less formal than begin.
terminateAvoidUse stop or exit.
typeAvoidUse enter — accommodates multiple input methods.
unableCautionMeans not being able to perform an action. Distinct from cannot.
utilizeCautionUse use instead.
viewPreferredMore inclusive than see.
whitelistAvoidUse 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, YYYY for dates. Use 12-hour time with uppercase AM/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.

    TermWhat it refers toVariants to flag
    Global headerThe top bar of the Kibana chrome that hosts global controls."Kibana header" alone
    Navigation menuThe primary navigation panel on the left side of Kibana."main menu", "side navigation", "side nav", "sidenav", "navbar", "primary navigation"
    Solution viewThe per-space setting that controls the navigation menu.
    Classic viewThe non-solution option in the Solution view setting."Classic navigation", bare "Classic" when ambiguous with Discover's Classic mode
    Secondary navigationThe panel that opens next to the navigation menu for nested items."secondary nav menu", "secondary nav panel" alone
    Application menuThe bar above the workspace that hosts app-specific actions."App menu bar", "app menu"
    WorkspaceThe main content area of the current app."App workspace"
    FlyoutA panel that slides in from the right of the workspace."flyout session", "grouped flyout" (these are internal terms)
    SidebarThe 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 linepath/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:

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Docs Check Style AI skill do?

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.

Why use Docs Check Style on TypingMind?

Because you install it once and use it with any model. Docs Check Style is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Docs Check Style in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/elastic/elastic-docs-skills/tree/main/skills/review/docs-check-style. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Docs Check Style?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Docs Check Style?

As many as you like. As long as a model supports skills, you can use Docs Check Style with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Docs Check Style AI skill free?

Yes. It is published on GitHub by elastic under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇