Plugins for Claude Code that help with Partners In Health EMR and informatics work.
As we use Claude for PIH work, we keep teaching it the same things: how our systems are set up, our conventions, which approaches work and which to avoid. This repo is where we save that knowledge as skills and share it. Anyone on the team benefits from what one person has figured out, and Claude starts from what we already know instead of from scratch.
It has two goals:
- One place for the PIH team to build skills together. Skills are written in plain language and kept in git, so changes are reviewed, tracked, and improved over time. Developers maintain the repo, but the knowledge comes from everyone who does the work.
- Skills anyone can use, with no git or GitHub knowledge needed. Colleagues who aren't developers install the plugins once from inside Claude, then just ask Claude for what they need. Getting updates and suggesting improvements don't require git either. See Getting started and Suggesting improvements.
- A skill is a set of plain-language instructions that Claude reads when a topic comes up. For example, how the PIH concept dictionary is organized and how to search it safely. You don't call a skill yourself; you just ask Claude, and it uses the right one.
- A command is a shortcut you type, starting with
/, such as/ocl:setup. - A plugin bundles related skills and commands under one name, such as
ocl, so you can install them together. - A marketplace is a list of plugins Claude can install. This repo is the PIH marketplace, named
pih.
Each plugin has its own page with setup steps, examples and tips.
| Plugin | What it does |
|---|---|
ocl |
Search and maintain the PIH concept dictionary in Open Concept Lab (OCL): find concepts, see which sets they're in, pull concepts from CIEL, and add or edit PIH concepts and mappings. |
You only need to do this once per plugin. After that, just open Claude Code and ask. The steps below use the ocl plugin as the example; for another plugin, replace ocl with its name.
- Download Claude Desktop from https://claude.ai/download and install it.
- Open it and sign in with your PIH Claude account.
Claude Code is the part of Claude Desktop that can work with files and with websites like OCL.
- In Claude Desktop, click Code. It sits next to Chat, at the top or in the sidebar, depending on your version.
- When asked to pick a folder, choose or create one for this work, e.g. a folder called
claudein your Documents. Any folder works. - You'll see a message box, like in a normal chat. That's where you type everything below.
Claude Code will sometimes ask your permission before doing something, such as running a command or changing a file. Read what it says, then approve or decline. If you're unsure, decline and ask Claude to explain.
Type this into the message box and press Enter:
/plugin install ocl --marketplace PIH/claude-plugins
This adds the PIH marketplace and installs the plugin from it, all in one step. If Claude asks where to install it, choose the option for you / all your projects (sometimes labeled "user"), so it works in every folder.
That didn't work? Try the two-step way
Older versions of Claude Code need two commands. Type each one and press Enter:
/plugin marketplace add PIH/claude-plugins
/plugin install ocl@pih
You can also type just /plugin to open a menu where you can browse the PIH marketplace and install from there.
Start a new Claude Code session so the plugin loads. You can close and reopen the Code view, or start a new session from the menu.
Some plugins need a one-time setup, such as connecting your account on another system. Each plugin's page explains what's needed. For example, the ocl page walks you through connecting your OCL account with /ocl:setup.
Then just ask Claude in plain language. Each plugin's page has examples to get you started.
Claude doesn't update PIH plugins automatically unless you turn that on. Automatic updates are only on by default for Anthropic's own marketplaces.
Turn on automatic updates (recommended, one time):
- Type
/pluginand press Enter. - Open the Marketplaces tab.
- Select pih, then choose Enable auto-update.
Claude then checks for updates in the background after a session starts. New versions take effect in your next session, or right away if you type /reload-plugins.
Or update by hand whenever you want:
/plugin marketplace update pih
Then type /reload-plugins or start a new session.
- "Unknown command" when typing
/plugin: your Claude Desktop may be out of date. Update it, or ask a developer colleague to help you run Claude Code in a terminal (claude), where/pluginis always available. - Claude says a change was blocked by "auto mode": this is a safety feature for changes to shared systems. Claude will usually write the change into a small script and explain how to run it once you've reviewed it.
- A problem with a specific plugin: see the Troubleshooting section on that plugin's page.
- Anything else: ask Claude! For example: "The OCL plugin isn't working, can you help me figure out why?"
These plugins are a work in progress. If Claude got something wrong, missed a PIH convention, or you wish it could do something new:
- open an issue at https://github.com/PIH/claude-plugins/issues, or
- tell one of the maintainers. A short description of what you asked, what Claude did, and what it should have done is perfect.
Using ocl as the example:
.claude-plugin/marketplace.json # the marketplace: lists every plugin in this repo
plugins/
ocl/
.claude-plugin/plugin.json # plugin name, version, description, license
README.md # the plugin's page: setup, examples, troubleshooting, dev notes
commands/setup.md # a command: /ocl:setup
skills/ocl-search/SKILL.md # a skill: what Claude knows about OCL and the PIH source
Most of a plugin's value is in its SKILL.md files:
- The
descriptionat the top decides when Claude uses the skill. Name the words and situations that should trigger it. - The body is how to do the work: system details, PIH conventions, safety rules and known quirks. Write it like notes for a capable new colleague, and explain why, not just what.
A command, like commands/setup.md, is a reusable prompt that people run as /<plugin>:<command>.
-
Get the code (first time only), and make a branch:
git clone git@github.com:PIH/claude-plugins.git ~/development/claude-plugins cd ~/development/claude-plugins && git checkout -b <ticket>-<short-description>
-
Run Claude Code with your local copy of the plugin. From whatever folder you want to work in:
claude --plugin-dir ~/development/claude-plugins/plugins/<name>
This loads the plugin straight from your checkout, for that session only. If you also have the published plugin installed, disable it first with
/plugin disable <name>@pih(and/plugin enable <name>@pihlater), so you aren't running two versions at once. -
Do real work, and let the skill learn from it. The best improvements come from actual tasks. When Claude discovers something, or you correct it, ask:
Update the skill in ~/development/claude-plugins with what we just learned.
Mark anything that's untested or unconfirmed as such, so Claude doesn't treat a guess as fact. Keep it general: no personal details, ticket numbers, tokens, or patient or employee data. This repo is public. Each plugin's page has notes on what's worth adding to its skills.
-
Restart to pick up edits. Exit Claude Code and rerun the step 2 command, then try a request that exercises the change.
-
Validate:
claude plugin validate . claude plugin validate plugins/<name>
-
Bump the version in
plugins/<name>/.claude-plugin/plugin.json. Because our plugins set aversion, users only get the update when it changes, even if they have automatic updates turned on.- Patch (
0.1.0→0.1.1): fixes and small additions. - Minor (
0.1.0→0.2.0): new workflows or commands.
- Patch (
-
Commit, push and open a pull request. Ask someone who knows the subject area to review. Once it's merged, users pick it up the next time they update (see Keeping plugins up to date).
- Create
plugins/<name>/.claude-plugin/plugin.json(copy theoclone as a starting point), plusskills/and/orcommands/. - Add a
plugins/<name>/README.md, usingplugins/ocl/README.mdas a model. It should cover:- what the plugin does and what it includes,
- any one-time setup,
- example requests,
- plugin-specific troubleshooting,
- notes for developers.
- Add an entry for it in
.claude-plugin/marketplace.json, and a row to the Plugins table above. - Validate.
Asking Claude to "scaffold a new plugin in this repo for " is a good way to start.
claude plugin eval plugins/<name> runs test cases stored in the plugin's evals/ folder. It's worth adding a few once a skill's behavior settles, so changes don't quietly break things that used to work.