Markdown reader
Serve any markdown file or directory as a calm, book-like reader via a local HTTP server (127.0.0.1 only). Best for long-form documents — RFCs, runbooks, design docs, plan files — where comfortable in-browser reading matters. Supports Mermaid diagrams, dark/light mode, plan navigation sidebar, and keyboard shortcuts. Requires explicit start and stop lifecycle.From its SKILL.md
npx -y skills add ngocsangyem/MeowKit --skill markdown-readerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 15 stars15 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.2 KB, 526 tokens by cl100k_base, as published. Nobody here has run it
mk:markdown-reader
Local HTTP server rendering markdown files with a calm, book-like reading experience.
Note: mk:brainstorming --html and mk:plan-creator --html produce self-contained
HTML files that open directly in the browser — they do not use or need this server.
Installation (Required Before First Use)
This skill requires npm dependencies. Install once from the project root:
cd .claude/skills/markdown-reader
npm install
Dependencies: marked, highlight.js, gray-matter
Without installation you will get Error 500: Error rendering markdown.
Usage
# View a markdown file (opens browser automatically)
node .claude/skills/markdown-reader/scripts/server.cjs \
--file ./tasks/plans/my-plan/plan.md
# Browse a directory
node .claude/skills/markdown-reader/scripts/server.cjs \
--dir ./tasks/plans
# Background mode (foreground process for Claude Code task runners)
node .claude/skills/markdown-reader/scripts/server.cjs \
--file ./README.md \
--foreground
# Stop all running instances
node .claude/skills/markdown-reader/scripts/server.cjs --stop
The server binds to 127.0.0.1 (localhost) only. Served files are not reachable from
other devices on the network — this is intentional.
Lifecycle
Start with --file or --dir; use --foreground when the host needs to keep the process
attached. The default port is 3456 and increments through 3500 if busy. End the lifecycle with
--stop; never leave a reader process running after the task.
| Need | Route |
|---|---|
| CLI flags, routes, persistent state | references/reader-operations.md |
| Reader features, plan navigation, shortcuts, Mermaid | references/reader-experience.md |
| Architecture and troubleshooting | references/reader-operations.md |
The server binds only to 127.0.0.1. It validates every file against its allowed directories;
traversal attempts return 403. Referenced images must be relative to the source markdown file.
Self-contained HTML from mk:brainstorming --html or mk:plan-creator --html opens directly
and does not need this server.
What ships with it: 24 files
138.4 KB alongside SKILL.md, 8 of them executable
assets/
- directory-browser.css2.9 KB
- favicon.ico15.0 KB
- novel-theme.css612 B
- reader.jsruns25.5 KB
- styles/novel-theme-base.css1013 B
- styles/novel-theme-components.css3.8 KB
- styles/novel-theme-content.css2.9 KB
- styles/novel-theme-header.css3.9 KB
- styles/novel-theme-mermaid.css3.1 KB
- styles/novel-theme-overlays.css3.6 KB
- styles/novel-theme-responsive.css4.5 KB
- styles/novel-theme-sidebar.css6.2 KB
- styles/novel-theme-variables.css1.4 KB
- template.html6.0 KB
references/
- reader-experience.md625 B
- reader-operations.md1.1 KB
scripts/
- lib/http-server.cjsruns11.4 KB
- lib/markdown-renderer.cjsruns9.7 KB
- lib/plan-navigator.cjsruns10.1 KB
- lib/plan-table-parser.cjsruns9.9 KB
- lib/port-finder.cjsruns1.2 KB
- lib/process-mgr.cjsruns3.7 KB
- server.cjsruns9.6 KB
- package.json368 B