一键导入
vela-slides
Generate Vela slide deck JSON. 22+ block types, compact format with color palette. Self-contained — no external references needed.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Generate Vela slide deck JSON. 22+ block types, compact format with color palette. Self-contained — no external references needed.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Create presentation decks using the Vela engine. Compact DSL format — never verbose JSON. Also loads, extracts, and edits existing decks.
Run a full "implement + test + verify a batch of change requests to zero bugs" sprint in one session as a thin orchestrator that delegates implementation to sub-agents (routed by task difficulty, isolated in worktrees for parallel work) and gates completion on an independent BLIND validation by the best model. Use when handed a list of changes/issues (a PDF, ticket list, or spec) to implement, test, and prove working end-to-end — stop rule "a blind best-model hunt finds no bugs + a proof artifact (a Markdown sprint report by default; recorded demo optional)". Repo-agnostic; reads a root `.hyper-sprint/config.md` for repo facts; front-loads app/browser readiness so verification never stalls.
Offline in-container render harness for the FULL Vela app (no CDN) plus the committed `vela-drive.js` scripts — headless UI-test battery, scripted screenshot, recorded demo video, and an opt-in AI mode. Use for REPEATABLE, COMMITTED automation where the harness itself is the deliverable — running the UI battery in CI, recording a demo video, a scripted screenshot in a benchmark, or verifying real Vera/AI features against the local `claude` CLI via `vela-drive.js ai`. For AD-HOC / INTERACTIVE work — explore/test the app, poke a state, reproduce a bug, a one-off screenshot, verify a UX change, drive presenter/gallery — use the `playwright-cli-setup` skill instead (a persistent CLI browser driven step by step). This skill still documents the blocked-CDN offline render recipe that both skills share.
Verify Vela rendering/security behavior in a REAL browser (and against the REAL deck sanitizers) inside the remote-execution container. Use when you need to confirm whether a deck/SVG/CSS payload actually executes or fires a network request when rendered — e.g. exfil/XSS hunts, "does this beacon fire", confirming a sanitizer fix, or any claim that needs more than reading source. Also records how to launch the prebuilt Chromium here despite blocked CDNs.
THE DEFAULT tool for ad-hoc / interactive Vela browser work — explore or test the app, screenshot a state, reproduce a bug, poke a selector, drive presenter/gallery flows, verify a UX change, run bench/vela-interaction-bench.sh. Drives a live offline Vela render via Playwright CLI (@playwright/cli), a persistent warm browser you steer one command at a time (open, snapshot, click, press, eval), inspecting state + output between steps. Prefer this over the committed `vela-drive.js` scripts (skill: vela-live-render) — those are for repeatable, committed automation only (CI, benchmark, recorded demo), NOT one-off exploration. Also prefer over writing throwaway Playwright .js files. Covers container setup (blocked CDNs, file:// block, pinned Chromium) and per-agent session isolation for parallel browser tests.
Time-boxed adversarial bug-hunting of a LIVE app driven by MULTI-STEP PLAYWRIGHT BURSTS against a persistent warm browser — not one LLM turn per CLI step. The app is opened ONCE; the agent submits full scripts that run to completion unattended (one structured result per burst); reset to a known initial state between scenarios; inherit the implementer's driver verbs instead of re-predicting selectors. Generic / repo-agnostic: all app specifics come from the repo's own config. Use when hunting bugs in a browser-drivable app under a hard wall-clock budget.
| name | vela-slides |
| version | 3.1.0 |
| updated | "2026-03-21T00:00:00.000Z" |
| description | Generate Vela slide deck JSON. 22+ block types, compact format with color palette. Self-contained — no external references needed. |
v3.1.0 · Self-contained, compact format + color palette
python3 /path/to/vela.py deck validate <deck.json>
python3 /path/to/vela.py deck list <deck.json>
python3 /path/to/vela.py slide view <deck.json> N
python3 /path/to/vela.py slide edit <deck.json> N block.I.key "value"
python3 /path/to/vela.py deck replace-text <deck.json> "old" "new"
Output minified JSON on one line.
{"n":"Deck Title","C":{color palette},"T":{themes},"S":[slides]}
Full format (for validation/assembly) wraps slides in lanes→items→slides:
{"deckTitle":"...","lanes":[{"title":"Main","items":[
{"title":"Section 1","status":"done","importance":"must","slides":[...slides...]},
{"title":"Section 2","status":"done","importance":"must","slides":[...slides...]}
]}]}
IMPORTANT: Group related slides into items (sections). A 30-slide deck should have 5-8 items with 3-6 slides each. NEVER put each slide in its own item.
CDefine every color used 2+ times as an alias. Assign $A to the most frequent, $B next, etc.
"C":{"$A":"#3B82F6","$B":"#E6F1FF","$C":"#8892B0","$D":"#0A0F1C","$E":"#1e293b","$F":"#3B82F620","$G":"#10B981","$H":"#F59E0B"}
Rules:
$A-$F for primary brand colors. $G+$H for secondary accents (green, amber, etc.)"#3B82F6":"#3B82F6" is wrong). Always use "$A":"#3B82F6".T"T":{"d":{"b":"$D","c":"$B","a":"$A","p":"60px 72px"},"a":{"b":"$E","c":"$B","a":"$A","p":"36px 48px"},"l":{"b":"#ffffff","c":"#1e293b","a":"$A","p":"36px 48px"}}
"d" = dark primary, "a" = dark alt (different bg), "l" = lightp is CSS padding string (e.g. "36px 48px"). NEVER a color hex.SEach slide: t=theme ref, n=title, d=duration (int seconds), B=blocks array.
8 instead of {"_":"spacer","h":8}bgGradient:"linear-gradient(135deg, $D 0%, $E 100%)", align:"center", verticalAlign:"center""t":"l" (light theme) when a slide contrasts with surrounding dark slides_=type, x=text, s=size, c=color, i=icon, b=bg, w=weight(int), ic=iconColor, ib=iconBg, I=items, g=gap(int px, NOT string), lb=label, v=variant, H=headers, R=rows
{"n":"AI Workshop","C":{"$A":"#3B82F6","$B":"#E6F1FF","$C":"#8892B0","$D":"#0A0F1C","$E":"#1e293b","$F":"#3B82F620","$G":"#10B981"},"T":{"d":{"b":"$D","c":"$B","a":"$A","p":"60px 72px"},"a":{"b":"$E","c":"$B","a":"$A","p":"36px 48px"}},"S":[{"t":"d","bgGradient":"linear-gradient(135deg, $D 0%, $E 100%)","n":"Cover","d":20,"align":"center","verticalAlign":"center","B":[{"_":"badge","x":"WORKSHOP","i":"GraduationCap","b":"$F","c":"$A"},8,{"_":"heading","x":"AI Transforma Equipas em 2026","s":"3xl","w":700},{"_":"text","x":"Formação prática com LLMs.","s":"lg","c":"$C"}]},{"t":"a","n":"Agenda","d":60,"B":[{"_":"badge","x":"PROGRAMA","i":"Calendar","b":"$F","c":"$A"},8,{"_":"heading","x":"4 Módulos, 1 Dia, Resultados Imediatos","s":"2xl"},{"_":"steps","I":[{"title":"09:00","x":"Fundamentos LLM"},{"title":"11:00","x":"Prompt Engineering"},{"title":"14:00","x":"Agentes e MCP"},{"title":"16:00","x":"Projeto Prático"}],"lnc":"$A","nc":"$A","tc":"$B","xc":"$C"}]},{"t":"d","bgGradient":"linear-gradient(135deg, $D 0%, #0f172a 100%)","n":"CTA","d":20,"align":"center","B":[{"_":"icon","name":"Rocket","s":"xl","c":"$A","b":"$F","circle":true},8,{"_":"heading","x":"Inscreva-se Hoje — Vagas Limitadas","s":"3xl","w":700},{"_":"text","x":"Próxima turma: Abril 2026","s":"lg","c":"$C"},12,{"_":"tag-group","I":[{"x":"Inscrever","c":"$A","i":"ArrowRight"},{"x":"Demo","c":"$G","i":"Play"},{"x":"info@co.pt","c":"$C","i":"Mail"}],"v":"outline"}]}]}
Text: heading(x,s:xs→4xl,w,i,ic), text(x,s,c,maxWidth), badge(x,c,b,i), code(x,lb,s,b,c)
Lists: icon-row(I=[{icon,title,x,ic,ib}] — distinct ic per item), tag-group(I=[{x,c,i}],v:filled|outline|subtle), bullets(I,dotColor)
Data: table(H,R,striped,headerBg,headerColor,cellColor,borderColor), grid(cols 2-3,g,I=[{blocks,style}]), metric(value,lb,s,c,i,ic)
Process: flow(I=[{i,lb,sublabel,gate:bool}],arrowColor,direction:horizontal|vertical,loop:bool,loopLabel), steps(I=[{title,x}],lineColor,numberColor,activeStep), timeline(I=[{date,title,x}],lineColor,dotColor,direction)
Visual: icon(name,s:sm|md|lg|xl,c,b,circle:bool,lb), callout(x,title,b,border,c,i), quote(x,author,s,c), progress(I=[{lb,value 0-100,c}],showValue,height), spacer(bare int), divider(c,spacing)
align:"center", verticalAlign:"center", bgGradient. Badge + 3xl-4xl heading + subtitle. Tag-group on CTA.
Badge + assertion heading + grid (2-3 cols) with metric cards. Each cell: icon (circle, warning color like #EF4444/#F59E0B/#F97316) + heading (stat value, 2xl, colored) + text (label). Cell style: {"padding":"16px","background":"rgba(255,255,255,0.05)","borderRadius":"8px"}. Do NOT use icon-row for numeric stats.
Badge + assertion heading + flow (horizontal, with sublabels) + callout with key stat. Example callout: {"_":"callout","x":"73% resolved without human intervention","i":"Lightbulb","b":"rgba(59,130,246,0.1)","border":"$A"}
Badge + heading + icon-row with distinct ic per item (e.g. $A, $G, #F59E0B, #8B5CF6).
Badge + heading + table (striped, 5-6 rows, styled header with headerBg/headerColor).
When showing "theming" or contrast, use "t":"l" to render a slide with light bg. Shows adaptability.
p (CSS string like "36px 48px")."d" and "a" themes. Use bgGradient on cover, CTA, and section-break slides (every 5-8 slides). Include at least one "l" (light) slide for contrast in longer decks.ic. Metrics MUST have distinct colors. Use 2+ accent colors from palette.