🎯

markdown-novel-viewer

🎯Skill

from duc01226/easyplatform

VibeIndex|
What it does

markdown-novel-viewer skill from duc01226/easyplatform

πŸ“¦

Part of

duc01226/easyplatform(87 items)

markdown-novel-viewer

Installation

Node.jsRun Node.js server
node .claude/skills/markdown-novel-viewer/scripts/server.cjs \
Node.jsRun Node.js server
node server.cjs --file ./README.md --host 0.0.0.0 --port 3456
πŸ“– Extracted from docs: duc01226/easyplatform
6Installs
3
-
Last UpdatedJan 29, 2026

Skill Details

SKILL.md

Background HTTP server rendering markdown files with calm, book-like reading experience. Use when viewing markdown files or directories in browser.

Overview

# markdown-novel-viewer

Background HTTP server rendering markdown files with calm, book-like reading experience.

⚠️ Installation Required

This skill requires npm dependencies. Run one of the following:

```bash

# Option 1: Install via ClaudeKit CLI (recommended)

ck init # Runs install.sh which handles all skills

# Option 2: Manual installation

cd .claude/skills/markdown-novel-viewer

npm install

```

Dependencies: marked, highlight.js, gray-matter

Without installation, you'll get Error 500: Error rendering markdown.

Purpose

Universal viewer - pass ANY path and view it:

  • Markdown files β†’ novel-reader UI with serif fonts, warm theme
  • Directories β†’ file listing browser with clickable links

Quick Start

```bash

# View a markdown file

node .claude/skills/markdown-novel-viewer/scripts/server.cjs \

--file ./plans/my-plan/plan.md \

--open

# Browse a directory

node .claude/skills/markdown-novel-viewer/scripts/server.cjs \

--dir ./plans \

--host 0.0.0.0 \

--open

# Background mode

node .claude/skills/markdown-novel-viewer/scripts/server.cjs \

--file ./README.md \

--background

# Stop all running servers

node $HOME/.claude/skills/markdown-novel-viewer/scripts/server.cjs --stop

```

Slash Command

Use /preview for quick access:

```bash

/preview plans/my-plan/plan.md # View markdown file

/preview plans/ # Browse directory

/preview --stop # Stop server

```

Features

Novel Theme

  • Warm cream background (light mode)
  • Dark mode with warm gold accents
  • Libre Baskerville serif headings
  • Inter body text, JetBrains Mono code
  • Maximum 720px content width

Directory Browser

  • Clean file listing with emoji icons
  • Markdown files link to viewer
  • Folders link to sub-directories
  • Parent directory navigation (..)
  • Light/dark mode support

Plan Navigation

  • Auto-detects plan directory structure
  • Sidebar shows all phases with status indicators
  • Previous/Next navigation buttons
  • Keyboard shortcuts: Arrow Left/Right

Keyboard Shortcuts

  • T - Toggle theme
  • S - Toggle sidebar
  • Left/Right - Navigate phases
  • Escape - Close sidebar (mobile)

CLI Options

| Option | Description | Default |

| ----------------- | ----------------------------------- | --------- |

| --file | Markdown file to view | - |

| --dir | Directory to browse | - |

| --port | Server port | 3456 |

| --host | Host to bind (0.0.0.0 for remote) | localhost |

| --open | Auto-open browser | false |

| --background | Run in background | false |

| --stop | Stop all servers | - |

Architecture

```

scripts/

β”œβ”€β”€ server.cjs # Main entry point

└── lib/

β”œβ”€β”€ port-finder.cjs # Dynamic port allocation

β”œβ”€β”€ process-mgr.cjs # PID file management

β”œβ”€β”€ http-server.cjs # Core HTTP routing (/view, /browse)

β”œβ”€β”€ markdown-renderer.cjs # MDβ†’HTML conversion

└── plan-navigator.cjs # Plan detection & nav

assets/

β”œβ”€β”€ template.html # Markdown viewer template

β”œβ”€β”€ novel-theme.css # Combined light/dark theme

β”œβ”€β”€ reader.js # Client-side interactivity

β”œβ”€β”€ directory-browser.css # Directory browser styles

```

HTTP Routes

| Route | Description |

| -------------------- | --------------------------- |

| /view?file= | Markdown file viewer |

| /browse?dir= | Directory browser |

| /assets/* | Static assets |

| /file/* | Local file serving (images) |

Dependencies

  • Node.js built-in: http, fs, path, net
  • npm: marked, highlight.js, gray-matter (installed via npm install)

Customization

Theme Colors (CSS Variables)

Light mode variables in assets/novel-theme.css:

```css

--bg-primary: #faf8f3; / Warm cream /

--accent: #8b4513; / Saddle brown /

```

Dark mode:

```css

--bg-primary: #1a1a1a; / Near black /

--accent: #d4a574; / Warm gold /

```

Content Width

```css

--content-width: 720px;

```

Remote Access

To access from another device on your network:

```bash

# Start with 0.0.0.0 to bind to all interfaces

node server.cjs --file ./README.md --host 0.0.0.0 --port 3456

```

When using --host 0.0.0.0, the server auto-detects your local network IP and includes it in the output:

```json

{

"success": true,

"url": "http://localhost:3456/view?file=...",

"networkUrl": "http://192.168.2.75:3456/view?file=...",

"port": 3456

}

```

Use networkUrl to access from other devices on the same network.

Troubleshooting

Port in use: Server auto-increments to next available port (3456-3500)

Images not loading: Ensure image paths are relative to markdown file

Server won't stop: Check /tmp/md-novel-viewer-*.pid for stale PID files

Remote access denied: Use --host 0.0.0.0 to bind to all interfaces

IMPORTANT Task Planning Notes

  • Always plan and break many small todo tasks
  • Always add a final review todo task to review the works done at the end to find any fix or enhancement needed