presenter-mode
Skill35 starsChanged 2 months agoMITView on GitHub
Use when the user wants to present a PDF/Beamer deck on macOS with a presenter view on the laptop (current + next slide, timer, speaker notes) and clean slides on the projector or second monitor, or wants speaker notes from a talk script (md) attached to slides, or asks why the second screen lags / notes don't fit / animations don't play while presenting. Private workflow built around Présentation.app; not part of the public presentation skill.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- shkodnik1917/claude-brainlabword for word, first seen Nov 8, 2026
Other versions1 project uses a version of this.
Word for word · 1
- shkodnik1917/claude-brainlab★ 35100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository68 other files it gives its agents.
- rules/agents.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- academic-plottingSkill
- agent-identifierSkill
- architecture-designSkill
- astar-paper-reviewSkill
- bug-detectiveSkill
- call-notesSkill
- cavemanSkill
- citation-verificationSkill
- code-ingestSkill
- code-librarySkill
- code-review-excellenceSkill
- command-developmentSkill
- create-projectSkill
- daily-codingSkill
- defuddleSkill
- diagnoseSkill
- doc-coauthoringSkill
- experiment-runsSkill
- frontend-designSkill
- git-guardrails-claude-codeSkill
- git-workflowSkill
- google-workspace-mcpSkill
- grill-meSkill
- grill-with-docsSkill
- handoffSkill
- handoff-to-jarvisSkill
- hook-developmentSkill
- improve-codebase-architectureSkill
- json-canvasSkill
- kaggle-learnerSkill
- lab-knowledgeSkill
- latex-conference-template-organizerSkill
- mcp-integrationSkill
- ml-paper-writingSkill
- obsidian-basesSkill
- obsidian-cliSkill
- obsidian-experiment-logSkill
- obsidian-markdownSkill
- operon-obsidian-setupSkill
- paper-ingestSkill
- paper-searchSkill
- paper-to-socialSkill
- paper-venue-formattingSkill
- pdf-readerSkill
- planning-with-filesSkill
- plugin-structureSkill
- presentationSkill
- prototypeSkill
- research-cycleSkill
- research-ideationSkill
- restore-sessionSkill
- results-analysisSkill
- results-reportSkill
- reverse-outline-flow-checkSkill
- review-responseSkill
- setup-pre-commitSkill
- skill-developmentSkill
- tddSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 9
Keep it out of the public presentation skill: it depends on a third-party app installed only on the owner's Mac.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Presenter mode (Présentation.app, patched)
Private, owner-only workflow (01–03.10.2026, lecture «Модели для доказательства теорем»).
Keep it out of the public presentation skill: it depends on a third-party app installed
only on the owner's Mac.
What it gives
- Projector: clean slides, fullscreen.
animate-package animations PLAY (unlike Preview). - Laptop: current slide, next slide, clock/timer, slide strip, speaker notes = the text of
the talk script for that slide; long notes auto-shrink (≥ 11 pt) and scroll with
j/k. - Notes live in a Markdown script (Obsidian), one section per page:
## Слайд N. Заголовок (время)— page N gets everything until the next section.
One-time setup
- Install Présentation.app (free, notarized, by R. Blanch):
download
http://iihm.imag.fr/blanch/software/osx-presentation/releases/osx-presentation-latest.pkg,openit, the user types the admin password. Ends up in/Applications/Présentation.app. - Nothing else:
scripts/present.shpatches on first run (and again after an app update).
Use
~/.claude/skills/presenter-mode/scripts/present.sh DECK.pdf [TALK-SCRIPT.md]With a script it writes DECK-present.pdf (deck + one hidden text annotation per page), then
opens it. Then, with the English keyboard layout, press f: slides go fullscreen on the last
screen (projector), presenter view on the main screen. x swaps screens if reversed.
Display settings: mirroring OFF.
Keys: →/←/space next/prev · f/Esc fullscreen on/off · x swap screens · j/k scroll notes ·
+/-/0 notes size · t timer start/stop · . black screen · l laser · ? all keys.
Example project using it: ~/brainlab/ops/lectures/ai-for-research/slides/ (present.sh there wraps this flow;
script = ops/lectures/ai-for-research/talk-script.md in the vault).
Files
| File | Role |
scripts/present.sh | build notes PDF (optional), (re)patch app script, launch |
scripts/make_notes_pdf.py | md sections → hidden text annots; LaTeX $...$ → Unicode; needs pymupdf (uv run --with pymupdf) |
scripts/apply_patches.py | patches the app's own presentation.py into ~/.local/share/presenter-mode/presentation_brain.py |
Patches (all marked BRAIn in the output): help overlay hidden; notes full width + smaller,
auto-fitting font; j/k scrolling; next slide fills the right column; space = next slide;
0 resets to the new default; bundled PyObjC path. Each anchor must match exactly once, so if
the app updates and the code moved, apply_patches.py stops with the failing anchor: re-diff
against the new upstream and fix that one replacement.
Gotchas (each cost time once)
- Never edit inside the app bundle. Changing
Présentation.app/Contents/...breaks its signature → macOS: "is damaged and can't be opened, move to Trash". The patched script runs outside the bundle with/usr/bin/python3and imports the app's bundled PyObjC (Contents/Resources/packages/<py-version>). Without that path: "can not import the PyObjC package". - Russian keyboard layout silently breaks one-letter keys (
f,x,t,j/k). Arrows work. - Every key path must end in
refresher.refresh()insidekeyDown_. An earlyreturnafter changing page updates only the laptop (1-s clock timer) and leaves the projector 2–3 s behind — this was the "lag" bug of the first space patch. - Notes source must have exactly one section per PDF page (overlays count as pages); the builder warns when counts differ.
animateanimations play only when the page is entered by navigation (not on the start page given by--page).- pdfpc does not work on macOS with two Retina displays (presenter window lands behind the
projector window; monitor names are
(null), so-1/-2cannot fix it). Its first start also hangs ongst-plugin-scanneruntilgst-inspect-1.0builds the GStreamer cache. Do not retry it. - Acrobat Reader plays the animations but has no presenter view.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

