Work on instruments and the runtime they import — adding a built-in instrument, vendoring a library under vendor/, or changing instrument-bundler, runtime-bundler, runtime-core, runtime-internal…

Apache-2.0Auto-check passedDevelopment

Install Odc Instruments

skills CLI
$ npx skills add DouglasNeuroInformatics/OpenDataCapture --skill odc-instruments -a claude-code

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

GitHub CLI
$ gh skill install DouglasNeuroInformatics/OpenDataCapture odc-instruments --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/DouglasNeuroInformatics/OpenDataCapture.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/odc-instruments .claude/skills/odc-instruments && 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
odc-instruments
GitHub stars
119
Token cost
~2.1k tokens
SKILL.md length
834 words
Files
2
Skills in repo
16
Repo updated
First seen
Licence
Apache-2.0

At a glance

Work on instruments and the runtime they import — adding a built-in instrument, vendoring a library under vendor/, or changing instrument-bundler, runtime-bundler, runtime-core, runtime-internal…

  • Development work in your project
  • SKILL.md covers Which workspace owns the change, Where it fails silently, Writing a /runtime/v1/... import and Where the procedure lives, plus 1 more section
  • Calls pnpm

What it does

Odc Instruments is an agent skill from DouglasNeuroInformatics/OpenDataCapture. Work on instruments and the runtime they import — adding a built-in instrument, vendoring a library under vendor/, or changing instrument-bundler, runtime-bundler, runtime-core, runtime-internal, runtime-meta, instrument-interpreter, vite-plugin-runtime, instrument-library or runtime/v1. Use also when an instrument builds but never appears, an import of /runtime/v1/… does not resolve, or a build logs ResolverError.

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).

It sits in Development. It works with Vite. The repository describes itself as: An electronic data capture platform for administering remote and in-person clinical instruments. The licence is Apache-2.0.

When your agent uses it

  • Development work in your project

Example prompts

  • “/odc-instruments”

What it can do on your machine

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

    • 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

Odc Instruments loads about 2.1k tokens when it runs. Until then it costs about 109 tokens; SKILL.md has 834 words of instructions outside code blocks.

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

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 DouglasNeuroInformatics/OpenDataCapture at commit 432dec8, republished under its Apache-2.0 licence (© DouglasNeuroInformatics). 834 words, ~2,062 tokens.

Download SKILL.mdSave it as .claude/skills/odc-instruments/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
odc-instruments
description
Work on instruments and the runtime they import — adding a built-in instrument, vendoring a library under vendor/, or changing instrument-bundler, runtime-bundler, runtime-core, runtime-internal, runtime-meta, instrument-interpreter, vite-plugin-runtime, instrument-library or runtime/v1. Use also when an instrument builds but never appears, an import of /runtime/v1/… does not resolve, or a build logs ResolverError.

Everything in this area is a published contract. packages/runtime-core is the API instrument authors import, and runtime/v1 is the library catalog their bundles fetch by URL at runtime — changing an exported type changes every instrument in the wild, including instruments in repositories this monorepo never sees.

Name the blast radius in your reply before the first edit. Most of the paths below sit on review-pr's automatic REQUIRES_HUMAN_REVIEW list — check yours against the roster in .agents/skills/review-pr/REVIEW.md. This is the area where a clean-looking diff still goes to the user.

Which workspace owns the change

The names collide far more than the jobs do.

The changeWorkspace
The API authors write — defineInstrument, instrument types, Translatorpackages/runtime-core
Which libraries an instrument may import, and at which major versionvendor/ and runtime/v1
One author's own source becoming a bundle stringpackages/instrument-bundler
The libraries that source imports, built into runtime/v1/distpackages/runtime-bundler
The interactive iframe, its bootstrap and service worker, evaluateInstrumentpackages/runtime-internal
A built runtime directory mapped onto HTTP URLspackages/runtime-meta
Serving /runtime/v1/... to a Vite apppackages/vite-plugin-runtime
Re-validating an evaluated bundle before it renderspackages/instrument-interpreter
Validating an instrument definition at the API perimeterpackages/schemas
A built-in instrument itselfpackages/instrument-library

Only runtime/v1/dist is generated, and there is no src/. Changing what the runtime serves means editing runtime/v1/runtime.config.js or a wrapper under vendor/; Bundler.bundle() removes the outdir before writing (packages/runtime-bundler/src/bundler.ts), so anything placed in dist/ by hand is gone on the next build.

A new field kind or variant in runtime-core lands in two more packages, and only one of them errors. The ts-pattern matches in packages/instrument-utils/src/translate.ts end in .exhaustive(), so pnpm lint there stays red until the new case is handled. packages/schemas/src/instrument/instrument.form.ts hand-lists the same kinds twice — in $StaticFieldKind and in the kind-discriminated union — and its satisfies z.ZodType<…> does not catch an omitted member, so a kind missing there type-checks clean and surfaces as a 422 from InstrumentsService.create the first time someone uploads the instrument.

Where it fails silently

A failed runtime build exits 0. runtime-bundler's CLI logs what bundle() threw and carries on (packages/runtime-bundler/AGENTS.md), so a broken runtime does not fail CI on its own. Read the build output: a run that never printed Success! failed.

