Skip to content
Back to skills

Webui

BSecurity

Start the Claude Paper web viewer to browse and study papers

  • 333 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 26, 2026
developmentbashnodeapi

Works with

  • api

Security analysis

B85/100
  • mediumUses curl or wget to download content
  • highPerforms destructive filesystem operations
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned May 27, 2026

npx -y skills add alaliqing/claude-paper --skill webui --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Webui?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Webui
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/alaliqing-webui/badge)](https://www.skillsdirectory.com/skills/alaliqing-webui)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: webui
description: Start the Claude Paper web viewer to browse and study papers
disable-model-invocation: false
allowed-tools: Bash
---

# 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):
```bash
if [ ! -f "${CLAUDE_PLUGIN_ROOT}/src/web/node_modules/.package-lock.json" ] || [ ! -d "${CLAUDE_PLUGIN_ROOT}/src/web/node_modules/@nuxt" ]; then
  if [ ! -d "${CLAUDE_PLUGIN_ROOT}/src/web/node_modules/@nuxt" ]; then
    echo "ERROR: node_modules is corrupted, performing clean install..."
    cd "${CLAUDE_PLUGIN_ROOT}/src/web"
    rm -rf node_modules package-lock.json
    npm install
    echo "Web dependencies installed!"
  else
    echo "First run - installing web dependencies..."
    cd "${CLAUDE_PLUGIN_ROOT}/src/web"
    npm install
    echo "Web dependencies installed!"
  fi
else
  echo "Dependencies already installed"
fi
```

## Step 2: Build Production Server (auto-rebuilds on plugin update)

Build if needed or if plugin version changed:
```bash
cd ${CLAUDE_PLUGIN_ROOT}/src/web

PLUGIN_VERSION=$(node -e "console.log(require('${CLAUDE_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):
```bash
# Get version info for comparison
PLUGIN_VERSION=$(node -e "console.log(require('${CLAUDE_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:
```bash
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:
```bash
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)
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.