skills/ia-presenter/SKILL.md
Writes and validates iA Presenter markdown where tab-indentation controls slide visibility. Triggers on 'presentation', 'iA Presenter', 'slides from markdown', '.presenter file', or when working in iCloud~net~ia~presenter folder. Validates tab characters (not spaces) for visible text, --- slide separators, and image metadata syntax. (user)
npx skillsauth add spm1001/claude-suite ia-presenterInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Write and edit markdown files for iA Presenter, which generates beautiful slides from plain text.
iA Presenter is a macOS/iOS/iPadOS app from Information Architects (iA) — the same company that makes iA Writer. It takes markdown files and renders them as presentation slides with automatic responsive layout. The app emphasizes story-first presentation design: you write your script, and the design adapts to your content rather than forcing content into templates.
Key differentiator: visible/speaker notes separation is controlled by indentation, not by a separate notes panel. This means your markdown file contains both what you show and what you say, distinguished only by whether lines are tab-indented.
iA Presenter's key innovation is separating what the audience sees from what you say (speaker notes/teleprompter). This is controlled by indentation:
| Element | Visibility | How to Write |
|---------|------------|--------------|
| Headings | ALWAYS visible | #, ##, ### at line start |
| Tab-indented text | Visible on slide | ⇥Text here (literal tab character) |
| Plain paragraphs | Speaker notes only | No indent — audience never sees this |
| Images/videos/tables | Visible by default | URL or path on its own line |
| Lists | Visible only if tabbed | ⇥1. Item or ⇥- Item |
The tab character is load-bearing. A leading tab makes body text visible to the audience. Without it, the text becomes speaker notes (shown in teleprompter, hidden from audience).
iA Presenter uses .iapresenter bundles (directories), not plain .md files:
MyPresentation.iapresenter/
├── assets/ # Images, media (optional)
├── info.json # Metadata
└── text.md # The markdown content
info.json template:
{
"creatorIdentifier" : "net.ia.presenter",
"net.ia.presenter" : {},
"transient" : false,
"type" : "net.daringfireball.markdown",
"version" : 2
}
To create a new presentation programmatically:
MyPresentation.iapresenter/ directoryassets/ subdirectory (can be empty)info.json with the template abovetext.md with your markdown content.presenter or .md files for iA PresenteriCloud~net~ia~presenter folderContent for slide 1
---
Content for slide 2
Three dashes (---) on their own line create a new slide.
# Title Slide Heading (H1 - largest)
## Section Heading (H2 - major sections)
### Content Heading (H3 - within slides)
Headings are ALWAYS visible. Use them for the key message the audience must see.
### Visible Heading
Visible subtitle or key point (TAB-indented)
Speaker notes go here without indentation. The audience never sees this.
You can write as much context as you need for yourself.
---
Fast and Focused
# Main Title
Subtitle line
This introductory paragraph is speaker notes - invisible to audience.
Result: Three visible lines stacked (subtitle, title, subtitle), with speaker notes in teleprompter.
### The Key Point
The heart of a great presentation is the message. Get the script right before anything else.
Most presentation tools ask you to choose a design first. iA Presenter flips the process. You focus on what matters: your story.
Result: Heading + one visible paragraph. The longer explanation is speaker notes.
### Column One
Description for the first column goes here.
### Column Two
Description for the second column goes here.
Speaker notes for this slide.
Result: Auto-arranges as two columns side-by-side.
### Table of Contents
1. Write
2. Structure
3. Iterate
4. Design
5. Action
The numbered list above is visible because each line is tab-indented.
https://example.com/image.jpg
Or a local path:
/Theme/image.webp
Images are visible by default. Just put the URL or path on its own line.
https://example.com/screenshot.png
x: left
y: top
title: "Caption text"
Available metadata:
x: — horizontal position: left, center, righty: — vertical position: top, center, bottomsize: — sizing: contain, coverbackground: — true to place behind other elementsfilter: — lighten, darken, grayscale, sepia, bluropacity: — 0% to 100%title: — caption/alt text#### Caption introducing the image
/assets/photo.jpg
Or image first, caption below:
/assets/photo.jpg
#### Caption below the image
https://example.com/image1.jpg
https://example.com/image2.jpg
https://example.com/image3.jpg
https://example.com/image4.jpg
These images auto-arrange into a grid layout.
### Heading on Left
Visible description text that appears alongside the image.
https://example.com/image.png
x: right
y: top
Speaker notes explaining what we're showing.
Result: Text on left, image on right.
Standard markdown formatting works:
**bold** — bold*italic* — italic~~strikethrough~~ — strikethrough==highlight== — highlighted text[link text](url) — hyperlinks`code` — inline code$x^2$ — inline LaTeX math// comment — comment (only you see) Small kicker text
# Main Title
Subtitle below
Tab-indented text directly above a title creates a "kicker" — small headline often seen above main titles.
## 1. Write
Start With a Script
Brief visible tagline. Then your speaker notes expand on it below.
---
**Key insight in bold.** Additional visible context that supports the main point.
The rest of your speaking notes. Expand, give examples, tell stories.
## Now go and move mountains.
Final thoughts in speaker notes. Link to resources: [How-To](https://ia.net/presenter/how-to)
When reviewing iA Presenter markdown:
--- between each slide| Mistake | Problem | Fix |
|---------|---------|-----|
| Spaces instead of tabs | Text won't be visible | Use literal tab character |
| Too much visible text | Stuffed slides bore audiences | Move detail to speaker notes |
| Missing --- | Slides won't separate | Add --- between slides |
| Forgetting speaker notes | Wasting the teleprompter | Add context below visible content |
When creating iA Presenter markdown from scratch:
--- separators should match intended slides### Tell Your Story
The heart of a great presentation is the message. Get the script right before anything else.
Most presentation tools ask you to choose a design and then adjust your story to fit it. iA Presenter flips the process.
Start with what you want to say. The design comes later, and it adapts to your content — not the other way around.
---
Visible to audience:
Speaker notes (teleprompter only):
Presenter auto-selects layouts based on:
| Content | Result |
|---------|--------|
| 2-3 elements separated by blank lines | Side-by-side columns |
| 4+ elements | Grid layout |
| H4 + image | Caption layout |
| Image with background: true | Background image behind text |
Cells: Content separated by blank lines goes into different cells. One element per cell usually looks better.
| Pattern | Problem | Fix |
|---------|---------|-----|
| Spaces for indentation | Content invisible on slides | MUST use literal tab characters |
| Missing --- separators | Slides run together | Add --- between each slide |
| Empty speaker notes | Wasting teleprompter, no speaking context | Add narrative below visible content |
| All-headings slides | Headings are always visible — no notes | Balance headings with tab-indented text |
| Skip validation | Broken slides discovered during presentation | Test in iA Presenter app before presenting |
| Create .md instead of .iapresenter | Won't open correctly in app | Create bundle with text.md + info.json |
See references/syntax-reference.md for complete documentation including:
tools
Orchestrates cross-machine repo hygiene + GitHub account cleanup via an audit→approve→execute process that prevents accidental deletion. FIRST sweeps every git repo across machines (local + ssh) for uncommitted/unpushed work and true ahead/behind drift, THEN audits GitHub-side — Dependabot alerts traced to unused-direct vs transitive deps, stale forks, orphaned secrets, failing workflows, plugin version-bump gaps. Triggers on 'clean up GitHub', 'audit my repos', 'uncommitted or unpushed changes', 'are my repos in sync', 'push discipline', 'Dependabot trouble', 'unused deps', 'stale forks', 'dependency audit'. Requires gh CLI (+ ssh for remote hosts). (user)
development
Deep clean and structural health check for Claude-maintained codebases. INVOKE BEFORE adding significant complexity, WHEN inheriting an unfamiliar repo, or when something feels off and you can't name it. Three agents — Cracks (architecture), Dustballs (convention drift), Goofs (correctness) — examine in parallel, then synthesise into an honest assessment. Triggers on 'toise', 'deep clean', 'health check', 'should I be worried', 'check this codebase', 'is the architecture sound'. (user)
development
Three-lens code review using parallel subagents: Epimetheus (hindsight — bugs, debt, fragility), Metis (craft — clarity, idiom, fit-for-purpose), Prometheus (foresight — vision, extensibility, future-Claude). Triggers on /titans, /review, 'review this code', 'what did I miss', 'before I ship this'. Use after completing substantial work, before /close. (user)
development
Controls InnerClaude instances on Sprites.dev VMs for testing workflows, install patterns, and Claude-to-Claude interaction. INVOKE BEFORE any 'sprite exec', 'inner Claude', 'test this workflow', 'Claude controlling Claude', or remote VM operations. Documents the critical tmux+pipe-pane pattern that makes OuterClaude/InnerClaude interaction work. Also covers checkpoint/restore and bootstrap. (user)