Build AI DevCon NYC talk decks as Claude Slides in the official aiDevCon style, with an HTML fallback.
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Build talk decks for AI DevCon NYC as a Slides artifact: a deck the speaker can open, edit, present and export to PowerPoint or PDF from Claude. It follows the AI DevCon Design System and the structure of the official speaker template: black ground, white type, one yellow edition colour, pixel-bar artwork.
Only fall back to a standalone HTML file when the session has no Artifact tool that can create from a type (see "No Slides artifact" at the end). Don't hand over an HTML file just because it's quicker.
What ships with this skill:
templates/layouts/*.html: 24 slides, each one <section> already in the Slides format (inline styles only). Copy, fill, never redesign.assets/*.svg.txt: SVG files (renamed so registries accept them): the official aiDevCon logos, the Statue of Liberty mascot, dot patterns and pixel icons.references/layouts.md: what each layout is for, and which assets it needs.references/design-rules.md: the rules every slide follows.references/checklist.md: run it on your files before you publish.templates/deck.html, scripts/: the HTML fallback only.references/layouts.md and references/design-rules.md. Pick each layout for its content, not to fill a pattern.type_url (find it with action: "list", scope: "types"), title = the talk title, auto_open: "after_first_write", and no files. The reply carries the deck's url and the Slides type's instructions. Follow those for how files are written and sent, with the overrides in "Slides type overrides" below.assets/<name>.svg.txt (plain SVG; the .txt lets skill registries carry it). Copy each file your slides use into <root>/upload/<name>.svg, dropping the .txt (<root> is the folder you write the deck in), then upload them in ONE call: action: "publish", the deck's url, asset: true, file_paths = those copies. Each reply url (/_blob/<id>) replaces {{img:<name>.svg}} in every slide that uses it.project/deck.json (template below), then one project/slides/<id>.html per slide: copy the layout, set id="{{id}}" to the slide id (which is also the file name), replace every {{...}}, put speaker notes in the <aside>. Run references/checklist.md on the files.project/deck.json plus the cover slide, plus the design system's tokens.json entry (below). Then the remaining slides, in one call or a few. Then give the speaker the link and list every placeholder still on a slide.The Slides type's instructions handle the mechanics. These choices are already made by this skill, so skip the type's own design steps:
https://claude.ai/artifact/3GixFVtt77EPTSHAcgVkr7, even when another one (such as Tessl's) is marked as the default. Asking for an AI DevCon deck is the speaker naming this system. Install it in the first publish: add "project/ds/aidevcon/tokens.json": {"artifact": "https://claude.ai/artifact/3GixFVtt77EPTSHAcgVkr7", "path": "project/tokens.json"} to files, and the record in deck.json below. If the system can't be read (the speaker has no access to it), leave both out and say so in one line. The slides carry every colour inline, so the deck still looks right; only the editor's theme menus lose the named colours.design-rules.md. Don't choose others, and don't apply the type's advice about toned whites, two background tones or accent statement slides.bottom:40px, as in the speaker template. Keep them.assets/ goes in by upload (step 5), as .svg. Never write a data: URI or a path to the skill folder into a slide.project/deck.json for a new deck (fill title, order, sections, cover and both timestamps with now, in RFC 3339):
{"v":4,"createdOnFiles":{"v":1,"at":"<now>"},"lists":"css","title":"<talk title>","cover":"<cover slide id>","order":["<slide ids in order>"],
"sections":{"s1":{"description":"<one sentence>","start":"<first slide id>"}},
"faces":{"atkinson-hyperlegible-next":{"family":"Atkinson Hyperlegible Next","href":"https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible+Next:wght@200..800&display=swap"},
"atkinson-hyperlegible-mono":{"family":"Atkinson Hyperlegible Mono","href":"https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible+Mono:wght@200..800&display=swap"}},
"designSystems":[{"title":"AI DevCon Design System","namespace":"aidevcon","artifact":"https://claude.ai/artifact/3GixFVtt77EPTSHAcgVkr7","version":null,"copiedAt":"<now>"}]}Use designSystems: [] if the system couldn't be installed. Use the system's version id in version if your tool reported one when you read or listed it.
Every DevCon talk follows the same order, so the conference feels like one event:
event: optional holding slide while the room fills.title (with a speaker photo or key visual) or title-mascot: the cover.agenda: for talks over 15 minutes. 3 to 5 items, numbered 01 onwards.section divider whose number matches the agenda, then its content slides.next-steps: what the audience should do after the talk.end: thank you, and where to find the speakers.When the last agenda item is itself the call to action ("How to start"), its divider can lead straight into next-steps; don't pad it with a slide that repeats it. Each number appears once: a figure that headlines a metric slide doesn't come back in a metrics list.
Never invent a quote, a number, a customer name or an image. When the speaker hasn't supplied one:
[Placeholder: % of findings caught before review], and flag it in the notes.<img> with alt and style but no src. The speaker fills it in the editor with Add image. When they do supply an image, upload it like the art and set src to its /_blob/ url.quote layout only for a real quote. If the speaker wants one but hasn't chosen it, keep the placeholder and the empty portrait frame.List every placeholder in your handoff so the speaker can fill them before the talk.
Follow the Slides type's "Revising" rules. Also:
/_blob/ url you can see in another slide).Only when the session can't create a Slides artifact (no Artifact tool, or it lists no Slides type): say so in one line, then build a single HTML file. Copy templates/deck.html to deck.html, paste one filled layout per slide where the SLIDES comment sits (leave {{img:...}} and id="{{id}}" as they are), run python3 scripts/build_deck.py deck.html to write deck.standalone.html with the art inlined, then python3 scripts/check_deck.py deck.standalone.html to screenshot and check it. Tell the speaker: open it in Chrome, arrow keys to move, F for full screen, N for notes, print to PDF with margins off for a PDF.
.tessl-plugin
skills
aidevcon-slides
assets
references
scripts
templates
layouts