Entries and statuses
An entry is one item of the library: a skill, rule, script, agent, hook, fact or lesson, with its own trigger, counters and status. Its status decides where it lives and whether it loads.
Statuses
Section titled “Statuses”| Status | Lives in | Loads |
|---|---|---|
draft |
~/.rematch/drafts/<name>/ |
never |
provisional |
~/.rematch/staging/<branch>/<name>/ |
on predicate match |
kept |
~/.omp/agent/skills/<name>/ (agents: ~/.omp/agent/agents/<name>.md) |
natively, on every match |
stale · dormant · retired |
~/.rematch/archive/<status>/<id>/ |
never; never deleted |
pinned |
wherever it is | a flag: never replaced automatically |
- Pinned is a flag, not a place. Automatic transitions refuse pinned entries;
disableandrollbackare your actions and proceed. - A kept entry replaced by a sibling becomes dormant, not retired, with its files in
predecessors/<name>/<version>/.rollbackmust be able to restore it, and retired never leaves. - Declining an approval retires the entry.
- Every kept entry keeps its predecessor, so
rollbackalways has something to restore (D13).
When each transition fires: counters and the kill criterion. Files inside an entry: entry layout.
Where skills load from
Section titled “Where skills load from”One directory, ~/.rematch/skills/, holds a link <name> → <entry dir> for every skill that loads. All three harnesses read it.
| It links | Target |
|---|---|
| every kept or pinned entry | its directory under ~/.omp/agent/skills/ |
| every provisional entry whose predicate matched a directory that was synced | its staging/<branch>/<name>/ |
| Harness | Reads it through | Synced by |
|---|---|---|
| omp | skills.customDirectories, added by the extension for the process |
the extension, at omp start |
| Claude Code | the plugin’s skills/ link |
the plugin’s SessionStart hook |
| Codex | ~/.agents/skills/rematch |
rematch skills sync --harness codex --cwd "$PWD" |
- Loading is the union of what you work on. A sync adds the provisional skills matching its directory and never removes one because this directory does not match. Each extra skill costs one description line in the system prompt.
- Counting is not. A session counts only the entries whose predicate matches its own directory, so a skill loaded in an unrelated repo never moves a counter.
- Status changes apply at once. Keeping re-points the link; retiring, archiving or disabling removes it;
rematch offremoves every link andrematch onrestores the kept ones. A running session sees the directory as it was at its start. - Every omp profile shares it, because
~/.rematchis shared: a skill kept under one profile loads for every profile and harness. rematch skills sync --cwd <dir>syncs by hand and prints what it added and pruned. Directories in~/.rematch/skills/that are not links are never touched.
Subagents
Section titled “Subagents”When the fix for a correction is “read this big thing and report the one line that matters” (a build log, a long diff, a data dump), the editor may propose a subagent (kind: agent) instead of a skill. It runs in its own context and returns text, so the big input never enters your session.
An AGENT.md holds name, description (what the main agent sees when deciding to delegate), optionally model, and a body that is the subagent’s system prompt.
| Status | Where | Seen |
|---|---|---|
| provisional, approved | staging/<branch>/<name>/, linked from ~/.rematch/agents/<name>.md |
in every omp session (omp reads agents only from fixed places); counted only where the repo matches |
| provisional, not approved | staging/<branch>/<name>/ only |
never: linked and copied nowhere until you approve it (digest kind agent) |
| kept (after 4 clean sessions) | copied to ~/.omp/agent/agents/<name>.md; a file of yours with that name is saved first |
natively |
| retired · dormant · stale | link or kept copy removed; entry archived | never |
- Approval is bound to
AGENT.mdwithout itsrematch:block: editing the body asks again. A project or user agent with the same name wins over a provisional one. /rematch offdoes not hide provisional agents;library disable <id>does.- Claude Code gets copies in its plugin’s
agents/, refreshed at each session start. Codex does not load subagents.