Agent skill

Docs

by Opentrons in Opentrons/opentrons

Authoring and styling guidelines for the Opentrons /docs MkDocs project.

Apache-2.0Auto-check passedDevelopment

Install Docs

skills CLI
$ npx skills add Opentrons/opentrons --skill docs -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Opentrons/opentrons docs --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Opentrons/opentrons.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/docs .claude/skills/docs && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
docs
GitHub stars
521
Token cost
~2.8k tokens
SKILL.md length
877 words
Files
1
Skills in repo
17
Repo updated
First seen
Licence
Apache-2.0

At a glance

Authoring and styling guidelines for the Opentrons /docs MkDocs project.

  • Works in 3 steps: Put in docs/shared/icons/opentrons/.… → Use shortcode:… → Run mkdocs build — new icons don't…
  • Reviewing any file in the docs/ directory
  • SKILL.md covers Directory Structure of /docs, File Conventions, Header IDs and Images, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Docs is an agent skill from Opentrons/opentrons. Authoring and styling guidelines for the Opentrons /docs MkDocs project. Covers file conventions, frontmatter, page titles, header IDs, image formats, tables, code blocks, Python API reference (mkdocstrings, autorefs, macros), and CSS patterns (parts lists, screenshots, icons, instruction lists, side-by-side figures, fonts, colors). Use when writing, editing, or reviewing any file in the docs/ directory, or when the user asks about MkDocs conventions, docstrings, CSS classes, or the Python API reference.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Technical documentation. It works with Python. The repository describes itself as: Software for writing protocols and running them on the Opentrons Flex and Opentrons OT-2. The licence is Apache-2.0.

When your agent uses it

  • Reviewing any file in the docs/ directory
  • The user asks about MkDocs conventions
  • The Python API reference

Example prompts

  • “/docs”

Requirements

  • Python 3

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Put in docs/shared/icons/opentrons/. Rename with lowercase-hyphens and .svg extension (e.g., protocol-designer.svg).
  2. Use shortcode: :opentrons-protocol-designer
  3. Run mkdocs build — new icons don't appear under mkdocs serve until a full build.

What it can do on your machine

Read from SKILL.md and the folder at commit 5bae80d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown, html, yaml and python).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Docs loads about 2.8k tokens when it runs. Until then it costs about 129 tokens; SKILL.md has 877 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~129
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Opentrons/opentrons at commit 5bae80d, republished under its Apache-2.0 licence (© Opentrons). 877 words, ~2,837 tokens.

