v3-ui-style
Skill2 starsChanged 10 days agoMITView on GitHub
Only for projects that adopted the mailcow Logs Viewer v3 style. Use it only when the project's AGENTS.md or CLAUDE.md says its UI follows v3-ui-style, the mailcow Logs Viewer v3 style or the v3 style or look, or the user asks for that design in this conversation. In any other UI task do not use it, do not open it and do not mention it. Being installed or listed, or a screen that resembles an admin or mail UI, is not adoption. Holds the v3 design rules, behaviors and bundled code.
In this repository6 other files it gives its agents.
- cross-reviewSkill
- file-prSkill
- html-communicationSkill
- html-emailSkill
- project-mapSkill
- session-transferSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 2 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 35
Every hover style is gated by @media (hover: hover).
- Very specific: line 43
Read references/v3-design-principles.agents.md fully: core rules, tokens with CSS, type scale, layout, components, copy, behavior …
- Distinctive: line 45
When a rule names a rule of another area by ID (for example "AX-7") and your screen uses that part, read that rule too.
- Very specific: line 49
All area files are in references/behaviors/.
- Distinctive: line 80
Check the result in the running app: light and dark, desktop, the rail range up to 1100px and a phone up to 760px, and right to left when …
≈ “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
v3 UI style
First: check that this design was adopted
Apply this skill only when one of these is true:
- a user instruction in this conversation asks for this design:
v3-ui-style, the mailcow Logs Viewer v3 style, or the v3 style or look; - the AGENTS.md or CLAUDE.md that applies to the files you change says the UI follows one of those.
Before you announce that you use this skill or read anything under references/, name the user instruction or quote the project line that adopts the design. If there is none, stop here and build the UI in the project's own design, or as the request asks. These are not adoption: the skill being installed or listed, a README or screen that looks like an admin or mail UI, a product version that happens to be called v3, and a mention made only to describe, review or exclude this skill.
About the style
The design system of the mailcow Logs Viewer v3 frontend: a dense, flat admin UI where the text colour is the accent and colour means status. The look is half of the style; the other half is how things behave. This skill holds both as rules, plus the v3 code they were taken from.
When it applies
- A project adopts the style with one line in its AGENTS.md or CLAUDE.md, for example "UI follows the
v3-ui-styleskill." In such a project every UI task uses this skill. - Precedence, highest first:
- The target project's own design system, domain and decisions: its names, endpoints, statuses, languages and wording.
- "Do not copy" in the principles file.
- The principles file.
- The area rules.
- The rules describe v3, an admin UI for a mail server. Adopt the behavior and its values; adapt the names, endpoints, fields and domain values to the target project.
- Decisions that are part of the style, even where a common default differs:
- Animations stay when the system asks for reduced motion; add no reduced-motion override (AX-8).
- The copy icon shows on hover only, on pointer devices; copying works by click or tap without it (FB-12).
- A click outside closes only windows without typed input, and only when the press started outside. A window with typed input asks "Discard your changes?" before it drops a change (DS-9).
- An action the server can take back by a receipt (dismissing alerts) acts at once and offers Undo instead of asking first; DS-20 lists what still asks first and what acts on one click without Undo (FB-16, DS-20).
- Every hover style is gated by
@media (hover: hover); focus styles are not, and a tooltip that is the only way to read a value stays reachable by tap (MO-4). - There is no Refresh button: every page updates by itself at a pace that fits its data, and a refresh never redraws what the user works in and keeps their place when it does redraw (SV-10, SV-6, SV-13).
- Every layer over the page is built by its shared builder (dialog, sheet, picker, menu, toast) or kept in the same frame when it lives in the HTML; exceptions are listed with a reason, and a guard test fails on any other. Where a layer has an X, it is the one shared X (DS-24).
- Dates and times follow the Date Format and Time Format the user picks (by default the browser's date order and the 24-hour clock), always as numbers without month names, and go through one set of format helpers that a test keeps every page on (FW-9).
- Two items are still open in v3 itself: results shown only in colour on some buttons, and a visual order that differs from the DOM order; and the Copy button on a selected log line, reached with a mouse only (LD-14). Build both right from the start.
How to read
- Read
references/v3-design-principles.agents.mdfully: core rules, tokens with CSS, type scale, layout, components, copy, behavior principles, signature behaviors, the interaction rules, "Do not copy", the pitfall index and the checklist. - Choose area files from the table below by what the screen contains, not only by its page type. Read each chosen file fully. Do not load all sixteen at once.
- When a rule names a rule of another area by ID (for example "AX-7") and your screen uses that part, read that rule too. The prefix gives the file.
- Some rules end with a part marked "Before the interaction fixes (history ...)". Where it differs from the first part, the first part is the rule; details the first part does not cover still hold. A sentence that starts "Before the auto-refresh layer" or "Before #509" is history in the same way.
- Open the bundled code only when a rule is not enough.
references/v3-code/README.mdsays how itsfile:linereferences resolve and what is not included.
All area files are in references/behaviors/.
| Prefix | File | Read when the screen has |
| DS | DS-dialogs-and-sheets.md | a dialog, phone sheet, confirmation or any layer over the page |
| TB | TB-tables-and-lists.md | a table or list, sorting, rows that open |
| FS | FS-forms-settings-and-secrets.md | a form, a settings page, a secret or password, sign in |
| SV | SV-saving-validation-and-refresh.md | anything the user edits and saves, or data that refreshes |
| SR | SR-search.md | a search box or a global search |
| MP | MP-menus-pickers-and-popovers.md | a menu, dropdown, date or value picker, popover or tooltip |
| NL | NL-navigation-layout-and-routing.md | a new page or tab, navigation, page state in the URL, Back and Forward |
| LD | LD-live-data-and-logs.md | polling, live updates, logs |
| FB | FB-feedback-loading-and-empty-states.md | loading, empty and error states, toasts, click to copy |
| FW | FW-formatting-and-wording.md | numbers, dates, times, labels, messages |
| CH | CH-charts.md | a chart |
| MO | MO-mobile.md | phones in scope |
| AX | AX-accessibility-and-motion.md | always |
| RT | RT-rtl-and-i18n.md | always: right to left, languages, user text |
| EM | EM-email.md | email the app sends |
| OT | OT-other.md | patterns from single v3 pages (message details, DMARC records, dashboards); skim the rule titles |
Common starting sets, before adding what the screen contains:
- Any new page: AX, RT, FB, FW, NL and SV (every page updates by itself, SV-10); MO when phones are in scope.
- Settings page: add FS, DS and MP.
- Data table page: add TB, SR and MP; LD for live logs and the "N new messages" offer; DS when a row opens a dialog.
Done
- Work through the checklist at the end of the principles file. It is the done gate.
- Give the project the guard tests v3 uses, adapted to its files: one that fails on a popup built outside the shared builders, and one that fails on a page without a refresh of its own.
references/v3-code/README.mdsays how to adapt them. - Check the result in the running app: light and dark, desktop, the rail range up to 1100px and a phone up to 760px, and right to left when the project supports it.
- Report which checklist items you did not verify and which rules of the areas you read you dropped on purpose, with the reason.
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.

