workshop.institute

Troubleshooting

Real failure modes, real causes, real fixes — ordered by how often they bite.

Claude Code (terminal)

Symptom: "ANTHROPIC_API_KEY is not set" but you set it in .env.

Likely cause: the line in .env is commented out (starts with #), or you pasted onto a commented placeholder line without removing the #. tsx ignores commented lines.

Fix: open .env in your editor, check that the ANTHROPIC_API_KEY= line has no leading #, save. Or run lwc env set ANTHROPIC_API_KEY and let the lwc store serve it. See /secrets for the full secret-handling story.

Symptom: "ANTHROPIC_API_KEY is not set" everywhere — no .env, no lwc env get.

Likely cause: you skipped the lwc setup hidden prompt and never set the key any other way.

Fix: run lwc env set ANTHROPIC_API_KEY in your terminal. Hidden prompt; paste the key; it's stored at ~/.lwc/env.json with chmod 600.

Symptom: verify returns 401 from Anthropic.

Likely cause: the key value itself is wrong — a typo, a revoked key, or a partial copy. Or you pasted onto a .env placeholder line where some characters survived from the template.

Fix: confirm the key's shape with jq -r .ANTHROPIC_API_KEY ~/.lwc/env.json | wc -c — should be about 108 characters. Re-set if anything looks off.

Verify: hit the API directly.

curl -H "x-api-key: $(lwc env get ANTHROPIC_API_KEY)" \
  https://api.anthropic.com/v1/messages \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-haiku-4-5","max_tokens":4,"messages":[{"role":"user","content":"hi"}]}'

A 200 confirms the key is valid; 401 means the key is bad.

Symptom: Claude Code's first session after install doesn't see the workshop plugin.

It greets you generically and never fires the setup-workshop skill.

Likely cause: the plugin marketplace clone is async on first launch. The first session shipped before the clone completed.

Fix: exit Claude Code (Ctrl-C twice or /exit) and relaunch. The second session has the marketplace ready. The install.sh script pre-clones the marketplace to mitigate this, but per-version cache extraction is still lazy, so a relaunch may be needed.

Symptom: lwc: command not found.

Likely cause: npm install -g @learning-with-court/cli succeeded but the global npm bin directory isn't on your PATH.

Fix: run npm config get prefix to find your npm prefix. Add <prefix>/bin to your shell PATH. Or rerun curl -fsSL https://workshop.institute/install.sh | bash — the installer detects this and prints a PATH export hint.

Symptom: pnpm install warns about ignored build scripts.

Typically better-sqlite3, esbuild, or lefthook.

Likely cause: pnpm 10 changed the default for transitive deps' install scripts. Workshop repos ship an onlyBuiltDependencies allowlist; if you're seeing this, your local clone is older than 2026-05-11.

Fix: lwc update <workshop-id> to pull the latest workshop content, then rerun pnpm install.

Symptom: setup-workshop picks a workshop without asking.

You said something generic like "I want to start a workshop" and Claude jumped straight into one instead of presenting the catalog.

Likely cause: stale plugin cache from a pre-fix version.

Fix: exit Claude Code, then refresh:

lwc auth logout
rm -rf ~/.claude/plugins/cache/learning-with-court
curl -fsSL https://workshop.institute/install.sh | bash

Relaunch Claude Code.

Cowork (claude.ai, Desktop, mobile)

Symptom: adding the marketplace fails with a generic "sync failed".

Likely cause: the UI surfaces a generic message regardless of the real error. The actual reason is logged locally.

Fix: open the log to see the real error — ~/Library/Logs/Claude/claude.ai-web.log on macOS. The most common culprit is a plugin name that doesn't match [a-z][a-z0-9-]* (lowercase letters, digits, hyphens). If you typed the marketplace as anything other than learning-with-court/lwc, re-check the spelling.

Symptom: the connector won't connect, or sign-in loops.

Likely cause: a stale connection from an earlier attempt, or you connected before the plugin finished installing.

Fix: disconnect the connector, confirm the plugin shows as installed, then connect again and sign in. Order matters — install the plugin first, connect second. The full sequence with screenshots is on the Add to Claude page.

Symptom: Claude asks "which workshop?" instead of starting one.

Likely cause: a new chat doesn't carry workshop context. Until you pick one, the tools don't know which workshop you mean.

Fix: say "I want to start a workshop" and let it list the catalog, or name the workshop directly ("start the skill-authoring workshop"). Once one is active, the rest of the session stays on it.

If you hit something not on this list

File an issue at github.com/learning-with-court/<workshop-id> and paste the verbatim error message plus the output of lwc --version and lwc list. We'd rather get a noisy "is this a bug?" issue than have you give up — most of the entries on this page started as one of those.

Sign in or get started

Enter your email — we'll send you a 6-digit code. New here? An account is created automatically.