Skip to content
cccskills
FreePublished on GitHub

ck:markdown-novel-viewer

View markdown files with calm, book-like reading experience via HTTP server. Use for long-form content, documentation preview, novel reading, report viewing, distraction-free reading.

The English summary is being prepared. Showing the original description.

See how to install

Files included (30)

  • SKILL.md8.9 KB
  • assets/directory-browser.css2.9 KB
  • assets/favicon.png1.8 KB
  • assets/novel-theme.css612 B
  • assets/reader.js25.0 KB
  • assets/styles/novel-theme-base.css1013 B
  • assets/styles/novel-theme-components.css3.4 KB
  • assets/styles/novel-theme-content.css2.8 KB
  • assets/styles/novel-theme-header.css3.9 KB
  • assets/styles/novel-theme-mermaid.css3.1 KB
  • assets/styles/novel-theme-overlays.css3.6 KB
  • assets/styles/novel-theme-responsive.css4.5 KB
  • assets/styles/novel-theme-sidebar.css6.2 KB
  • assets/styles/novel-theme-variables.css1.4 KB
  • assets/template.html6.0 KB
  • bun.lock2.5 KB
  • package.json419 B
  • scripts/lib/http-server.cjs11.4 KB
  • scripts/lib/markdown-renderer.cjs9.7 KB
  • scripts/lib/plan-navigator.cjs20.0 KB
  • scripts/lib/port-finder.cjs1.1 KB
  • scripts/lib/process-mgr.cjs3.2 KB
  • scripts/server.cjs12.4 KB
  • scripts/tests/server.test.cjs9.4 KB
  • tests/dashboard-assets.test.cjs10.5 KB
  • tests/dashboard-renderer.test.cjs10.9 KB
  • tests/http-server.test.cjs7.9 KB
  • tests/run-tests.cjs1.0 KB
  • tests/test-framework.cjs3.2 KB
  • tests/verify-xss.cjs3.4 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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:

# Option 1: Install via Codex Kit CLI (recommended)
ck init  # Runs install.sh which handles all skills

# Option 2: Manual installation
cd .agents/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

# View a markdown file
node .agents/skills/markdown-novel-viewer/scripts/server.cjs \
  --file ./plans/my-plan/plan.md \
  --open

# Browse a directory
node .agents/skills/markdown-novel-viewer/scripts/server.cjs \
  --dir ./plans \
  --host 0.0.0.0 \
  --open

# Background mode
node .agents/skills/markdown-novel-viewer/scripts/server.cjs \
  --file ./README.md \
  --background

# Stop all running servers
node .agents/skills/markdown-novel-viewer/scripts/server.cjs --stop

Skill Command

Use $preview for quick access:

$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

Mermaid.js Diagrams

  • Auto-renders mermaid code blocks as diagrams
  • Theme-aware (light/dark mode support)
  • Full-width toggle: Click diagram to expand/collapse
  • Error display with source preview for debugging

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

Focused Reader Mode

  • Auto-hide header: Header hides on scroll down, shows on scroll up
  • Progress bar: Always-visible horizontal progress bar tracks reading position
  • Distraction-free: Minimal UI that gets out of the way while reading
  • Smooth transitions: Gentle animations for header show/hide

Plan Navigation

  • Auto-detects plan directory structure
  • Accordion sidebar with status badges (✓ complete, ⏳ in progress)
  • Previous/Next navigation buttons
  • Auto-hide header with progress bar on scroll
  • Mobile FAB (floating action button) for navigation
  • Bottom sheet sidebar for mobile devices

Keyboard Shortcuts

First-time toast: Shows "Press ? for keyboard shortcuts" on first visit (auto-dismisses after 5s)

Available shortcuts:

  • ? - Show keyboard shortcuts cheatsheet (full-screen overlay)
  • T - Toggle theme (light/dark)
  • S - Toggle sidebar (desktop)
  • ← / → - Navigate previous/next phase
  • Esc - Close sidebar (mobile) or cheatsheet modal

Cheatsheet modal: Press ? to see all shortcuts in a full-screen overlay with backdrop blur. Close with Esc, × button, or backdrop click.

Mobile Optimization

  • FAB (Floating Action Button): Fixed bottom-right button for navigation on mobile
  • Bottom sheet: Slide-up sidebar with touch gestures
  • Touch-friendly: Larger tap targets, swipe gestures
  • Responsive breakpoint: Switches at 768px viewport width

CLI Options

