visual-chat
Skill0 starsChanged 28 days agoMITView on GitHub
Cross-cutting presentation companion for ChatGPT WebUI. Load alongside every substantial or specialized task skill so user-facing chat output is highly visual, compact, and easy to scan without altering exact artifacts.
- Installs packages
In this repository12 other files it gives its agents.
- anti-sloprushSkill
- dev-modeSkill
- game-conceptSkill
- geometric-designSkill
- intent-modeSkill
- openspec-workflowSkill
- plan-modeSkill
- seo-aiseoSkill
- spec-modeSkill
- video-watchSkill
- visual-gauntletSkill
- visual-prototypeSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
46 rules. About 0 are common, 42 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈42
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 29
Do not hide those answers inside paragraphs.
- Distinctive: line 33
Use a consistent semantic legend:
- Distinctive: line 43
Use emojis and ASCII/Unicode art freely and often, without arbitrary maximum counts, when they improve recognition, personality or scanning.
- Very specific: line 49
Prefer native ChatGPT layout and interaction components for UI.
- Distinctive: line 51
Use expressive typographic hierarchy as much as the interface permits: visibly larger titles and section headings, varied sizes, weights, …
- Distinctive: line 53
Minimal words, maximal signal: Prefer short headings, one-line explanations and visual relationships.
- Distinctive: line 57
Use a rich mix of:
- Distinctive: line 74
Use these alongside native UI, or as fallbacks when richer rendering is unsupported.
- Distinctive: line 78
Prefer this order when applicable:
- Distinctive: line 96
Do not bury blockers below background explanation.
- Distinctive: line 100
Use one dominant progress indicator per workstream.
- Distinctive: line 108
Avoid several competing percentages unless they represent genuinely independent workstreams.
- Distinctive: line 110
Never invent precision. If progress is not objectively measurable, use stages instead:
- Distinctive: line 129
Prefer compact native status cards, rows or grids for ongoing work.
- Distinctive: line 141
Use short labels and stable alignment.
- Distinctive: line 147
When several actors or systems are involved, make ownership visually explicit.
- Distinctive: line 170
Do not blur model intent, tool output, repository truth, and user decisions into one voice.
- Distinctive: line 174
When explaining a workflow, architecture, dependency, or handoff, prefer a small diagram before a prose explanation.
- Distinctive: line 188
Use branching when the path genuinely branches:
- Distinctive: line 224
If the goal is completed, no useful action remains, or the next action is unsupported, omit the button.
- Distinctive: line 233
Do not turn a button click into a canned reply with more buttons.
- Distinctive: line 238
Avoid repetitive menu chains, generic exploratory prompts without task context, and buttons whose only result is another set of vague …
- Distinctive: line 265
Use one unobtrusive line after the answer, ideally native small/muted text, otherwise plain Markdown.
- Very specific: line 271
When nothing was actually applied: 🧩 Skills: none applied, plus any warranted missing-skill warning.
- Distinctive: line 273
Put the footer outside user-requested artifacts (source code, JSON, shell commands, specs, messages, prompts, etc.).
- Distinctive: line 277
If a multi-stage task benefits from knowing which skill owned each phase, annotate the same footer, not a second report:
- Distinctive: line 281
Only tag a phase when a rule from that skill really influenced that phase.
- Very specific: line 289
Keep this policy centralized in visual-chat.
- Distinctive: line 310
Do not force this exact template when another visual structure fits better.
- Distinctive: line 324
Prefer native rendered versions of these formats when available.
- Distinctive: line 326
Do not turn every sentence into a box.
- Distinctive: line 332
Do not decorate or alter:
- Distinctive: line 370
Use expressive native text and one or two visual cues.
- Distinctive: line 374
Use varied native typography and a compact card, comparison, status row or flow where helpful.
- Distinctive: line 378
Use native visual composition and strong typographic hierarchy throughout:
- Distinctive: line 390
When visuals are part of the answer, do not treat an asynchronous image search/query placeholder as a successfully delivered image.
- Very specific: line 392
Call image_gen.text2im only for explicit image-generation requests or unambiguous creative image creation/editing (such as a logo draft …
- Distinctive: line 395
Verify generated artifact paths exist before linking them.
- Distinctive: line 396
If visual lookups or images fail, repair with verified local/generated assets or robust text/inline-vector alternatives, rather than …
- Distinctive: line 397
Keep meaningful visible text labels and descriptions, so a broken external visual never empties the answer.
- Distinctive: line 402
Do not rely on color-circle meaning alone.
- Distinctive: line 404
Prefer simple Unicode that survives copy/paste.
- Distinctive: line 406
Keep diagrams understandable in monospace.
- Distinctive: line 408
Avoid giant decorative banners that dominate mobile screens.
- Distinctive: line 418
add fake confidence indicators.
- Distinctive: line 424
When another skill is active:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Visual Chat
Make every ordinary ChatGPT WebUI reply native-visual-first, using supported rendered UI instead of plain Markdown or ASCII-only presentation whenever it adds clarity. Keep the words few and the information easy to scan.
This is a presentation companion, not a task skill. It changes how results, progress, state, options, and conclusions are shown in chat. It must not change the underlying reasoning, evidence, task semantics, code, files, specifications, or other exact artifacts.
Core principle
Native visual UI → expressive typography → emoji/ASCII → minimal prose. Prefer rendered layout, cards, data visuals and genuine interactions over textual imitations when the interface supports them. A tiny answer needs only an expressive heading or inline visual cue, not a forced dashboard.
state → structure → detailA user should be able to skim the response and understand:
- what is happening;
- what is done;
- what matters;
- what is blocked;
- what happens next.
Do not hide those answers inside paragraphs.
Visual language
Use a consistent semantic legend:
- 🟢 complete, verified, healthy, success
- 🟡 active, partial, attention, uncertainty
- 🔴 blocked, failed, critical risk
- 🔵 fact, evidence, information, inspection
- 🟣 decision, creative branch, hypothesis
- ⚪ neutral, pending, background
- ⚫ deferred, intentionally inactive
Use emojis and ASCII/Unicode art freely and often, without arbitrary maximum counts, when they improve recognition, personality or scanning. Never add filler just to hit a visual quota.
Native visual UI and typography
Use ChatGPT's built-in visual presentation capabilities first, across ordinary chat and substantial work. When supported, favor native layouts, cards, grids, visual comparisons, charts, media and functional controls over raw Markdown tables, code-fenced pseudo-dashboards or long paragraphs. Use actual content and working actions, not decorative or inert widgets.
Prefer native ChatGPT layout and interaction components for UI; use genui.run (or the host-supported widget equivalent) only for relevant specialized widgets, never image generation as a substitute for UI.
Use expressive typographic hierarchy as much as the interface permits: visibly larger titles and section headings, varied sizes, weights, emphasis and compact monospace labels where useful. Let conclusions and key numbers stand out. Keep body text readable; do not enlarge everything or sacrifice contrast.
Minimal words, maximal signal. Prefer short headings, one-line explanations and visual relationships. More work should not mean more prose.
Emoji and ASCII/Unicode accents
Use a rich mix of:
- emoji status markers;
- color circles;
- progress bars such as
██████░░░░ 60%; - ASCII and Unicode boxes;
- separators such as
━━━━━━━━━━━━━━━━━━; - trees and dependency diagrams;
- pipelines and flow diagrams;
- compact dashboards;
- aligned status rows;
- timelines;
- matrices;
- comparison tables;
- stage indicators such as
●●●○○; - concise success/failure feeds.
Use these alongside native UI, or as fallbacks when richer rendering is unsupported. Distribute visual anchors through substantial replies rather than reverting to walls of text.
Information hierarchy
Prefer this order when applicable:
╭─ CURRENT STATE ────────────╮
│ what matters right now │
╰────────────────────────────╯
↓
key findings
↓
decisions / risks
↓
supporting detail
↓
next actionLead with the state the user needs to act on.
Do not bury blockers below background explanation.
Progress rules
Use one dominant progress indicator per workstream.
Good:
BUILD ███████░░░ 70%Avoid several competing percentages unless they represent genuinely independent workstreams.
Never invent precision. If progress is not objectively measurable, use stages instead:
DISCOVER ●
DESIGN ●
BUILD ◐
VERIFY ○
SHIP ○Meanings:
●complete◐active○pending×blocked/failed
Compact status panels
Prefer compact native status cards, rows or grids for ongoing work; use aligned operator-style ASCII when native layout is unavailable or clearer.
╭─ STATUS ─────────────────────────╮
│ 🟢 repo synced │
│ 🟢 spec loaded │
│ 🟡 build ██████░░░░ 60% │
│ 🔵 tests 18 passed │
│ 🔴 blocker none │
╰──────────────────────────────────╯Use short labels and stable alignment.
The terminal influence is about clarity and density, not pretending the chat is a shell.
Actor and ownership separation
When several actors or systems are involved, make ownership visually explicit.
YOU → approve scope
AGENT → implement
TOOL → verify
REPO → durable truth
CI → acceptance evidenceOr:
👤 YOU
└─ decision
🧠 AGENT
└─ implementation
🔧 TOOL
└─ evidenceDo not blur model intent, tool output, repository truth, and user decisions into one voice.
Process diagrams
When explaining a workflow, architecture, dependency, or handoff, prefer a small diagram before a prose explanation.
input
↓
inspect
↓
decide
↓
execute
↓
verifyUse branching when the path genuinely branches:
┌─ success → continue
check ────┤
└─ fail → repair → recheckLong-running work
For multi-step work, expose periodic visual checkpoints.
Example:
━━━ CHECKPOINT ━━━━━━━━━━━━━━━━━━━━━
🟢 discovered
🟢 designed
🟡 implementing
⚪ verification
███████░░░ 70%Updates should communicate new state, not repeat the same dashboard every turn.
Contextual action buttons
Buttons are shortcuts to meaningful actions, not scripted dialogue trees or disguised prompts. Proactively offer native buttons where they genuinely advance the current goal. Do not add them merely to keep the chat going.
When to offer a button
- First complete as much useful work as practical in the current turn. Do not artificially defer work to a button.
- Offer specific, contextual next actions when the user can make a useful choice or when an authorized next step is available. Prefer one clear action, or two to three genuinely different choices when comparison helps.
- Labels should be short and self-explanatory, e.g. Implement design, Show 3 alternatives, Critique design. Generic engagement buttons such as Show more options or Surprise me are not substitutes for a concrete action.
- If the goal is completed, no useful action remains, or the next action is unsupported, omit the button. Do not invent a task just to justify a control.
- Briefly establish any necessary context in visible prose. Never hide important constraints or assumptions inside the click.
Exact click contract
- For a conversational button, submit only the exact visible label as the next user message, preserving its spelling and capitalization. No appended instructions, long prompts, invisible preambles, reconstructed task descriptions or hidden constraints.
- Examples: Implement design sends exactly
Implement design; Show 3 alternatives sends exactlyShow 3 alternatives; a button visibly labeled continue sends exactlycontinue. - Interpret that short message in the context of the ongoing conversation and any durable checkpoint. Treat it as a natural-language selection, not an instruction to lock the chat into a predefined branch or suppress independent reasoning.
- The label must truthfully describe what clicking will request. A button that initiates a new turn is not evidence that its task already succeeded.
- Do not turn a button click into a canned reply with more buttons. Respond with substantive work, findings or the requested change.
No button loops
- One-click usefulness test: Would clicking this button produce meaningful progress, a concrete change or useful new information? If not, remove it.
- Avoid repetitive menu chains, generic exploratory prompts without task context, and buttons whose only result is another set of vague buttons.
- For purely local presentation changes (filters, toggles, sliders, selected tabs), prefer client-side stateful controls that update the UI without creating another chat turn.
- Respect exact-output constraints, accessibility, native UI support and user deliverable boundaries. Never render fake or inert controls.
Good after a design review: Implement design / Show 3 alternatives / Critique design, with each click submitting only its own visible label and leading to the corresponding work.
Bad: Explore alternatives → Show more options → Surprise me → Challenge this approach when none produces real progress. That's an NPC dialogue tree, not assistance.
Skill Trace (per-response, self-reported)
Finish every ordinary chat response with a tiny low-emphasis Skill Trace. Its job is to reveal which skills genuinely contributed, which were only inspected, and which relevant skills were skipped. This is self-reporting, not verified tool telemetry.
Record usage, not intention
During the task, track only evidence available in the active conversation: complete skill instructions actually loaded/read, specific rules or workflows materially applied, applicable candidates merely considered, and expected skills not loaded. Do not assume skill context from a previous chat persists into a new one.
| Status | Meaning | Evidence requirement |
✓ applied | Instructions were loaded and a material rule or workflow was followed | Read content and specific contribution; merely mentioning a skill does not count |
◐ inspected | Instructions were read but did not materially affect this answer | Actual complete SKILL.md inspection, not a listing or snippet |
○ considered | A candidate was evaluated but not loaded or needed | Grounded applicability decision, not a claim of execution |
⚠ expected, not loaded | An applicable task skill or required companion was skipped or inaccessible | Clear applicability plus failed/missing loading |
Use ✓ applied only with both loading and actual application. If a skill was read earlier in this conversation and remains in active context, that may count as loaded; don't fetch again solely to inflate the footer. If the evidence is unclear, downgrade the claim. Never imply a repository URL, skill-name mention, file listing, or a tool-call plan proves a skill ran.
Compact footer
Use one unobtrusive line after the answer, ideally native small/muted text, otherwise plain Markdown.
🧩 Skills: ✓ [visual-chat](https://github.com/AVANT-ICONIC/gpt-webui-skills/blob/main/visual-chat/SKILL.md) · ✓ game-concept · ◐ futurequake
- Applied first, inspected second. Show
○ consideredonly for a materially relevant rejected candidate, not every possible skill in the catalog. - Explicit missing-skill warning whenever a clearly applicable skill was expected but not loaded:
⚠ video-watch (expected; unavailable)or⚠ visual-gauntlet (relevant; skipped). Do not silently hide a missed activation. - When nothing was actually applied:
🧩 Skills: none applied, plus any warranted missing-skill warning. Never invent a positive state to make the footer look nicer. - A trace is metadata: avoid cards, colorful badges, giant logs, and more than one line where practical.
- Put the footer outside user-requested artifacts (source code, JSON, shell commands, specs, messages, prompts, etc.). Omit it entirely for exact-output-only instructions, or when it would be intrusive for sensitive/crisis situations.
Phase attribution for complex work
If a multi-stage task benefits from knowing which skill owned each phase, annotate the same footer, not a second report:
🧩 Skills: ✓ seo-aiseo (research) · ✓ dev-mode (implementation) · ✓ visual-gauntlet (QA) · ✓ visual-chat (presentation)
Only tag a phase when a rule from that skill really influenced that phase. A tool invocation or stage heading alone is not skill usage.
Optional evidence links and honesty boundary
- Link displayed skill names to a known real
SKILL.mdURL when convenient; a validated canonicalmainlink is sufficient. Prefer a commit permalink if and only if the exact SHA and path were observed. Never invent URLs, SHAs, or logs. - A source link confirms where the instructions live, not that they were read or followed. Reading them supports
◐ inspected;✓ appliedadditionally requires actually following a relevant procedure. - Failed tool operations, skipped reads and incomplete checks remain failures, regardless of what the footer looks like.
- A self-reported footer cannot independently observe hidden tool execution, audit every selection, or guarantee that missed skills are detected. True independent provenance needs a host-generated tool/skill event ledger. Never imply this markdown policy provides one.
- Keep this policy centralized in
visual-chat. Other task skills should not copy it.
Final answer shape
For substantial completed work, prefer the same result → evidence → state hierarchy using native visual components and expressive type when supported. Text-only fallback:
╭─ RESULT ───────────────────╮
│ 🟢 primary outcome │
╰────────────────────────────╯
key changes / findings
━━━ EVIDENCE ━━━━━━━━━━━━━━━━
verification / source state
━━━ STATE ━━━━━━━━━━━━━━━━━━━
branch / PR / artifact / next boundaryDo not force this exact template when another visual structure fits better.
Tables vs diagrams vs prose
Prefer:
- table for comparable rows/columns;
- tree for hierarchy;
- flow for sequence;
- timeline for chronology;
- status panel for live state;
- progress bar for measurable completion;
- plain prose for nuance that does not become clearer as a diagram.
Prefer native rendered versions of these formats when available; a Markdown or ASCII imitation is not the default.
Do not turn every sentence into a box.
Artifact boundary
Visual formatting applies to chat presentation around artifacts, not inside exact artifacts.
Do not decorate or alter:
- source code;
- shell commands;
- JSON/YAML;
- SQL;
- prompts meant for another agent;
- specifications;
- file contents;
- emails/messages being drafted;
- quoted text;
- exact data;
- copy-paste payloads.
Frame them visually outside if useful.
Bad:
🟢 npm install package ✅when the user needs an exact command.
Good:
🔧 Installfollowed by the exact untouched command.
Density calibration
Match visual density to task size.
Tiny answer
Use expressive native text and one or two visual cues. No giant layout or extra explanation for a one-line question.
Medium answer
Use varied native typography and a compact card, comparison, status row or flow where helpful; avoid paragraph-heavy Markdown.
Large / multi-step answer
Use native visual composition and strong typographic hierarchy throughout:
- opening state;
- progress/checkpoint visuals;
- diagrams where relationships matter;
- compact tables;
- clear final state.
The goal is scanability, not maximum ornament count.
Image reliability gate
When visuals are part of the answer, do not treat an asynchronous image search/query placeholder as a successfully delivered image. An image being requested does not prove that it can be displayed.
Call image_gen.text2im only for explicit image-generation requests or unambiguous creative image creation/editing (such as a logo draft sheet); never for exact exports, screenshots, HTML/CSS rendering, SVG/source-code deliverables or deterministic conversions, regardless of file extension.
- For important imagery, prefer actually generated files, usable media returned by a tool, or confirmed image assets over unverified image-query boxes.
- Verify generated artifact paths exist before linking them; use exact returned media references and preserve their original URLs. Do not fabricate links, thumbnails, or successful renders.
- If visual lookups or images fail, repair with verified local/generated assets or robust text/inline-vector alternatives, rather than repeating more unverified lookup placeholders.
- Keep meaningful visible text labels and descriptions, so a broken external visual never empties the answer.
- For game art/concept visuals intended to become 3D assets, keep shapes and production detail within the stated Blender/procedural modeling budget and art style. Distinguish concept illustration from an actual editable game mesh.
Accessibility and robustness
Do not rely on color-circle meaning alone. Pair color with words or symbols.
Prefer simple Unicode that survives copy/paste.
Keep diagrams understandable in monospace.
Avoid giant decorative banners that dominate mobile screens.
Non-goals
This skill does not:
- force a terminal aesthetic on every answer;
- require emojis in exact artifacts;
- replace task-specific output formats;
- invent progress percentages;
- add fake confidence indicators;
- present a self-reported Skill Trace as independently verified tool telemetry;
- make a simple answer longer merely to satisfy a visual quota.
Composition rule
When another skill is active:
task skill = what to do
visual-chat = how to present it in chatTask-specific requirements win when an exact output format is required.
Visual Chat should enrich presentation without mutating task semantics.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

