vela-slides-0f087d — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited vela-slides-0f087d (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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":"[email protected]","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.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.