Adding a library needs two files to agree, and only one direction errors. An entry in runtime/v1/runtime.config.js's include without the matching runtime/v1/package.json devDependency is a build-time ResolverError. The reverse is silent — the package installs and is never emitted — so confirm the emitted directory exists under runtime/v1/dist before believing the build.

A built instrument is not a loaded one. The built-in catalog takes one hand-written default import and one create call per instrument in apps/api/src/demo/demo.service.ts (.agents/docs/playbooks/add-instrument.md is where that step lives). For an external repository, discovery scans lib/{file,forms,interactive,series} and returns series last, because a series is rejected unless the instruments it references are already stored — so a series whose items live in a different repository still fails to import (.agents/docs/architecture/instrument-pipeline.md).

/runtime/v1/zod@3.x is the Zod v3 API. vendor/zod@3.x's . export re-exports zod/v3; the v4 API is a separate subpath, /runtime/v1/zod@3.x/v4. The repo-wide no-restricted-imports ban on bare zod (eslint.config.js) matches the bare specifier only and never sees a /runtime/v1/... URL, so in instrument source the subpath is yours to choose deliberately.

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

Writing a /runtime/v1/... import

Instrument source always writes /runtime/v1/<pkg>, never a package name. Two other spellings address the same artifact and are not interchangeable with it — #runtime/v1/* in apps/api, @opendatacapture/runtime-v1 for tooling that needs dist on disk. Full resolution rules, the tsconfig paths that type-check the first form, and the files that must stay in sync: .agents/docs/architecture/runtime-and-vendor.md.

instrument-bundler marks any path starting with /runtime/v1/ external without checking that it resolves (packages/instrument-bundler/src/plugin.ts), so a package that was never emitted, or a subpath the wrapper's exports does not define, bundles clean and 404s at render. In-repo instruments are caught by tsc through those paths; playground and external-repo instruments are not. All three spellings bottom out in runtime/v1/dist, which is gitignored — on a cold checkout an unresolvable import means pnpm build has not run yet (.agents/skills/odc-run-locally/SKILL.md).

Where the procedure lives

Doing thisOpen before you start
Adding a built-in instrument.agents/docs/playbooks/add-instrument.md
Vendoring a library.agents/docs/playbooks/add-vendor-package.md — three registration points, the third silent
Following a bundle from source to screen.agents/docs/architecture/instrument-pipeline.md
Telling the runtime workspaces apart.agents/docs/architecture/runtime-and-vendor.md
Authoring the instrument definitionpackages/instrument-guidelines/AGENTS.md

The guidelines package's rules about the definition object apply to a built-in instrument; its file layout does not. A built-in is one flat directory, packages/instrument-library/src/<kind-dir>/<NAME>/, where a subdirectory fails the build with Cannot infer loader (.agents/docs/playbooks/add-instrument.md).

Done when

  • Your reply named the surface and what an already-published instrument does differently after the change — stated before the first edit, and restated at the end against what actually changed.
  • The runtime build printed Success!, and any package you added has its own directory under runtime/v1/dist.
  • A field kind or variant that moved is handled in packages/instrument-utils (pnpm lint green there) and listed in packages/schemas/src/instrument/ — nothing checks the second for you.
  • A new built-in instrument renders in a demo instance — pnpm --filter @opendatacapture/instrument-library run available listing it proves only that it built.

© DouglasNeuroInformatics, 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

SKILL.md and 1 other file in .agents/skills/odc-instruments of DouglasNeuroInformatics/OpenDataCapture.

  • SKILL.md
  • agents/openai.yaml

Open the folder on GitHubat commit 432dec8

Compare with similar skills

Odc Instruments 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.

Odc Instruments compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Odc Instruments this skillDouglasNeuroInformatics/OpenDataCapture119—~2.1kAutomated safety check: PassApache-2.0
Run Dozzle Dev Instanceamir20/dozzle15k—~747Automated safety check: PassMIT
LangBot Core Developmentlangbot-app/LangBot18k—~1.4kAutomated safety check: NotesApache-2.0
Lint Commit PRTresjs/tres3.8k—~1.1kAutomated safety check: PassMIT
Create SkillHyk260/PureChat5461 repos~823Automated safety check: PassMIT
Writing Vite Devtools Integrationsyuyinws/oxc-inspector169—~2kAutomated safety check: PassMIT

