markdown-novel-viewer
Original:🇺🇸 English
Translated
14 scripts
[Content] Background HTTP server rendering markdown files with calm, book-like reading experience.
34installs
Sourceduc01226/easyplatform
Added on
NPX Install
npx skill4agent add duc01226/easyplatform markdown-novel-viewerTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →[IMPORTANT] Useto break ALL work into small tasks BEFORE starting — including tasks for each file read. This prevents context loss from long files. For simple tasks, AI MUST ask user whether to skip.TaskCreate
Quick Summary
Goal: Background HTTP server that renders markdown files with a calm, book-like reading UI and browses directories.
Workflow:
- Start Server — Point at a markdown file or directory with CLI options
- View Content — Novel-themed reader (serif fonts, warm colors) or directory browser
- Navigate Plans — Auto-detects plan structures with sidebar, phase status, keyboard shortcuts
Key Rules:
- Requires before first use (marked, highlight.js, gray-matter)
npm install - Use slash command for quick access
/preview - Supports background mode, remote access via
--host 0.0.0.0
Be skeptical. Apply critical thinking, sequential thinking. Every claim needs traced proof.
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 installDependencies: , ,
markedhighlight.jsgray-matterWithout 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 --stopSlash Command
Use for quick access:
/previewbash
/preview plans/my-plan/plan.md # View markdown file
/preview plans/ # Browse directory
/preview --stop # Stop serverFeatures
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
- - Toggle theme
T - - Toggle sidebar
S - - Navigate phases
Left/Right - - Close sidebar (mobile)
Escape
CLI Options
| Option | Description | Default |
|---|---|---|
| Markdown file to view | - |
| Directory to browse | - |
| Server port | 3456 |
| Host to bind ( | localhost |
| Auto-open browser | false |
| Run in background | false |
| 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 stylesHTTP Routes
| Route | Description |
|---|---|
| Markdown file viewer |
| Directory browser |
| Static assets |
| Local file serving (images) |
Dependencies
- Node.js built-in: ,
http,fs,pathnet - npm: ,
marked,highlight.js(installed viagray-matter)npm install
Customization
Theme Colors (CSS Variables)
Light mode variables in :
assets/novel-theme.csscss
--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 3456When using , the server auto-detects your local network IP and includes it in the output:
--host 0.0.0.0json
{
"success": true,
"url": "http://localhost:3456/view?file=...",
"networkUrl": "http://192.168.2.75:3456/view?file=...",
"port": 3456
}Use to access from other devices on the same network.
networkUrlTroubleshooting
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 for stale PID files
/tmp/md-novel-viewer-*.pidRemote access denied: Use to bind to all interfaces
--host 0.0.0.0IMPORTANT Task Planning Notes (MUST FOLLOW)
- Always plan and break work into many small todo tasks
- Always add a final review todo task to verify work quality and identify fixes/enhancements