Architecture Map
almendili/skills
Build or update an interactive isometric map of a repository's architecture — buildings sized by real measurements, neighborhoods by subsystem, animated flows tracing actual call paths, and a drift…
Emit rich visual output in chat via <widget tags — styled HTML cards, charts, tables, interactive tools, and drawn SVG/canvas diagrams, illustrations, and animations — theme-aware, centered, and…
$ npx skills add Sidiora-Labs/centra-gideon-agent --skill visual-output -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Sidiora-Labs/centra-gideon-agent visual-output --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Sidiora-Labs/centra-gideon-agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/runtime/gideon/extensions/skills/bundled/visual-output .claude/skills/visual-output && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "visual-output" agent skill from https://github.com/Sidiora-Labs/centra-gideon-agent/tree/main/runtime/gideon/extensions/skills/bundled/visual-output into .claude/skills/visual-output/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-output", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Sidiora-Labs/centra-gideon-agent/tree/main/runtime/gideon/extensions/skills/bundled/visual-outputType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Sidiora-Labs/centra-gideon-agent --skill visual-output -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Sidiora-Labs/centra-gideon-agent visual-output --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Sidiora-Labs/centra-gideon-agent.git skills-src && mkdir -p .agents/skills && cp -r skills-src/runtime/gideon/extensions/skills/bundled/visual-output .agents/skills/visual-output && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "visual-output" agent skill from https://github.com/Sidiora-Labs/centra-gideon-agent/tree/main/runtime/gideon/extensions/skills/bundled/visual-output into .agents/skills/visual-output/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-output", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Sidiora-Labs/centra-gideon-agent --skill visual-output -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Sidiora-Labs/centra-gideon-agent visual-output --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Sidiora-Labs/centra-gideon-agent.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/runtime/gideon/extensions/skills/bundled/visual-output .cursor/skills/visual-output && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "visual-output" agent skill from https://github.com/Sidiora-Labs/centra-gideon-agent/tree/main/runtime/gideon/extensions/skills/bundled/visual-output into .cursor/skills/visual-output/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-output", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Sidiora-Labs/centra-gideon-agent.git --path runtime/gideon/extensions/skills/bundled/visual-output--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Sidiora-Labs/centra-gideon-agent --skill visual-output -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Sidiora-Labs/centra-gideon-agent visual-output --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Sidiora-Labs/centra-gideon-agent.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/runtime/gideon/extensions/skills/bundled/visual-output .gemini/skills/visual-output && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "visual-output" agent skill from https://github.com/Sidiora-Labs/centra-gideon-agent/tree/main/runtime/gideon/extensions/skills/bundled/visual-output into .gemini/skills/visual-output/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-output", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Sidiora-Labs/centra-gideon-agent visual-outputInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Sidiora-Labs/centra-gideon-agent --skill visual-output -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Sidiora-Labs/centra-gideon-agent.git skills-src && mkdir -p .github/skills && cp -r skills-src/runtime/gideon/extensions/skills/bundled/visual-output .github/skills/visual-output && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "visual-output" agent skill from https://github.com/Sidiora-Labs/centra-gideon-agent/tree/main/runtime/gideon/extensions/skills/bundled/visual-output into .github/skills/visual-output/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-output", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Sidiora-Labs/centra-gideon-agent --skill visual-output -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Sidiora-Labs/centra-gideon-agent visual-output --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Sidiora-Labs/centra-gideon-agent.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/runtime/gideon/extensions/skills/bundled/visual-output .opencode/skills/visual-output && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "visual-output" agent skill from https://github.com/Sidiora-Labs/centra-gideon-agent/tree/main/runtime/gideon/extensions/skills/bundled/visual-output into .opencode/skills/visual-output/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-output", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
visual-outputEmit rich visual output in chat via <widget tags — styled HTML cards, charts, tables, interactive tools, and drawn SVG/canvas diagrams, illustrations, and animations — theme-aware, centered, and…
Visual Output is an agent skill from Sidiora-Labs/centra-gideon-agent. Emit rich visual output in chat via <widget tags — styled HTML cards, charts, tables, interactive tools, and drawn SVG/canvas diagrams, illustrations, and animations — theme-aware, centered, and responsive instead of clashing or cramped.
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Frontend & Design, covering Diagrams. The repository describes itself as: The companion AI agent that learns, adapts and gets the work done no matter the task. The licence is Apache-2.0.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 2176d5b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are html and css).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
cdn.tailwindcss.comcdn.jsdelivr.netcdnjs.cloudflare.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Visual Output loads about 4.2k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 1,927 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Sidiora-Labs/centra-gideon-agent at commit 2176d5b, republished under its Apache-2.0 licence (© Sidiora-Labs). 1,927 words, ~4,205 tokens.
.claude/skills/visual-output/SKILL.md (or your agent's skills folder).Gideon renders rich HTML inline in chat via <widget> tags. The HTML runs
in a sandboxed iframe that inherits the dashboard's active theme through CSS
variables. Get the styling contract right and a widget looks native on every
theme — light, dark, or custom. Get it wrong (hardcoded colors, fixed pixel
sizes) and it clashes or renders tiny in a corner.
This skill covers both halves of visual output:
<widget title="Sales by Region">
<div class="p-4 rounded-lg" style="background: var(--card); color: var(--card-fg);">
…content…
</div>
</widget>artifacts skill) and reference it — don't inline hundreds
of lines into the chat.The difference between a widget that looks native and one that looks slapped together is consistent layout, spacing, type, and alignment. Follow these.
max-w-md/max-w-xl/max-w-2xl
(pick by density) with mx-auto. A widget that sprawls full-width in a wide
chat reads as broken. Dashboards: max-w-3xl; a single stat/card: max-w-sm.grid grid-cols-2 gap-3 (or gap-4),
not floats or ad-hoc margins. Equal gaps everywhere; let the grid do alignment.border-t border-[var(--border)]), not boxes-within-boxes.Stick to a consistent scale so spacing feels deliberate: gap-2(8) gap-3(12)
gap-4(16); padding p-4/p-5 for cards, p-3 for compact rows. Pick ONE card
padding and one gap size per widget and reuse them. Avoid arbitrary mt-[7px].
text-base font-semibold (or text-lg for a
hero), var(--text-strong).text-sm, var(--text). Captions/labels: text-xs,
var(--muted). Big stat numbers: text-2xl/text-3xl font-semibold tabular-nums.tabular-nums for any aligned numbers/tables.rounded-lg (or rounded-xl for hero), bg-[var(--card)],
border border-[var(--border)]. One elevation level — don't nest cards 3 deep.transition/@keyframes (no JS needed for most). Easing
cubic-bezier(0.2,0,0,1) (or ease-in-out); 150–300ms for UI transitions,
2–6s for ambient loops. Animate opacity/transform only (cheap, smooth).@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}The iframe injects the active theme's palette as CSS custom properties. Style
everything with them (directly via style="…: var(--x)" or Tailwind
arbitrary values like bg-[var(--card)]) so the widget tracks the theme:
| Variable | Use for |
|---|---|
var(--bg) | page / outermost background |
var(--text) | default body text |
var(--card) / var(--card-fg) | panel surface / text on it |
var(--border) | hairlines, dividers, input borders |
var(--accent) / var(--accent-hover) | primary actions, links, highlights |
var(--muted) / var(--muted-strong) | secondary / tertiary text |
var(--text-strong) | emphasized headings |
var(--bg-elevated) / var(--bg-hover) | raised surfaces / hover states |
var(--border-strong) | stronger separators |
var(--ok) / var(--warn) / var(--danger) / var(--info) | status colors |
var(--accent-subtle) / var(--ok-subtle) / var(--warn-subtle) / var(--danger-subtle) | tinted fills/badges |
Never use bg-gray-900, text-white, #fff, or any hardcoded hex — they
break on the opposite theme. Zero hardcoded colors.
The iframe's Content-Security-Policy restricts script-src to inline scripts
plus these CDNs only:
https://cdn.tailwindcss.com (preloaded; classes work out of the box)https://cdn.jsdelivr.nethttps://cdnjs.cloudflare.comLoad charting/visualization libs (e.g. Chart.js) from jsDelivr or cdnjs. Scripts
from any other origin are blocked. connect-src is 'none' — widgets can't make
network calls; render data you already have.
Widgets send events back to the agent. Add data-action (and optional
data-payload, a JSON string) to any clickable element:
<button data-action="approve" data-payload='{"id":"123"}'>Approve</button>On click, the dashboard auto-submits a user message: [UI] approve: {"id":"123"}.
You receive it as the next turn and can respond with text, a new widget, or both.
Forms: inputs with a name attribute are auto-collected on click and merged
into the payload as formData. Use this for creation forms — render pre-filled
inputs, the user adjusts values, clicks submit, and you receive every field:
<input name="title" value="Untitled" class="px-2.5 py-2 rounded-md"
style="background: var(--bg-elevated); color: var(--text); border: 1px solid var(--border);" />
<button data-action="create_task">Create</button>Living views (auto-refresh). A widget can be a living dashboard that pulls fresh data on demand instead of freezing a snapshot at creation. Give it a refresh button:
<button data-action="refresh">Refresh</button>When the widget has been saved as an artifact (it has a stable slug), the dashboard
appends (refresh artifact "<slug>" in place) to the [UI] refresh message it sends you.
On that turn: re-fetch the current data (call the tools/searches that produced it), then
artifact_update("<slug>", ...) with the freshly-rendered HTML — the SAME artifact
updates in place (versioned), so the open view re-renders with live data rather than
spawning a new artifact. This is how you build a "my open items" / "current status"
dashboard that stays current. (If the widget isn't a saved artifact yet, save it first so
it has a slug to refresh.)
A widget can declare its own tunables. The dashboard turns them into typed controls beside the render, and dragging one restyles the widget instantly — no turn, no request, no cost to you. This is how a user gets "a bit more rounded, slightly warmer accent" without spending a message on it.
Declare them ONCE, as a marker-fenced JSON object inside the widget's own script:
<widget title="Sales">
<style>
#card { background: var(--card); border-radius: var(--radius); border: 1px solid var(--accent) }
</style>
<div id="card">…</div>
<script>
/*EDITMODE-BEGIN*/{
"radius": {"label": "Corners", "type": "range", "value": "12px",
"min": 0, "max": 32, "step": 2, "unit": "px"},
"accent": {"label": "Accent", "type": "color", "value": "#3b82f6"}
}/*EDITMODE-END*/
</script>
</widget>Each key is a :root CSS custom property, minus the --. "radius" drives
var(--radius). Reference every tunable through var(--key) in your CSS —
a value the stylesheet doesn't read is a control that appears to do nothing.
The markers are exact: /*EDITMODE-BEGIN*/ … /*EDITMODE-END*/, one block per
widget, JSON object between them. Put it inside a <script> so it never renders.
≤ 8 parameters. More than eight means the widget should be using theme variables rather than inventing its own, and a rail nobody can scan. Extras are dropped, visibly.
Four types, each with the fields it needs:
type | fields | control |
|---|---|---|
color | value (#rrggbb) | swatch + native picker |
range | value, min, max, step?, unit? | slider |
select | value, options (≥2 CSS strings) | dropdown |
toggle | value, on, off (CSS strings) | switch |
Values are CSS strings and are validated: no semicolons, braces, quotes, or
url(). A descriptor that fails validation loses its control; the widget still
renders.
You author the block; the dashboard owns it afterwards. When the user saves
their tweaks, the dashboard rewrites the value fields in place and cuts a new
artifact version. Everything outside the markers is untouched, and your other
fields survive. So when you REGENERATE a widget that already had tunables, keep
the same keys and carry the current values across — otherwise you throw away
choices the user already made.
On a rendered widget the user can switch on Mark elements, click the parts that are wrong, and write one short note per element. You receive ONE turn:
[UI] correction: 2 elements marked — regenerate the artifact applying every change
below, and change nothing else
```corrections
1. selector: [data-testid="cta"]
within: section[id="hero"]
element: <button data-testid="cta">Buy</button>
change: make this green
2. selector: p.price
within: section[id="hero"]
element: <p class="price">$9</p>
change: bigger
```Treat it literally: apply every listed change, change nothing else, and if the
widget is a saved artifact (the message ends with refresh artifact "<slug>" in place) write the result back to THAT slug with artifact_update. Giving elements
a data-testid makes these anchors stable and unambiguous — worth doing on the
handful of elements a user is likely to want changed.
text-xs py-1.5 px-3.5 rounded-mdtext-[11px]text-sm px-2.5 py-2 rounded-mdRender bare URLs as anchors. Always open external links safely and style them with the accent color:
<a href="https://example.com" target="_blank" rel="noopener noreferrer"
style="color: var(--accent);">example.com</a>Drawn visuals are emitted inside a <widget> (same container, theme vars, and
CSP as above). The container is easy; the craft is making the drawing itself
centered, correctly proportioned, theme-aware, labelled, and legible rather
than cramped, clipped, or off-canvas.
The #1 failure is a fixed-size
<svg width="350" height="200">that renders tiny in a corner. Always make the SVG responsive and centered (below).
<widget title="…">
<div style="max-width: 640px; margin: 0 auto;">
<svg viewBox="0 0 640 360" width="100%" height="auto"
preserveAspectRatio="xMidYMid meet" role="img" aria-label="…describe it…"
style="display:block">
…
</svg>
</div>
</widget>viewBox defines the coordinate space; width="100%" makes it scale. Never
set a fixed pixel width/height on the <svg> — it won't be responsive.preserveAspectRatio="xMidYMid meet" centers + fits without distortion.display:block + margin:0 auto on a max-width wrapper centers it and
caps it so it doesn't sprawl edge-to-edge in a wide chat.640 360) for scenes, 1:1
(400 400) for cycles/radial, 3:1 (720 240) for timelines/flows.Style strokes/fills with the theme vars (injected into the iframe, same as above):
var(--border) (thin, 0.5–1px)var(--accent)var(--muted)var(--danger); positive → var(--ok)var(--text), secondary labels → var(--muted)var(--accent-subtle) / tinted fills, never opaque black/whitePut shared style in one <style> block with classes (.axis{stroke:var(--border)})
rather than repeating stroke= on every element — easier to keep consistent.
font: 14px/1.4 -apple-system, sans-serif; for body labels, ~12px for
captions; use text-anchor="middle" for centered labels under a node and
dominant-baseline="middle" for vertical centering. Never rely on the default
baseline for centered text.<style> block) or SMIL
(<animate>, <animateTransform>) — both run in the sandbox without extra libs.animation-iteration-count: infinite only for genuinely
ambient visuals (waves, pulses, orbits). One-shot reveals should play once.position:relative; height:0; padding-bottom:56.25%) so it's responsive.Prefer plain markdown by default. Promote to a widget only when styled HTML communicates clearly better — charts, color-coded tables, styled cards, visual summaries, diagrams, or simple interactive tools. Don't wrap a paragraph in a widget.
The dashboard's widget_density setting (more / less, default more)
signals how freely to reach for widgets; on less, use them only when markdown
is plainly insufficient.
max-w-* mx-auto, or max-width wrapper for SVG)
— not sprawling full-width?tabular-nums?viewBox + width="100%" (no fixed px),
centered, content inside the frame with breathing room, labels legible and
correctly centered? Reads clearly at half size on both themes?© Sidiora-Labs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in runtime/gideon/extensions/skills/bundled/visual-output of Sidiora-Labs/centra-gideon-agent.
Open the folder on GitHubat commit 2176d5b
Visual Output next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Visual Output this skillSidiora-Labs/centra-gideon-agent | 181 | — | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Architecture Mapalmendili/skills | 382 | 1 repos | ~2.3k | Automated safety check: Pass | None | |
| Previewhanamizuki/solopreneur | 152 | — | ~5.2k | Automated safety check: Pass | MIT | |
| Show Metellahq/opensession | 392 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Update Web Assetsgarfiec/Librechat-Mobile | 112 | — | ~1.8k | Automated safety check: Notes | MIT | |
| Generative UIhimself65/finance-skills | 3.4k | — | ~3.1k | Automated safety check: Pass | MIT |
almendili/skills
Build or update an interactive isometric map of a repository's architecture — buildings sized by real measurements, neighborhoods by subsystem, animated flows tracing actual call paths, and a drift…
hanamizuki/solopreneur
Create an interactive HTML preview of any proposal, plan, idea, doc, brief, or spec and land it in the browsable local Preview Library by default (opens under file:// with a catalog sidebar and…
tellahq/opensession
Help the user understand the current topic visually with concise diagrams, code-shape sketches, and focused HTML artifacts.
garfiec/Librechat-Mobile
Update the third-party JavaScript vendored into the app for the artifact, diagram, and math WebViews (KaTeX, mermaid, marked, highlight.js, Tailwind, Babel, React).
himself65/finance-skills
Design system and templates for Claude's built-in generative UI — the showwidget tool that renders interactive HTML/SVG widgets inline in claude.ai conversations.
mirumee/nimara-ecommerce
Help the user understand the current topic visually with concise diagrams, code-shape sketches, and focused HTML artifacts.
Sidiora-Labs/centra-gideon-agent
Persist, version, and iterate on LLM-generated UI (widgets, HTML, markdown).
Sidiora-Labs/centra-gideon-agent
Sample several candidate answers in parallel, judge them against stated criteria, and present the winner with the runners-up kept one click away.
Sidiora-Labs/centra-gideon-agent
Author a real document — a report, proposal, slide deck, spec, or paper — by settling audience, claim, and structure before drafting prose, then writing to that structure.
Sidiora-Labs/centra-gideon-agent
Write long-form editorial documents as clean, semantic HTML saved as an artifact (kind=document) — reports, briefs, explainers, proposals, write-ups.
Sidiora-Labs/centra-gideon-agent
The operator's manual for DRIVING Gideon's API and tools — how to find an exact tool/route signature, the mandatory verify-after-mutate loop, and what NOT to hand-roll.
Sidiora-Labs/centra-gideon-agent
Author infographics with the AntV declarative DSL — pick a template, fill a small indented data tree, and save as an artifact (kind=infographic) that renders to crisp SVG and streams as you write it.
Categories
Emit rich visual output in chat via <widget tags — styled HTML cards, charts, tables, interactive tools, and drawn SVG/canvas diagrams, illustrations, and animations — theme-aware, centered, and…. Visual Output is an agent skill from Sidiora-Labs/centra-gideon-agent. Emit rich visual output in chat via <widget tags — styled HTML cards, charts, tables, interactive tools, and drawn SVG/canvas diagrams, illustrations, and animations — theme-aware, centered, and responsive instead of clashing or cramped.
Visual Output fits situations like: tasks that involve Diagrams.
Run `npx skills add Sidiora-Labs/centra-gideon-agent --skill visual-output -a claude-code`. Or copy the skill folder (runtime/gideon/extensions/skills/bundled/visual-output in Sidiora-Labs/centra-gideon-agent) into .claude/skills/visual-output in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Sidiora-Labs/centra-gideon-agent --skill visual-output -a codex`. Or copy the skill folder (runtime/gideon/extensions/skills/bundled/visual-output in Sidiora-Labs/centra-gideon-agent) into .agents/skills/visual-output in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Sidiora-Labs/centra-gideon-agent --skill visual-output -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/visual-output, .gemini/skills/visual-output, .github/skills/visual-output and .opencode/skills/visual-output in your project.
SKILL.md names no scripts, command-line tools or credentials: Visual Output is instructions for the agent only.
SKILL.md names 3 domains. In commands or code: cdn.tailwindcss.com, cdn.jsdelivr.net and cdnjs.cloudflare.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Visual Output is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Visual Output: Architecture Map (almendili/skills, 382 stars), Preview (hanamizuki/solopreneur, 152 stars), Show Me (tellahq/opensession, 392 stars) and Update Web Assets (garfiec/Librechat-Mobile, 112 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Sidiora-Labs (a GitHub organization) maintains it in Sidiora-Labs/centra-gideon-agent, which has 181 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 8, 2026.
Source: Sidiora-Labs/centra-gideon-agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.