# Troubleshooting

The lines terum-skills prints when something stops you, what each one means, and the fix. Search the page for a distinctive part of the line you see.

In the quoted lines, a word in angle brackets stands for the value the CLI prints there, and `…` stands for detail it appends, usually git's own message.

::: tip
`status` is an offline read of this machine's team. It shows whether the clone is intact and prints the command that restores it when it is not.
:::

## Setup and GitHub

### The GitHub CLI is missing or logged out

```text
GitHub authentication is required to create a team: run `gh auth login` and retry, or create the team against an existing empty remote with `npx -y terum-skills@latest team create <name> --remote <url>`.
```

Creating a team on GitHub, `invite`, `team remove` and downloading the app all run through the GitHub CLI. Install `gh` if it is missing, run `gh auth login`, and try again. Joining, publishing, installing and evals do not need it.

### A command needs a terminal

```text
Cannot ask "<question>": this command needs an interactive terminal (stdin is not a TTY).
```

Nothing could answer the command's question: Claude Code's Bash tool and scripts have no terminal. Run it yourself in a terminal. A command can write before its first question, so read what it printed first.

### This machine is already on a team

```text
One team per machine: This machine is on team <name> (<remote>). Terum Skills keeps one team per machine: run `npx -y terum-skills@latest team leave <name>` first, then re-run `<command>`.
```

A machine holds one team. Leaving is local, and your membership stays. If your team moved to a new repository, use `team move` instead (see Joining).

```sh
npx -y terum-skills@latest team leave <name>
```

### An invitation is refused

```text
Could not invite @<login> (GitHub status 403). …
```

Adding a collaborator needs GitHub repository admin permission; ask an admin. When the line adds `GitHub caps invitations at 50 per repository per day.`, you hit GitHub's daily cap, and waiting is the only fix. See [Team admin](https://www.terum.ai/docs/team-admin).

## Joining

### The clone fails with "Repository not found"

```text
Could not clone <remote>: …
Git could not access <remote>.
"Repository not found" can mean:
```

