This file is loaded automatically when you (Claude / Claude Code) work in this repository. It complements:
SOUL.md— what CON talks are about, voice, visual style, fixed metadata, citation conventions, and the recurring story arcs.INDEX.md— which slides exist already and how to find them per topic and per talk.
Read both before authoring or editing a deck. Treat them as the source of truth for cross-talk decisions.
README.md — repo overview, build/PDF instructions
SOUL.md — mission, voice, visual identity, references
INDEX.md — talk-by-talk catalog + topic lookup
CLAUDE.md — this file: how to author & curate
LICENSE — CC-BY-SA
gulpfile.js, package.json — npm/gulp setup for `npm start` live reload
css/custom.css — small site-wide CSS overrides
reveal.js/ — vendored reveal.js (do not modify)
reveal.js-mermaid-plugin/ — vendored mermaid plugin
pics/ — all images (canonical assets are listed in SOUL §4)
pics/borrowed/ — third-party images
3rd-party/ — third-party PDFs cited in slides
embed/ — small HTML iframes referenced by some decks
posters/ — poster sources (separate flow)
2026-usrse/ — venue-specific drafts: proposal, BoF/poster templates,
lineage diagrams
2026-ohbm-ossig/ — OHBM Open Science Room submission
2026-repronim-YODA-BIDS-webinar/ — companion notes/planning to that deck
2026-ca-origami-retreat-aicoding/ — planning + per-slide screenshots for that deck
_backdrawer_/ — shelved talk prototypes / outline-only stubs
(see _backdrawer_/README.md for the convention)
<TALK-ID>.html — top-level reveal.js decks
<TALK-ID> follows <YYYY>-<venue>-<short-topic> (or with a trailing
-name/-aicoding for sub-decks at the same venue). The published mirror
is https://datasets.datalad.org/centerforopenneuroscience/talks/<TALK-ID>.html.
The repo is a DataLad dataset (note .datalad/,
.gitattributes); commit binary assets via DataLad if introducing new
ones. For text-only edits to existing HTML, plain git is fine.
- Decide the arc (
SOUL.md§7) — Origin/Stack/Today, Challenges/ Solutions/Take-home, YODA-principle-a-day, Nirvana, AI-ladder, or Reuse/Compose/Extend/Standardize. Copy the spine, then customize. - Pick the parent deck for that arc from
INDEX.md(e.g. for a data-archives talk, start from2023-brain-dandi.htmlor2023-lbl-building-dandi.html). - Create
<TALK-ID>.htmlat the repository root. Use the parent deck as a starting point —cpit and edit, or assemble fresh from the title-slide template inSOUL.md§3. - Set the standard reveal.js header with theme
beige, the four plugins (Markdown / Highlight / Notes / Mermaid),1400×1050canvas, and theReveal.initializeblock matchingSOUL.md. - Title slide: CON letterhead → title → social handles → CON/PBS/
CCN/Dartmouth affiliations → QR code (see "QR codes" below) → venue
- date + live-slides URL → logo strip with the Ukraine ribbon last.
- Pull reusable slides by copying full
<section>elements from the talk file referenced inINDEX.md. Adjust hyperlinks but keepdata-src="pics/..."paths verbatim — all decks share thepics/tree. - End with:
- one or more "Take-home" / "Monday checklist" slides;
- an Acknowledgements slide (the canonical layout is in
2024-distribits-datalad.html); - a final "Thank you!" slide. Yoda-SVG sign-off is appropriate when the deck has YODA flavoring.
- Test the deck by opening it in a browser. For a development
loop,
npm installthennpm startperREADME.md. - Update
INDEX.mdwith the new deck (per-talk entry + any topic-lookup additions). - Commit the new deck and the QR code and the
INDEX.mdupdate together. Use the repo's git workflow (DataLad-managed).
The live-slides URL is fully determined by the deck filename:
https://datasets.datalad.org/centerforopenneuroscience/talks/<TALK-ID>.html
so the QR code can (and should) be generated at deck-creation time
— do not wait for "after publishing". The same URL is already hard-coded
into the title-slide template, and every older deck in the corpus
follows this convention (e.g.
pics/2024-distribits-datalad-qrcode.png,
pics/2025-distribits-YODA-qrcode.png,
pics/2026-repronim-YODA-BIDS-webinar-qrcode.png — open any of them
side-by-side with the title slide of the matching *.html deck to
confirm).
Save as pics/<TALK-ID>-qrcode.png and reference it from the title
slide <img>. The repo's already-generated QR PNGs were produced with
the qrcode Python package (which also installs a qr CLI). Install
once with uv (do not forget --with pillow — without it qr
fails at import-time with ModuleNotFoundError: No module named 'PIL'):
uv tool install qrcode --with pillowThen for each new deck:
TALK_ID=2026-usrse-con-talk
URL=https://datasets.datalad.org/centerforopenneuroscience/talks/${TALK_ID}.html
qr "$URL" > pics/${TALK_ID}-qrcode.pngThe default output is a ~490×490 1-bit PNG, which is what the older
title slides reference. qrencode from your distro works too if it's
installed.
The PNG itself is binary; commit it via DataLad
(datalad save -m '+ qrcode for <TALK-ID>' pics/<TALK-ID>-qrcode.png).
- Companion notes (planning, per-slide screenshots, companion
TODO files) live in a directory matching the deck name without the
.htmlextension, e.g.2026-ca-origami-retreat-aicoding/. - Long-running drafts of submissions, BoFs, posters, etc. live under
the venue directory (e.g.
2026-usrse/). - Do not introduce a new top-level subdirectory just for one talk.
- Small fix (typo, link rot): edit in place, commit a focused diff.
- Adding a new slide: prefer copying a similarly-structured slide
from a sibling deck (consult
INDEX.md) over inventing layout from scratch. Reveal.js's section-vertical structure is touchy; cargo-cult carefully. - Updating a citation: keep the small/
<small>blockstyle fromSOUL.md§5; bold the speaker's name; link the DOI directly. - Refreshing a screenshot: drop into
pics/with a date suffix (e.g.datasets.datalad.org-20251021.png). Don't delete the older one — older decks still reference it. - Yanking a slide for reuse: copy the entire
<section>...</section>block, then walk through anyclass="fragment",data-fragment-index,data-transitionattributes — they are usually fine but occasionally need to be adjusted to fit the new local context.
- Use
data-srcfor<img>, notsrc. Reveal.js lazy-loads on approach. - Reveal markdown sub-decks — use them for content-heavy sections:
<section data-markdown data-separator="^\n----\n" data-vertical="^\n---\n"> <textarea data-template>… markdown …</textarea> </section>
- Mermaid diagrams — wrap in
<div class="mermaid"><pre>…</pre></div>and stay within widely-supported flavors (flowchart,gitGraph,graph TB|LR). Newer decks set theme variables per-diagram. - Speaker notes —
<aside class="notes">…</aside>. Fine to be long; presssto view in reveal.js. - Section dividers — soft radial gradient
(
<section data-background-gradient="radial-gradient(white, #f7dfd3)">) for "Challenge:" intros. - No new CSS files — augment
css/custom.cssif you must, but inline-style most layout tweaks (matching the existing decks). - No emojis in slide text unless the deck already uses them (the corpus does not, except in occasional small flourishes).
| If you're producing… | Put it in… |
|---|---|
| New slide deck | <TALK-ID>.html at repo root |
| QR code image for the deck | pics/<TALK-ID>-qrcode.png |
| Per-deck planning notes / screenshots | <TALK-ID>/ directory |
| Venue-specific submission docs (PRD, BoF, poster, abstract) | <venue-dir>/ (e.g. 2026-usrse/) |
| New reusable image | pics/ (or pics/borrowed/ if third-party) |
| New citation PDF | 3rd-party/ |
- Don't switch the reveal.js theme.
beigeis the visual identity. - Don't introduce a build step in a deck (each
<TALK-ID>.htmlmust be openable as a single file). - Don't move or rename existing
<TALK-ID>.htmlfiles — published live links depend on the URL. The one exception is shelving an outline-only stub that never went out:git mv <TALK-ID>.html _backdrawer_/, update its INDEX.md entry into the Shelved (backdrawer) section, and (if previously cited externally) update those refs. Filename does not change — promotion back to active status is justgit mvin reverse. - Don't add a new top-level subdirectory for slides; keep decks at the root and notes in a sibling directory named after the deck.
- Don't
git rmhistorical assets frompics/— older talks reference them. - Don't write new English-language documentation files at the root
unprompted. The three docs (
SOUL.md,INDEX.md,CLAUDE.md) plus the existingREADME.mdare intentional. Use<TALK-ID>/PLAN.md,TODO.md, etc., per existing companion-notes convention.
A reasonable flow:
- Skim
SOUL.mdto anchor on style. - Pick the arc (
SOUL.md§7) and parent deck (INDEX.md). - Search
INDEX.md's topic-lookup for matching reusable slides. - Produce
<TALK-ID>.html(and the companion<TALK-ID>/PLAN.mdif the deck warrants one). - Update
INDEX.mdwith the new talk's entry. - Surface a list of slides borrowed (with source
<file>:<section>pointers) so the user can sanity-check sourcing.