| name | lab-setup |
| description | Use when the user wants to install the tools, skills, and software recommended for a specific lab meeting — the lesson's toolkit. Triggers on "set up tools for meeting 1", "install lesson toolkit", "what do I need installed", "установи инструменты урока", "поставь скиллы занятия", "что нужно установить к занятию". Fetches the cohort curriculum from agency-lab.glebkalinin.com, reads the meeting's toolkit list, checks what is already installed, installs the missing pieces (globally by default), and records them in the lab vault. |
Lab Setup
Installs the toolkit recommended for a lab meeting: Claude Code skills, plugins, and supporting software.
Language
Default: English. Switch to Russian if the user writes in Russian.
Inputs
1. Curriculum manifest
Same source, cohort resolution, caching, and failure rules as lab-homework:
https://agency-lab.glebkalinin.com/api/curriculum/<cohort>.json
- Cohort slug from
<vault>/.config.md under cohort:. If missing, ask via AskUserQuestion — options: goal-driven-design-ru, goal-driven-design-en, claude-code-lab-05, claude-code-lab-04.
- Cache in
<vault>/.cache/curriculum-<cohort>.json (reuse if younger than 24h; "refresh curriculum" / «обнови программу» forces a re-fetch).
- Schema:
schema_version: 2. Each meeting MAY have a toolkit array — see ../lab-homework/references/curriculum-schema.md. A meeting without toolkit simply has nothing to install; say so and stop.
2. Toolkit entries
Each toolkit item:
{
"name": "design-tokens",
"kind": "skill" | "plugin" | "app",
"install": "npx skills add glebis/claude-skills --skill design-tokens -g -y" | null,
"why": "one-line reason",
"optional": false
}
Flow
-
Resolve cohort and meeting. Read .config.md; ask which meeting via AskUserQuestion populated from manifest.meetings[] (default: the latest meeting whose has_content is true).
-
Detect what is already installed. Run these checks, do not guess:
- Skills:
npx -y skills ls -g (fall back to listing ~/.claude/skills/).
- Plugins:
claude plugin list if available, else check ~/.claude/plugins/known_marketplaces.json.
- Apps:
which <binary> / command -v.
Items bundled with this plugin are always already available — never install those. Detect them dynamically: list ${CLAUDE_PLUGIN_ROOT}/skills/ (fall back to the hardcoded set below if the variable is unset). As of v0.4.0 the bundle is the full humane cycle at 0.19.0:
setup, jtbd, prototype, persona-review, respondent-panel, before-after, brandkit, design-tokens, type-specimen, brand-illustrate, layout-rules, ux-writing, nielsen-heuristics, walkthrough, review, using-humane — plus de-ai and the lab-* skills.
Report these as "already available (bundled with lab-coach)" together with their why from the manifest, so the participant knows they are part of the lesson toolkit even though nothing is installed. If a bundled skill is missing from the plugin directory, the plugin is outdated — tell the user to run /plugin update lab-coach@claude-code-lab-coach.
Name collision warning. These skills also ship in the humane plugin, which the curriculum's toolkit entries name directly. If the participant has both installed, the same skill exists twice and a bare /jtbd is ambiguous. When a toolkit entry is satisfied by the bundle, tell them to call it with an explicit prefix — /humane:jtbd for the standalone plugin, /lab-coach:jtbd for this one — and note that the bundle tracks humane releases rather than leading them, so on is what keeps the two identical.
Rules
- Never install anything the user did not select in step 3.
- Never run install commands with
sudo.
- API keys are out of scope: if a
why mentions a required key (e.g. OPENAI_API_KEY), tell the user after installing, do not prompt for the key value.
- If
npx skills is unavailable (no Node), stop and explain that Node.js ≥ 18 is required, with a link to https://nodejs.org.