study
Use this skill when the user wants to read, study, analyze, or deeply understand a research paper (PDF).
Start the Claude Paper web viewer to browse and study papers
$ npx -y skills add alaliqing/claude-paper --skill claude-paper-webui --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/claude-paper-webuiContext preview
The summary Claude sees to decide when to auto-load this skill.
Start the Claude Paper web viewer to browse and study papers
name: claude-paper-webui description: Start the Claude Paper web viewer to browse and study papers allowed-tools: Bash
> This file is generated from the existing Claude Paper Skill. Its workflow and output requirements are unchanged; only equivalent host metadata, the plugin-root variable, and cross-skill invocation are adapted.
Resolve `CLAUDE_PAPER_PLUGIN_ROOT` to the absolute `plugin/` directory in this package before each shell invocation. From this `SKILL.md`, that directory is `../../plugin`. Treat every `${CLAUDE_PAPER_PLUGIN_ROOT}` reference below as that resolved absolute directory. Do not substitute the current workspace root.
When this workflow asks to launch the viewer, load and follow the `claude-paper-webui` skill.
---
This skill starts the Claude Paper web viewer using the production Nuxt.js server.
Check if web dependencies are installed (with corruption check):
cd "${CLAUDE_PAPER_PLUGIN_ROOT}/src/web"
if [ ! -d "node_modules" ]; then
echo "First run - installing web dependencies..."
npm ci
echo "Web dependencies installed!"
elif [ ! -f "node_modules/.package-lock.json" ] || [ ! -d "node_modules/nuxt" ]; then
echo "ERROR: node_modules is corrupted, performing clean install..."
rm -rf node_modules
npm ci
echo "Web dependencies installed!"
else
echo "Dependencies already installed"
fiBuild if needed or if plugin version changed:
cd ${CLAUDE_PAPER_PLUGIN_ROOT}/src/web
PLUGIN_VERSION=$(node -e "console.log(require('${CLAUDE_PAPER_PLUGIN_ROOT}/.claude-plugin/plugin.json').version)")
BUILD_VERSION=""
if [ -f ".output/.build-version" ]; then
BUILD_VERSION=$(cat ".output/.build-version")
fi
if [ ! -f ".output/server/index.mjs" ] || [ "$PLUGIN_VERSION" != "$BUILD_VERSION" ]; then
echo "Building production server (v${PLUGIN_VERSION})..."
npm run build
echo "$PLUGIN_VERSION" > .output/.build-version
echo "Build complete!"
else
echo "Production build is up to date (v${BUILD_VERSION})"
fiEnsure port 5815 is available (with version check restart):
# Get version info for comparison
PLUGIN_VERSION=$(node -e "console.log(require('${CLAUDE_PAPER_PLUGIN_ROOT}/.claude-plugin/plugin.json').version)")
BUILD_VERSION=""
if [ -f ".output/.build-version" ]; then
BUILD_VERSION=$(cat ".output/.build-version")
fi
if lsof -i :5815 > /dev/null 2>&1; then
echo "INFO: Port 5815 is already in use"
PID_FILE="/tmp/claude-paper-webui.pid"
if [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") 2>/dev/null; then
# Check version match - restart if plugin was updated
if [ "$PLUGIN_VERSION" = "$BUILD_VERSION" ]; then
echo "Claude Paper web UI is already running (version ${PLUGIN_VERSION})"
echo "Access it at: http://localhost:5815"
exit 0
else
echo "Version mismatch: running ${BUILD_VERSION}, need ${PLUGIN_VERSION}"
echo "Stopping old server..."
kill $(cat "$PID_FILE") 2>/dev/null
sleep 2
rm -f "$PID_FILE"
echo "Old server stopped, will restart with new version"
fi
else
echo "ERROR: Port 5815 is occupied by another process"
exit 1
fi
fiStart the server in background:
HOST=127.0.0.1 PORT=5815 node .output/server/index.mjs & SERVER_PID=$! # Save PID for later cleanup echo $SERVER_PID > /tmp/claude-paper-webui.pid echo "Server PID: $SERVER_PID"
Wait for server to be ready:
timeout=10
while [ $timeout -gt 0 ]; do
if curl -s http://localhost:5815/api/papers > /dev/null 2>&1; then
echo "Server is ready!"
break
fi
sleep 1
timeout=$((timeout - 1))
done
if [ $timeout -eq 0 ]; then
echo "ERROR: Server failed to start properly"
kill $SERVER_PID 2>/dev/null
rm -f /tmp/claude-paper-webui.pid
exit 1
fiTell the user the web viewer is available and provide cleanup instructions:
Claude Paper web UI is now running! Access it at: http://localhost:5815 To stop the server, run: kill $(cat /tmp/claude-paper-webui.pid)
Transform research papers into comprehensive learning environments A research-paper learning plugin for Claude Code, Codex, OpenCode, and DeepSeek Harness.
Repo: alaliqing/claude-paper
Use this skill when the user wants to read, study, analyze, or deeply understand a research paper (PDF).
Use this for a quick summary of a research paper's core ideas and key points. Use when you want to quickly understand a paper without deep study materials.…
Use this skill when the user wants to read, study, analyze, or deeply understand a research paper (PDF).
Use this for a quick summary of a research paper's core ideas and key points. Use when you want to quickly understand a paper without deep study materials.…