From yt-ribosome
Serve a folder of generated `.html` blogs as an Obsidian-like web app: a
How this skill is triggered — by the user, by Claude, or both
Slash command
/yt-ribosome:blog-libraryThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Serve a folder of generated `.html` blogs as an Obsidian-like web app: a
Serve a folder of generated .html blogs as an Obsidian-like web app: a
collapsible file-tree sidebar on the left, a content viewer on the right.
Designed to browse full-blog output, but works on any directory of HTML.
Run the bundled server — it scans the directory and serves a single-page UI.
python3 "${CLAUDE_PLUGIN_ROOT}/skills/blog-library/scripts/blog_browser.py" "<BLOGS_DIR>" [--port 8800]
file:// iframes from loading sibling file:// documents, which
would break the content viewer. Serving over HTTP sidesteps that and lets
relative image paths resolve.full-blog output this is the --out-dir you rendered into.--no-open to suppress). Pass --port N if 8800 is taken..html files.
File labels strip a leading NN. index and the .html extension.X is omitted when a sibling
X.html exists — that directory only holds the blog's frame images, so
showing it would double every entry. (This matches full-blog's output
layout: Title.html + Title/ image folder.).obsidian, .git,
.playwright-cli, .DS_Store), __pycache__, _run_summary.json, and a
top-level index.html.translate skill) render the same way —
the viewer is content-agnostic.scripts/blog_browser.py — the standalone server + inline SPA (run it).npx claudepluginhub ssfskim/yt-ribosome --plugin yt-ribosomeCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.