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.mdundercohort:. If missing, ask viaAskUserQuestion— 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 atoolkitarray — see../lab-homework/references/curriculum-schema.md. A meeting withouttoolkitsimply 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 viaAskUserQuestionpopulated frommanifest.meetings[](default: the latest meeting whosehas_contentis 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 listif available, else check~/.claude/plugins/known_marketplaces.json. - Apps:
which <binary>/command -v. Items bundled with this plugin (de-ai,persona-review,before-after, and thelab-*skills) are always already available — never install those.
- Skills:
- Show the checklist via
AskUserQuestion(multiSelect): one option per MISSING item, label = name, description =why. Pre-explain that required items come first,optional: trueitems are marked "(optional)". Skip the question entirely if nothing is missing — report "all set" and stop. - Install the selected items, one at a time, running each
installcommand verbatim. Defaults:- Skill installs are global — commands in the manifest already carry
-g -y; if one doesn't, append them. install: nullmeans manual — show thewhy(it contains the URL or instruction) and mark the item as "manual step" in the summary.- On failure: show the exact error, do NOT retry more than once, continue with the remaining items.
- Skill installs are global — commands in the manifest already carry
- Verify — re-run the detection from step 2 for the items just installed.
- Record — append installed tools to
<vault>/tools-learned.md(create if missing) as- <name> — <why> (meeting <NN>, <ISO date>). Do not duplicate existing lines. - Summarize — installed / failed / manual / skipped, plus how to invoke each installed skill (
/name).
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
whymentions a required key (e.g.OPENAI_API_KEY), tell the user after installing, do not prompt for the key value. - If
npx skillsis unavailable (no Node), stop and explain that Node.js ≥ 18 is required, with a link to https://nodejs.org.