Glossary
Every term these docs use in a precise sense, in alphabetical order, each with a short definition and a link to the page that explains it.
A to C
Adopt
install --adopt <path> records a folder already in your Library as an installed copy of a team skill without copying a byte. Its content digest must match a published version, under that skill’s own folder name.
App
The desktop app for macOS and Windows, a window onto the CLI that runs it in frame mode and has no network client of its own. The app verb downloads it, checks its checksum and build attestation, and opens it; there is no Linux build.
Arm
One side of an eval comparison: a fresh sandbox where one headless claude -p session runs the task, for each case, arm and repetition. The arms are the baseline, the candidate and, when your team has a receipted version, the incumbent.
Baseline
The arm with no skill staged, present in every run. The verdict is banded on the candidate-vs-baseline comparison alone.
Candidate
The arm that stages your folder exactly as it is on disk, plus the repository files its SKILL.md depends on. It has no version number: it is identified by its content digest and may never have been published.
Case
One execution test, a YAML file at evals/cases/<stem>.yaml whose stem is its name. Only task is required; checks, a judge rubric, files, a fixture, setup and requires are optional fields.
Category
A skill’s Marketplace label, metadata.terum-category in its SKILL.md, and part of its content digest. The team’s list is advice, not an enum; when the file declares none, publish takes --category, then a model suggestion, then misc.
Check
A deterministic assertion about an arm’s transcript or sandbox, such as transcript_mentions or file_exists. Checks are all-or-nothing per arm, and differing results decide a comparison row before any judge is asked.
Clone
Your machine’s full git clone of the team repository, at ~/.terum/skills/teams/<team>. It is disposable: every write and every sync hard-resets it to origin/main, and reads never fetch.
Comparison row
One decision between the candidate and one opponent for one case and repetition: a win, a loss or a tie. A dead arm makes it an unscored tie; otherwise checks decide, and a check tie goes to the judge only when the case has a rubric.
Content digest
The sha256: hash that identifies a skill’s bytes: every file except evals/ and a few housekeeping files, with the three publish-managed fields dropped from SKILL.md. Publish, receipts and the Library’s match to the Marketplace all use the same digest.
E to H
Edit hook
An optional Claude Code hook that, after the agent edits a file inside a skill folder, reminds Claude that the edit stays local until you publish it. It speaks once per skill per session and defaults to No at setup.
Eight skills
The skills setup places for Claude Code and Codex: list-skills, skill-info, search-skills, eval, eval-report, skill-status, sync-skills and the terum-skills manual. They let the assistant run the CLI for you and show the result as a Markdown board.
Environment skip
A case or suite whose requires probe finds a host tool missing, so it never runs. Its rows count as missing and make the run partial, never as the skill failing to help.
Eval assets
Everything under a skill’s evals/: cases, the suite, triggers and fixtures. They travel with the skill but sit outside its content digest, stay hidden from the skill during a run, and reach the team on every publish without minting a version.
Eval queue
Evals queued with eval --window overnight or --window later instead of run, keyed on the exact bytes you queued, so an edited folder is refused. The desktop app drains the queue between 01:00 and 05:00 while open and idle; otherwise run eval --drain.
Expected and scored rows
expected_rows is how many comparison rows a run set out to produce (cases plus sub-cases, times k, times opponents), and scored_rows is how many survived. The gap is dead arms, skips and dropped cases, reported as a gap and never counted as a zero.
Fingerprint
The hash of a placed folder’s files, recorded when it is placed. When the folder no longer matches, it shows as local-changed, and any removal quarantines it instead of deleting it.
Frames
The JSON-line protocol a program uses to drive the CLI with --frames, one JSON object per line in each direction. The desktop app speaks it, and the frame protocol is the full contract.
Generated evals
Cases or a suite, and a triggers file, that eval writes into your skill folder when they are missing, each marked as generated. Review them before you trust the verdict; --no-gen turns generation off.
Global
The Library root at ~/.claude/skills. It is the default install destination, and the only one offered until you register a project.
Handle
Your name in one team: 1 to 39 letters, digits and single internal hyphens, stored lowercase. It names your people file and the target of install member <handle>, is fixed once you join, and is never used as a skill’s metadata.author.
Heavy mode
The one-session mode eval offers when a skill appears to call subagents. Your answer is only recorded: a run uses one session per arm exactly when it has a suite.
HYG codes
The eight hygiene findings, HYG1 to HYG8: frontmatter, hidden characters, credentials, executables, licenses, description, category and outside paths. HYG7, HYG8 and HYG6’s size check are warnings; the rest are errors.
Hygiene
The free, offline, deterministic gate a skill folder passes before validate, eval, publish or skill fix does anything else. Errors stop the operation; warnings print and gate nothing.
I to O
Incumbent
The published version whose newest receipt is the most recent, excluding any version with the candidate’s bytes; an unevaluated version never qualifies. It adds a candidate-vs-incumbent comparison, which the verdict does not read.
Installed
installed[] in your people file: one entry per skill and scope you have a copy of, written by install and dropped by uninstall-skill. It records a copy on a machine, not an endorsement.
Judge
A tool-free model call that breaks a check tie when the case has a rubric, reading the task, the rubric and the end of each transcript. It is asked twice in reversed order, and if the answers disagree the row stays a tie.
k (repetitions)
How many times each case runs per arm, set with --k and 1 by default. Each repetition is its own row, and --k 3 is the setting for a receipt you intend to gate on.
Library
The skills on your machine: Global plus the .claude/skills folder of every project you registered. It reads local files only and matches a folder to the Marketplace by content digest alone.
Library project
A folder you registered with project add, whose .claude/skills becomes part of your Library. It lives on your machine only, and it is not a team project.
Lineage
The versions published under one skill id. Publish refuses to append when the name now carries a different id, and republishing after an unpublish starts again at v1.
Managed fields
license, metadata.id, metadata.author and, when missing, metadata.terum-category, which publish writes into SKILL.md and back into your folder. The first three are outside the content digest, so publishing does not change a skill’s identity.
Marketplace
Everything your team has published, read from your clone: each skill’s newest version, author, category, installs, projects and verdict. It never fetches, so run sync for the latest.
Misses
The misses verb asks a model which of your placed skills each recent prompt should have selected, and lists the pairs where that skill did not fire. It spends model calls, and its output is candidates for review, never a rate.
Net lift
(wins - losses) / (wins + losses + ties) over one comparison’s scored rows, so ties dilute. The candidate-vs-baseline net lift is what the verdict bands.
old-skills
The folder beside a skills root where a folder you already had is kept when an install or move displaces it. Nothing empties it, prune included.
P to R
Partial run
A run that scored some of its expected rows but not all, recorded as execution_status: partial, or failed when none were scored. The verdict line shows the coverage, and the team README never shows a partial receipt as a plain verdict.
People file
people/<handle>.json in the team repository: your handle, name, email, GitHub login, installed[] and profile[]. You are an active member while it exists and your handle is not archived.
Placement
A skill folder this tool put in your Library, by install or install --adopt, and recorded in the placements ledger. Removing an unedited placement deletes it; an edited one, or a folder that was never placed, goes to quarantine instead.
Placements ledger
The placements map in ~/.terum/skills/config.json: each placed folder’s path, skill id, team, version, scope, date and fingerprint. It is the only authority for what this tool may delete.
Profile
profile[] in your people file, the skills you stand behind. publish and install add to it without asking, profile --remove takes an entry off, and install member <handle> installs a teammate’s profile.
Provenance
The part of a receipt that records who ran it and how: runner, engine and Claude Code versions, requested models, k, cases, and each arm’s resolved skills. Cards show it beside the score so you can tell whether two results are comparable.
Prune
The only command that empties quarantine: it lists every item, asks once, and deletes them on yes.
Push guard
A pre-push hook in every team clone that applies the write guard to a hand-written git push, refusing anything under skills/ or evals/. It stops accidents, not abuse: --no-verify bypasses it, and the commit carries your name.
Quarantine
~/.terum/skills/quarantine/, where terum-skills moves an edited placed copy, a deleted unplaced folder or a clone with unpushed work instead of deleting it. Only prune empties it.
Recall and precision
The trigger eval scores. Recall is the share of should-trigger prompts that selected the skill; precision is the share of selections that came from should-trigger prompts.
Receipt
The JSON record of one eval run: verdict, comparisons, scores, efficiency and provenance, keyed to the content digest of the bytes evaluated. It reaches the team when those bytes are a published version, is append-only once committed, and is never averaged with another.
Reconcile
The reconcile verb matches your unplaced Library folders against team skills, offering to record identical ones as installed and to publish differing ones as the next version. It also runs during setup and after project add.
Rubric
The optional judge field of a case. Only a case with one can reach the judge, and only on a check tie.
Run tree
The folder one eval run writes under ~/.terum/skills/evals/local/<digest>/<run id>/: receipt, transcripts, sandboxes and any generated assets. It stays on your machine; only the receipt is ever shared.
S
safeWrite
The one write path to the team repository: fetch, hard-reset the clone, re-run the verb’s change, check it with the write guard, commit, push to main, and start over on a lost race until a 30-second deadline. Two commands on one machine queue on the clone’s lock rather than race.
Session hook
An optional Claude Code hook that runs sync --hook in the background at session start, fetching your team clone at most once an hour and refreshing Terum’s own files. It places nothing and defaults to No at setup.
Sign test
A two-sided exact sign test over one comparison’s wins and losses, stored as sign_p. Nothing gates on it, and it is pinned at 1.0 whenever a suite ran.
Skill
A folder whose name equals the name in its SKILL.md, 1 to 64 lowercase letters and digits joined by single hyphens. In the team repository it is a set of immutable versions plus its eval assets.
Skill fix
skill fix <path> repairs the hygiene faults with one right answer (YAML quoting, name:, license:, invisible characters, a stray executable bit) and lists what still needs you.
Skill id
The uuid in metadata.id, a skill’s identity through renames. Receipts, installs, profile entries and team projects are keyed by it, not by name.
skillOverrides
Claude Code’s own per-skill setting, which skill disable and skill enable write so a skill can be off on your machine without moving its folder. It is the key the /skills menu writes, so the two always agree.
Stale
A Library row is stale when nothing scored its current bytes but something scored the same skill before an edit. A clone is possibly stale when it has not been fetched within the hour.
Sub-case
One named row of a suite, carrying only name and checks, scored against the suite’s shared session.
Suite
evals/suite.yaml: one task, one sandbox and many sub-cases, for a skill whose single session can answer many questions. It runs one session per arm, is never judged, and pins the sign test at 1.0.
Sync
The sync verb fetches each team clone and hard-resets it to origin/main, and changes nothing else on your machine. Reads never fetch, so the app runs it at launch and on window focus, at most once a minute.
T to W
Team project
A named list of skills in team.json that the whole team sees, filled by publish --project and taken whole with install project. It is not a folder, and its optional remote only preselects where an install lands.
Team repository
The one private git repository that is the team: team.json, people files, skill versions, eval assets and receipts. Any git host works, the host decides who has access, and there is no server beside it.
Tool approval
Your consent to a skill’s allowed-tools, asked once at install and remembered under the skill id against a hash of the grants. Changed grants ask again.
Trigger eval
For each prompt in evals/triggers.yaml, one tool-free model call is shown the skills in your Library root and asked which it would load. It yields recall and precision, and --triggers-only runs it alone as the cheapest signal.
Usage
The usage verb reads Claude Code’s transcripts and counts, per placed skill, how often the model chose it and how often a person named it, over 30 days by default. It makes no model call and writes only a local archive.
Validate
validate <path|name> runs hygiene with the strict schema, offline, and exits 1 on any error. A never-published folder fails it on the managed fields that eval treats as optional.
Verdict
PASS at or above +1/3 candidate-vs-baseline net lift, FAIL at or below -1/3, and NEUTRAL in between. publish asks before publishing bytes whose latest local receipt is FAIL.
Version
An immutable folder skills/<name>/v<N>/ in the team repository, minted by publish as the highest ordinal plus one. Identical bytes reuse the existing version instead of minting a new one.
Write guard
The per-verb rule inside safeWrite for which paths a write may touch: one path out of bounds refuses the whole write. publish may add a version folder but never change one, and only unpublish may remove one.
Full reference on GitHub
- Results and receiptsdocs/evaluating/results-and-receipts.md
- Running an evaldocs/evaluating/running-evals.md
- Test assetsdocs/evaluating/test-assets.md
- How an eval worksdocs/evaluating/overview.md
- Library and Marketplacedocs/concepts/library-and-marketplace.md
- Versions and identitydocs/concepts/versions-and-identity.md
- How it worksdocs/concepts/how-it-works.md
- Install and manage skillsdocs/guides/install-and-manage.md
- Claude Code integrationdocs/guides/claude-code-integration.md
- Hygiene checksdocs/evaluating/hygiene.md
- Which skills actually firedocs/evaluating/usage.md
- Generated evalsdocs/evaluating/generated-evals.md
- Team administrationdocs/guides/team-admin.md
- Join a teamdocs/getting-started/join-a-team.md
- The desktop appdocs/guides/desktop-app.md
- The team repositorydocs/reference/team-repo.md
- Local statedocs/reference/local-state.md
- Frame mode: driving terum-skills from a programdocs/frame-protocol.md