Skip to content

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 coli for transcription and ffmpeg as its dependency. For PDFs I'll set up liteparse for the simple ones — and I'll ask about adding mineru-mcp for 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.
  • carrel Python CLI with eight subcommand groups (paper, transcript, capture, google, vault, env, setup-state, trust).
  • Conversion toolingliteparse, markitdown, defuddle, mineru cloud OCR for complex PDFs.
  • Transcription via coli (with ffmpeg).
  • Google Workspace integration via gws for 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

HostStatusNotes
Claude Code (Desktop "Code" tab)Full / recommendedCarrel's primary target. Researcher-friendly GUI with the full plugin engine.
Claude Code (CLI)FullSame 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 DesktopAdjacentCarrel 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 clientsOut of scopeThe 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

CommandWhat it does
/carrel-setupFull onboarding interview, audit, scaffold a vault
/carrel-statusCheck what's installed and working
/carrel-fixDiagnose environment drift and guide recovery
/carrel-convertConvert PDF / Word / slides to markdown in your vault
/carrel-batchBatch convert or transcribe a folder; file results into the vault
/carrel-captureSave web content to your vault
/carrel-transcribeTranscribe audio to text in your vault
/carrel-automateSet up or update overnight vault maintenance and analytical tasks
/carrel-reflectEnd-of-session reflection
/carrel-mirrorSynthesize your research patterns from reflections and logs
/carrel-cheatsheetRegenerate your reference card
/carrel-shareGenerate a collaborator handbook for this vault
/carrel-teammatesAdd, remove, or review model teammates (Codex, Gemini, Kimi)
/carrel-migrateCheck for updates, show what's new, apply migrations
/carrel-feedbackGenerate 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 Advisory

The 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.

PlatformCommand
macOScurl -fsSL https://raw.githubusercontent.com/linxule/carrel/main/install.sh | bash
Linuxcurl -fsSL https://raw.githubusercontent.com/linxule/carrel/main/install.sh | bash
Windowsirm 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:

  1. Open Claude DesktopCode tab
  2. Select your research folder as the project
  3. Type /carrel-setup to begin the onboarding interview

Verifying installation

In any Claude Code session:

/carrel-status

If 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
  • carrel Python CLI — eight subcommand groups (paper, transcript, capture, google, vault, env, setup-state, trust) that the slash commands shell out to
  • Conversion stackliteparse (PDFs), markitdown (general formats), defuddle (web pages)
  • Transcriptioncoli plus ffmpeg
  • Google Workspacegws (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:

MCPCarrel asks whenToolkit page
Voxresearcher wants multi-model access (Gemini, GPT, Grok, Kimi, …)Vox MCP
MinerUresearcher works with complex / scanned PDFsMinerU MCP
zotero-mcpresearcher uses Zotero for citationszotero-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 user

Three 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.