OptionDescriptionDefault
--file <path>Markdown file to view-
--dir <path>Directory to browse-
--port <number>Server port3456
--host <addr>Host to bind (0.0.0.0 for remote)localhost
--openAuto-open browserfalse
--backgroundRun in backgroundfalse
--stopStop 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
├── reader.js                # Client-side interactivity
├── novel-theme.css          # Main theme file (imports modules)
├── directory-browser.css    # Directory browser styles
└── styles/                  # Modular CSS architecture
    ├── novel-theme-base.css       # Base colors, fonts, reset
    ├── novel-theme-typography.css # Headings, paragraphs, lists
    ├── novel-theme-code.css       # Code blocks, syntax highlighting
    ├── novel-theme-tables.css     # Table styling
    ├── novel-theme-links.css      # Link states, hover effects
    ├── novel-theme-layout.css     # Grid, spacing, containers
    ├── novel-theme-header.css     # Auto-hide header, progress bar
    ├── novel-theme-sidebar.css    # Accordion sidebar, status badges
    └── novel-theme-overlays.css   # Toast, cheatsheet modal

HTTP Routes

RouteDescription
/view?file=<path>Markdown file viewer
/browse?dir=<path>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:

--bg-primary: #faf8f3;      /* Warm cream */
--accent: #8b4513;          /* Saddle brown */

Dark mode:

--bg-primary: #1a1a1a;      /* Near black */
--accent: #d4a574;          /* Warm gold */

Content Width

--content-width: 720px;

Remote Access

To access from another device on your network:

# 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:

{
  "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

Mermaid.js Diagrams

Usage

Use fenced code blocks with mermaid language:

```mermaid
pie title Traffic Sources
    "Organic" : 45
    "Direct" : 30
    "Referral" : 25
```

Supported Diagram Types

TypeSyntaxUse Case
Flowchartflowchart LR/TB/TDProcess flows, decision trees
SequencesequenceDiagramAPI interactions, message flows
Piepie title "..."Distribution data
GanttganttProject timelines
XY Chartxychart-betaBar/line charts
MindmapmindmapIdea hierarchies
QuadrantquadrantChart2x2 matrices

Validating Mermaid Snippets

Quick validation: Use the Mermaid Live Editor to test syntax.

Common errors and fixes:

ErrorCauseFix
Parse errorInvalid syntaxCheck diagram type declaration
Unknown diagram typeTypo in declarationUse exact type: flowchart, not flow
Expecting tokenMissing quotes/bracketsEnsure balanced delimiters
UnknownDiagramErrorEmpty or malformed blockAdd valid diagram content

Fixing Common Issues

1. Flowchart arrows

%% Wrong: A -> B
%% Correct:
flowchart LR
    A --> B

2. Pie chart values

%% Wrong: "Label": 50%
%% Correct:
pie title Sales
    "Product A" : 50
    "Product B" : 30

3. XY Chart data format

xychart-beta
    title "Monthly Sales"
    x-axis [Jan, Feb, Mar]
    y-axis "Revenue" 0 --> 100
    bar [30, 45, 60]

4. Sequence diagram participants

sequenceDiagram
    participant A as Client
    participant B as Server
    A->>B: Request
    B-->>A: Response

Debug Mode

When a diagram fails to render, the viewer shows:

  • Error message
  • Expandable source code preview
  • Line number where parsing failed (when available)

Fix the syntax and refresh the page to re-render.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

AI-optimized browser automation CLI with context-efficient snapshots. Use for long autonomous sessions, self-verifying workflows, video recording, and cloud browser testing (Browserbase).

The English summary is being prepared. Showing the original description.

manhvann/codexkit89Updated Aug 29, 2026

Generate images via Nano Banana with 129 curated prompts. Mandatory validation interview refines style/mood/colors (use --skip to bypass). 3 modes: search, creative, wild. Styles: Ukiyo-e, Bento grid, cyberpunk, cinematic, vintage patent.

The English summary is being prepared. Showing the original description.

manhvann/codexkit89Updated Aug 29, 2026

Analyze images/audio/video with Gemini API (better vision than Codex). Generate images (Imagen 4), videos (Veo 3). Use for vision analysis, transcription, OCR, design extraction, multimodal AI.

The English summary is being prepared. Showing the original description.

manhvann/codexkit89Updated Aug 29, 2026

ck:ask

Free

Answer technical and architectural questions with expert consultation.

The English summary is being prepared. Showing the original description.

manhvann/codexkit89Updated Aug 29, 2026

Build backends with Node.js, Python, Go (NestJS, FastAPI, Django). Use for REST/GraphQL/gRPC APIs, auth (OAuth, JWT), databases, microservices, security (OWASP), Docker/K8s.

The English summary is being prepared. Showing the original description.

manhvann/codexkit89Updated Aug 29, 2026

Add authentication with Better Auth (TypeScript). Use for email/password, OAuth providers (Google, GitHub), 2FA/MFA, passkeys/WebAuthn, sessions, RBAC, rate limiting.

The English summary is being prepared. Showing the original description.

manhvann/codexkit89Updated Aug 29, 2026

See all skills by manhvann

Report a problem with this skill