By XBlueSky
Daily tech news skill for the vatt-ghern public blog (Eleventy + Cloudflare Pages). Drafts one roundup + several deep-story HTML posts per day, opens a PR for review.
Author today's vatt-ghern daily news (1 roundup + up to 3 deep-stories) and open a PR.
Author a monthly rollup synthesising the past month of vatt-ghern posts. Opens a PR.
Author a weekly rollup synthesising the past 7 days of vatt-ghern posts. Opens a PR.
Public personal tech blog. Daily news authored by a Claude routine. Bespoke HTML deep-stories, persona-driven editing, CJK typography, hosted on Cloudflare Pages.
| Surface | What it is |
|---|---|
src/posts/YYYY/MM/DD/ | Bespoke HTML for one daily roundup + up to three deep-stories |
src/_includes/layouts/ | Nunjucks layouts (base, post, archetype) |
src/_includes/widgets/ | Reusable catalog widgets — summon with {% widget "name" %}; gallery at /widgets/ |
src/_data/sources.yml | 45 priority-tiered sources the daily-news skill crawls |
skills/daily-news/ | Claude skill: persona, archetypes, source dispatcher, anti-dup |
commands/ | Slash commands: /vatt-ghern:daily-news, :weekly, :monthly |
mcp/ | Cloudflare Worker exposing the archive over MCP |
scripts/ | Build helpers (OG image, today.svg card, sigil) |
nvm use # node 20 per .nvmrc
npm install
npm run dev # http://localhost:8080
npm run build # writes _site/ (runs prebuild: OG + today.svg)
npm run lint:html # validates _site/**/*.html
npm test # node --test tests/*.mjs
Useful one-offs:
npm run og # rebuild OG images
npm run card # rebuild today.svg
npm run social # rebuild repo social preview
npm run sigil # rebuild sigil webp variants
npm run widgets:catalog # refresh routine-facing widget-catalog.md from sidecars
npm run sources:list # list daily-news sources
npm run sources:dry-run -- --type=arxiv # dry-fetch one source type
The repo's GitHub social preview image is src/static/social-preview.png
(1280×640). After regenerating, upload via the GitHub web UI at
Settings → Social preview.
Cloudflare Pages auto-builds:
main → production at https://vatt-ghern.pages.devGitHub Actions runs .github/workflows/quality.yml (build + html-validate) on every PR.
The Claude routine (or /vatt-ghern:daily-news slash command) executes
the daily-news skill which:
src/_data/sources.yml via scripts/fetch-all.mjsWeekly + monthly rollups follow the same machinery via
/vatt-ghern:weekly and /vatt-ghern:monthly.
mcp/worker.mjs is a thin Cloudflare Worker that exposes the archive
over MCP — list_posts, get_post, latest, search. See
mcp/README.md for tool schemas and Claude Desktop
config.
MIT © 2026 Tony Hu.
The MIT licence applies to all code and templates. Authored prose
inside src/posts/** carries the author's voice — please credit if you
quote at length.
DESIGN.md — design rationale (typography, OKLCH palette, sigil)PRODUCT.md — product vision, anti-references, pipeline notesCONTRIBUTING.md — commit conventions, CJK typography rulesSECURITY.md — how to report vulnerabilitiesOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
npx claudepluginhub xbluesky/vatt-ghern --plugin vatt-ghernComprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Write feature specs, plan roadmaps, and synthesize user research faster. Keep stakeholders updated and stay ahead of the competitive landscape.