Claude Code Skills
pendingby p3nguln5
Stream Claude Code skill responses into a persistent side panel from any note.
Claude Code Skills for Obsidian
An Obsidian plugin that connects your notes to the Claude Code CLI. Highlight any text in a note, right-click to select a skill, and get a streaming AI response in a persistent side panel — without leaving Obsidian.
Features
- Right-click selected text → pick a Claude Code skill → response streams into the sidebar
- Persistent side panel — stays open while you read and edit your notes
- Multi-turn conversation — follow-up questions in the same session (full context preserved via
--resume) - Freeform chat — open the panel without selecting text via the ribbon icon or command palette
- Loading animation — three-dot bounce while Claude is connecting and thinking
- Full conversation export — save the entire transcript (user messages + all responses) as a vault note
- Linux process isolation — subprocess wrapped in
systemd-run --scopewithIPAddressDeny=anywhere available
Requirements
- Claude Code CLI installed and authenticated (
claudebinary on your PATH) - Obsidian desktop app (plugin is desktop-only — uses Node.js
child_process)
Network usage: This plugin spawns the
claudeCLI as a subprocess. The CLI communicates with the Anthropic API over the internet. No data is sent by this plugin directly — all network activity goes through the Claude Code CLI.
Installation
From Community Plugins (once approved)
- Settings → Community plugins → Browse
- Search for Claude Code Skills
- Install and enable
Manual installation
- Download
main.js,manifest.json, andstyles.cssfrom the latest release - Copy them to
<your-vault>/.obsidian/plugins/claude-code-skills/ - Settings → Community plugins → enable Claude Code Skills
Configuration
Settings → Claude Code Skills:
| Setting | Description | Default |
|---|---|---|
| Claude binary path | Full path to the claude executable | Auto-detected on first load |
| Working directory | Directory claude runs from. Put your CLAUDE.md here for project context. | Home directory |
| Timeout (ms) | Max time to wait before killing the subprocess | 120000 (2 min) |
| Max budget per query (USD) | Hard API spend cap per invocation. Set to 0 to disable | 0.25 |
| Output folder | Vault folder where "Create Note" saves transcripts. Leave empty for vault root | (vault root) |
The claude binary is auto-detected from common install locations on first load. Run which claude in a terminal if auto-detection fails.
Usage
Skill dispatch (primary workflow)
- Highlight any text in a note (e.g., a YARA rule, a log snippet, a code block)
- Right-click → select Claude: [skill name] from the context menu
- The side panel opens — your selected text appears as a user bubble and Claude's response streams in
- Type follow-up questions in the input box at the bottom (Enter to send, Shift+Enter for newline)
- Optionally: Create Note to save the full conversation transcript, or Copy last for just the last response
- Close Session when done — kills the subprocess and closes the panel
Freeform chat (no selection required)
- Click the bot icon in the left ribbon, or
Ctrl+P→ Open Claude Code Skills panel
The panel opens empty and you can type anything. Claude runs with the context of your configured working directory.
Skills
This plugin reads skills from ~/.claude/skills/. Each skill is a directory with a SKILL.md file containing YAML frontmatter:
~/.claude/skills/
my-skill/
SKILL.md ← frontmatter: name, description
SKILL.md frontmatter example:
---
name: My Skill
description: What this skill does
---
If no skills are found, the right-click menu will be empty but the freeform panel still works.
How it works
The plugin spawns claude --print --output-format stream-json --include-partial-messages as a subprocess:
- Initial skill invocation sends
/{skillId}\n\n{selected text}on stdin - Follow-up messages use
--resume <sessionId>for multi-turn continuation - Streamed JSON events are parsed as they arrive — text appears chunk by chunk
- On Linux, the subprocess is wrapped in
systemd-run --scope --user -p IPAddressDeny=anyfor process isolation - The subprocess is killed if the panel is closed or Close Session is clicked
Building from source
git clone https://github.com/p3nguln5/obsidian-claude-code-skills.git
cd obsidian-claude-code-skills
npm install # one-time: installs build tools
npm run build # compiles src/*.ts → main.js
Then copy main.js, manifest.json, and styles.css to your vault's .obsidian/plugins/claude-code-skills/ directory.
For development with auto-rebuild on save: npm run dev
License
MIT — see LICENSE
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.