Run Dozzle Dev Instance
amir20/dozzle
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.
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…
$ npx skills add DouglasNeuroInformatics/OpenDataCapture --skill odc-instruments -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install DouglasNeuroInformatics/OpenDataCapture odc-instruments --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "odc-instruments" agent skill from https://github.com/DouglasNeuroInformatics/OpenDataCapture/tree/main/.agents/skills/odc-instruments into .claude/skills/odc-instruments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "odc-instruments", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/DouglasNeuroInformatics/OpenDataCapture/tree/main/.agents/skills/odc-instrumentsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add DouglasNeuroInformatics/OpenDataCapture --skill odc-instruments -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install DouglasNeuroInformatics/OpenDataCapture odc-instruments --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DouglasNeuroInformatics/OpenDataCapture.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/odc-instruments .agents/skills/odc-instruments && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "odc-instruments" agent skill from https://github.com/DouglasNeuroInformatics/OpenDataCapture/tree/main/.agents/skills/odc-instruments into .agents/skills/odc-instruments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "odc-instruments", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add DouglasNeuroInformatics/OpenDataCapture --skill odc-instruments -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install DouglasNeuroInformatics/OpenDataCapture odc-instruments --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DouglasNeuroInformatics/OpenDataCapture.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/odc-instruments .cursor/skills/odc-instruments && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "odc-instruments" agent skill from https://github.com/DouglasNeuroInformatics/OpenDataCapture/tree/main/.agents/skills/odc-instruments into .cursor/skills/odc-instruments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "odc-instruments", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/DouglasNeuroInformatics/OpenDataCapture.git --path .agents/skills/odc-instruments--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add DouglasNeuroInformatics/OpenDataCapture --skill odc-instruments -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install DouglasNeuroInformatics/OpenDataCapture odc-instruments --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DouglasNeuroInformatics/OpenDataCapture.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/odc-instruments .gemini/skills/odc-instruments && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "odc-instruments" agent skill from https://github.com/DouglasNeuroInformatics/OpenDataCapture/tree/main/.agents/skills/odc-instruments into .gemini/skills/odc-instruments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "odc-instruments", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install DouglasNeuroInformatics/OpenDataCapture odc-instrumentsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add DouglasNeuroInformatics/OpenDataCapture --skill odc-instruments -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/DouglasNeuroInformatics/OpenDataCapture.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/odc-instruments .github/skills/odc-instruments && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "odc-instruments" agent skill from https://github.com/DouglasNeuroInformatics/OpenDataCapture/tree/main/.agents/skills/odc-instruments into .github/skills/odc-instruments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "odc-instruments", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add DouglasNeuroInformatics/OpenDataCapture --skill odc-instruments -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install DouglasNeuroInformatics/OpenDataCapture odc-instruments --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DouglasNeuroInformatics/OpenDataCapture.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/odc-instruments .opencode/skills/odc-instruments && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "odc-instruments" agent skill from https://github.com/DouglasNeuroInformatics/OpenDataCapture/tree/main/.agents/skills/odc-instruments into .opencode/skills/odc-instruments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "odc-instruments", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
odc-instrumentsWork 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. 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.
Read from SKILL.md and the folder at commit 432dec8. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
pnpmFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from DouglasNeuroInformatics/OpenDataCapture at commit 432dec8, republished under its Apache-2.0 licence (© DouglasNeuroInformatics). 834 words, ~2,062 tokens.
.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.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.
The names collide far more than the jobs do.
| The change | Workspace |
|---|---|
The API authors write — defineInstrument, instrument types, Translator | packages/runtime-core |
| Which libraries an instrument may import, and at which major version | vendor/ and runtime/v1 |
| One author's own source becoming a bundle string | packages/instrument-bundler |
The libraries that source imports, built into runtime/v1/dist | packages/runtime-bundler |
The interactive iframe, its bootstrap and service worker, evaluateInstrument | packages/runtime-internal |
| A built runtime directory mapped onto HTTP URLs | packages/runtime-meta |
Serving /runtime/v1/... to a Vite app | packages/vite-plugin-runtime |
| Re-validating an evaluated bundle before it renders | packages/instrument-interpreter |
| Validating an instrument definition at the API perimeter | packages/schemas |
| A built-in instrument itself | packages/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.
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.
/runtime/v1/... importInstrument 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).
| Doing this | Open 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 definition | packages/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).
Success!, and any package you added has its own directory under runtime/v1/dist.packages/instrument-utils (pnpm lint green there) and
listed in packages/schemas/src/instrument/ — nothing checks the second for you.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
SKILL.md and 1 other file in .agents/skills/odc-instruments of DouglasNeuroInformatics/OpenDataCapture.
Open the folder on GitHubat commit 432dec8
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Odc Instruments this skillDouglasNeuroInformatics/OpenDataCapture | 119 | — | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| Run Dozzle Dev Instanceamir20/dozzle | 15k | — | ~747 | Automated safety check: Pass | MIT | |
| LangBot Core Developmentlangbot-app/LangBot | 18k | — | ~1.4k | Automated safety check: Notes | Apache-2.0 | |
| Lint Commit PRTresjs/tres | 3.8k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Create SkillHyk260/PureChat | 546 | 1 repos | ~823 | Automated safety check: Pass | MIT | |
| Writing Vite Devtools Integrationsyuyinws/oxc-inspector | 169 | — | ~2k | Automated safety check: Pass | MIT |
amir20/dozzle
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.
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.
Tresjs/tres
Lint local changes, auto-fix, conventional commit, and optionally create PR
Hyk260/PureChat
Create a new skill in the current repository. An agent skill from Hyk260/PureChat.
yuyinws/oxc-inspector
Creates devtools integrations for Vite using @vitejs/devtools-kit.
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.
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.
DouglasNeuroInformatics/OpenDataCapture
Test a change in Open Data Capture. An agent skill from DouglasNeuroInformatics/OpenDataCapture.
DouglasNeuroInformatics/OpenDataCapture
Triage pull requests against upstream main — one verdict, action items, and whether it needs the user's eyes.
DouglasNeuroInformatics/OpenDataCapture
Open a pull request against main for the current branch. An agent skill from DouglasNeuroInformatics/OpenDataCapture.
DouglasNeuroInformatics/OpenDataCapture
File a GitHub issue for Open Data Capture with its labels. An agent skill from DouglasNeuroInformatics/OpenDataCapture.
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…
Works with
Categories
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.
Odc Instruments fits situations like: development work in your project.
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.
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.
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.
Going by SKILL.md and its folder, Odc Instruments needs the command-line tools its instructions call (pnpm).
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.
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.
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.
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.
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.
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.