Claude Code Plugins
Carrel: A Private Desk in the Library, Set Up by AI
A Claude Code plugin that interviews a researcher, audits their machine, and configures an Obsidian-centered research environment without ever asking them to touch the terminal.
The researcher never touches a terminal. Everything is conversational.
Carrel is a Claude Code plugin that onboards researchers into an AI-augmented research environment. Instead of shipping a checklist, it interviews the researcher, audits the machine, installs what the conversation actually warrants, and learns how to work with this specific person along the way. The product is not the install — it is the relationship that begins during install.
Info
Created by: Xule Lin
GitHub: linxule/carrel
Runtime: Python / uv (the carrel CLI core) + JavaScript hooks
Platform support: macOS, Linux, Windows — install scripts and platform-aware setup guidance for all three.
Design philosophy: Interview first, install second. The setup IS the pedagogy.
Why This Matters for Research
The list of tools at the bottom of any "AI research stack" tutorial is correct. Following it is still the wrong way to start, because you end up with a configured machine and no understanding of why each piece is there.
Carrel inverts that. The setup-interviewer agent has a conversation about what you actually do — and only then installs what the conversation warrants. A short stretch reads roughly like this:
Setup-interviewer: What kind of source material do you work with most? Mostly PDFs, mostly interview recordings, mostly notes from the web, or a mix? You: A mix, but heavy on interview audio right now. Setup-interviewer: Good to know. I'll install
colifor transcription andffmpegas its dependency. For PDFs I'll set upliteparsefor the simple ones — and I'll ask about addingmineru-mcpfor complex ones after we test on a sample. Anything sensitive about the audio? Patient interviews? Anything under NDA?
The product of the interview is a stack you can explain. The transcript of the interview is also a stack you can refer back to — /carrel-status and /carrel-fix work against the same understanding.
Underneath, it bootstraps:
- Obsidian as the shared vault — the researcher sees a GUI notebook; Claude sees markdown.
carrelPython CLI with eight subcommand groups (paper,transcript,capture,google,vault,env,setup-state,trust).- Conversion tooling —
liteparse,markitdown,defuddle,minerucloud OCR for complex PDFs. - Transcription via
coli(withffmpeg). - Google Workspace integration via
gwsfor researchers who use Drive/Docs. - Optional MCPs layered in based on the interview — Vox for multi-model access, MinerU for complex PDFs, zotero-mcp for citation pipelines.
Sensitivity-aware by default: local-first, nothing leaves the machine unless explicitly chosen.
Host Support
| Host | Status | Notes |
|---|---|---|
| Claude Code (Desktop "Code" tab) | Full / recommended | Carrel's primary target. Researcher-friendly GUI with the full plugin engine. |
| Claude Code (CLI) | Full | Same engine. Use this when you need a terminal to diagnose install issues — claude --dangerously-skip-permissions can let Claude fix its own environment. |
| Codex CLI / Codex Desktop | Adjacent | Carrel is a Claude Code plugin, so the interview runs inside Claude Code. But a Codex session can install it for you cross-host: ask the Codex agent to run claude plugin marketplace add linxule/carrel && claude plugin install carrel@carrel --scope user, then switch over to Claude Code (or Claude Desktop → Code tab) and type /carrel-setup. Alternatively, the carrel Python CLI is portable on its own (uv tool install git+https://github.com/linxule/carrel.git) — it gives you paper, transcript, capture, google, vault, env, setup-state, and trust subcommands in any shell, just without the conversational onboarding agent. |
| Cursor / other clients | Out of scope | The carrel Python CLI is reusable in any shell, but the conversational setup is a Claude Code surface. |
If you're a researcher choosing a host: Claude Desktop, Code tab. It is the path Carrel is tuned for and the one the install script verifies.
What's in the plugin
The plugin ships slash commands for the routine moves (setup, status, recovery, conversion, transcription, capture, automation, reflection), two agents (@setup-interviewer for onboarding and @research-partner for thinking-with), and a library of intent-discoverable skills that Claude pulls in on demand — vault operations, environment doctor, knowledge-wiki tending, model-teammate management, and so on. Underneath sits a single carrel Python CLI that the slash commands shell out to, so the same operations work from a terminal when you need them.
The exact slash-command list is below; the agents and skills are documented in the source repo.
Commands
| Command | What it does |
|---|---|
/carrel-setup | Full onboarding interview, audit, scaffold a vault |
/carrel-status | Check what's installed and working |
/carrel-fix | Diagnose environment drift and guide recovery |
/carrel-convert | Convert PDF / Word / slides to markdown in your vault |
/carrel-batch | Batch convert or transcribe a folder; file results into the vault |
/carrel-capture | Save web content to your vault |
/carrel-transcribe | Transcribe audio to text in your vault |
/carrel-automate | Set up or update overnight vault maintenance and analytical tasks |
/carrel-reflect | End-of-session reflection |
/carrel-mirror | Synthesize your research patterns from reflections and logs |
/carrel-cheatsheet | Regenerate your reference card |
/carrel-share | Generate a collaborator handbook for this vault |
/carrel-teammates | Add, remove, or review model teammates (Codex, Gemini, Kimi) |
/carrel-migrate | Check for updates, show what's new, apply migrations |
/carrel-feedback | Generate an anonymized feedback digest for sharing |
Trust Levels (Code-Enforced)
Carrel's automation trust model is not narrated in skill markdown — it is enforced in code. Four levels of relationship between researcher and assistant define the contract:
- Advisory — suggest, never act.
- Consultative — propose actions, ask before each.
- Delegated — act within named boundaries, report after.
- Partnership — act with discretion, surface what matters.
Writes that cross those boundaries pass through carrel trust check <action> before the skill proceeds. A delete that the current vault classifies as outside the level — say vault.archive-bulk at the Advisory level — returns a non-zero exit and a single line explaining why:
$ uv run carrel trust check vault.archive-bulk --vault .
denied: vault.archive-bulk requires Delegated; vault is at AdvisoryThe skill sees the denial and stops, rather than asking for forgiveness afterward. To inspect the matrix without attempting an action:
uv run carrel trust list --vault .The point isn't to be permissive or restrictive by default — it's to make the relationship contract legible. A researcher can read their vault's trust matrix and know what their Claude can and can't do without asking.
Installation
There are two install paths. Path A is recommended — it's more reliable because Claude Code in the terminal can diagnose and fix issues autonomously.
Best for fresh machines or facilitator-assisted setups.
| Platform | Command |
|---|---|
| macOS | curl -fsSL https://raw.githubusercontent.com/linxule/carrel/main/install.sh | bash |
| Linux | curl -fsSL https://raw.githubusercontent.com/linxule/carrel/main/install.sh | bash |
| Windows | irm https://raw.githubusercontent.com/linxule/carrel/main/install.ps1 | iex |
Open Terminal (macOS / Linux) or PowerShell as Administrator (Windows), then run the matching command. The script installs git, Node.js, uv, GitHub CLI, Claude Code, signs you in to GitHub, and adds the Carrel plugin. Idempotent — safe to re-run. Typical fresh-machine time: ~10 minutes.
If the plugin didn't install (the script will tell you), open a new terminal and run claude --dangerously-skip-permissions. Tell Claude: "Install the Carrel plugin from linxule/carrel." It will diagnose and fix whatever went wrong.
Then, to start using Carrel:
- Open Claude Desktop → Code tab
- Select your research folder as the project
- Type
/carrel-setupto begin the onboarding interview
Verifying installation
In any Claude Code session:
/carrel-statusIf Carrel is active, it reports environment state. If not installed, the command won't be recognized.
Facilitator-assisted setup
When setting up a researcher's machine in person:
Bootstrap
Run the install script on the researcher's machine. Help them sign in to GitHub during gh auth login.
Install plugin
Install via terminal Claude Code (Path A).
Run the interview
Open Claude Desktop and run /carrel-setup. Sit with them through it — let them answer the questions.
Human steps
Help install Obsidian (brew install --cask obsidian) and the Web Clipper.
Confirm and teach
Test with a real PDF conversion. Walk through the cheat sheet (/carrel-cheatsheet) together. Leave the relationship contract legible.
What Carrel installs
Carrel installs three layers, in the order they come up during the interview.
The environment (always)
These are the substrate. Carrel installs them on every machine; the install script handles the prerequisites and the slash commands use them at runtime.
- Obsidian — the vault GUI; researcher sees a notebook, Claude sees markdown
carrelPython CLI — eight subcommand groups (paper,transcript,capture,google,vault,env,setup-state,trust) that the slash commands shell out to- Conversion stack —
liteparse(PDFs),markitdown(general formats),defuddle(web pages) - Transcription —
coliplusffmpeg - Google Workspace —
gws(Drive / Docs), if the interview surfaces it
None of these have Toolkit pages because they're not agent-callable surfaces — they're CLIs the plugin orchestrates.
MCPs (interview-conditional)
These ship as MCPs that any Claude Code project can use. Carrel adds them at project level only if the interview surfaces a need:
| MCP | Carrel asks when | Toolkit page |
|---|---|---|
| Vox | researcher wants multi-model access (Gemini, GPT, Grok, Kimi, …) | Vox MCP |
| MinerU | researcher works with complex / scanned PDFs | MinerU MCP |
| zotero-mcp | researcher uses Zotero for citations | zotero-mcp ↗ |
Each MCP requires its own API key, which /carrel-setup will prompt for.
What Carrel doesn't install today
Carrel's current onboarding doesn't install other Claude Code plugins or standalone web platforms. Both are scope decisions, not architectural limits — Carrel's agents could shell out to claude plugin install like any other bash command, and Codex agents can install Claude Code plugins cross-host the same way. Today the plugin layer is a separate question from the environment layer Carrel handles. The Toolkit entries that pair cleanly are sibling plugins you install yourself for now:
- Interpretive Orchestration — the qualitative-methodology layer; bundles its own MCPs (Sequential Thinking, Lotus Wisdom, Markdownify) used by
/qual-*commands. Carrel's docs recommend pairing for Gioia / grounded-theory work. - Memex Plugin — collaborative session memory across compaction windows.
- Kimi Plugin for Claude Code — independent second-model reviewer.
Install these separately from the Claude Code plugin marketplace. They coexist with Carrel without sharing state.
claude plugin marketplace add linxule/interpretive-orchestration
claude plugin install interpretive-orchestration@interpretive-orchestration --scope userThree plugins, three jobs: Carrel sets the desk; Interpretive Orchestration runs the analysis; Memex remembers what happened. Add Kimi Plugin when you want a structurally different model checking the work.