MCP Server Builder
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
A skill your agent uses when you do not know WHERE something belongs: you learned a lesson and are unsure which file takes it; you are about to create a new doc, folder, or convention; you are…
$ npx skills add mvschwarz/openrig --skill openrig-operating-model -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mvschwarz/openrig openrig-operating-model --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/mvschwarz/openrig.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model .claude/skills/openrig-operating-model && 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 "openrig-operating-model" agent skill from https://github.com/mvschwarz/openrig/tree/main/packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model into .claude/skills/openrig-operating-model/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openrig-operating-model", 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/mvschwarz/openrig/tree/main/packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-modelType 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 mvschwarz/openrig --skill openrig-operating-model -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mvschwarz/openrig openrig-operating-model --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvschwarz/openrig.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model .agents/skills/openrig-operating-model && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "openrig-operating-model" agent skill from https://github.com/mvschwarz/openrig/tree/main/packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model into .agents/skills/openrig-operating-model/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openrig-operating-model", 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 mvschwarz/openrig --skill openrig-operating-model -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mvschwarz/openrig openrig-operating-model --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvschwarz/openrig.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model .cursor/skills/openrig-operating-model && 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 "openrig-operating-model" agent skill from https://github.com/mvschwarz/openrig/tree/main/packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model into .cursor/skills/openrig-operating-model/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openrig-operating-model", 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/mvschwarz/openrig.git --path packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model--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 mvschwarz/openrig --skill openrig-operating-model -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mvschwarz/openrig openrig-operating-model --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvschwarz/openrig.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model .gemini/skills/openrig-operating-model && 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 "openrig-operating-model" agent skill from https://github.com/mvschwarz/openrig/tree/main/packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model into .gemini/skills/openrig-operating-model/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openrig-operating-model", 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 mvschwarz/openrig openrig-operating-modelInstalls 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 mvschwarz/openrig --skill openrig-operating-model -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mvschwarz/openrig.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model .github/skills/openrig-operating-model && 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 "openrig-operating-model" agent skill from https://github.com/mvschwarz/openrig/tree/main/packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model into .github/skills/openrig-operating-model/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openrig-operating-model", 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 mvschwarz/openrig --skill openrig-operating-model -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mvschwarz/openrig openrig-operating-model --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvschwarz/openrig.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model .opencode/skills/openrig-operating-model && 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 "openrig-operating-model" agent skill from https://github.com/mvschwarz/openrig/tree/main/packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model into .opencode/skills/openrig-operating-model/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openrig-operating-model", 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.
openrig-operating-modelA skill your agent uses when you do not know WHERE something belongs: you learned a lesson and are unsure which file takes it; you are about to create a new doc, folder, or convention; you are…
Openrig Operating Model is an agent skill from mvschwarz/openrig. Use when you do not know WHERE something belongs: you learned a lesson and are unsure which file takes it; you are about to create a new doc, folder, or convention; you are asking "should this be a skill, a note, or a chain file?"; you inherited a seat and want to know what SHOULD exist; or you are about to duplicate knowledge that already has a home. Also the trace-to-root: how a seat orients by reading one filename at each level from where it stands up to the fleet.
Its SKILL.md is about 6.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts (for example `scripts/compose.py`, `scripts/scaffold.sh` and `scripts/trace-due.sh`).
It sits in Agent Workflows. The repository describes itself as: Build your own network of agents from Claude Code, Codex and Pi: persistent teams with roles, shared context and owned work. The licence is Apache-2.0.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1f69831. 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.
Ships 5 files in scripts/ (Shell and Python), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Openrig Operating Model loads about 6.2k tokens when it runs. Until then it costs about 124 tokens; SKILL.md has 3,651 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); the scripts in this folder are not scanned.
The full file from mvschwarz/openrig at commit 1f69831, republished under its Apache-2.0 licence (© mvschwarz). 3,651 words, ~6,187 tokens.
.claude/skills/openrig-operating-model/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.Canonical term: the Operating Model. How an OpenRig topology organizes every kind of context so that any agent — cold, fresh, or five generations in — can find what it needs and knows where to write what it learns. Authored context stays in addressed Markdown and manifests. Supported writers record semantic judgments; their read models remain rebuildable from those artifacts.
This skill owns the structure: trees, chains, tracing, and placement of authored knowledge. Resolve installed context through its current library addresses and the project's selected loadout; a private corpus is not a required public dependency.
Companion implementation assets in this skill's folder:
templates/ and scripts/ — starters and working tools, described in §8.Everything lives on one of two trees, and every kind of context is a chain: the same filename at every level of a tree. To know anything, you trace from where you are toward the root, reading that one filename at each level — nearer levels refine or override farther ones. The trace (§5) is the act of doing that ascent deliberately, with your own file reads.
fleet → instance → rig → pod → seat.project → mission → slice → proof item.An instance is one OpenRig daemon and the rigs it manages; a fleet is all instances. Where a daemon runs is a deployment fact, not an altitude — say the instance's name when you mean a particular one.
The one-parent law: the trace follows the
directory path and NOTHING else — no pointer fields, no link-following, no
branching, ever. The trace is the instrument confused agents reach for, so it
must be simpler than anything it corrects: path-only ascent fails only in
obvious ways. A child that relates to a second parent gets an also-serves:
ANNOTATION (read by humans and agents, walked by nothing) — and a genuine
two-parent tie usually means the item belongs one level up, under the common
ancestor, with mentions pointing down. The operational many-to-many lives in
the queue's tags, which are maintained by use. Legacy serves: lines are
transition bridges for the flat layout only: never required, never walked,
deleted as work nests properly.
The filename law: one name per chain, identical at every level. The folder
tells you whose it is; the filename tells you what kind it is. A seat named
pm-lead in two different rigs has two different LEARNED.md files — the path
is the identity. Never invent per-level names (no SEAT.md, no RIG.md): that
breaks the trace, the self-description, and every tool at once.
This table is the model. If you internalize one thing, internalize this.
The chains carry what is true of a position. How a kind of thing works — the operating
model — ships in the mode-neutral openrig-core plugin; an operating-mode plugin
(openrig-lab, openrig-factory, or openrig-hq) may refine it.
| Level | CULTURE.md — values | LEARNED.md — what THIS ONE has learned | kept true by |
|---|---|---|---|
| fleet | default culture (ships with OpenRig) | fleet-level lived practice | operator agent |
| instance | (inherits) | what is true of every rig on this daemon | the instance's operator |
| rig | the rig's constitution | this rig's lived practice | the rig's orchestrator |
| pod | (inherits) | this pod's lived practice — the context domain: anything useful to anyone in this pod | the pod's lead |
| seat | (inherits) | this seat's lived knowledge — the file that fixes handovers | the seat itself |
Chain files sit on nodes, not on the shelves that hold them. rigs/, pods/, seats/,
missions/ and slices/ are shelves — the trace passes through them and expects nothing there.
ONE authored node file: SPEC.md. Intent lives in its FRONTMATTER; the specification lives in
its body. Alongside it sit three files with different jobs and different writers:
| file | what it is | who writes it |
|---|---|---|
SPEC.md | the node — intent: composes, body specifies | the node's owner |
NOTES.md | LIVED — what actually happened doing it, in the doer's own words | whoever is doing it |
PROOF.md | evidence the thing does what was intended | the prover |
PROGRESS.md | authored narrative and historical checklist marks; current proof readiness is derived from attributed judgments | the scope's owner and provers |
proof/judgments/ | retained item judgment receipts written by rig proof judge | judges selected by the owning proof policy |
A scaffold may create NOTES.md and its starter instructions; its lived entries are never
generated or projected. It is the work tree's lived file, the way LEARNED.md is the topology
tree's — the field-notes rung, where raw observation goes before anything has earned a place in the
node itself. Keeping lived files out of the render path is what makes them safe to write freely in.
Legacy name: older workspaces may use MISSION_NOTES.md. Keep legacy
content addressable; use NOTES.md for the chain because its name works at every altitude.
| Level | SPEC.md — frontmatter intent: (why) + body (what must be built) | progress | kept true by |
|---|---|---|---|
| project | intent: only — stable, changes at real pivots | derived roll-up | the project's PM |
| mission | intent: and proportional mission-level specification; organizes slices | derived child readiness; distinct outcome judgment | the mission's PM |
| slice | intent: and the concrete slice specification | derived proof readiness | the slice's owner |
| proof item | authored promise in the proof contract | attributed evidence-backed judgment on that revision | the selected judge |
Current acceptance: Scope relationships and policy are authored in manifests; an item
judgment is recorded once against its promise, evidence and policy revision. Slice, mission
and project readiness derive upward. A distinct outcome or publication decision remains its
own authority. Queue ownership and generic done are custody facts, not proof acceptance.
Historical checkbox marks stay readable without acquiring current item authority.
Use rig proof --help for the supported write/read path. The project owner selects
proofPolicy.judges in project.yaml, mission.yaml or slice.yaml (nearest wins),
using exact actor addresses. There is no implicit fixed-role review conveyor.
rig proof judge mission/slices/slice#1 --verdict accept --reason 'Observed the outcome' --evidence proof/result.md
resolves the item identity, revision, evidence digests and retry identity. Evidence may be
an existing legacy artifact or a non-code outcome. A patch-equivalent subject also names
its actual comparison/adoption receipt with --comparison; the agent owns that judgment.
rig proof show returns the current basis and retained receipt; it does not publish anything.
Correct with reject, or withdraw when prior acceptance no longer stands. History stays
in the addressed proof home. A repeated request returns its original receipt and current
readiness; --replace deliberately reaffirms an old identical judgment after a correction.
Changed promises, policy or evidence require a current judgment. Explicit optional
<!-- proof-item: stable-id --> markers preserve identity across wording edits; the
product otherwise derives identity from the full promise and reports ambiguity.
Intent composes; the body does not. The trace reads the intent: FIELD at every altitude, so
four levels unfurl as four sentences rather than four documents. The body is read only when you
are standing on that node.
compose.py up <node> --name SPEC.md --field intent --root <project>A level whose file exists but lacks intent: is reported as a gap — a mission with no intent is
real information, never silently skipped.
Legacy README.md nodes stay valid indefinitely — the resolver prefers SPEC.md and falls
back, so nothing is forced to migrate and dormant missions need no attention.
PROGRESS stays separate. Narrative and legacy marks are retained testimony. For a
project with selected proof policy, current readiness comes from rig proof show and the
shared existing views, not hand-maintained parent checkboxes or copied status prose.
scripts/compose.py progress remains a legacy checklist renderer; it does not certify
attributed acceptance. Intent composes downward; proof readiness aggregates upward.
The axis behind the columns: every context kind has a template half (what ships — SOP, the default culture) and a learned half (what living in it taught — LEARNED, culture amendments). Only the pace of change differs: values change rarely and deliberately, like a constitution; practice changes constantly and cheaply, like working notes; intent changes at real pivots. Keep each file's pace; don't constitutionalize your notes or scribble on the constitution.
Seat knowledge needs a durable home that successors and other runtimes can read.
A private runtime memory or an urgent handover packet alone can omit standing
duties and the reasons behind a practice. Keep general operating craft in the
shared skill and position-specific knowledge in the seat's LEARNED.md chain.
At a handover, read the current chain alongside the packet and record any missing
job context before claiming readiness. Each occupant maintains what the seat has
learned; the handover packet carries the current transition.
Sections, in order — see templates/LEARNED.md:
Size: soft guidance, not a rule. Keep it as small as honestly covers the job — attention is the budget, and every reader pays it. Some seats genuinely need more; write what the job needs. The failure mode to watch for is the rulebook that only ever grows. Distill lessons into practices with reasons at deposit boundaries (before clear or handover); use that habit, not a line count.
A trace is walking your chains with your own file reads and writing down
where you stand: what am I doing (queue/NOTES) → under what contract (SPEC) →
toward what intent (SPEC.md intent field, leaf to root) → by what practice (LEARNED +
SOP) → within what values (CULTURE). A few written lines at the end.
scripts/compose.py up assembles any chain for you.
Two rules give the trace its value:
When to trace — one principle: trace when enough has changed that your
picture of where you stand may be stale — after a large stretch of work, at a
boundary (boot, handover, new mission, confusion), or when someone asks you to
reorient. Why not simply "every N hours": identical scheduled prompts fade
from an agent's attention with repetition, and idle seats accumulate ritual
traces that crowd out real context.
Where a schedule fits your context anyway, use one — but prefer gating the
action on evidence of change: scripts/trace-due.sh decides "has enough
happened since my last trace?" deterministically and stays silent when the
answer is no, so a scheduler can fire it as often as it likes.
rig walk — one idea, two endsThese get confused because they share a word. They are not in conflict; they are the same thing seen from either end, and the relationship is worth holding.
A chain is an ordered sequence of context meant to be absorbed one piece at a time. Two kinds exist and both are chains in that sense:
LEARNED.md; SPEC.md with intent:). The sequence is position: leaf → root.A chain can be traversed two ways, and that is the only real difference:
| who drives | mechanism | when | |
|---|---|---|---|
| PULL | the agent | compose.py up renders the chain; the agent reads it | it is awake and oriented enough to look — a trace, a refocus |
| PUSH | an orchestrator | rig walk --through <files> --pace <n> sends one piece at a time into the pane | it cannot self-start — freshly cleared, re-primed, cold |
Pacing is the mechanism in both directions, and it is the load-bearing part. Absorption
between pieces is what makes a chain land; a concatenated dump of the same bytes is a failed
delivery regardless of content. That is why rig walk elapses --pace between pieces, and why a
composed render is meant to be read as a sequence rather than skimmed as a wall.
Use distinct names for the two directions:
compose.py up renders a node's chain to the root.rig walk — the push verb for paced delivery into a seat's pane.Use refocusing for the current trace workflow. A delivery receipt and an
agent's read-depth report answer different questions; pacing alone does not
establish understanding.
openrig-core's operating-model
skill and the shipped culture change through their owners, never by an instance
editing in place. If it is wrong for everyone, propose the change to its owner;
if it is wrong for you, that's what LEARNED.md is for.Everywhere: date what you write (from the clock), and correct by adding a dated correction rather than silently rewriting history.
Any node can be rendered: its chains assembled into one document
(scripts/compose.py; up = your effective view from a leaf, down = every
chain file under a root — run down at a tree root and you get the whole
operating picture in one document). Two rules:
tree shows the shape of a directory — where you sit, and where the
screams are, before you read a word of content.The root render + diff is how a high-altitude seat keeps a current mental
model of a changing fleet without reading everything: render the tree root,
diff against your previous render, read only the diff
(scripts/trunk-diff.sh).
Context lives at the narrowest scope that needs it; skills are only for what has no scope. Seat-specific knowledge → that seat's LEARNED.md. Rig practice → the rig's files. Only truly scope-free craft (useful to any agent anywhere) belongs in the skill layer.
A plugin cannot hold LEARNED. Plugins are shared; LEARNED is per-instance. Two rigs installing the same orchestrator plugin must not share what one seat learned about its own merge desk. That is why chains exist alongside plugins rather than being replaced by them.
And plugins are the distribution mechanism, which imposes a hard test. A plugin ships skills;
a skill may ship a script; that script must run unmodified on a stranger's machine. So it
resolves paths from configuration (rig config get workspace.root), never from a literal, and it
never asks the agent to work out which of several candidate directories is the real one. If a user
points their workspace at a git repo or a projects/ folder, everything keeps working with no
further setup. A script that only works for its author is not shippable, however correct it is.
A node holds what is true of THIS position and stays true.
Then check which tree. Traps, practice and how-we-work are position knowledge on the topology
tree (LEARNED.md). What is being built is the work tree (SPEC.md). One rig owns both; they
still do not mix.
Keep specification depth proportional. A project carries stable intent; a
mission carries its intent and mission-level specification in the same authored
SPEC.md. Slices provide their concrete implementation scope. Follow the selected
mission-slice-sop and any explicit mode overlay; mission specification is not a
requirement to repeat every slice detail.
Before you write down something you learned about a project, decide which kind it is.
LEARNED.md, or as the command that derives it. It never goes into shipped content
or a shared world.Agents find a project's declared context with rig context work-install, which lists what the project declares:
its intent, the context files in its project.yaml install block, and its skills. When project knowledge should
reach every agent working on the project, add it to that declaration rather than starting a second index.
These are independent, and merging them is seductive because the merged version is prettier.
stage:
enum (wip | provisional | established | canonical | superseded | retired).A pod-level item can be raw observation; a seat-level one can be canon. A skill can contain something immature and still be the right home, because audience picked the file.
So promotion to canon is NOT a move up the tree. It is a maturity event and can happen at any altitude — a seat-level observation that is universally true graduates straight to a skill. What earns maturity is evidence: recurrence, independent corroboration, a measured cost, surviving change, surviving an attempt to falsify it. Facts about mechanisms can skip the ladder (backticks substitute in double-quoted shell strings is one command away); inferences about practice must accrue (never broadcast to a large rig took an incident).
LEARNED.md is not a staged item — it is the bed everything lies in. Its gradient is positional: the dated append-log at the bottom is raw observation, the concise sections at the top are what survived. Attach distillation to a trigger: distil at deposit boundaries (pre-clear, pre-handover) where a write is already required and the author still remembers why each line exists; refocus merely notices when the log has outgrown the distilled part.
scripts/scaffold.sh creates any missing chain files from templates/ and
never overwrites or deletes anything — so a brand-new workspace and a
living system are the same command with different starting states. Created
files are marked UNSEEDED until their real owner writes the first true
version. Never mass-produce LEARNED.md content for other instances — each
instance writing its own first version is both how the knowledge becomes real
and how you discover which seats cannot yet describe their own job.
scripts/ are macOS-flavored in places (stat -f); verify
platform compatibility before trusting them on another OS.templates/{SPEC,LEARNED,SOP}.md ·
scripts/{compose.py, trace-due.sh, trace-stamp.sh, trunk-diff.sh, scaffold.sh}
© mvschwarz, 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 10 other files (scripts) in packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model of mvschwarz/openrig.
Open the folder on GitHubat commit 1f69831
Openrig Operating Model 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 |
|---|---|---|---|---|---|---|
| Openrig Operating Model this skillmvschwarz/openrig | 5.9k | — | ~6.2k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server Builderanthropics/skills | 180k | 64 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| Hook Development for Claude Code Pluginsanthropics/claude-plugins-official | 38k | 11 repos | ~4.1k | Automated safety check: Notes | Apache-2.0 | |
| Using Superpowersfarm-fe/farm | 5.6k | 35 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Executing Plans Inlineobra/superpowers | 296k | 2 repos | ~5.1k | Automated safety check: Pass | MIT | |
| Claude Code Agent Developmentanthropics/claude-plugins-official | 38k | 8 repos | ~2.8k | Automated safety check: Pass | Apache-2.0 |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
anthropics/claude-plugins-official
Explains how to write Claude Code plugin hooks, both prompt-based checks and bash commands, for events such as PreToolUse, Stop and SessionStart.
farm-fe/farm
A skill your agent uses when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions
obra/superpowers
Has the agent carry out an implementation plan itself, task by task in the current session, keeping a ledger, proving each step with a test and ending with one whole-branch review.
anthropics/claude-plugins-official
Explains how to write agents for Claude Code plugins: the markdown file with YAML frontmatter, trigger descriptions, model and color settings, and system prompt design.
Azure/azqr
Create new skills, modify and improve existing skills, and measure skill performance.
mvschwarz/openrig
Walks an agent through upgrading the OpenRig CLI and daemon one observed step at a time, keeping live seats alive and reconciling managed plugin files.
mvschwarz/openrig
Re-grounds a long-running agent in the current product outcome by running a path-based trace to the root of its topology and work trees.
mvschwarz/openrig
Helps set up a continuing agent software team for a real repository with OpenRig, choosing between manual work, queue handoffs and an explicit Workflow.
mvschwarz/openrig
Loads one section of a Markdown file by its path#h2-slug address with a bundled resolver script, for use outside OpenRig's context library.
mvschwarz/openrig
Separates a stable agent seat's identity from its changing occupant, and records honest, two-part provenance whenever one occupant replaces another.
mvschwarz/openrig
A skill your agent uses when addressing a registered remote OpenRig host, choosing its transport, or interpreting a cross-host result.
Categories
A skill your agent uses when you do not know WHERE something belongs: you learned a lesson and are unsure which file takes it; you are about to create a new doc, folder, or convention; you are…. Openrig Operating Model is an agent skill from mvschwarz/openrig."; you inherited a seat and want to know what SHOULD exist; or you are about to duplicate knowledge that already has a home.
Openrig Operating Model fits situations like: you do not know WHERE something belongs: you learned a lesson and are unsure which file takes it; you are about to create a new doc; you are asking should this be a skill; you inherited a seat and want to know what SHOULD exist.
Run `npx skills add mvschwarz/openrig --skill openrig-operating-model -a claude-code`. Or copy the skill folder (packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model in mvschwarz/openrig) into .claude/skills/openrig-operating-model in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mvschwarz/openrig --skill openrig-operating-model -a codex`. Or copy the skill folder (packages/daemon/assets/plugins/openrig-core/skills/openrig-operating-model in mvschwarz/openrig) into .agents/skills/openrig-operating-model 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 mvschwarz/openrig --skill openrig-operating-model -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/openrig-operating-model, .gemini/skills/openrig-operating-model, .github/skills/openrig-operating-model and .opencode/skills/openrig-operating-model in your project.
Going by SKILL.md and its folder, Openrig Operating Model needs a shell and Python for the scripts in its folder. Our summary lists: Python 3; A Bash shell.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Openrig Operating Model 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 6.2k tokens (SKILL.md is roughly 25k 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 Openrig Operating Model: MCP Server Builder (anthropics/skills, 180k stars), Hook Development for Claude Code Plugins (anthropics/claude-plugins-official, 38k stars), Using Superpowers (farm-fe/farm, 5.6k stars) and Executing Plans Inline (obra/superpowers, 296k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mvschwarz (a GitHub user) maintains it in mvschwarz/openrig, which has 5,854 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 8, 2026.
Source: mvschwarz/openrig on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.