Claude-Skill-Definer
April 23, 2026 · View on GitHub
Workspace for streamlining the creation of Claude Code skills via multimodal process definition.
Drop a voice note, screen recording, screenshots, or a scribbled text spec into inbox/, and agents will extract the process, normalize it into a spec, author a SKILL.md, and install it to a target plugin, repo, or the user-level ~/.claude/skills/ path.
Why a workspace (not a plugin)
Skill authoring is stateful and iterative — raw captures land in inbox/, get normalized in specs/, staged in skills-staged/, then installed. Workspaces are designed for that flow; plugins are for distributable stateless commands. A plugin could be extracted later once the intake pipeline stabilizes.
Directory layout
inbox/
voice/ # .wav .mp3 .m4a — transcribed via gemini-transcription MCP
video/ # .mp4 .mkv .webm — downsampled, frames + audio extracted, process inferred
images/ # .png .jpg — screenshots, whiteboards, diagrams (paired with text)
text/ # .md .txt — written process descriptions (possibly paired with images)
specs/ # normalized process definitions (one markdown file per skill)
skills-staged/ # generated SKILL.md + supporting scripts, pre-install
scripts/ # helpers (ffmpeg downsample, frame extract, install-to-target)
docs/ # notes on skill authoring conventions
.claude/
agents/ # subagents: transcription-router, video-extractor, image-text-fusor, skill-author, skill-installer
commands/ # slash commands: /define-from-voice, /define-from-video, /define-from-images, /define-from-text, /install-skill
Input modalities
Voice note
Place .wav/.mp3/.m4a in inbox/voice/. Transcription via the gemini-transcription MCP (raw preset). Transcript is cleaned of filler, then the skill-author agent extracts the implied process.
Video
Place .mp4/.mkv/.webm in inbox/video/. Pipeline:
ffmpegdownsamples to a small resolution (e.g. 480p, 1 fps keyframes).- Audio track is extracted and transcribed.
- Sampled frames are sent to a vision-capable model (Gemini 2.x or Claude with image input) together with the transcript.
- The agent produces a step-by-step process narrative.
Images + text
Place screenshots/diagrams in inbox/images/ and a matching text file (same basename) in inbox/text/. The image-text-fusor agent considers them jointly — text provides intent, images anchor UI state.
Text only
Plain markdown or txt in inbox/text/. Fastest path — straight to skill-author.
Install targets
The skill-installer agent resolves one of:
- Plugin —
<plugin-root>/skills/<skill-name>/SKILL.md(looked up via cached marketplace indexes) - Repo —
<repo>/.claude/skills/<skill-name>/SKILL.md - User-level —
~/.claude/skills/<skill-name>/SKILL.md
Target is specified in the spec frontmatter (install_target:) or chosen interactively.
Marketplace config
Copy .env.example → .env and fill in URLs + local paths for your public and private plugin marketplaces. Then run /refresh-indexes (or python3 scripts/refresh_indexes.py) to cache the plugin/skill indexes to ~/.local/share/claude-skill-definer/ (override via CSD_DATA_DIR). The installer reads these caches to resolve plugin:<name> targets.
Sanity check with python3 scripts/csd_config.py check.
Typical flow
inbox/voice/record-a-video.m4a
→ transcribe (gemini MCP)
→ specs/record-a-video.md (normalized process)
→ skills-staged/record-a-video/SKILL.md
→ install → ~/repos/.../plugin/skills/record-a-video/
Status
Early scaffolding. Agents and commands are stubs — intake pipeline and SKILL.md authoring conventions are the first thing to harden.