Resources

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