agentleFS
AVANT-ICONICAVANT-ICONIC/gpt-webui-skills/visual-chat/SKILL.md

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

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
  1. Distinctive:

    Do not hide those answers inside paragraphs.

    line 29
  2. Distinctive:

    Use a consistent semantic legend:

    line 33
  3. Distinctive:

    Use emojis and ASCII/Unicode art freely and often, without arbitrary maximum counts, when they improve recognition, personality or scanning.

    line 43
  4. Very specific:

    Prefer native ChatGPT layout and interaction components for UI.

    line 49
  5. Distinctive:

    Use expressive typographic hierarchy as much as the interface permits: visibly larger titles and section headings, varied sizes, weights, …

    line 51
  6. Distinctive:

    Minimal words, maximal signal: Prefer short headings, one-line explanations and visual relationships.

    line 53
  7. Distinctive:

    Use a rich mix of:

    line 57
  8. Distinctive:

    Use these alongside native UI, or as fallbacks when richer rendering is unsupported.

    line 74
  9. Distinctive:

    Prefer this order when applicable:

    line 78
  10. Distinctive:

    Do not bury blockers below background explanation.

    line 96
  11. Distinctive:

    Use one dominant progress indicator per workstream.

    line 100
  12. Distinctive:

    Avoid several competing percentages unless they represent genuinely independent workstreams.

    line 108
  13. Distinctive:

    Never invent precision. If progress is not objectively measurable, use stages instead:

    line 110
  14. Distinctive:

    Prefer compact native status cards, rows or grids for ongoing work.

    line 129
  15. Distinctive:

    Use short labels and stable alignment.

    line 141
  16. Distinctive:

    When several actors or systems are involved, make ownership visually explicit.

    line 147
  17. Distinctive:

    Do not blur model intent, tool output, repository truth, and user decisions into one voice.

    line 170
  18. Distinctive:

    When explaining a workflow, architecture, dependency, or handoff, prefer a small diagram before a prose explanation.

    line 174
  19. Distinctive:

    Use branching when the path genuinely branches:

    line 188
  20. Distinctive:

    If the goal is completed, no useful action remains, or the next action is unsupported, omit the button.

    line 224
  21. Distinctive:

    Do not turn a button click into a canned reply with more buttons.

    line 233
  22. Distinctive:

    Avoid repetitive menu chains, generic exploratory prompts without task context, and buttons whose only result is another set of vague …

    line 238
  23. Distinctive:

    Use one unobtrusive line after the answer, ideally native small/muted text, otherwise plain Markdown.

    line 265
  24. Very specific:

    When nothing was actually applied: 🧩 Skills: none applied, plus any warranted missing-skill warning.

    line 271
  25. Distinctive:

    Put the footer outside user-requested artifacts (source code, JSON, shell commands, specs, messages, prompts, etc.).

    line 273
  26. Distinctive:

    If a multi-stage task benefits from knowing which skill owned each phase, annotate the same footer, not a second report:

    line 277
  27. Distinctive:

    Only tag a phase when a rule from that skill really influenced that phase.

    line 281
  28. Very specific:

    Keep this policy centralized in visual-chat.

    line 289
  29. Distinctive:

    Do not force this exact template when another visual structure fits better.

    line 310
  30. Distinctive:

    Prefer native rendered versions of these formats when available.

    line 324
  31. Distinctive:

    Do not turn every sentence into a box.

    line 326
  32. Distinctive:

    Do not decorate or alter:

    line 332
  33. Distinctive:

    Use expressive native text and one or two visual cues.

    line 370
  34. Distinctive:

    Use varied native typography and a compact card, comparison, status row or flow where helpful.

    line 374
  35. Distinctive:

    Use native visual composition and strong typographic hierarchy throughout:

    line 378
  36. Distinctive:

    When visuals are part of the answer, do not treat an asynchronous image search/query placeholder as a successfully delivered image.

    line 390
  37. Very specific:

    Call image_gen.text2im only for explicit image-generation requests or unambiguous creative image creation/editing (such as a logo draft …

    line 392
  38. Distinctive:

    Verify generated artifact paths exist before linking them.

    line 395
  39. Distinctive:

    If visual lookups or images fail, repair with verified local/generated assets or robust text/inline-vector alternatives, rather than …

    line 396
  40. Distinctive:

    Keep meaningful visible text labels and descriptions, so a broken external visual never empties the answer.

    line 397
  41. Distinctive:

    Do not rely on color-circle meaning alone.

    line 402
  42. Distinctive:

    Prefer simple Unicode that survives copy/paste.

    line 404
  43. Distinctive:

    Keep diagrams understandable in monospace.

    line 406
  44. Distinctive:

    Avoid giant decorative banners that dominate mobile screens.

    line 408
  45. Distinctive:

    add fake confidence indicators.

    line 418
  46. Distinctive:

    When another skill is active:

    line 424

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 → detail

A user should be able to skim the response and understand:

  1. what is happening;
  2. what is done;
  3. what matters;
  4. what is blocked;
  5. 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 action

Lead 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 evidence

Or:

👤 YOU
  └─ decision

🧠 AGENT
  └─ implementation

🔧 TOOL
  └─ evidence

Do 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
  ↓
verify

Use branching when the path genuinely branches:

          ┌─ success → continue
check ────┤
          └─ fail    → repair → recheck

Long-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 exactly Show 3 alternatives; a button visibly labeled continue sends exactly continue.
  • 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.

StatusMeaningEvidence requirement
✓ appliedInstructions were loaded and a material rule or workflow was followedRead content and specific contribution; merely mentioning a skill does not count
◐ inspectedInstructions were read but did not materially affect this answerActual complete SKILL.md inspection, not a listing or snippet
○ consideredA candidate was evaluated but not loaded or neededGrounded applicability decision, not a claim of execution
⚠ expected, not loadedAn applicable task skill or required companion was skipped or inaccessibleClear 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 ○ considered only 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.md URL when convenient; a validated canonical main link 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; ✓ applied additionally 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 boundary

Do 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:

🔧 Install

followed 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 chat

Task-specific requirements win when an exact output format is required.

Visual Chat should enrich presentation without mutating task semantics.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.