The URL is wrong, the invitation is not accepted yet, or git's HTTPS credentials lack access even though `gh` is logged in. Accept the invitation at `https://github.com/<org>/<repo>/invitations`. If your `gh` account has access, let it supply git's credentials, which also fixes `Git has no usable HTTPS credentials for github.com` (this changes git's global settings for github.com):

```sh
gh auth setup-git --hostname github.com
```

### No pending invitation

```text
No pending GitHub invitation to <org>/<repo> for your account. Your account cannot read that repository either: if the next step cannot reach it, the person who invited you has not added you on GitHub yet; ask them, then run this again.
```

GitHub has no invitation to that repository for the account `gh` uses. Check that `gh auth status` shows the login the admin invited.

### Your handle is taken

```text
Handle <handle> is already in use by an active member.
```

Join asks again, up to three attempts, so pick another. A second machine of yours reclaims your entry when the GitHub login or email matches. See [Join a team](https://www.terum.ai/docs/join-a-team).

### Your team's repository no longer exists

```text
Team <team>'s repository <url> no longer exists on GitHub.
```

The repository was deleted or recreated elsewhere. `setup` with the new repository, and `sync` at a terminal, both offer to move this machine. To move it yourself:

```sh
npx -y terum-skills@latest team move <org>/<repo>
```

## Publishing

### The skill is not in your Library

```text
No local skill folder named <name> in your library. Inspect it with `npx -y terum-skills@latest ls --local`, or add the project holding it with `npx -y terum-skills@latest project add`.
```

`publish` and `eval` read only your Library: Global and the projects you registered. Your working directory does not count until you add it:

```sh
npx -y terum-skills@latest project add <path>
```

### Hygiene refuses the folder

```text
HYG<n> <path>[:<line>]: <message>
```

A hygiene gate failed and nothing was published; `eval` prints the same findings under `Hygiene failed for <name>:`. `skill fix <path>` repairs the mechanical ones and lists the rest. `validate` requires the four fields publish writes, so a folder you have never published fails on those, as expected. See [Hygiene checks](https://www.terum.ai/docs/hygiene).

### Another command holds the write lock

```text
Another terum-skills operation holds the write lock on <team>; retry when it finishes.
```

Another terum-skills command on this machine is using the team clone. Wait for it and retry. If the line says the lock is stamped in this machine's future, it is a clock problem: once no terum-skills command is running, remove the directory it names.

### The name belongs to another skill

```text
<name> is no longer in the repository as <id>; run sync and retry.
```

The team's newest version of that name carries a different skill id: someone published that name meanwhile, or two people have different skills with the same folder name. Run `sync`, check `ls`, and `skill rename` your folder if it is a different skill. See [Versions and identity](https://www.terum.ai/docs/versions).

## Installing and managing

### Install refuses a version

```text
Installing a previous version is not supported yet; install installs the latest version.
```

Install always takes the latest version, so drop the `@<version>`. The pinning hint in setup's closing cheat sheet is out of date.

### A folder with that name is already there

```text
You already have a skill named <name>.
Your copy is kept at <path>.
Replace it with Version <N>? [y/N]
```

Yes moves your folder to `old-skills` beside the skills root and places the team's version; no changes nothing. If your folder already holds a published version's exact bytes, `install --adopt <path>` records it as installed without copying.

### Install asks you to approve tools

```text
Approve these tools for <name>? [y/N]
```

Install asks once per skill and set of `allowed-tools` grants, and remembers the answer. Scripts and Claude Code's Bash tool cannot answer, so run it in a terminal or from the app. With projects registered, a non-interactive install also needs `--into global` or `--into <project root>`. See [Install and manage](https://www.terum.ai/docs/install-and-manage).

## Evals

### Claude Code is not ready

```text
`claude` is not runnable (…) — is Claude Code installed and on PATH?
preflight agent task failed — check that `claude` is logged in and the model '<model>' is available: …
```

Before any paid work, `eval` runs `claude --version` and a one-turn task. Install Claude Code, or run `claude` in a terminal and log in. On Windows the first line can name an npm batch shim the CLI cannot launch; Claude Code's native Windows installer avoids it.

### Nothing can answer the heavy question

```text
Cannot ask "Use the one-session heavy evaluation mode?": this command needs an interactive terminal (stdin is not a TTY).
```

The skill looks like it calls subagents, so `eval` asks about heavy mode. From a script or an agent session, pass `--heavy` or `--no-heavy`. The answer is recorded and does not change how the run executes.

### Generation fails

```text
Could not generate execution cases: <reason>. Retry the command or pass --no-gen.
The generated eval assets for <name> failed hygiene, so nothing was written:
```

Both are defects in generation, not in your skill, and nothing was written to your folder: run the eval again. The exception is the reason `SKILL.md metadata.eval.shape must be 'suite' or 'cases'`, which comes from your frontmatter; fix the value or remove the key. See [Generated evals](https://www.terum.ai/docs/generated-evals).

### The verdict is partial

```text
verdict: NEUTRAL [partial — 4/6 scored]
skipped (environment): hybrid-review — missing codex
```

Some rows never scored: a case needed a tool this machine lacks, its `setup` failed, or an arm died. A hole never counts as a zero. Install the tool or fix the case, then run again for a complete receipt. See [Results and receipts](https://www.terum.ai/docs/results).

### The run was refused for contamination

```text
arm '<arm>' resolved skills [<skills>] — '<name>' leaked into an arm that did not stage it; refusing the run (§7.3)
```

The engine checks which skills each arm's session loaded. The skill under test must load only where it was staged, or the comparison measures nothing, so the whole eval is refused, after the arms ran and were billed. Each arm's transcript in the run tree shows what it loaded.

### The queued bytes changed

```text
The queued bytes of <skill> are no longer what is on disk; dequeue it and queue it again.
```

A queued eval is tied to the folder's bytes when it was queued, and the folder has changed since:

```sh
npx -y terum-skills@latest eval --dequeue <skill>
npx -y terum-skills@latest eval <skill> --window overnight
```

## Sync and the app

### A team was not refreshed

```text
<team>: not refreshed (unreachable) — remote: Repository not found.
```

`sync` names the state and carries on with your other teams.

- `unreachable`: git could not reach the remote. The advice that follows matches the clone failure under Joining.
- `busy`: another command held the clone's write lock. Run `sync` again.
- `no-clone`: the clone is missing or incomplete, and `sync` never re-clones. `status` prints the `team join` command that restores it.

### The app cannot find terum-skills

```text
The desktop app could not find where terum-skills is installed. Run `terum-skills app` from a terminal once; it records the location and opens this app.
```

The app runs the CLI that the `app` command recorded, so opened before `app` ever ran, it has nothing to run. Run it once. Running it again after you install or move Claude Code records the new `PATH` the app's evals use.

```sh
npx -y terum-skills@latest app
```

### There is no app on Linux or WSL

```text
There is no Linux desktop app yet; everything works from the terminal.
```

Nothing failed: the app is built for macOS and Windows, and every command works from the terminal. Inside WSL, install terum-skills on the Windows side and run `app` there. See [Desktop app](https://www.terum.ai/docs/desktop-app).