Download SKILL.mdSave it as .claude/skills/docs/SKILL.md (or your agent's skills folder).
name
docs
description
Authoring and styling guidelines for the Opentrons /docs MkDocs project. Covers file conventions, frontmatter, page titles, header IDs, image formats, tables, code blocks, Python API reference (mkdocstrings, autorefs, macros), and CSS patterns (parts lists, screenshots, icons, instruction lists, side-by-side figures, fonts, colors). Use when writing, editing, or reviewing any file in the docs/ directory, or when the user asks about MkDocs conventions, docstrings, CSS classes, or the Python API reference.

Opentrons Docs: MkDocs Authoring Guide

The /docs project uses MkDocs with the Material theme, the monorepo plugin, mkdocstrings (Python), autorefs, and macros. Config lives in docs/mkdocs.yml. Extra CSS: opentrons-theme.css, instruction-manuals.css, python-api.css.

Directory Structure of /docs

The /docs directory is organized to support multiple documentation publications, site-global shared resources, and project build scripts.

Publication Directories (Multiple MkDocs Projects)
  • Each major documentation set ("publication") exists in its own subdirectory, with its own mkdocs.yml and content:
    Publication DirectoryDescription
    docs/absorbance-plate-reader/Absorbance Plate Reader Module manual
    docs/flex/Opentrons Flex robot manual
    docs/heater-shaker/Heater-Shaker Module manual
    docs/hepa-uv/HEPA/UV Module manual
    docs/protocol-designer/Protocol Designer application manual
    docs/python-api/Python API reference and guides
    docs/stacker/Flex Stacker Module manual
    docs/temperature-module/Temperature Module manual
    docs/thermocycler/Thermocycler Module manual
  • Each publication is a self-contained MkDocs project, but shares a unified build/serve flow via the monorepo and the mkdocs-monorepo-plugin.
  • New publications may be added for new (or newly documented) software or hardware products.
  • Top-level /docs/mkdocs.yml aggregates all publications for the overall site, referencing their content via the monorepo plugin.
docs/shared/: Shared Content and Resources
  • docs/shared/ holds assets, MDX-style includes, and support content used across multiple publications:
    • Images: docs/shared/images/ — interface elements used in multiple publications.
    • Icons: docs/shared/icons/ — custom Opentrons SVG icons.
    • Theme overrides: docs/shared/partials/ — HTML files used to modify the base Material theme.
    • CSS: Sitewide overrides in docs/shared/ (e.g., opentrons-theme.css, instruction-manuals.css).
  • Refer to these resources in any publication via the monorepo plugin's path mapping.
  • The only user-facing pages in shared/ are navigation pages, like docs/shared/modules/index.md.
3. Scripts and Ancillary Files
  • Top-level /docs/ contains scripts and files for building, developing, and managing the documentation site:
    • mkdocs.yml — main config aggregating all sub-projects with the monorepo plugin.
    • Python setup: pyproject.toml specifies the uv setup, including the mkdocs package and required plugins.
    • Makefile: Contains commands for building the docs using the virtual environment.
  • These files support the docs build but are not included as user-facing content.

Recommendation: Add your new publication as a subdirectory under /docs/, and place shared assets only in shared/. Scripts and configuration should remain at the top level unless specific to a publication.

File Conventions

  • Filenames: Short, lowercase, hyphen-separated. Example: opentrons-app.md
  • No H1 in markdown files. The page title comes from mkdocs.yml nav.
  • title frontmatter: Required on every page. Controls the sticky title when scrolling and search results. Format: "Publication Name: Page Title". Omit repeated words.
yaml
---
title: "Opentrons Flex: Support and Contact Information"
---
  • Hide TOC (cover pages only):
yaml
---
title: "HEPA/UV Module Instruction Manual"
hide: TOC
---

Header IDs

The autorefs plugin warns on duplicate headings across the entire site. Add unique IDs to disambiguate:

markdown
## Tips and tip racks { #tips-and-tip-racks-ot2 }
## Tips and tip racks { #tips-and-tip-racks-flex }
## Air gap { #air-gap-building-block }
## Air gap { #air-gap-complex }

Format: slug of header text + hyphen + short unique suffix. The # and spaces inside { } are required.

Images

  • Vector illustrations: SVG preferred.
  • Raster (screenshots, renders): PNG. High-DPI (2×) for screenshots. Resample large files to ≤1200px wide. Optimize with ImageOptim before committing.

Tables

Use Markdown tables by default:

markdown
| Specification | Description |
|:--------------|:------------|
| Module weight | 790 g       |

Switch to HTML tables when you need: rowspan/colspan, embedded lists, or CSS class attributes (e.g., .my-dot status icons).

Column widths (use sparingly — only when auto-widths are unusable):

markdown
| Setting {style="width: 25%;"} | Description |
|------|------|
| Flow rates | Set aspirate/dispense speed. |

Requires attr_list in markdown_extensions (already enabled globally).

Code Blocks

Always declare the language explicitly for syntax highlighting:

markdown
```python
foo = "bar"
```

Python API Docs (PAPI)

Version Notices

No special plugin — use italic text in its own paragraph:

markdown
*New in version 2.15*

*Changed in version 2.16:* The `mount` parameter is optional.
Show full SKILL.md (365 more words)Show less
Linking to the API Reference

Combines mkdocstrings (unique IDs = fully qualified object names) with autorefs (cross-page links):

markdown
[`InstrumentContext.aspirate()`][opentrons.protocol_api.InstrumentContext.aspirate]
[`aspirate()`][opentrons.protocol_api.InstrumentContext.aspirate]
When [aspirating][opentrons.protocol_api.InstrumentContext.aspirate], you should…

[`well_bottom_clearance`][opentrons.protocol_api.InstrumentContext.well_bottom_clearance]
Adjust the [bottom clearance][opentrons.protocol_api.InstrumentContext.well_bottom_clearance] to…

Rules:

  • Python object names → monospace (backticks)
  • Descriptive link text → regular font
  • Methods get trailing (), other objects do not
mkdocstrings Reference Pages

Pull an entire class's public docstrings:

markdown
::: opentrons.protocol_api.Liquid

Exclude additional members (must restate global filters):

markdown
::: opentrons.protocol_api.Well
    options:
      filters:
        - "!^__"
        - "!estimate_liquid_height_after_pipetting"

Include only specific members (rare):

markdown
::: opentrons.protocol_api.LiquidClass
    options:
      filters:
        - "get_for"
Docstring Format

Google-style docstrings (configured globally in mkdocs.yml):

python
"""
Blow an extra amount of air through a pipette's tip to clear it.

Args:
    location:
        The blowout location.
        If no location is specified, the pipette will blow out from its current
        position.

        *Changed in version 2.16*: Accepts `TrashBin` and `WasteChute` values.

Raises:
    RuntimeError: If no location is specified and the location cache is `None`.

Returns:
    InstrumentContext: This instance.
"""

The @requires_version decorator auto-populates the minimum API version in the reference header — no extra markup needed.

Macros (Text Substitutions)

Two global substitutions defined in mkdocs.yml under extra::

yaml
extra:
  apiLevel: 2.27
  robot_stack_version: 8.8.0

Use with double braces and a space inside:

python
requirements = {"robotType": "Flex", "apiLevel": "{{ apiLevel }}"}

Substitutions are active in all content including code blocks. Update mkdocs.yml whenever the API level or robot stack version is bumped.

CSS Patterns

All custom CSS lives in the extra_css files. The patterns below are already defined in the shared theme; use the class names as shown.

Parts Lists (Image Grids)

Flex grid: 2–4 figures per row depending on window size. Used in hardware manuals.

html
<div class="parts-list" markdown>

<figure markdown> ![Opentrons Flex robot](images/parts-list/flex-robot.svg "Opentrons Flex robot") <figcaption>(1) Opentrons Flex robot</figcaption> </figure>

<figure markdown> ![USB cable](images/parts-list/usb-cable.svg "USB cable") <figcaption>(1) USB cable</figcaption> </figure>

</div>
Screenshots with Borders

White-background screenshots need a border to stand out:

html
<figure class="screenshot" markdown>
![Alt text describing screenshot.](images/my-screen.png "Screen title")
</figure>
Side-by-Side Figures

Exactly two images side by side (compare/contrast):

html
<figure class="side-by-side" markdown>
![Green run completed screen.](images/run-completed.png "Run completed")
![Red run failed screen.](images/run-failed.png "Run failed")
</figure>

For three or more images, use the parts-list pattern instead.

Instruction Lists (Circular Numbered Bullets)

For unboxing/setup steps — numbered items with large blue circular bullets. Close and reopen the div when a header interrupts the list (numbering continues with sane_lists):

html
<div class="instruction-list" markdown>

1. Unlock the eight latches holding the top to the sides.

   ![Crate latches.](images/unboxing/1-crate-latches.svg "Unboxing step 1")

2. Remove the top panel.

</div>

### Part 2: Release the Flex

<div class="instruction-list" markdown>

3. Continue with next numbered step…

</div>
Material Icons

Insert icons inline using shortcodes (don't overuse for decoration):

markdown
Click the :octicons-x-circle-fill-16: on a fixture to remove it.
Custom Opentrons Icons
  1. Put in docs/shared/icons/opentrons/. Rename with lowercase-hyphens and .svg extension (e.g., protocol-designer.svg).
  2. Use shortcode: :opentrons-protocol-designer:
  3. Run mkdocs build — new icons don't appear under mkdocs serve until a full build.

Use only outline variants for consistency.

Round Colored Status Dots

For LED color/pattern tables (modules like Stacker):

html
<td><span class="my-dot green"></span> Green</td>
<td><span class="my-dot blue"></span> Blue</td>

Available colors: white, green, blue, red, yellow. Other colors can be added in CSS file as needed.

Table Header Color

Table <th> cells are automatically styled blue (#D0E6FE) by the theme CSS. To highlight cells outside the first row, use an HTML table with explicit <th> placement (e.g., a horizontal header column).

Fonts & Colors

  • Proportional: Public Sans
  • Monospace: Reddit Mono
  • Primary blue: #006CFA
  • Accent orange: #F09D20

These are set globally in opentrons-theme.css. Do not override them in page-level CSS.

© Opentrons, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .cursor/skills/docs of Opentrons/opentrons.

Open the folder on GitHubat commit 5bae80d

Compare with similar skills

Docs next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Docs compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Docs this skillOpentrons/opentrons521—~2.8kAutomated safety check: PassApache-2.0
Adk Sample Creatorgoogle/adk-python22k—~1.3kAutomated safety check: PassApache-2.0
Crafting Effective Readmescumbucadev/cinemaempoa1465 repos~669Automated safety check: PassGPL-3.0
Acquire Codebase Knowledgegithub/awesome-copilot40k1 repos~2.3kAutomated safety check: PassMIT
Docs Conventionsflet-dev/flet17k—~1.6kAutomated safety check: PassApache-2.0
DDNS Provider DevelopmentNewFuture/DDNS4.7k—~558Automated safety check: PassMIT

Similar skills

  • Adk Sample Creator

    google/adk-python

    Official

    Creates a new sample agent in the ADK Python repository — the sample directory, its agent.py, and its README.md — following the conventions the existing samples already use.

    22k GitHub stars~1.3k tokensUpdated today
    DevelopmentAuto-check passed
  • Crafting Effective Readmes

    cumbucadev/cinemaempoa

    A skill your agent uses when writing or improving README files.

    146 GitHub starsUsed in 5 repos~669 tokens
    DevelopmentAuto-check passed
  • Acquire Codebase Knowledge

    github/awesome-copilot

    Official

    Maps an unfamiliar codebase into seven evidence-backed documents in docs/codebase/, using a scan script and templates, for onboarding or architecture write-ups.

    40k GitHub starsUsed in 1 repo~2.3k tokens
    DevelopmentAuto-check passed
  • Docs Conventions

    flet-dev/flet

    A skill your agent uses when writing or reviewing Flet documentation, including Python docstrings (Google style, reST roles, admonitions), Markdown docs (cross-references, images, code examples)…

    17k GitHub stars~1.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Adds or changes a DNS provider in the DDNS project while keeping its code, schemas, tests and Chinese and English docs consistent.

    4.7k GitHub stars~558 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Mkdocs

    jeka-dev/jeka

    MkDocs documentation project reference covering CLI commands, mkdocs.yml configuration, Material theme setup, and plugin integration.

    176 GitHub stars~2k tokensUpdated 2 mo ago
    DevelopmentAuto-check passed

More from Opentrons/opentrons

All 17 skills in this repo
  • AI Client

    Opentrons/opentrons

    Conventions for the opentrons-ai-client React/TypeScript frontend — project structure, API integration, state management (Jotai), feature flags, types, and testing.

    521 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • AI Server

    Opentrons/opentrons

    Conventions for the opentrons-ai-server FastAPI service — project structure, uv dependency management, settings, testing, Docker, and deployment.

    521 GitHub stars~2.5k tokensUpdated yesterday
    Auto-check: notes
  • Analyses Snapshot Testing

    Opentrons/opentrons

    Conventions for the analyses snapshot testing framework in analyses-snapshot-testing/.

    521 GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed
  • CSS Modules

    Opentrons/opentrons

    CSS Modules conventions, Stylelint rules, design tokens (spacing, colors, typography, border-radius), and patterns for the Opentrons monorepo.

    521 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • E2E Testing

    Opentrons/opentrons

    E2E testing conventions for Protocol Designer and Labware Library using Playwright + pytest in e2e-testing/.

    521 GitHub stars~3k tokensUpdated yesterday
    Auto-check: notes
  • JS Package Testing

    Opentrons/opentrons

    Vite demo and Playwright + Applitools tests for packed @opentrons JS packages in js-package-testing/.

    521 GitHub stars~1.2k tokensUpdated yesterday
    Auto-check: notes

Works with

Categories

Questions about Docs

What does Docs do?

Authoring and styling guidelines for the Opentrons /docs MkDocs project. Docs is an agent skill from Opentrons/opentrons. Authoring and styling guidelines for the Opentrons /docs MkDocs project.

When should I use Docs?

Docs fits situations like: reviewing any file in the docs/ directory; the user asks about MkDocs conventions; the Python API reference.

How do I install Docs in Claude Code?

Run `npx skills add Opentrons/opentrons --skill docs -a claude-code`. Or copy the skill folder (.cursor/skills/docs in Opentrons/opentrons) into .claude/skills/docs in your project. Claude Code loads it when a task matches its description.

How do I install Docs in Codex?

Run `npx skills add Opentrons/opentrons --skill docs -a codex`. Or copy the skill folder (.cursor/skills/docs in Opentrons/opentrons) into .agents/skills/docs in your project. Codex loads it when a task matches its description.

Can I use Docs in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Opentrons/opentrons --skill docs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/docs, .gemini/skills/docs, .github/skills/docs and .opencode/skills/docs in your project.

What does Docs need to run?

SKILL.md names no scripts, command-line tools or credentials: Docs is instructions for the agent only. Our summary lists: Python 3.

Does Docs access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Docs safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Docs use?

Docs is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Docs use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Docs?

Skills that share tags, products or a category with Docs: Adk Sample Creator (google/adk-python, 22k stars), Crafting Effective Readmes (cumbucadev/cinemaempoa, 146 stars), Acquire Codebase Knowledge (github/awesome-copilot, 40k stars) and Docs Conventions (flet-dev/flet, 17k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Docs?

Opentrons (a GitHub organization) maintains it in Opentrons/opentrons, which has 521 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 6, 2026.

Source: Opentrons/opentrons on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.