Agent skill

Protocol Designer

by Opentrons in Opentrons/opentrons

Protocol Designer (PD) application architecture, Redux slices, step/timeline system, domain concepts, and dev workflow.

Apache-2.0Auto-check passedFrontend & Design

Install Protocol Designer

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

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

GitHub CLI
$ gh skill install Opentrons/opentrons protocol-designer --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/protocol-designer .claude/skills/protocol-designer && 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
protocol-designer
GitHub stars
521
Token cost
~1.7k tokens
SKILL.md length
454 words
Files
1
Skills in repo
17
Repo updated
First seen
Licence
Apache-2.0

At a glance

Protocol Designer (PD) application architecture, Redux slices, step/timeline system, domain concepts, and dev workflow.

  • Works in 3 steps: Step form data → stepFormToArgs() →… → Command args →… → Commands → commandCreatorsTimeline() →…
  • Working with files in protocol-designer/
  • SKILL.md covers Project Overview, Redux Architecture, Step & Timeline System and Pages, plus 4 more sections
  • Calls make and pnpm

What it does

Protocol Designer is an agent skill from Opentrons/opentrons. Protocol Designer (PD) application architecture, Redux slices, step/timeline system, domain concepts, and dev workflow. Use when working with files in protocol-designer/ or discussing PD features, steps, timelines, or protocol design.

Its SKILL.md is about 1.7k 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 Frontend & Design, covering State management. It works with Redux and TypeScript. 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

  • Working with files in protocol-designer/
  • Discussing PD features
  • Protocol design

Example prompts

  • “/protocol-designer”

Workflow steps

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

  1. Step form data → stepFormToArgs() → command args
  2. Command args → @opentrons/step-generation command creators → protocol commands
  3. Commands → commandCreatorsTimeline() → timeline with robot state

What it can do on your machine

Read from SKILL.md and the folder at commit a14fef9. 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

    Shell commands in SKILL.md call:

    • make
    • pnpm

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

  • Network

    No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.

    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

Protocol Designer loads about 1.7k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 454 words of instructions outside code blocks.

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

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 a14fef9, republished under its Apache-2.0 licence (© Opentrons). 454 words, ~1,674 tokens.

