From monograph
Build a multi-page PhD-level GitHub Pages site on any topic — long-form scholarly essay, free-licensed photography, a distinctive topic-tuned design, all built by a team of parallel expert subagents and shipped to docs/
How this skill is triggered — by the user, by Claude, or both
Slash command
/monograph:monograph [topic][topic]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill orchestrates a team of parallel subagents to produce a multi-page, PhD-level long-form essay site about a single subject. The output lives in `docs/` so GitHub Pages can serve it directly from `main:/docs`.
This skill orchestrates a team of parallel subagents to produce a multi-page, PhD-level long-form essay site about a single subject. The output lives in docs/ so GitHub Pages can serve it directly from main:/docs.
The design is chosen fresh for every topic — there is no template aesthetic. Two topics, two sites that look nothing alike.
A 6-page (typical) site:
docs/
├── index.html # hero · abstract · master chronology/table-of-contents · chapter cards
├── <chapter-1>.html # ~1,200–2,200 words, frontispiece, sub-sections, figures, sidenotes, footnotes
├── <chapter-2>.html # …
├── <chapter-3>.html
├── <chapter-4>.html # (chapter count: 3–5 depending on topic depth)
├── references.html # full bibliography + per-image attribution
└── assets/
├── css/main.css # single cohesive design system — written fresh per topic
├── js/main.js # the signature element + small interactions
└── images/*.{jpg,png} # CC-licensed photography only
Body essay is 8,000–12,000 words across all pages. Bibliography is 30–50 sources. Images: 15–30 Wikimedia Commons / CC-licensed photographs with full attribution.
You are the orchestrator. You make the topic-shaping decisions, write the design system, build the index/references pages, and verify the result. You delegate three kinds of work to subagents (via the Agent tool, subagent_type: general-purpose):
| Agent | Count | Job |
|---|---|---|
| Research | 1 | Produce a 4,000–6,000 word source-of-truth dossier with academic-style citations |
| Image research | 1 | Find + download CC-licensed photographs from Wikimedia Commons; write a manifest with attribution |
| Chapter builders | 3–5 | One per chapter — each receives the design system + relevant research excerpt + image list + strict structural brief |
Spawn the Research and Image agents in parallel at the start. Spawn the Chapter builders in parallel after the design system + index are written.
Use $ARGUMENTS if provided. If empty or vague, ask the user:
AskUserQuestion:
question: "What's the topic?"
options: (skip — accept free-form text)
Then ask one follow-up if the topic is broad enough to need scoping:
Aim for a topic that admits a chronological or thematic arc with 3–5 natural chapter divisions and has enough free-licensed photography available to illustrate it. If the topic fails the second test (e.g. "a living politician's 2024 campaign"), say so and propose adjacent topics that pass.
Decide:
casio-history, jazz-1917-1960, apollo-program). If you are inside an existing git repo, use the repo name and skip this step.docs/ at the repo root. Create docs/assets/css/, docs/assets/js/, docs/assets/images/, and a top-level _research/ directory.Spawn both in a single message with two Agent tool calls.
Brief the agent with the topic, the chapter outline you decided, and the output path _research/dossier.md. Tell it:
[N] inline.WebSearch and WebFetch extensively.Brief the agent with:
docs/assets/images/ as <kebab-case-subject>.{jpg|png|webp}.curl -L -A "MonographResearch/1.0 (research)" -o <path> <url> — Wikimedia 429-rate-limits the default curl user agent._research/image_manifest.md with, for each image: filename, what it depicts, source URL, license (CC0/CC BY/CC BY-SA/PD), attribution string ("Photo: NAME / Wikimedia Commons, CC BY-SA 4.0"), resolution.While the subagents work, you can move ahead to Phase 3.
This is the most important decision in the project. Two topics should never look alike. Commit to a bold, topic-appropriate direction before you write any CSS.
Think through these axes, in this order:
Tonal register. The topic dictates this. Possible registers:
Signature element. Pick ONE distinctive, persistent UI element that recurs on every page and that telegraphs the topic in one glance. The Casio site uses a live ticking seven-segment LCD clock in the masthead. Equivalents for other topics:
Typography pairing. Distinctive display × refined body × technical mono. Never Inter / Roboto / Arial on the display. Cycle through pairings — never reuse one within a session:
| Display | Body | Mono | Mood |
|---|---|---|---|
| Fraunces | Newsreader | JetBrains Mono | editorial warmth |
| Recoleta | Source Serif Pro | IBM Plex Mono | confident scholarly |
| GT Sectra | Cormorant Garamond | Berkeley Mono | high-contrast academic |
| Söhne Breit | Söhne | Söhne Mono | Swiss-modernist |
| PP Editorial New | PP Editorial New | JetBrains Mono | broadsheet |
| Druk | Tiempos Text | GT America Mono | magazine-bold |
| Migra | Lyon Text | Söhne Mono | luxury-editorial |
| Reckless | Domaine Display × Calibre | Roboto Mono | indie-publisher |
| Apoc | Apoc | Berkeley Mono | techno-modernist |
| Bagoss | Bagoss | Diatype Mono | next-millennium |
(Many of these are paid foundry fonts. For a free build, prefer Google Fonts equivalents: Fraunces, Newsreader, Crimson Pro, Cormorant, Bitter, Bricolage Grotesque, Instrument Serif, Old Standard TT, Spectral, Cardo. Pair with JetBrains Mono / Space Mono / Share Tech Mono / VT323 for technical/signal accents.)
Palette. Commit to ~5–6 colors: paper, ink, ink-muted, rule, one or two signal colors used very sparingly. Avoid 8-color palettes — they read as soup. The signal color must be hot enough to register but rare enough to mean something. Examples that work: cinnabar #b8341c, hunter green #1f6b32, cobalt #1b3a8c, amber #c87b1e, oxblood #8c2310.
Background. Solid color rarely. Almost always: paper tone + subtle paper-grain SVG noise (15–45% opacity, multiply blend) + faint radial gradients at the corners. Or, for darker themes: a near-black base with a single dim spotlight gradient.
Layout primitives. Adopt these structural patterns — proven on the Casio build, and topic-agnostic:
.masthead — sticky top, with mark + nav + signature element.frontispiece — chapter title block: roman numeral, era stamp, large headline, deck.spread — 2-column grid: body-col (≈640px) + margin (≈280px for sidenotes). Collapses to one column under ~1080px..lcd-strip (or your topic's equivalent) — full-width divider strip with the signature visual idiom.figure — bordered card: image + metadata <dl> + italic caption with bold Plate N opener.specsheet (or .dossier, .gazetteer, etc.) — bordered technical reference table appropriate to topic.specimen-grid — 2- or 3-up image comparison gridblockquote.tribune — centered pull quote with large quotation marks.timeline-row — year + event + tag, on rules.sidenote — margin note with <span class="label"> header.footnotes — numbered scholarly notes block at chapter end.colophon-foot — three-column footer with about / chapters / apparatusMotion. One well-orchestrated hero entrance (staggered fade) is plenty. Avoid scattered hover micro-interactions. The signature element should have its own life (ticking clock, rotating elevation, pulsing locator). Otherwise restraint.
Write up the chosen direction in a short _research/design_brief.md file (~200 words) — palette tokens, font picks, signature element concept, layout primitives. This will be referenced by all chapter builders so they stay coherent.
When the research dossier and image manifest are in, write:
docs/assets/css/main.css — a complete design system (500–800 lines is normal). Use CSS custom properties for tokens. Implement every layout primitive listed above. Include a paper-grain SVG noise overlay. Include print styles. Do not import or copy verbatim from a previous build — every property is a fresh decision shaped by the design brief.
docs/assets/js/main.js — small vanilla JS (100–200 lines). Implements:
IntersectionObserver for .reveal if you use scroll-triggered fades (avoid on the master chronology — it appears empty in first paint and in screenshots)docs/index.html — the reference page that establishes every pattern. Includes:
.masthead with mark + nav + signature element.hero with colophon strip, meta line, big .h-display headline (with one italicized accent word in the signal color), deck, byline.lcd-strip-equivalent divider.lede drop-cap paragraph and 2–3 sidenotes.timeline or whatever the topic suggests — for non-chronological topics, use a thematic index).specimen-grid (or topic equivalent), pulled from the image manifestblockquote.tribune.fn references on this page).colophon-foot footerUse the actual sourced photographs in the specimen grid. Cite specific dates / names / figures from the dossier — no placeholder text, ever.
For each chapter, spawn one agent with a brief that includes:
docs/index.html (the reference page) and docs/assets/css/main.css (the design system) and _research/dossier.md (the source content) and _research/design_brief.md (the design rationale).docs/<chapter-slug>.html.index.html, change <title>, set aria-current="page" on the active nav link..h-display with italicized accent, deck) → divider strip → opening spread with .lede drop-cap → 4–7 sub-sections each as <section class="spread"> with body + margin sidenotes → at least one blockquote class="tribune" → footnotes block → next-chapter link..figure-meta dl (Ref / Date / Photo / License) and a <figcaption> starting with <b>Plate N</b>..specsheet per chapter if the topic supports it.<a class="fn" href="#fn-N" id="fnref-N">N</a> linking to a <div class="footnotes"> at the bottom.<span class="model-no">…</span> (or rename to a topic-appropriate class — <span class="ref">, <span class="serial">). Use <span class="numeral">…</span> for tabular figures.Send all chapter-builder Agent calls in a single message with multiple tool_use blocks. They run in parallel.
Write docs/references.html:
§ mark instead of a chapter numberAuthor. "Title." Publication, date. URL. Use decimal-leading-zero counters for visual rhythm.Total · N plates · CC BY · N · CC BY-SA · N · …).Start a local server and use Playwright to verify:
cd docs && python3 -m http.server 4173 > /tmp/monograph-server.log 2>&1 &
For each page:
browser_navigate to http://localhost:4173/<page>.html?v=1 (cache-bust)browser_evaluate: force-eager all images (img.loading = 'eager') and wait ~2sbrowser_evaluate: verify all images loaded (naturalWidth > 0); force-reveal anything with .reveal so it shows in screenshotsbrowser_take_screenshot with fullPage: true to _research/screenshots/<n>-<page>.jpgRead the screenshot. Visually verify layout, type, image placement.Common issues:
.reveal { opacity: 0 } waiting for an IntersectionObserver that never fires in a stitched screenshot OR in a user who hasn't scrolled yet. Fix: strip .reveal from any element above the third fold; trust the hero animation as the only motion moment.loading="lazy" not firing. In production this is fine for real users; for screenshot verification, force-eager.grep -c if you suspect duplication; trust the HTML.Kill the server when done: kill <PID>.
Don't push without asking. When the user says "ship" / "push" / "deploy":
.gitignore excluding .playwright-mcp/, .DS_Store, etc.docs/, _research/, .gitignore — never git add -A.git push -u origin main.gh api -X POST repos/<owner>/<repo>/pages -f "source[branch]=main" -f "source[path]=/docs".gh api repos/<owner>/<repo>/pages/builds/latest --jq .status until built.The site must:
Surface the concern; propose an adjacent topic that works.
A full monograph build costs roughly 500K–800K tokens across all agents. The user should know this before you start a build on a tight budget. If they explicitly want a smaller build:
But never compromise on: aesthetic distinctiveness, working signature element, real sourced facts, full image attribution.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub mikersays/mikersays-plugins --plugin monograph