Similar skills

  • Starts a Dozzle dev server on a port derived from the current worktree so you can test by hand in a browser, without disturbing instances started elsewhere.

    15k GitHub stars~747 tokensUpdated today
    DevelopmentAuto-check passed
  • LangBot Core Development

    langbot-app/LangBot

    Covers developing the LangBot core backend and web UI: dev setup, repo layout, API auth types, adding endpoints, migrations and keeping the MCP server in step.

    18k GitHub stars~1.4k tokensUpdated yesterday
    DevelopmentAuto-check: notes
  • Lint Commit PR

    Tresjs/tres

    Lint local changes, auto-fix, conventional commit, and optionally create PR

    3.8k GitHub stars~1.1k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Create Skill

    Hyk260/PureChat

    Create a new skill in the current repository. An agent skill from Hyk260/PureChat.

    546 GitHub starsUsed in 1 repo~823 tokens
    DevelopmentAuto-check passed
  • Creates devtools integrations for Vite using @vitejs/devtools-kit.

    169 GitHub stars~2k tokensUpdated 2 mo ago
    DevelopmentAuto-check passed
  • Wxt

    mengxi-ream/read-frog

    Build browser extensions with WXT - a next-gen framework with file-based entrypoints, Vite builds, auto-imports, typed storage with migrations, content script UIs, and multi-browser MV2/MV3 support.

    10k GitHub stars~500 tokensUpdated today
    DevelopmentAuto-check passed

More from DouglasNeuroInformatics/OpenDataCapture

All 16 skills in this repo
  • Odc Agent Docs

    DouglasNeuroInformatics/OpenDataCapture

    Write or correct this repo's agent documentation — a workspace AGENTS.md (or its CLAUDE.md symlink), a playbook under .agents/docs/playbooks, an architecture doc, or the workspace map.

    119 GitHub stars~2.7k tokensUpdated 2 days ago
    Auto-check passed
  • Odc Testing

    DouglasNeuroInformatics/OpenDataCapture

    Test a change in Open Data Capture. An agent skill from DouglasNeuroInformatics/OpenDataCapture.

    119 GitHub stars~1.5k tokensUpdated 2 days ago
    Auto-check: notes
  • Review PR

    DouglasNeuroInformatics/OpenDataCapture

    Triage pull requests against upstream main — one verdict, action items, and whether it needs the user's eyes.

    119 GitHub stars~2.8k tokensUpdated 2 days ago
    Auto-check passed
  • Odc Open PR

    DouglasNeuroInformatics/OpenDataCapture

    Open a pull request against main for the current branch. An agent skill from DouglasNeuroInformatics/OpenDataCapture.

    119 GitHub stars~533 tokensUpdated 2 days ago
    Auto-check passed
  • Opening Issues

    DouglasNeuroInformatics/OpenDataCapture

    File a GitHub issue for Open Data Capture with its labels. An agent skill from DouglasNeuroInformatics/OpenDataCapture.

    119 GitHub stars~614 tokensUpdated 2 days ago
    Auto-check passed
  • Odc Debugging

    DouglasNeuroInformatics/OpenDataCapture

    What actually breaks in Open Data Capture — a failing build, lint, unit test or e2e run; a change with no visible effect; a suite that stays green after you broke the code on purpose; an error…

    119 GitHub stars~2.8k tokensUpdated 2 days ago
    Auto-check: notes

Works with

Categories

Questions about Odc Instruments

What does Odc Instruments do?

Work on instruments and the runtime they import — adding a built-in instrument, vendoring a library under vendor/, or changing instrument-bundler, runtime-bundler, runtime-core, runtime-internal…. Odc Instruments is an agent skill from DouglasNeuroInformatics/OpenDataCapture. Work on instruments and the runtime they import — adding a built-in instrument, vendoring a library under vendor/, or changing instrument-bundler, runtime-bundler, runtime-core, runtime-internal, runtime-meta, instrument-interpreter, vite-plugin-runtime, instrument-library or runtime/v1.

When should I use Odc Instruments?

Odc Instruments fits situations like: development work in your project.

How do I install Odc Instruments in Claude Code?

Run `npx skills add DouglasNeuroInformatics/OpenDataCapture --skill odc-instruments -a claude-code`. Or copy the skill folder (.agents/skills/odc-instruments in DouglasNeuroInformatics/OpenDataCapture) into .claude/skills/odc-instruments in your project. Claude Code loads it when a task matches its description.

How do I install Odc Instruments in Codex?

Run `npx skills add DouglasNeuroInformatics/OpenDataCapture --skill odc-instruments -a codex`. Or copy the skill folder (.agents/skills/odc-instruments in DouglasNeuroInformatics/OpenDataCapture) into .agents/skills/odc-instruments in your project. Codex loads it when a task matches its description.

Can I use Odc Instruments 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 DouglasNeuroInformatics/OpenDataCapture --skill odc-instruments -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/odc-instruments, .gemini/skills/odc-instruments, .github/skills/odc-instruments and .opencode/skills/odc-instruments in your project.

What does Odc Instruments need to run?

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

Does Odc Instruments 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 Odc Instruments 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 Odc Instruments use?

Odc Instruments 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 Odc Instruments use?

About 2.1k tokens (SKILL.md is roughly 8.2k 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 Odc Instruments?

Skills that share tags, products or a category with Odc Instruments: Run Dozzle Dev Instance (amir20/dozzle, 15k stars), LangBot Core Development (langbot-app/LangBot, 18k stars), Lint Commit PR (Tresjs/tres, 3.8k stars) and Create Skill (Hyk260/PureChat, 546 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Odc Instruments?

DouglasNeuroInformatics (a GitHub organization) maintains it in DouglasNeuroInformatics/OpenDataCapture, which has 119 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on October 7, 2026.

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