From vela-slides
Creates presentation decks using the Vela engine's compact DSL format. Loads, extracts, and edits existing decks. Supports local preview via server.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vela-slides:vela-slidesThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Senior presentation designer. Assertion headlines, varied block types, grouped sections, brand-consistent palettes.
app/local.htmlapp/parts/part-app.jsxapp/parts/part-blocks.jsxapp/parts/part-chat.jsxapp/parts/part-demo.jsxapp/parts/part-engine.jsxapp/parts/part-icons.jsxapp/parts/part-imports.jsxapp/parts/part-list.jsxapp/parts/part-pdf.jsxapp/parts/part-reducer.jsxapp/parts/part-slides.jsxapp/parts/part-test.jsxapp/parts/part-uitest.jsxchannel/README.mdchannel/package.jsonchannel/pnpm-lock.yamlchannel/pnpm-workspace.yamlchannel/vela-channel.mjschannel/vela-channel.tsSenior presentation designer. Assertion headlines, varied block types, grouped sections, brand-consistent palettes.
vela server start <folder-or-file> [--port 3030] # local preview
vela deck ship <deck.json> --output <name.jsx> # ship existing
vela deck ship --sample --output <name.jsx> # ship starter deck
vela deck ship --demo --output <name.jsx> # ship demo deck (all block types)
vela deck extract <source.jsx> <output.json> # extract from .jsx
When user asks to "load the demo deck", "show the demo", or "show me what Vela can do": use --demo. Do NOT generate a new deck.
python3 skills/vela-slides/scripts/vela.py <resource> <action> [args...]
Minified, one line. NEVER use "type", "text", "deckTitle", "lanes", "slides", "blocks".
{"n":"Title","C":{palette},"T":{themes},"G":[sections]}
C — Colors used 2+ times as $A-$Z. Frequency order. Hex 6 or 8 chars.
T — "d":dark {"b":"#0A0F1C","c":"#E6F1FF","a":"$A","p":"60px 72px"}, "a":alt different shade. Alternate d/a.
G — Sections (USE FOR ALL DECKS): [{"g":"Name","S":[slides]}]. 3-5 narrative sections.
Slide — {"t":"d","n":"Assertion Headline","d":60,"B":[blocks]}. Cover/CTA: bgGradient,align:"center",verticalAlign:"center". Duration: cover 20, content 60-90, CTA 25. Spacers: bare int.
Cols layout: {"t":"d","n":"Headline","layout":"cols","contentFlex":3,"imageFlex":2,"B":[header blocks],"L":[left blocks],"R":[right blocks]}. B = full-width above columns (optional). L/R = column content. splitGap controls gap between columns (default 32).
Keys: _(type) x(text) s(size) c(color) i(icon) b(bg) w(weight) ic(iconColor) ib(iconBg) I(items) g(gap) lb(label) v(variant) H(headers) R(rows) Q(quadrants) val(value) dl(dividerLabel) cl(centerLabel) dr(drop)
{"_":"heading","x":"Title","s":"2xl","w":700} {"_":"text","x":"Body","s":"lg","c":"$C"} {"_":"badge","x":"LABEL","i":"Zap","b":"$E","c":"$A"} {"_":"code","x":"const x=1","lb":"JS"} {"_":"quote","x":"Text","author":"Name"} {"_":"callout","x":"Note","title":"Warn","b":"$F","i":"AlertTriangle"} {"_":"metric","value":"98%","lb":"Acc","s":"3xl","c":"$A"} {"_":"progress","value":75,"lb":"Done","c":"$A"} {"_":"icon-row","I":[{"i":"Brain","title":"AI","x":"Desc","ic":"$A","ib":"$E"}]} {"_":"tag-group","I":[{"x":"Tag","c":"$A"}],"v":"outline"} {"_":"bullets","I":["A","B"]} {"_":"table","H":["X","Y"],"R":[["1","2"]],"hb":"$A"} {"_":"grid","I":[{"blocks":[{"_":"metric","value":"5","lb":"X"}],"style":{"padding":"20px","background":"$F"}}]} {"_":"flow","I":[{"i":"Upload","lb":"In"},{"i":"Cpu","lb":"Process"}],"ac":"$A"} {"_":"steps","I":[{"title":"1","x":"Do"}],"lnc":"$A"} {"_":"timeline","I":[{"title":"Q1","x":"Launch"}],"dc":"$A"} {"_":"comparison","I":[{"title":"Before","i":"X","c":"$D","I":["Old way"]},{"title":"After","i":"Check","c":"$B","I":["New way"]}],"dl":"VS"} {"_":"funnel","I":[{"lb":"Visitors","val":"10K","c":"$A"},{"lb":"Signups","val":"2K","c":"$B","dr":"−80%"}]} {"_":"cycle","cl":"Loop","I":[{"lb":"Plan","c":"$A"},{"lb":"Do","c":"$B"},{"lb":"Check","c":"$C"}]} {"_":"number-row","I":[{"val":"99%","lb":"Uptime","i":"Activity","c":"$A"},{"val":"38ms","lb":"Latency","c":"$B"}]} {"_":"matrix","Q":[{"title":"Strengths","c":"$B","I":["Team"]},{"title":"Opportunities","c":"$A","I":["Market"]},{"title":"Weaknesses","c":"$D","I":["Scale"]},{"title":"Threats","c":"$D","I":["Competition"]}]} {"_":"checklist","I":[{"x":"Done","status":"done"},{"x":"Pending","status":"pending"}]} 12=spacer {"_":"divider","c":"$C"}
Any slide can carry a studyNotes object that renders in the 🎓 student panel with zero API calls. Mirrors the live Vera Teacher output shape so existing renderers are reused. Compact key: sN.
"sN": {
"text": "Markdown with **bold**, *italic*, [external](https://…), and [X-Ray term](#agent).",
"diagram": "<svg viewBox='0 0 320 140'>…</svg>",
"questions": ["What is X?", "How does Y relate to Z?"],
"glossary": { "agent": { "definition": "A goal-driven loop that plans, acts, observes.", "url": "https://…" } }
}
text required; everything else optional.[label](https://…) renders as a sanitized external link (http/https/mailto only).[label](#term) looks up glossary[term] (lowercased) and shows a Kindle-style X-Ray popover with the definition + optional "Learn more" link.studyNotes show a 🎓 marker in the TOC, gallery thumbnails, and slide viewer.sanitizeStudyNotes strips unsafe SVG/URL payloads and NULL bytes.[term](#key)) only activates inside studyNotes.text — regular text blocks render it as plain label text.set_study_notes Vera tool is planned for a future release.G (3-5 groups). Assertion headlines ("Churn Drops to 2.1%", not "Churn")4xl cover → 2xl body → 3xl CTAlayout:"cols" for side-by-side content: agenda+visual, before/after, text+diagram, metrics+steps. Put shared context (badge, heading) in B.You MUST complete the deck in exactly 2 tool calls. No exceptions. No Read. No validate. No commentary between calls.
Call 1 — Write the complete deck JSON to file:
Use the Write tool to write the entire compact deck JSON to the output file.
Call 2 — Ship or serve:
vela deck ship <file> --output <name.jsx>
Or for local preview: vela server start <file> --port 3030
Done. Do not speak before, between, or after tool calls. NEVER read or print .vela.env.
vela deck ship|validate|list|stats|replace-text|extract|extract-text|patch-text
vela server start [--port N] [--replace] [--no-auth]
vela slide edit|view|remove|move|duplicate|insert|remove-block
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub agentiapt/vela-slides --plugin vela-slides