conversational-ui-restraint
Skill3 starsChanged 14 days agoApache-2.0View on GitHub
Build or review a chat/copilot/assistant interface — message list, composer, streaming responses, conversation sidebar, canvas/side-panel for structured output. Trigger for "make this chat UI look like ChatGPT", "chat UI like Claude", "为什么我的对话界面看起来很乱", "streaming response feels janky", "conversation sidebar needs work", "chat UI feels cluttered", or when reviewing a chat/assistant screen before shipping it. This is a DIFFERENT problem than dense dashboards — a chat UI’s job is to get out of the way of the content, not to show more data per screen (use `terminal-software-design` for tables/dashboards/data grids, not this). Do NOT trigger for a cross-category templated-look critique of a non-chat page (use `ai-generated-ui-craft`), to invent a generic app aesthetic from a blank slate (use `industry-design-direction`), or for landing pages. Portable: self-contained prose, no script dependency — works pasted into any assistant.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- artherahq/skillsword for word, first seen Oct 31, 2026
Other versions1 project uses a version of this.
Word for word · 1
- artherahq/skills★ 3100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository25 other files it gives its agents.
- ai-generated-ui-craftSkill
- backtest-validationSkill
- carrier-scorecardSkill
- compliance-audit-trailSkill
- equity-research-reportSkill
- execution-positionSkill
- factor-researchSkill
- gamma-exposureSkill
- industry-design-directionSkill
- inventory-policySkill
- minimal-editorial-exportsSkill
- minimal-editorial-posterSkill
- multiple-testing-correctionSkill
- operator-revenue-integritySkill
- point-in-time-researchSkill
- portfolio-optimizationSkill
- risk-assessmentSkill
- short-form-video-editingSkill
- stablecoin-settlement-auditSkill
- strategy-generationSkill
- terminal-software-designSkill
- trading-ui-patternsSkill
- ui-asset-sourcingSkill
- ui-design-systemSkill
- your-skill-nameSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 6 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 38
Default to a near-monochrome palette (grays/whites/near-blacks) for the interface chrome itself.
- Distinctive: line 42
If everything has a little color — every icon tinted, every card with an accent border — nothing stands out, and the page reads as …
- Distinctive: line 56
Don't let structural UI (borders around every message, heavy card shadows per bubble) compete with the text.
- Distinctive: line 84
Avoid animating things that don't need it: a new message appearing doesn't need a slide-and-fade entrance, it needs to just be there.
- Distinctive: line 92
When output has real structure (a document, a code diff, a generated image, a chart), don't force it into the linear message stream — …
- Distinctive: line 112
Don't over-decorate the empty state to compensate for having nothing to show yet — a centered greeting plus a few real example actions is …
- Distinctive: line 119
If the conversation involves code/file changes rather than pure prose:
≈ “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
Conversational UI Restraint
The best chat/assistant interfaces (ChatGPT, Claude.ai, Codex) don't look good
because of a secret tool — they look good because of a small set of disciplines
applied consistently, all pointing the same direction: the interface should
disappear and the content should be the only thing anyone remembers. This is
the opposite instinct from terminal-software-design, where density is
correct — here, restraint is correct, because the "data" is prose, and prose
needs room to be read, not scanned.
A naive attempt at "make it look like ChatGPT" tends to copy the surface (a gray sidebar, rounded message bubbles) and miss the actual discipline underneath: near-monochrome color reserved for signal, content-first visual hierarchy, one consistent icon language, motion that serves comprehension rather than decorates it.
1. Color: monochrome first, color is a signal not a decoration
- Default to a near-monochrome palette (grays/whites/near-blacks) for the interface chrome itself. Reserve actual color for things that mean something: a link, a syntax-highlighted token, a status indicator, the one brand accent used sparingly (a send button, a selected state).
- If everything has a little color — every icon tinted, every card with an accent border — nothing stands out, and the page reads as decorated rather than considered. The restraint itself is the signal of quality.
- Dark and light mode both need this discipline independently — a dark theme with the same near-monochrome restraint reads calm; a dark theme where every element got a random accent color to "pop" reads busy.
2. Content is the star; chrome recedes
- Message content gets the most visual weight: best contrast, most generous line-height, comfortable measure (~60-75 characters per line for prose). UI chrome (timestamps, avatars, action icons) should be quieter — smaller, lower contrast, revealed on hover rather than always fighting for attention.
- Don't let structural UI (borders around every message, heavy card shadows per bubble) compete with the text. A hairline separator or whitespace alone is usually enough to distinguish turns — test removing the border before adding one.
- Code blocks, tables, and structured data inside a conversation should look distinctly different from prose (monospace, a subtle background tint) so the eye can tell at a glance which register it's reading in.
3. One icon language, used sparingly
- Pick one icon set (consistent stroke width, consistent corner radius) and never mix in a second family — a rounded-corner icon next to a sharp-corner one from a different set is one of the fastest tells that a UI wasn't considered as a whole.
- Most actions in a chat UI don't need an icon at all — text labels are often clearer than an icon for anything beyond the handful of universal ones (send, attach, copy, more). Icon-only buttons need a tooltip or they're a guessing game.
4. Motion serves comprehension, not decoration
- Streaming text should feel like the model is thinking and writing, not like text is being typewriter-animated for effect — token-by-token reveal with no extra easing/bounce on top of it.
- Loading states (thinking, searching, running a tool) should show what's actually happening when possible ("Searching the web…", "Reading 3 files…") rather than a generic spinner — this is honesty as much as it is craft; don't imply progress on work that isn't happening.
- Avoid animating things that don't need it: a new message appearing doesn't need a slide-and-fade entrance, it needs to just be there. Motion budget is scarce — spend it on the one or two moments that actually benefit (a response starting to stream, a tool call resolving), not scattered across every state change.
5. Progressive disclosure: keep the conversation clean
- When output has real structure (a document, a code diff, a generated image, a chart), don't force it into the linear message stream — surface it in a side panel/canvas that opens next to the conversation, so the chat itself stays a clean record of the exchange rather than a scroll of giant embedded artifacts.
- The side panel itself should follow
terminal-software-design's density rules once it's showing structured content (a document, a diff, a table) — the conversational restraint above applies to the chat pane, not to every panel in the app. - Conversation sidebar (history list): compact rows, no per-item card chrome — a hover state and the title/date is usually enough. This is a list to scan and pick from, not content to read, so it can be denser than the message pane itself.
6. Empty and onboarding states
- A first-run empty state should suggest the next concrete action in the product's own vocabulary (a few example prompts specific to what the tool actually does), not a generic "How can I help you today?" with no grounding in the product.
- Don't over-decorate the empty state to compensate for having nothing to show yet — a centered greeting plus a few real example actions is usually enough; a large illustration or animation here reads as filling space rather than being helpful.
7. Coding-agent-specific conventions (Codex-style)
If the conversation involves code/file changes rather than pure prose:
- Diffs use the standard +/- color convention (additions/removals), never a novel scheme — this is the one place where inventing your own visual language actively hurts comprehension.
- File paths render as breadcrumbs or truncated-with-tooltip, never wrapped mid-path.
- Long tool output (command results, file listings) collapses by default with an explicit expand — showing everything inline turns the conversation into a wall of logs.
- Task/step status (running, done, failed) needs a consistent glyph + color pairing used identically everywhere it appears, not styled per-context.
Checklist
- Is color reserved for signal (links, status, one accent), not scattered as decoration across icons/cards?
- Does message content have visibly more weight than the chrome around it (timestamps, avatars, hover-only actions)?
- Is there exactly one icon family in use, with text labels where an icon alone would be ambiguous?
- Does streaming/loading motion communicate real state, not just move for its own sake?
- Does structured output (documents, diffs, tables) open in a side panel instead of bloating the message stream?
- Is the empty state grounded in this product's actual capabilities, not a generic greeting?
- (Coding-agent UIs) Do diffs use standard +/- color, and does long tool output collapse by default?
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.

