From learning-with-court
Use this when the user wants to start a learning-with-court workshop they don't have set up yet — phrases like "I'd like to learn how to build an MCP server", "I want to learn MCP", "teach me MCP", "help me get started", "set up a workshop", "start a workshop", "let's start the mcp workshop", "begin the lwc workshop", or any "I'd like to learn <topic>" / "I want to learn how to <build X>" phrasing where <topic> matches an available workshop. Drives the clone of the workshop's project codebase via the @learning-with-court/cli into a folder under the user's working directory (or `~/learning-with-court/` by default) and tells the user how to start a fresh session there. Do NOT use this if the user is already inside a workshop project (look for a .mcp.json with an `lwc-*` server entry — they're already set up).
npx claudepluginhub learning-with-court/learning-with-court --plugin learning-with-courtThis skill uses the workspace's default tool permissions.
You're setting up a learning-with-court workshop for the user.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Explores codebases via GitNexus: discover repos, query execution flows, trace processes, inspect symbol callers/callees, and review architecture.
Share bugs, ideas, or general feedback.
You're setting up a learning-with-court workshop for the user.
learning-with-court hosts technical workshops as deployed MCP servers. The
@learning-with-court/cli (npm) is the universal entry point — it does
auth, clone, refresh, registry, and proxies MCP for in-workshop sessions.
This skill is a thin wrapper that drives the CLI's setup subcommand.
By convention, workshops install to <parent>/<workshop-id>/. The default
parent is ~/learning-with-court/, but if the user is in a sensible working
directory (e.g. they ran mkdir ~/learning-with-court && cd ~/learning-with-court
first), use that as the parent instead. The CLI tracks installs in
~/.lwc/workshops.json regardless of where they live.
Claude Code's working directory is set at process start and can't change
mid-session. So this skill ends at "the project is cloned and the user
has a clear cd && claude to run." That handoff is unavoidable.
When more workshops land, this list grows.
If the user named one, use it. Today only mcp-workshop exists, so for
generic phrasing default to it without asking. Briefly tell them which
one you're setting up.
Run silently; surface only failures:
node --version — must be v20+. If older, recommend nvm.
git --version — must be installed.
command -v lwc — must succeed. The lwc binary (the
@learning-with-court/cli npm package, installed globally) is the
entry point for all workshop operations. If it's missing, do NOT try
to fall back to npx -y — that path is blocked by Claude Code's
auto-mode classifier and produces a worse experience for everyone.
Surface this exact message and stop:
It looks like
lwcis not installed. The learning-with-court CLI needs to be installed once before the plugin can set up workshops. Run this in your terminal, then come back and try again:macOS / Linux / WSL:
curl -fsSL https://workshop.institute/install.sh | bashWindows (PowerShell):
irm https://workshop.institute/install.ps1 | iex
That's it. No gh CLI, no GitHub account, no API keys. First-run
sign-in happens via browser when the CLI runs (or during the install
script if the user opted into the auth step).
Probe the user's environment to infer a default workshop pace. The
result becomes the pace: field in .claude/lwc-workshop.local.md,
read by the workshop's SessionStart hook to set tone for every lesson.
Run each probe as its OWN Bash call, not as one combined command. Claude Code's auto-mode classifier blocks multi-tool environment- introspection batches (it reads them as broad system reads). One probe per Bash call evaluates each on its own merits and passes cleanly. Prefer compact single-purpose commands; surface only failures.
Probes (each its own Bash call):
| Signal | Bash | True if |
|---|---|---|
gh | gh auth status | exit 0 (only run if gh exists) |
pnpm | pnpm --version | exit 0 |
node20+ | already known from step 2 | per step 2 |
aws_profile | aws configure list-profiles | stdout has ≥1 line |
shell_dotfiles | test -s ~/.zshrc || test -s ~/.bashrc | exit 0 |
gitconfig | git config --global user.name | stdout non-empty |
Inference (count of true of 6):
slow — explain everything before doing it; pause at every stepbalanced — explain new concepts, move through familiar materialquick — minimal hand-holding; you driveIf any individual probe is blocked or errors, mark its signal as
unknown and continue. Default to balanced if ≥3 signals are unknown.
Before persisting, show the user what you inferred and let them
override. Render in a single > quote block:
Based on your environment, I'd suggest
<inferred-pace>pacing (<short rationale, e.g. "you have most of the dev tools we look for"). Three options:
- slow — explain concepts before mechanics, pause for "got it" between steps
- balanced — explain new concepts, move through familiar material
- quick — minimal hand-holding; focus on the interesting bits
Default
<inferred-pace>. Want a different pace, or stick with the default?
Wait for the user's response. Accept any of:
<empty> / yes / ok / sure → use the defaultslow / balanced / quick → use thatPersist whatever was chosen, even if it differs from the inference.
Resolve the install destination:
pwd on POSIX; $PWD works in PowerShell too).
Resolve ~ to the actual home directory.$HOME itself,
not /, not ~/Desktop, not ~/Downloads, and is writable —
use <CWD>/<workshop-id>/ as the destination.~/learning-with-court/<workshop-id>/.Tell the user exactly where it's going in one line, e.g.:
"Setting up
mcp-workshopat<resolved-dest>. First run opens a browser for a one-time sign-in."
Then run (always pass --dir so the destination is explicit and the CLI
output matches what you told the user):
lwc setup <workshop-id> --dir <resolved-dest>
Use the bare lwc binary, never npx -y @learning-with-court/cli@latest.
The npx path is blocked by Claude Code's auto-mode classifier; the bare
binary path is what step 2's prereq check guarantees is on PATH.
The CLI auto-creates parent directories. If the user has expressed a
different preference (e.g., they explicitly said ~/Projects/...), honor
that in --dir.
If the CLI errors:
lwc remove <id> first or pick a different --dir.After the CLI finishes, use the destination you resolved in step 3 (it's
also printed verbatim in the CLI's Done. Open the workshop: line, and
recorded in ~/.lwc/workshops.json). Then write
<install-path>/.claude/lwc-workshop.local.md with:
---
pace: balanced
inferred_at: 2026-05-09T04:21:26Z
signals:
gh: true
pnpm: true
node20+: true
aws_profile: false
shell_dotfiles: true
gitconfig: false
---
# learning-with-court workshop — local config
Written by setup-workshop based on a probe of your environment. Edit
`pace:` to override (`slow`, `balanced`, or `quick`). Restart the
workshop session for the change to take effect.
Use the user's chosen pace from step 2c (which may be the inferred default
or an override). Get the timestamp from date -u +%Y-%m-%dT%H:%M:%SZ.
Auto-detect OS via uname -s:
Darwin / Linux / MINGW/MSYS/CYGWIN → bash/zsh form (&&);)Print (substitute <install-path> with the actual resolved destination —
the same one the CLI printed and that's stored in
~/.lwc/workshops.json):
✅
mcp-workshopinstalled at<install-path>. Pace set to<pace>— the workshop will adapt accordingly. To change later, edit<install-path>/.claude/lwc-workshop.local.mdand setpace:toslow,balanced, orquick; restart the workshop session for it to take effect.To start the workshop, open a new terminal and run:
macOS / Linux / WSL (bash/zsh):
cd <install-path> && claudeWindows (PowerShell):
cd <install-path-with-backslashes>; claudeYou can exit this session first with
/exitor Cmd-Q.When the new session opens, type
helloto begin. The workshop will greet you and start the first lesson.
If the user asks "what else can I do?":
lwc list — show installed workshopslwc update [<id>] — pull updateslwc remove <id> [--delete-files] — uninstalllwc auth status — confirm signed inAfter step 5, you're done. The workshop runs from inside the cloned dir. If the user pushes, briefly explain why a fresh session is needed.
Friendly, direct, brief. The goal is "set up in 30 seconds and out of your hair." If anything goes wrong, be specific about what to do next.
@learning-with-court/cli) is fully cross-platform — pure
Node, no shell quirks.cd && claude handoff differs per OS; the CLI itself
doesn't care.Older clones (pre-v0.4.0) have a level: field instead of pace: in
.claude/lwc-workshop.local.md. The workshop's SessionStart hook reads
pace: first and falls back to level: if pace: is missing,
translating beginner→slow, intermediate→balanced,
expert→quick. Existing clones keep working until the user re-runs
setup or hand-edits the file. New clones written by this version always
use pace:.