
skill-studio
Interview-driven automation design tool. This skill should be used when the user wants to design a new skill, agent, automation, shortcut, or any other automatable workflow. Runs a coverage-driven JTBD interview (text or voice), then exports a one-page markdown spec plus an SVG design map. Can also analyze Claude Code sessions (current or by ID) to extract workflows, subagent patterns, and skill usage, then propose new skills based on observed patterns. Use this skill whenever the user mentions analyzing a session, extracting workflows, proposing skills from past work, reviewing what tools or agents were used, or turning a session into a skill. Triggers on "analyze this session", "what skills could I build from this", "propose skills from session", "what workflows did I use", "what did I do in this session", "extract patterns", "turn this into a skill".
- Installs
- 169
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/glebis/claude-skills --skill skill-studio- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads skill-studio automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Skill Studio
Purpose
Conduct a structured JTBD interview that captures what to build, for whom, and why — then emit a one-page design.md + design.svg spec. Sits between "should I automate this?" (automation-advisor) and "how do I package this as a skill?" (skill-creator).
Architecture
This skill wraps an external CLI tool (skill-studio) installed via pip. The CLI handles session state, coverage tracking, and export. The skill orchestrates the CLI — it does not bundle scripts directly.
When to use
Trigger on any of: "help me design...", "build a skill for...", "design an automation for...", "I want a bot/agent/workflow that...", "scope a new shortcut". Also trigger when the user describes a recurring pain and asks how to automate it.
Also trigger for session analysis: "analyze this session", "what skills could I build from this", "propose skills from session", "what workflows did I use", "what did I do in this session", "extract patterns from my work", "turn this session into a skill", "what could be automated from this". If the user references a session ID or asks about subagent activity, this skill handles it.
Prerequisites
skill-studioCLI on PATH (pip install -e .inside the skill directory, orskill-studio initfor guided setup)- Python 3.11+
- Text mode needs no API key — the interview runs natively inside Claude Code
- Voice mode (
--voice) needsDAILY_API_KEY,GROQ_API_KEY,DEEPGRAM_API_KEY, and an LLM provider key (OPENROUTER_API_KEYby default). If any key is missing, suggest text mode instead.
To verify the CLI is available, run skill-studio --help. If the command is not found, install it from the skill's base directory: pip install -e <skill-studio-base-dir>.
Interview protocol (text mode)
Follow these steps in order.
Step 0 — (Optional) Seed from a prior session
If the user provides a prior session (Claude Code transcript, another skill-studio session, or arbitrary transcript path), seed the interview instead of starting blank:
# Analyze the current running session
skill-studio propose-from-session --current
# Analyze a specific session by ID (prefix match works)
skill-studio propose-from-session <session_id>
# Analyze a session from a specific project
skill-studio propose-from-session <session_id> --project <project-dir-name>
# Analyze an arbitrary transcript file
skill-studio propose-from-session --path <file>
# Inspect the raw extracted bundle without an LLM call
skill-studio propose-from-session --current --bundle-only
This runs in two stages:
- Deterministic ingest (no LLM) — extracts models tried, cost events, prompt changes, pain snippets, subagent calls (Agent tool with descriptions, types, prompt snippets), skill invocations, tool sequences (ordered list of all tool calls), tool frequency, and workflow patterns (repeated multi-tool sequences). A 50k-token transcript compresses to a compact structured JSON bundle.
- Single LLM call — over that compact bundle only, proposes a partial DesignJSON patch with a
rationalemap citing which signals justified each field, plus skill proposals — potential new skills derived from observed workflow patterns and agent orchestration.
The bundle includes these structured signals:
agents— subagent calls withdescription,subagent_type, andprompt_snippetskills— skill invocations observed during the sessiontool_sequence— ordered list of all tool calls with descriptionstool_frequency— how often each tool was usedworkflow_patterns— repeated tool sequences (e.g. "Read → Edit → Bash" appearing 3× suggests a test-fix cycle)
The proposal is NOT applied automatically. Present it to the user (with the rationale and any skill proposals) and ask for approval. Offer: approve as-is, edit inline, discard and start fresh, approve partial (keep some fields, re-interview others).
If the proposal includes skill_proposals, present them separately and ask if the user wants to proceed to /skill-creator with any of them.
propose-from-session does not create a session. After approval, run new-session (Step 1) to create one, then pipe the approved patch to apply-patch, and continue the interview loop from the next uncovered target.
Browsing Claude Code sessions
To help the user pick a session to analyze:
# List recent sessions (most recent first, all projects)
skill-studio list-sessions
# Filter to a specific project
skill-studio list-sessions --project <project-dir-name>
# Show more results
skill-studio list-sessions --limit 50
Output shows session ID prefix, age, size, and title.
Step 1 — Start the session
Presets: ai-agent (default), life-automation, knowledge-work, custom.
Depth: sprint (0.60, ~5–7 questions), standard (0.80, ~15–20 questions, default), deep (0.92, ~25–35 questions).
Styles (shape how questions are phrased):
scenario-first(default) — "Walk me through a specific time when..."socratic— "Why does that matter? What would happen if...?"metaphor-first— "If this automation were a [thing], what would it be?"form— One direct question per field, no preamble.
Run:
skill-studio new-session --preset <preset> --depth <depth> --style <style>
Output:
session_id: <uuid>
opening: <question text>
Store the session_id. Present the opening question to the user as a direct text message.
Step 2 — Interview loop
For every user answer:
a. Extract a JSON patch. Emit a JSON object containing only the DesignJSON fields the answer addresses. Use only fields from the schema below — never hallucinate fields or values. If nothing schema-relevant was said, emit {}.
Example patch:
{"jtbd.situation": "When I finish a coaching call and need to write up notes", "problem.what_hurts": "Manual note-taking takes 20 minutes and I lose details"}
Example with list fields:
{"needs.functional": ["transcribe audio", "extract action items"], "guardrails": ["never send notes without review"]}
Example with object-list field (scenarios):
{"scenarios": [{"title": "Post-coaching rush", "vignette": "Call ends at 14:00, next meeting at 14:15 — I scribble three bullet points and lose the rest by evening."}]}
DesignJSON fields:
| Field | Type | Notes |
|---|---|---|
hook | str | One-sentence pitch of the automation |
problem.what_hurts | str | Specific pain |
problem.cost_today | str | What the pain costs right now |
needs.functional | list[str] | What it must do |
needs.emotional | list[str] | How the user wants to feel |
needs.social | list[str] | Relational / status needs |
jtbd.situation | str | When this happens |
jtbd.motivation | str | What the user wants |
jtbd.outcome | str | So they can... |
before_after.before_external | str | Visible state before |
before_after.before_internal | str | Felt state before |
before_after.after_external | str | Visible state after |
before_after.after_internal | str | Felt state after |
scenarios | list[{title, vignette}] | Concrete day-in-the-life stories |
trigger.type | manual / scheduled / event | |
trigger.detail | str | e.g. "7:45am weekdays" |
inputs | list[str] | Data / services consumed |
capabilities | list[str] | What it does |
outputs | list[str] | What it produces |
guardrails | list[str] | Safety rails; negative-space rules |
cta | str | Next action at end of design |
concept_imagery.metaphor | str | Visual / verbal handle |
b. Apply the patch.
echo '<patch_json>' | skill-studio apply-patch <session_id>
Output:
coverage: 0.42
next_target: jtbd.situation
c. Check stop conditions. End the loop if either:
coverage >= threshold(sprint=0.60, standard=0.80, deep=0.92)- User says "done", "wrap up", or "stop"
d. Ask the next question. Target the next_target field, in the active style. Never re-ask a field already past 0.5 coverage. Present the question as direct text to the user.
Step 3 — Export
skill-studio done <session_id>
Prints the paths to design.md and design.svg. Present both paths to the user.
Voice mode
For voice interviews, skip the manual loop and delegate to the built-in pipeline:
skill-studio new --voice --preset <preset> --depth <depth>
This spins up a Daily room (auto-opens in the browser), runs Groq Whisper STT -> interview loop -> Deepgram TTS, and auto-exports on session end.
If voice mode fails due to missing API keys, fall back to text mode and inform the user. To configure keys, run skill-studio init.
Other commands
skill-studio list— list all skill-studio interview sessionsskill-studio list-sessions— list Claude Code sessions (most recent first)skill-studio list-sessions --project <name>— filter by projectskill-studio export <id> md-svg— regeneratedesign.md+design.svgskill-studio coverage <id>— per-field confidence JSONskill-studio next-target <id>— ask-this-next hintskill-studio init— full first-run wizard (prereq checks + keys + paths)skill-studio setup— narrower key-rotation flow (sops-only)
Sessions
Each interview writes to $SKILL_STUDIO_HOME/sessions/<uuid>/ (default: ~/.skill-studio/sessions/<uuid>/):
design.json— canonical schema (single source of truth)transcript.md— full Q&A logdesign.md,design.svg— exported artifacts
Troubleshooting
skill-studio: command not found— Runpip install -e <skill-studio-base-dir>and retry.apply-patchreturns an error — Verify the JSON patch is valid (keys must match schema fields above). Runskill-studio coverage <session_id>to inspect current state.- Session not found — Always run
new-sessionbefore the firstapply-patch. There is no implicit session creation. Runskill-studio listto check existing sessions. - Voice mode key errors — Run
skill-studio initto configure missing keys, or fall back to text mode.
Notes
- The interview loop runs entirely inside Claude Code for text mode. No Anthropic API key is required.
- Voice mode LLM provider is swappable via
LLM_PROVIDER=anthropic(default isopenrouter).
FAQ
What does the skill-studio skill do?
Interview-driven automation design tool. This skill should be used when the user wants to design a new skill, agent, automation, shortcut, or any other automatable workflow. Runs a coverage-driven JTBD interview (text or voice), then exports a one-page markdown spec plus an SVG design map. Can also analyze Claude Code sessions (current or by ID) to extract workflows, subagent patterns, and skill usage, then propose new skills based on observed patterns. Use this skill whenever the user mentions analyzing a session, extracting workflows, proposing skills from past work, reviewing what tools or agents were used, or turning a session into a skill. Triggers on "analyze this session", "what skills could I build from this", "propose skills from session", "what workflows did I use", "what did I do in this session", "extract patterns", "turn this into a skill".
How do I install skill-studio?
Run npx skills add https://github.com/glebis/claude-skills --skill skill-studio in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/skill-studio/ (personal) or .claude/skills/skill-studio/ (project).
Which AI agents can use skill-studio?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is skill-studio safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains skill-studio?
It is published by glebis in glebis/claude-skills. It has 169 recorded installs.
More from glebis/claude-skills
google-image-search
glebis/claude-skills
Search and download images via Google Custom Search API with LLM-powered selection. This skill should be used when finding images for articles, presentations, research documents, or enriching Obsidian notes with relevant visuals. Supports simple queries, batch processing from JSON config, automatic config generation from terms, and full note enrichment with automatic image insertion below headings.
pdf-generation
glebis/claude-skills
Professional PDF generation from markdown using Pandoc with Eisvogel template and EB Garamond fonts. Use when converting markdown to PDF, creating white papers, research documents, marketing materials, or technical documentation. Supports both English and Russian documents with professional typography and color-coded themes. Mobile-optimized layout (6x9) by default for Telegram bot context, desktop/print layout (A4) for other contexts.
health-data
glebis/claude-skills
Query Apple Health SQLite database for vitals, activity, sleep, and workouts. Supports Markdown, JSON, and FHIR R4 output formats. This skill should be used when analyzing health metrics, generating health reports, answering questions about fitness or sleep patterns, or exporting health data in standard formats.
firecrawl-research
glebis/claude-skills
This skill should be used when the user requests to research topics using FireCrawl, enrich notes with web sources, search and scrape information, or write scientific/academic papers. It extracts research topics from markdown files, creates research documents with scraped sources, generates BibTeX bibliographies from research results, and provides Pandoc/MyST templates for academic writing with citation management.
deep-research
glebis/claude-skills
This skill should be used when conducting comprehensive research on any topic using the OpenAI Deep Research API. It automates prompt enhancement through interactive clarifying questions, saves research parameters, and executes deep research with web search capabilities. Use when the user asks for in-depth analysis, investigation, research summaries, or topic exploration.
presentation-generator
glebis/claude-skills
Generate interactive HTML presentations with neobrutalism styling, ASCII art decorations, and Agency brand colors. Outputs HTML (interactive with navigation), PNG (individual slides via Playwright), and PDF. References brand-agency skill for colors and typography. Use when creating presentations, slide decks, pitch materials, or visual summaries.
Popular productivity & automation skills
agent-browser
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
lark-doc
open.feishu.cn
飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由;/page/ 是妙搭应用,非飞书云文档。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-drive;随正文读取评论使用 docs +fetch。表格或 Base 内部数据操作不在本 skill。
lark-base
open.feishu.cn
飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、/base/ 或 /app/ 链接时使用。BaseApp 不走 lark-apps;文件导入/导出转 lark-drive,认证/授权转 lark-shared。
lark-drive
open.feishu.cn
飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,或导入 Word/Markdown/Excel/CSV/PPTX/.base 为 docx/sheet/bitable/slides 时使用;doubao.com 云空间 URL/token 也按资源路径和 token 路由,不回退 WebFetch。不负责:文档内容编辑(走 lark-doc)、表格/Base 表内数据操作(走 lark-sheets/lark-base)、知识空间节点/成员管理(走 lark-wiki)、原生 Markdown 文件读写/patch/diff(走 lark-markdown)。
lark-shared
open.feishu.cn
Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing scopes, revoking authorization, or handling notice JSON.
lark-im
open.feishu.cn
飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据、处理卡片回调时使用。