20 Minutes to Get Started|5 Agent Collaboration + 34 Research Skills|Turn Claude Code into your personal research lab
Project Overview
Oh My Paper is an open-source Claude Code plugin that solves a very straightforward problem: Claude Code can help you write code, but research involves far more than coding—you also need literature research, innovation and feasibility assessment, experiment design, paper writing, citation checks, and more. And none of those steps have a good tool to tie them together.
Oh My Paper equips Claude Code with a structured research pipeline: 5 dedicated Agent roles handle different parts, 34 research skills are loaded as needed, and background Hooks automatically remember the project status. Once it’s set up, every time you open Claude Code, it will ask, “Which role are you working on today?” Then it automatically loads the corresponding memory files and continues from where you left off. There’s no need for any GUI—everything is done in the terminal.
TIP
Project link: https://github.com/LigphiDonk/Oh-my--paper, MIT License, supports the Claude Code plugin ecosystem.
Target Audience
This article is for developers like you:
- 1–5 years of development experience, who have (or are currently going through) the process of writing papers and doing research
- Want to use AI to assist research, but dislike switching back and forth between lots of tools
- Interested in concepts like Agent collaboration mode and role-based memory isolation, and want real-world examples
If you already have a clear research direction (e.g., CV, NLP, system architecture), or you’re doing internal technical research at work, Oh My Paper’s pipeline applies.
Core Dependencies & Environment
Before you start, make sure your environment meets the following requirements:
| Dependency | Minimum Requirement | Notes |
|---|---|---|
| Claude Code | Latest version | Official installation guide |
| Node.js | v18+ | Required for running Claude Code plugins |
| Python | 3.10+ | Needed for remote experiment scripts and LaTeX compilation |
| LaTeX | TeX Live 2020+ | Optional, but used for paper writing |
| Network | Can access ArXiv / Semantic Scholar | Required for literature search |
WARNING
Oh My Paper is a Claude Code plugin, not a standalone application. You must install Claude Code first.
Windows users are recommended to use WSL2 for the best experience.
Full Project Directory Tree
After running /omp:setup, the project directory structure looks like this:
my-research/
├── paper/ # LaTeX paper workspace
│ ├── main.tex
│ ├── sections/ # Per-chapter .tex files
│ └── refs/ # Reference bibliography .bib files
├── experiment/ # Experiment code and scripts
├── survey/ # Literature research outputs
├── ideation/ # Innovation points & evaluation results
├── promotion/ # Slides, demos, and promotional materials
├── skills/ # Project-local custom skills
├── .pipeline/
│ ├── tasks/
│ │ └── tasks.json # Task tree across all phases
│ ├── docs/
│ │ └── research_brief.json
│ └── memory/ # Agent memory files
│ ├── project_truth.md # Project baseline + progress logs
│ ├── orchestrator_state.md
│ ├── execution_context.md
│ ├── experiment_ledger.md
│ ├── result_summary.md
│ ├── review_log.md
│ ├── literature_bank.md
│ ├── agent_handoff.md
│ └── decision_log.md
├── .claude/
│ └── settings.json # SessionStart hook registration
├── CLAUDE.md
└── AGENTS.md
Step-by-Step Installation
Step 1: Add the plugin marketplace
In Claude Code, run the following command to register Oh My Paper’s marketplace address:
/plugin marketplace add LigphiDonk/Oh-my--paper
This step doesn’t require cloning the entire repository—Claude Code will pull the plugin listing from the marketplace.
Step 2: Install the plugin
/plugin install omp@oh-my-paper
After installation, run /plugin to verify:
/plugin
# Expected output should include: omp @ oh-my-paper, Status: Enabled
Step 3: Restart Claude Code
WARNING
This is the easiest step to miss. The SessionStart hook must restart Claude Code to take effect; skipping it will result in the role-selection prompt not appearing every time you open a session.
Fully close the current Claude Code window, then open it again.
Step 4: Initialize your research project
Go to your research project directory and run:
/omp:setup
This command does three things:
- Creates the
.pipeline/directory and all of its subdirectories and memory files - Registers the
SessionStarthook in.claude/settings.json - Generates default
tasks.jsonandresearch_brief.json
After initialization, your directory structure will match the “Full Project Directory Tree” shown above.
Verify successful installation
Reopen Claude Code (within the initialized project directory). You should see Claude pop up a role selection menu, asking which role you want to start with today. If you see it, everything has been installed successfully.
Detailed Explanation of the 5-Phase Research Pipeline
Oh My Paper breaks the entire research process into 5 phases. Each phase corresponds to one command and a recommended set of skills.
Phase 1|Survey: Literature Research
Run the command:
/omp:survey
What this phase does: It has Claude search for relevant papers based on your research direction, extract abstracts and key information, and finally compile everything into a literature_bank.md file.
Common skills:
paper-finder— Search related work across ArXiv and Semantic Scholarpaper-analyzer— Extract the core contributions, methods, and limitationsbiorxiv-database— If you’re in biomedical research, search BioRxiv
Core output file: survey/literature_bank.md
Typical workflow:
You: /omp:survey
→ Claude asks for research-direction keywords
→ Automatically searches → organizes literature cards → writes to literature_bank.md
→ Shows the literature research summary for you to confirm whether you want to add more
Phase 2|Ideation: Generating Innovation Points
Run the command:
/omp:ideate
Based on the literature research results from Phase 1, Claude generates potential innovation points and evaluates the feasibility of each one.
Common skills:
inno-idea-generation— Large-scale innovation brainstorminginno-idea-eval— Scores across three dimensions: novelty, feasibility, and impactresearch-idea-convergence— Converges to the 2–3 most promising directions
Core output file: evaluation results under the ideation/ directory
TIP
After the Ideation phase ends, remember to have Claude write the finally selected direction into research_brief.json. The subsequent experiments and writing will reference this file.
Phase 3|Experiment: Experiment Design & Execution
Run the command:
/omp:experiment
This phase covers the widest ground: designing experiment plans, writing evaluation code, running locally or remotely, and analyzing results.
Common skills:
inno-experiment-dev— Generate experiment code scaffoldingresearch-experiment-driver— Manage the iterative experiment loopremote-experiment— SSH into a remote GPU node to run experiments (see the “Remote Experiments” section)
Core output files: experiment/ directory + experiment_ledger.md (experiment history)
Phase 4|Publication: Writing Paper Sections
Run the command:
/omp:write
Convert experiment results into paper text, generate figures and titles, and manage the LaTeX files.
Common skills:
inno-paper-writing— General paper section generationml-paper-writing— Paper templates for machine learning/AIscientific-writing— Academic writing conventions (tense, wording, structure)inno-figure-gen— Generate figure code (Matplotlib, Plotly)inno-reference-audit— Automatically check whether citation formats are correct
Core output file: the LaTeX files under paper/
Phase 5|Promotion: Sharing & Outreach
Run the command:
/omp:plan
# In the Promotion phase, choose skills related to making demo/presentation materials
Turn your paper results into presentation slides, technical blogs, Grant proposals, and more.
Common skills:
making-academic-presentations— Generate PPTs for academic talksinno-grant-proposal— Write funding application proposalsinno-rclone-to-overleaf— Automatically sync your local LaTeX to Overleaf
The 5 Big Agent Roles & the Memory Isolation Mechanism
This is the most core design philosophy of Oh My Paper.
Agent Role Overview
| Role | Responsibility Description | Core Memory File(s) |
|---|---|---|
| Conductor (Orchestrator) | Global planning, dispatching subtasks, and automatically updating project status after each phase | project_truth.md · tasks.json · orchestrator_state.md |
| Literature Scout | Search papers and organize research notes | literature_bank.md · execution_context.md |
| Experiment Driver | Design experiments, write evaluation code, run experiments, and record results | experiment_ledger.md · research_brief.json |
| Paper Writer | Write sections, generate figures, and audit citations | result_summary.md · literature_bank.md |
| Reviewer | Peer review, quality checks, and consistency verification | execution_context.md · project_truth.md |
Memory Isolation Principles
Each role can only read and write the memory files within its own scope of responsibility, and cannot see other roles’ internal states. The core benefit of this design is preventing context contamination—for example, the Paper Writer won’t see the Experiment Driver’s intermediate debugging results, and the Literature Scout won’t let experimental data bias literature evaluation.
Communication between roles happens via two “public areas”:
tasks.json ← All roles read/write, recording task completion status
project_truth.md ← All roles append, recording the project’s overall progress
Automatic Status Synchronization
The most important design detail: after each subtask is completed, the Conductor automatically updates these two public files. You don’t need to remind it.
Subtask completed
→ Conductor automatically marks the corresponding task in tasks.json as done
→ Conductor automatically appends a progress record to project_truth.md
→ Next session, Claude reads both files and continues automatically from the breakpoint
TIP
If you want the Conductor to force output the current global progress, run /omp:plan. It will read tasks.json and project_truth.md, and display the full task tree and the current phase.
Quick Reference: 34 Research Skills
Oh My Paper includes 34 research skills covering the entire research lifecycle. The list below is organized by category so you can find what you need quickly:
Literature Skills
paper-finder— Paper search across databasespaper-analyzer— Extract core contributions from paperspaper-image-extractor— Extract figures from PDFsresearch-literature-trace— Trace the citation chain of a paperbiorxiv-database— BioRxiv-focused searchdataset-discovery— Find relevant datasets
Research & Ideation Skills
inno-deep-research— Deep research modegemini-deep-research— Gemini deep research integrationinno-code-survey— Code implementation researchinno-idea-generation— Batch generation of innovation pointsinno-idea-eval— Multi-dimensional evaluation of innovation pointsresearch-idea-convergence— Converge to the best direction
Experiment Skills
inno-experiment-dev— Experiment code generationinno-experiment-analysis— Analyze experiment resultsresearch-experiment-driver— Iterative experiment managementremote-experiment— Remote GPU experiment loops
Writing Skills
inno-paper-writing— General paper sectionsml-paper-writing— ML/AI papersscientific-writing— Academic writing conventionsinno-figure-gen— Generate figuresinno-reference-audit— Audit citation formatresearch-paper-handoff— Handoff standards between agents
Planning & Review Skills
inno-pipeline-planner— Pipeline planningresearch-pipeline-planner— Research-phase planninginno-paper-reviewer— Paper quality reviewinno-prepare-resources— Resource preparation checklistinno-rclone-to-overleaf— Overleaf sync
Presentation & Proposal Skills
making-academic-presentations— Academic presentation PPTsinno-grant-proposal— Funding proposals
Agent Dispatch Skills
claude-code-dispatch— Dispatch Claude Code subtaskscodex-dispatch— Dispatch Codex in parallel
Domain-Specific Skills
academic-researcher— General academic researchbioinformatics-init-analysis— Bioinformatics analysisresearch-news— Track the latest developments in a research field
Skills are loaded on demand. When you run /omp:survey, Claude will automatically recommend relevant skills. You can also add custom skills under the skills/ directory.
Full Demo of a Typical Workflow
Let’s take an AI-direction paper as an example and go through the 5-phase pipeline end-to-end.
Step 1: Project Initialization
# Enter the research directory
cd ~/research/my-paper
# In Claude Code:
/omp:setup
# Output: .pipeline/ created, SessionStart hook registered
Step 2: Literature Research
# In Claude Code:
/omp:survey
# → Claude asks: “What is your research direction?”
# → Input: LLM reasoning, chain-of-thought prompting
# → Claude automatically searches ArXiv/Semantic Scholar
# → Organizes 20+ related works into survey/literature_bank.md
# → Outputs the literature research summary so you can confirm whether you need to add more
Step 3: Generating Innovation Points
/omp:ideate
# → Claude reads literature_bank.md
# → Generates 8 potential innovation points
# → Scores each point across novelty / feasibility / impact
# → Converges to 2 directions, writes to research_brief.json
Step 4: Experiment Design & Running
/omp:experiment
# → Claude reads research_brief.json
# → Designs the experiment plan (baselines, comparison methods, evaluation metrics)
# → Generates experiment code into the experiment/ directory
# → Runs local evaluation and parses the metric results
# → Writes results to experiment_ledger.md
If you need remote GPU node execution:
# Configure the remote compute node (create compute-config.json under experiment/)
{
"host": "gpu-server.example.com",
"user": "researcher",
"key_path": "~/.ssh/id_rsa",
"remote_dir": "/home/researcher/experiments"
}
# In Claude Code:
/omp:experiment
# → Claude detects compute-config.json
# → Uses the remote-experiment skill
# → rsync code to remote → run via SSH → pull back results
# → Automatically parses metrics and writes to experiment_ledger.md
Step 5: Writing Paper Sections
/omp:write
# → Claude reads experiment_ledger.md + literature_bank.md
# → Generates Introduction / Method / Experiment section .tex files
# → Generates figures (Matplotlib scripts), compiles to paper/figures/
# → Citation audit: checks the .bib file format
Step 6: Peer Review
/omp:review
# → Claude reads the paper in the Reviewer role
# → Checks logical coherence, method-description clarity, and adequacy of experiment comparisons
# → Outputs review_log.md listing revision suggestions
# → Modify based on the suggestions, then run /omp:review again until it passes
Step 7: Sync to Overleaf
# Configure Overleaf sync in the skills/ directory
# Use the inno-rclone-to-overleaf skill
# Claude automatically syncs your local paper/ directory to your Overleaf project
Detailed Guide to Remote Experiments
For experiments that need GPU compute, Oh My Paper supports a complete remote experiment loop.
Architecture Flow
Local plan design
→ Generate experiment code
→ rsync sync to the remote server
→ SSH into the remote node
→ Run the experiment on the GPU
→ Pull back metric logs
→ Parse metrics locally
→ Decide whether thresholds are met
→ Iterate optimization / end the experiment
Configure Remote Nodes
Create compute-config.json under experiment/:
{
"host": "your-gpu-server.com",
"user": "researcher",
"ssh_key": "~/.ssh/id_rsa",
"remote_workspace": "/home/researcher/omp-experiments",
"max_iterations": 5,
"success_threshold": {
"accuracy": 0.92,
"latency_ms": 200
}
}
Run Remote Experiments
# In Claude Code:
/omp:experiment
# → Detects compute-config.json
# → Automatically executes: code sync → SSH run → pull back results
# → If metrics don’t meet requirements, automatically adjust hyperparameters and rerun (up to max_iterations times)
# → Finally writes results to experiment_ledger.md
WARNING
Remote experiments will consume server compute resources and incur costs. It’s recommended to first validate the experiment pipeline with a small local dataset, confirm everything is correct, and then switch to remote GPU nodes to run the full experiment.
Codex Task Delegation
If an experiment involves generating a large amount of repetitive code (for example, running 10 groups with different hyperparameter configurations), you can ask the Conductor to delegate tasks to Codex for parallel processing.
/omp:delegate
# → Conductor reads the current task context
# → Generates a Codex prompt with full context
# → Copy it into a new terminal: codex "..."
# → Codex runs in an independent terminal
# → After completion, write a CODEX_DONE signal into agent_handoff.md
# → Conductor detects the signal, automatically reads the results, and updates tasks.json
The benefit of this design: Claude Code and Codex run in different terminals at the same time, so your local Claude Code won’t be occupied—you can simultaneously do other work like literature organization.
Troubleshooting Common Issues
Q1: After running /omp:setup, the role-selection prompt doesn’t show every time I open Claude Code
Cause: The SessionStart hook wasn’t registered correctly.
Troubleshooting steps:
- Check whether
.claude/settings.jsonexists in your project directory - Check whether that file contains a
hooksconfiguration section
cat .claude/settings.json
# Confirm there is a "hooks": { "SessionStart": [...] } field
If it’s missing, run /omp:setup again to reinitialize, and make sure Claude Code has been fully restarted.
Q2: The plugin installs successfully, but commands like /omp:survey show “Unrecognized command”
Cause: The plugin didn’t load correctly, or Claude Code needs a restart.
Fix steps:
# 1. Uninstall and reinstall
/plugin uninstall omp
/plugin install omp@oh-my-paper
# 2. Fully restart Claude Code (close all windows)
# 3. Verify plugin status
/plugin
Q3: Literature Scout finds too few papers—want to expand the search scope
Cause: The initial keywords are too specific, limiting the search results.
Solution:
When running /omp:survey, provide multiple synonyms and broader terms:
Input: “LLM reasoning, chain-of-thought, CoT, deliberate reasoning, LLM planning”
instead of only: “LLM reasoning”
At the same time, you can add additional database sources (e.g., the ACL Anthology and the official ICLR pages) in skills/paper-finder.md.
Q4: The experimental description generated by Paper Writer doesn’t match the actual results
Cause: The latest experiment_ledger.md wasn’t synced in time between the Experiment Driver and the Paper Writer.
Solution:
After each experiment iteration is finished, before starting work in Paper Writer, run /omp:plan first so the Conductor syncs the global state. This ensures Paper Writer reads the newest results:
/omp:plan
# → Conductor displays the current tasks.json state
# → Confirm the experiment task is marked done
# → Then run /omp:write
Q5: Remote experiment rsync fails with “permission denied”
Cause: Incorrect SSH key permissions, or the remote directory doesn’t exist.
Troubleshooting steps:
# 1. Check local SSH key permissions
chmod 600 ~/.ssh/id_rsa
# 2. Test SSH connection (passwordless login)
ssh -i ~/.ssh/id_rsa [email protected] "echo ok"
# 3. Ensure the remote directory exists
ssh [email protected] "mkdir -p /home/researcher/omp-experiments"
# 4. Verify that remote_workspace path in compute-config.json is correct
Q6: After Codex delegation, Conductor keeps waiting for the CODEX_DONE signal
Cause: After Codex finishes running, it didn’t correctly write to agent_handoff.md.
Solution:
- Check that the terminal running Codex ended normally
- Manually append a line to the end of
.pipeline/memory/agent_handoff.md:
CODEX_DONE
result: [fill in Codex’s output result]
- Then continue the current workflow in Claude Code
Further Reading & Advanced Directions
1. Custom Skill Extensions
Oh My Paper supports adding custom skills under the project-local skills/ directory. Create a format like this:
---
name: my-custom-skill
description: A custom analysis workflow tailored to a specific research area
stage: survey # Optional: survey | ideation | experiment | write | review
---
# Skill Title
## Steps
1. Read context files ...
2. Execute specific tasks ...
After registering, when you run commands like /omp:survey, Claude will automatically recommend the relevant custom skills.
2. Advanced Multi-Agent Collaboration
If you’re pushing multiple research directions at the same time, you can run /omp:setup in different subdirectories. Each subproject will have its own independent .pipeline/ and Agent team. The Conductor role is responsible for providing an overview and coordination across subprojects.
3. Overleaf Collaboration Workflow
Use the inno-rclone-to-overleaf skill to sync your local papers to Overleaf. Then you can invite your advisor to leave annotations directly on Overleaf. After the edits are done, sync them back to your local machine. The entire process doesn’t require manual upload/download.
4. Connect to Other LLM Backends
Oh My Paper itself only depends on Claude Code, but in the experiment phase you can configure different LLMs to do comparative evaluation. Create a model configuration file under the experiment/ directory:
# experiment/model_configs.py
llm_configs = {
"claude-sonnet": {"provider": "anthropic", "model": "claude-3-5-sonnet"},
"gpt-4o": {"provider": "openai", "model": "gpt-4o"},
"gemini-pro": {"provider": "google", "model": "gemini-1.5-pro"},
}
Then reference these configurations in your experiment code to do cross-comparisons.
5. Track the Latest Research News
Use the research-news skill to periodically scan ArXiv’s newest submissions, filter out new work relevant to your research direction, and automatically update literature_bank.md. You can pair it with a cron scheduled task to automatically update the literature database once per week.