Download SKILL.mdSave it as .claude/skills/protocol-designer/SKILL.md (or your agent's skills folder).
name
protocol-designer
description
Protocol Designer (PD) application architecture, Redux slices, step/timeline system, domain concepts, and dev workflow. Use when working with files in protocol-designer/ or discussing PD features, steps, timelines, or protocol design.

Protocol Designer — Application-Specific Conventions

General TypeScript, React, styling, testing, import, and tooling conventions are in the opentrons-typescript skill. This file covers only what is unique to the protocol-designer package.

Project Overview

Protocol Designer (PD) is a React + Redux + React Router + TypeScript web app for designing Opentrons liquid-handling protocols. It depends on @opentrons/components, @opentrons/shared-data, and @opentrons/step-generation. It follows an atomic design system.

Redux Architecture

PD uses Redux (legacy createStore) with redux-thunk and reselect. The store shape is BaseState in src/types.ts.

Slices

Each slice directory contains reducers/, actions/, selectors/, and types.ts:

SliceKeyPurpose
analyticsanalyticsEvent tracking
dismissdismissDismissible UI elements
feature-flagsfeatureFlagsFeature flags (OT_PD_* env vars)
file-datafileDataProtocol file data and export
labware-ingredlabwareIngredLabware, ingredients, deck state
load-fileloadFileFile loading/parsing
navigationnavigationNavigation state
step-formsstepFormsSaved step forms, pipettes, modules, labware entities
tutorialtutorialTutorial/hint state
uiuiUI state (steps, labware, wells)
well-selectionwellSelectionWell selection state
Middleware
  • timelineMiddleware — generates robot state timeline from steps
  • trackEventMiddleware — analytics event tracking
  • thunk — async action support
Selectors

Use reselect createSelector for all derived state. Per-slice selectors go in selectors/ directories. Cross-slice selectors go in src/top-selectors/.

typescript
import { createSelector } from 'reselect'

export const getLabwareNicknamesById = createSelector(
  getLabwareEntities,
  labwareEntities => mapValues(labwareEntities, e => e.nickname)
)
Thunks
typescript
import type { ThunkAction } from '/protocol-designer/types'

export const myThunk = (): ThunkAction<any> => (dispatch, getState) => {
  const state = getState()
  dispatch({ type: 'MY_ACTION', payload: someSelector(state) })
}

Step & Timeline System

Core Concepts
  • Steps: User-created protocol actions (move liquid, set temperature, pause, etc.)
  • Timeline: Array of "frames" — each frame has robotState and commands
  • Step forms: Redux state in stepForms.savedStepForms (keyed by step ID)
  • Ordered steps: stepForms.orderedStepIds array
Step Form Flow
  1. Step form data → stepFormToArgs() → command args
  2. Command args → @opentrons/step-generation command creators → protocol commands
  3. Commands → commandCreatorsTimeline() → timeline with robot state
Entities

Normalized by ID in Redux:

  • labwareInvariantProperties — labware on deck
  • pipetteInvariantProperties — pipettes by mount
  • moduleInvariantProperties — hardware modules

Access via selectors: getLabwareEntities, getPipetteEntities, getModuleEntities.

Show full SKILL.md (177 more words)Show less

Pages

Pages live in src/pages/:

  • Designer/ — main protocol design canvas and step editing
  • Landing/ — start screen
  • Liquids/ — liquid definitions management
  • ProtocolOverview/ — protocol summary
  • Settings/ — user settings
  • Hardware/ — hardware configuration
  • Onboarding/ — first-run flow

PD-Specific File Conventions

Feature directories use kebab-case matching the Redux slice name: step-forms/, file-data/, labware-ingred/, well-selection/, etc.

The /protocol-designer/ path alias maps to src/. Use it for imports across feature directories:

typescript
import { getFileMetadata } from '/protocol-designer/file-data/selectors'

import type { BaseState } from '/protocol-designer/types'

Internationalization

Uses react-i18next. Translation files in src/assets/localization/.

Common namespaces: 'starting_deck_state', 'protocol_steps', 'shared', 'application'.

typescript
const { t } = useTranslation(['protocol_steps', 'shared'])
return (
  <>
    <span>{t('step_title')}</span>
   <span>{t('shared:step_body')}</span>
  </>
 )

Always use translation keys for user-facing strings — never hardcode display text.

PD Testing

Use renderWithProviders from protocol-designer/src/__testing-utils__/:

typescript
import { renderWithProviders } from '/protocol-designer/__testing-utils__'

PD Makefile Targets

Run from the protocol-designer/ directory:

TargetDescription
make devStart Vite dev server (port 5178)
make buildProduction build (8GB heap)
make serveBuild then preview production assets
make cleanRemove dist/
make testRun PD tests (delegates to root make test-js-protocol-designer)
make test-covTests with coverage
make bundle-analyzerAnalyze production bundle size
bash
# Run a specific test file
make test tests="src/components/organisms/__tests__/MyComponent.test.tsx"

# Run vitest directly from monorepo root
pnpm vitest protocol-designer/src/step-forms/
Environment Variables

PD feature flags use OT_PD_* env vars, injected at build time via Vite define. NODE_OPTIONS=--max-old-space-size=8192 is set automatically by the Makefile for dev, build, and serve.

© 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/protocol-designer of Opentrons/opentrons.

Open the folder on GitHubat commit a14fef9

Compare with similar skills

Protocol Designer 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.

Protocol Designer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Protocol Designer this skillOpentrons/opentrons521—~1.7kAutomated safety check: PassApache-2.0
React ExpertJeffallan/claude-skills12k—~1.4kAutomated safety check: PassMIT
Zustand Patternsyonatangross/orchestkit289—~1.6kAutomated safety check: PassMIT
Zustand State Managementsecondsky/claude-skills227—~2.5kAutomated safety check: PassMIT
Olore Zustand Latestolorehq/olore104—~881Automated safety check: PassMIT
JavaScript IO Effects With Sagasparalleldrive/aidd384—~587Automated safety check: PassMIT

Similar skills

  • React Expert

    Jeffallan/claude-skills

    Builds React 19 components in TypeScript with Server Components, useActionState forms, custom hooks and state libraries, checked with tsc and React Testing Library.

    12k GitHub stars~1.4k tokensUpdated 5 days ago
    Frontend & DesignAuto-check passed
  • Zustand Patterns

    yonatangross/orchestkit

    Reference for Zustand 5.x state management including slices, middleware, Immer, useShallow, persistence, selectors, and devtools integration.

    289 GitHub stars~1.6k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Zustand State Management

    secondsky/claude-skills

    Zustand state management for React with TypeScript. An agent skill from secondsky/claude-skills.

    227 GitHub stars~2.5k tokensUpdated 10 days ago
    Frontend & DesignAuto-check passed
  • Local Zustand documentation reference (latest). An agent skill from olorehq/olore.

    104 GitHub stars~881 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Teaches the saga pattern with call and put so network requests and side effects stay out of the logic and sagas can be tested without mocks.

    384 GitHub stars~587 tokensUpdated 3 mo ago
    DevelopmentAuto-check passed
  • Nextjs15 Init

    bear2u/my-skills

    A skill your agent uses when user wants to create a new Next.js 15 project (Todo/Blog/Dashboard/E-commerce/Custom domain) with App Router, ShadCN, Zustand, Tanstack Query, and modern Next.js stack

    933 GitHub stars~2.4k tokensUpdated 3 mo ago
    Frontend & DesignAuto-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
  • Docs

    Opentrons/opentrons

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

    521 GitHub stars~2.8k 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

Works with

Questions about Protocol Designer

What does Protocol Designer do?

Protocol Designer (PD) application architecture, Redux slices, step/timeline system, domain concepts, and dev workflow. Protocol Designer is an agent skill from Opentrons/opentrons. Protocol Designer (PD) application architecture, Redux slices, step/timeline system, domain concepts, and dev workflow.

When should I use Protocol Designer?

Protocol Designer fits situations like: working with files in protocol-designer/; discussing PD features; protocol design.

How do I install Protocol Designer in Claude Code?

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

How do I install Protocol Designer in Codex?

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

Can I use Protocol Designer 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 protocol-designer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/protocol-designer, .gemini/skills/protocol-designer, .github/skills/protocol-designer and .opencode/skills/protocol-designer in your project.

What does Protocol Designer need to run?

Going by SKILL.md and its folder, Protocol Designer needs the command-line tools its instructions call (make and pnpm).

Does Protocol Designer 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 Protocol Designer 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 Protocol Designer use?

Protocol Designer 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 Protocol Designer use?

About 1.7k tokens (SKILL.md is roughly 6.7k 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 Protocol Designer?

Skills that share tags, products or a category with Protocol Designer: React Expert (Jeffallan/claude-skills, 12k stars), Zustand Patterns (yonatangross/orchestkit, 289 stars), Zustand State Management (secondsky/claude-skills, 227 stars) and Olore Zustand Latest (olorehq/olore, 104 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Protocol Designer?

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 7, 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.