Get started

Install

One command runs a setup wizard that creates or joins your team. This page covers what you need, what setup asks, and what it writes to your machine.

One command

npx -y terum-skills@latest setup

npx fetches the package on demand, so there is nothing to install first. Setup itself does write to this machine: a team clone, a config file, and any hooks you accept.

To join a team you were invited to, pass its repository:

npx -y terum-skills@latest setup <org>/<repo>

Bare setup cannot join. Choosing “Join an existing team” at the role question tells you to ask the owner for an invitation and writes nothing.

What you need

RequirementWho needs it
gitEveryone. Every team read and write is a git operation on a clone.
Node.js 22.12.0 or laterEveryone. The package declares it; the CLI does not check.
GitHub CLI (gh), logged inCreating a team on GitHub, invite, revoking a member’s access, and installing or updating the app. Joining does not need it.
Claude Code, logged ineval, and the category suggestion publish asks for. Nothing else calls a model.

Platforms

The CLI runs on macOS, Windows, Linux and WSL. The desktop app is for macOS and Windows only. Where there is no app, setup runs the whole wizard in the terminal and everything else works the same.

Install the app through setup or the app verb, not from the GitHub Releases page (see Desktop app).

What setup does

Setup is a wizard. Re-run it any time: it resumes the team this machine is on and offers whatever it did not finish.

  1. The app, on macOS and Windows

    At an interactive terminal, setup installs and opens the app, prints Continuing in the app. and hands the rest of the wizard to it. If that fails, the wizard continues in the terminal. --no-app keeps everything in the terminal.

  2. Create or join

    With no team and no target, setup asks whether to create a team (a private GitHub repository under your account) or join one. It asks rather than guessing, because a wrong “create” leaves a repository you did not want.

  3. GitHub

    Setup checks gh. Creating a team needs it logged in; joining continues without it and has you accept the invitation in a browser.

  4. Your team

    Creating asks for the team name, your identity and the repository name, then offers to invite teammates by GitHub login. Joining accepts the invitation, clones the repository and asks for your handle.

  5. Your existing skills

    Setup offers to add a project folder to your Library, then compares your skill folders with the team’s. An identical folder can be recorded as installed; one with the same name and different bytes can be published as the next version. Nothing is written unless you say yes.

  6. Evals

    For shared skills whose current version has no receipt, setup prints a cost estimate and offers Now, In batches, Overnight (queued for the app), or Skip (the default). Evals run Claude Code on this machine and bill your Claude account.

  7. Hooks and the eight skills

    Setup asks about two Claude Code hooks, both defaulting to No: a session-start hook that syncs team skills, and an edit hook that reminds Claude Code to publish a skill it edited. It always places the eight terum-skills skills in ~/.claude/skills, and in ~/.codex/skills when ~/.codex exists. See Claude Code integration.

--no-projects, --no-existing and --no-evals skip the matching steps.

What it writes

PathWhat it holds
~/.terum/skills/config.jsonYour team binding, identity, placement ledger and registered projects
~/.terum/skills/teams/<team>/The team clone, with a push guard
~/.terum/skills/run/Sync stamps, the eval queue, the app’s launch record
~/.claude/skills/<name>/The eight terum-skills skills
~/.claude/settings.jsonEntries for the hooks you accept, backed up before the first write

On Windows, ~ is %USERPROFILE%. The full inventory is in the local state reference.

Check the result

npx -y terum-skills@latest status

status is an offline read: the CLI version, your handle, the repository, the clone’s state (with the fix when it is missing or incomplete), the members, the number of shared skills, and how stale the clone is.

Update and uninstall

The npx -y terum-skills@latest form runs the latest release every time. The session hook and the placed skills stay pinned to the copy that installed them, so re-run setup to move them forward. update prints the command that updates your copy and never runs a package manager itself. The app updates itself.

npx -y terum-skills@latest uninstall

uninstall lists everything it will touch and asks once. It removes the team binding, placed skills, clone, hooks and the eight skills, and keeps your eval runs, backups and quarantine. An edited placed folder or a clone with unpushed work goes to quarantine instead of being deleted. Your membership in the team repository is unchanged. On macOS it deletes the app; on Windows, remove the app from Settings ▸ Apps. The npm package itself is never removed.

Full reference on GitHub