At a glance
What it does
Starts a local web interface for browsing and studying papers in Claude Paper.
Before you choose it
This skill prepares the Claude Paper web dependencies, builds its Nuxt.js production server when needed, and serves the paper viewer locally at http://localhost:5815. It checks whether the port is occupied and uses a PID file to identify the server it started.
Best for
People using Claude Paper who want to explore their papers through a local browser interface.
Common tasks
- Open the Claude Paper viewer in a browser.
- Build the viewer after a plugin update.
- Check whether an existing viewer on port 5815 can be reused.
Permissions and data
Runs local shell commands to install packages, build the web app, inspect port 5815, and manage a local server process.
Permissions- Shell access
- Write access to the plugin web build and dependency directories
- Ability to bind localhost port 5815
- Ability to create and remove /tmp/claude-paper-webui.pid
- Queries the local viewer health endpoint at /api/papers.
- No remote data destination is declared in the supplied skill document.
- npm package installation is invoked through npm ci.
- No credentials are declared in the supplied evidence.
Limitations
- The viewer is available only on the local machine at 127.0.0.1:5815.
- If port 5815 is used by another process that is not identified by the PID file, the skill stops with an error.
- A dependency-corruption path removes node_modules before reinstalling.
What DSHub checked
- The pinned skill document was captured completely.
- The source commit is pinned and the skill-document hard check passed.
- An MIT license was detected.
What DSHub did not check
- The skill was not installed or executed by DSHub.
- Successful dependency installation, build, server startup, and paper loading were not verified.
Pinned install
Primary action
This standalone skill does not have a DSH Plugin install action. Use its source documentation for the delivery method.
Maintainer source
Skill instructions
name: claude-paper-webui description: Start the Claude Paper web viewer to browse and study papers allowed-tools: Bash
Cross-Agent Compatibility
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.
Start Web UI
This skill starts the Claude Paper web viewer using the production Nuxt.js server.
Step 1: Check and Install Dependencies (First Run Only)
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"
fi
Step 2: Build Production Server (auto-rebuilds on plugin update)
Build 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})"
fi
Step 3: Check Port Availability
Ensure 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
fi
Step 4: Start Production Server
Start 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"
Step 5: Verify Server Health
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
fi
Step 6: Inform User
Tell 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)
Operate deliberately
Install and manage
Prerequisites and target Profile
Target: Claude Paper Profile
Delivery: Skill Files — https://raw.githubusercontent.com/alaliqing/claude-paper/0af55d0daeae8e86571700fd1839feb6be9440a6/.agents/skills/claude-paper-webui/SKILL.md。
Compatibility and access
Local Nuxt.js web viewer workflow; host compatibility metadata is included: Not declared in supplied evidence。
Review compatibility evidence ↗
Risk facts
Starts a background server on 127.0.0.1:5815 and records its PID for later stopping.
Evidence ↗Runs npm ci and may delete the web node_modules directory when it considers dependencies corrupted.
Evidence ↗Evidence and editorial reviewManifest, Bundle patch, distribution and freshness
Immutable evidence
Review status and source activity
Approved for publication after reviewing the source-linked content and immutable release record. AI assisted with the draft; the publication decision was human.
Human reviewed Sep 1, 2026, 9:41 AM UTC。GitHub facts last checked Sep 1, 2026, 8:45 AM UTC。
No material source change has been recorded since this evidence baseline.