Skip to content
Research
Skill

/openkb-deck-editorial

Use when the user asks the openkb chat to make a deck / slide presentation / PPT / slides / 演示稿 / 幻灯片 from their compiled KB content. Generates a polished single-file HTML deck in the Editorial Monocle visual direction (warm cream background, serif type, brick-red accent) —

BOOST
From plugin
openkb
4.8k4 skills
Install
$ npx -y skills add vectifyai/openkb --skill openkb-deck-editorial --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/openkb-deck-editorial

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when the user asks the openkb chat to make a deck / slide presentation / PPT / slides / 演示稿 / 幻灯片 from their compiled KB content. Generates a polished single-file HTML deck in the Editorial Monocle visual direction (warm cream background, serif type, brick-red accent) —

SKILL.md

openkb-deck-editorial.SKILL.md
name: openkb-deck-editorial
description: |
  Use when the user asks the openkb chat to make a deck / slide presentation /
  PPT / slides / 演示稿 / 幻灯片 from their compiled KB content. Generates a
  polished single-file HTML deck in the Editorial Monocle visual direction
  (warm cream background, serif type, brick-red accent) — designed to be
  opened in a browser, full-screened, and shared. Does NOT apply to
  generating skills (that's `openkb skill new`), long-form research reports,
  or interactive prototypes.
od:
  mode: deck
  output_path_template: "output/decks/{slug}/index.html"
  deck_grammar:
    kind_attr: data-type
    required: [cover, closing]
    allowed: [cover, chapter, thesis, quote, compare, data, closing]
    min_distinct: 4
    max_consecutive_same: 2

Editorial Monocle deck skill

You are designing a presentation, not writing a research report. Each slide carries one idea. Visual structure carries the narrative.

How this skill is invoked

The user typed something like "make a deck about X" inside `openkb chat`. You have wiki-read tools in your normal tool set, plus a `write_file` tool that can write under `output/**`, plus a shell tool you can use to read this SKILL.md and any files in `skills/openkb-deck-editorial/` if needed.

Pick a kebab-case slug for the deck (e.g. `transformers-pitch`) and write the output to `output/decks/<slug>/index.html`.

Required output

Exactly one file: `output/decks/<slug>/index.html`.

It must be **self-contained**: no external `<link rel="stylesheet">`, no external `<script src="…">`, no remote `<img>`. All CSS goes in a single inline `<style>` in `<head>`. Helper JS for keyboard navigation goes in a single inline `<script>` at end of `<body>`.

The body is a sequence of `<section class="slide" data-type="...">` blocks. Each `data-type` must be one of the 7 values listed in § "Slide grammar" below. The deck supports keyboard navigation: ← / → move between slides, `F` toggles fullscreen, `P` triggers print.

Design system: Editorial Monocle

Use this fixed design system. Do not improvise nearby colors, do not introduce gradients, do not bring in emojis. This is the **only** non-monochrome palette in the entire deck.

Color palette

:root {
  --bg:        #f3eee1;  /* oklch(94% 0.03 80)  — warm cream paper */
  --ink:       #1a1612;  /* oklch(15% 0.01 50)  — warm near-black */
  --muted:     #7a6e55;  /* oklch(55% 0.04 75)  — labels / metadata */
  --rule:      #d4cfc0;  /* oklch(82% 0.02 75)  — thin separator */
  --accent:    #a4341c;  /* oklch(45% 0.16 30)  — brick red, the ONLY non-monochrome */
  --highlight: #fff3a8;  /* oklch(95% 0.10 95)  — marker highlighter ONLY */
}

Type system

font-family-serif:  "Charter", "Iowan Old Style", "Times New Roman", Georgia, serif;
font-family-sans:   "Inter", -apple-system, "Helvetica Neue", sans-serif;  /* labels only */

Type scale (size / line-height / letter-spacing):

  • `--type-display`: 56px / 1.05 / -1px — cover/chapter big titles
  • `--type-title`: 38px / 1.10 / -0.5px — normal slide titles
  • `--type-body`: 18px / 1.55 / 0 — body copy
  • `--type-quote`: 28px / 1.30 / -0.3px italic — pull quotes
  • `--type-label`: 10px / 1.0 / 2.5px uppercase — top/bottom label tracks

Frame (every slide)

  • 16:9 aspect ratio: `aspect-ratio: 16/9; width: 100vw; max-width: 1280px;`
  • Per-slide padding: 64px top/bottom, 80px left/right.
  • **10px brick-red bar on the right edge of every slide.** The deck's

visual signature. 4px reads as invisible at presentation scale.

  • Top label row: left = chapter id (e.g. "CHAPTER 03"), right = source mark.
  • Bottom folio row: left = `N / Total`, right = source short label.

Composition rules

  • **Cover title (`.display`)** must use `max-width: 18ch` (NOT 10ch).

Never wrap an article ("the", "an", "to") onto its own line.

  • **Data slides** must center the big number horizontally on the slide

(`.data-body { align-items: center; text-align: center }` for `data-type="data"` only — leave other slide types left-aligned). Body copy beneath stays centered, max-width 38em.

  • **Cover and closing slides**: `.cover-body, .closing-body { max-width: 26em }`.

Keyboard nav hint

.kbd { opacity: 0; transition: opacity .25s ease; }
body:hover .kbd { opacity: .55; }

Slide grammar (7 permitted `data-type` values)

| `data-type` | Use | Visual signature | |---|---|---| | `cover` | First slide: tag + huge title + 1-line subtitle | Display type, left-aligned, never centered | | `chapter` | Section divider: oversize number + chapter name | Number 120px brick-red, name 38px serif | | `thesis` | A single claim + a short explanation | Title fills ~60% height, explanation small bottom | | `quote` | Italic pull-quote + attribution | Centered, serif italic 28px, generous whitespace | | `compare` | Two-column comparison: header + 3-5 lines each side | 1px brick-red vertical rule between columns | | `data` | One number + label + one-line interpretation | Number 120-160px brick-red, micro-copy 12px | | `closing` | Mirrors `cover`; thanks / next steps | Same scale as cover but content closes the arc |

**Cover/closing exception:** the `cover` and `closing` slides have no chapter context, so the top-left label is the deck identifier ("OPENKB") instead of a `CHAPTER NN` id.

Working method

1. **Survey first.** Use your wiki-read tools to list `concepts/` and `summaries/`, and read `wiki/index.md`. Form a mental map before committing to what the deck argues. 2. **Choose a narrative arc.** Write a one-line thesis, then an 8-12 step arc (problem → tension → resolution, or whatever shape the intent calls for). Each step becomes 1-2 slides, landing the final deck in the 8-15 range required by §Self-check. 3. **Read the relevant content.** For each concept the arc touches, read the concept page. For each document a concept cites, read at least one targeted slice o

Read more
Ships withopenkb

Scale to long documents • Reasoning-based retrieval • Native multi-modality • No Vector DB 📢 Recent Updates Google Open Knowledge Format (OKF): Wiki pages follow the Google OKF specification for knowledge sharing.

Get the whole plugin
Stats
4,781
Stars
496
Forks
Maintained
Maintenance
Python
Language
Apache-2.0
License
2mo ago
Last commit
6mo ago
Created
4h ago
Added

Repo: vectifyai/openkb

Other skills on openkb.