SuperAPI AI Directory

lab-context

Office & productivity

View repository

Updated 10-16 05:49

About this skill

Lab Context

Maintains the Claude Code Lab participant profile as plain markdown in a local vault.

Language

Default: English. Switch to Russian if the user writes to you in Russian. Never mix languages in generated files — pick one per file based on how the user spoke when creating/updating it.

Where data lives

Default vault: ~/claude-lab-vault/. Override via CLAUDE_LAB_VAULT env var or by asking the user on first setup.

Verify the vault exists before any operation. If missing — propose creating it and confirm the path. The path MUST be a subfolder, never $HOME directly and never the root of an existing git project.

Profile files

Always markdown with YAML frontmatter for machine reading + human text below.

profile.md

---
name: <имя>
role: <роль/должность>
experience_level: beginner | intermediate | advanced
primary_language: <основной язык программирования или "none">
updated: <YYYY-MM-DD>
---

# Профиль

Свободный текст о пользователе: бэкграунд, контекст, особенности.

goals.md

---
updated: <YYYY-MM-DD>
---

# Цели

- [ ] <цель 1> — <почему важно>
- [x] <достигнутая цель> — <дата>

tools-learned.md

---
updated: <YYYY-MM-DD>
---

# Изученные инструменты

## <YYYY-MM-DD> — <тема встречи лабы>
- **<инструмент>** — краткое описание, уровень уверенности (tried/comfortable/confident)

projects.md

---
updated: <YYYY-MM-DD>
---

# Активные проекты

## <Название>
- **Путь:** `<абсолютный путь>`
- **Статус:** active | paused | done
- **Описание:** одно предложение

Operations

Initial setup

Use AskUserQuestion for structured questions — faster and cleaner than a free-form interview. Free text only for fields where choice is impossible (name, project description).

  1. Vault path. Ask in plain text, suggest the default ~/claude-lab-vault/. Confirm it's a subfolder.
  2. Create the directory and four starter files with empty frontmatter.
  3. Structured questions via AskUserQuestion:
    • "Which lab cohort are you in?" (singleSelect): goal-driven-design-ru / goal-driven-design-en / claude-code-lab-05 / claude-code-lab-04 (older cohorts on request)
    • "What's your role?" (singleSelect): developer / designer / product / researcher / founder / other
    • "How often do you use Claude Code?" (singleSelect): just started / occasionally / daily / I build my own skills and MCPs
    • "Primary language or stack?" (singleSelect): Python / TypeScript / Go / Rust / I don't code / other
    • "What do you want to get out of the lab?" (multiSelect): automate routine / build my own product / master MCP and Skills / understand subagents / clean up my workflow / learn to deploy
    • "Do you have an active project where you can apply practice?" (singleSelect): yes, work / yes, personal / no, need a playground
  4. Free text as separate messages: name, one-line project description (if any), project path.
  5. Save cohort to .config.md in the vault root:
    cohort: <selected-cohort-slug>
    curriculum_url: https://agency-lab.glebkalinin.com/api/curriculum/<selected-cohort-slug>.json
    
    This file is read by lab-homework to resolve the curriculum API URL. If .config.md already exists, update only the cohort: and curriculum_url: lines — preserve other fields.
  6. Write everything into the matching files. Keep it under 3 minutes — first-run should be painless.

Update

On "update X" / "add Y" — read the file, preserve existing data, change only what was asked. Update updated: in frontmatter.

Read

"What's in my profile?", "show my goals" — read the file and summarise briefly. Don't dump raw markdown unless asked.

Rules

  • Never overwrite a file wholesale without user confirmation. Use Edit.
  • Wikilinks are encouraged: [[projects/my-app]], [[tools-learned#MCP]] — the user reads this in Obsidian.
  • Dates are always absolute (2026-04-08), never "today".
  • Don't invent fields — only what the user said or confirmed.
  • If the vault is empty and the user asks for homework or a session review — point them to initial setup first.