{"slug": "show-hn-slideops-slides-from-a-repo-that-flag-when-they-drift-from-the-code", "title": "Show HN: SlideOps, slides from a repo that flag when they drift from the code", "summary": "SlideOps, a new tool from developer glukicov, generates slide decks from a repository's code and flags when the slides drift from the code, treating documentation as a build artifact. It works as a pair of Agent Skills for Claude Code and other coding agents, with a Python freshness checker that runs in milliseconds without a model or network. The tool is available via a GitHub repository and supports multiple agents including Codex, Copilot CLI, and OpenCode.", "body_md": "*The demo deck is 17 slides about SlideOps, built by SlideOps: open the\nHTML or the\nPDF.*\n\nWriting documentation isn't the bottleneck any more. Keeping it true is. The deck that said we run two database migrations still says two, a year after we started running ten 😅.\n\nSlideOps is a pair of [Agent Skills](https://agentskills.io/specification) for Claude Code\nand compatible coding agents. It treats a generated document the way you'd treat generated\ncode: it's built from a source, and it records which source it came from.\n\nThe reasoning behind it is written up in\n** Your documentation is a build artifact. Start treating it like one**.\n\n*Press Esc in any deck for the overview grid.*\n\n**Claude Code.** This repo is its own marketplace, so two lines are the whole setup, and\nit's the only install that keeps itself up to date:\n\n```\n/plugin marketplace add glukicov/slideops\n/plugin install slideops@slideops\n```\n\n**Codex, Copilot CLI, OpenCode**, or a plain checkout:\n\n```\ngit clone https://github.com/glukicov/slideops && cd slideops\n./install.sh\n```\n\nAll four agents read `SKILL.md`\n\nand nothing needs porting between them. For the symlink and\nsnapshot installs, the per-agent table and how updates reach you, see\n** docs/install.md**.\n\nNote\n\nThird-party marketplaces have **auto-update off by default**. Turn it on once in\n`/plugin`\n\n→ **Marketplaces**, or new versions only arrive when you run\n`/plugin marketplace update slideops`\n\nby hand.\n\nOpen a repository and say:\n\nSlideOps scans the repo first, then asks one compact set of questions: which topic (it proposes concrete candidates it found, each with a \"why now\"), audience, length, theme and extras. You get an outline to approve before it writes any HTML.\n\nIf you already know what you want, skip the intake:\n\nMonths later, in the same repository:\n\nThe agent sweeps the deck folder and triages by status. It re-quotes whatever merely moved,\nand flags the slides whose *claim* might no longer hold. It repairs what drifted instead of\nregenerating the deck, so the pacing and narrative you signed off on the first time survive.\n\n-\n**Freshness checking.**`scripts/check.py`\n\nsweeps a whole`docs/slides/`\n\nfolder and reports which slides cite code that has changed, moved or vanished since the deck was built, then suggests the fix or hands an agent a JSON repair brief. No model, no network, no tokens: standard library Python, and it runs in milliseconds. -\n**One self-contained file per deck.** No build step, no CDN, works offline, attaches to an email. -\n**Navigation:** arrow keys, click-to-advance, URL hash deep links, an Esc-toggled overview grid, and speaker notes on`N`\n\n(never visible in screenshots or exports). -\n**13 slide patterns:** title, agenda, section divider, prose + cards, reference table, before/after code, annotated snippet (half and full width), flow diagram, lane comparison, image + caption, chat bubbles, closing. -\n**4 themes, one block each.** Every color derives from a single`:root`\n\ntoken block via`color-mix()`\n\n, so switching theme is one replacement:**Ledger Light**(default),** Ledger Dark**,** Midnight**,** Graphite**. Or point it at a brand's real CSS values and map those onto the token roles.Ledger Light (default) Ledger Dark *Same deck, same markup, same content.**One*`:root`\n\nblock apart. -\n**Mermaid diagrams** pre-rendered to inline SVG at build time and themed from the deck's own tokens, so the deck stays dependency-free. -\n**Verified PDF export.** The companion skill renders the finished PDF back to images and checks the pages, because a PDF can have the right page count and still hand you blank images.\n\n| Page | What's in it |\n|---|---|\n| 📦\n|\nEvery install path, all four agents, updating, requirements, what gets installed |\n| 🔎\n|\nCitations, the status table, the cost model, where to automate, the accuracy contract, what never reaches a slide |\n| 🛠️\n|\nWorking on this repository: the gate, CI guards, generated artifacts, releasing |\n| 📋\n|\nWhat changed in each release |\n\nInside the skill, `skills/slideops/references/`\n\nholds the specifications the agent reads:\nfreshness, automation, style, themes, diagrams and verification.\n\nPrior art worth knowing: [frontend-slides](https://github.com/zarazhangrui/frontend-slides)\nfor visual-first theme selection, and\n[presentation-skills](https://github.com/ktundwal/presentation-skills) for pioneering the\nrender-then-look visual QA loop that SlideOps also relies on. What SlideOps adds is the\n*Ops* half: content grounded in a repository, and a cheap way to ask later whether it still\nholds.\n\nMIT. See [LICENSE](/glukicov/slideops/blob/main/LICENSE). Use it, fork it, ship it commercially; attribution is the only\ncondition. The decks you generate are your own content either way.", "url": "https://wpnews.pro/news/show-hn-slideops-slides-from-a-repo-that-flag-when-they-drift-from-the-code", "canonical_source": "https://github.com/glukicov/slideops", "published_at": "2026-08-31 12:15:10+00:00", "updated_at": "2026-08-31 13:55:04.991911+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "ai-agents"], "entities": ["SlideOps", "glukicov", "Claude Code", "Codex", "Copilot CLI", "OpenCode", "Agent Skills", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/show-hn-slideops-slides-from-a-repo-that-flag-when-they-drift-from-the-code", "markdown": "https://wpnews.pro/news/show-hn-slideops-slides-from-a-repo-that-flag-when-they-drift-from-the-code.md", "text": "https://wpnews.pro/news/show-hn-slideops-slides-from-a-repo-that-flag-when-they-drift-from-the-code.txt", "jsonld": "https://wpnews.pro/news/show-hn-slideops-slides-from-a-repo-that-flag-when-they-drift-from-the-code.jsonld"}}