Evidence snapshot reviewed Sep 16, 2026GitHub checked Aug 21, 2026
Source-reviewedStandalone SkillSearch, Vision & DataClaude Paper Profile

claude-paper-webui

Starts a local web interface for browsing and studying papers in Claude Paper.

At a glance

What it does

Starts a local web interface for browsing and studying papers in Claude Paper.

Capabilities
Search, Vision & DataSearchDocumentationUI

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
Data handling
  • Queries the local viewer health endpoint at /api/papers.
  • No remote data destination is declared in the supplied skill document.
External services
  • npm package installation is invoked through npm ci.
Credentials
  • 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.

Visit the source project ↗

Maintainer source

Skill instructions

View at commit 0af55d0 ↗
Maintainer-authored contentCaptured from .agents/skills/claude-paper-webui/SKILL.md on Aug 30, 2026. The text and repository-relative media are fixed to commit 0af55d0daeae with content hash 161c98dd9838; provider-hosted badges may update independently. SKILL.md commands are upstream documentation; use the type-correct primary action above and verify it against this pinned source.

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

Local Process Management

Starts a background server on 127.0.0.1:5815 and records its PID for later stopping.

Evidence ↗
Dependency Management

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

Human approved

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.

Next step

Compare ecosystem artifact types →

Subscribe to material changes for claude-paper-webui →