ui-taxonomy
Classify UI work into the correct taxonomy level before building. Use when creating a new UI element, naming a component, deciding where something belongs in the system, or when another skill needs a shared vocabulary for UI structure.
- License 许可
- MIT
- 最近更新
- 2026-11-06
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- ui-taxonomy
- description
- Classify UI work into the correct taxonomy level before building. Use when creating a new UI element, naming a component, deciding where something belongs in the system, or when another skill needs a shared vocabulary for UI structure.
03 SKILL.md 正文
UI Taxonomy
Classify every UI element before you build it. Work down the decision ladder — stop at the first yes.
Order of decisions
- Is it just a value? → Token
- Will multiple components use it? → Primitive
- Is it a single, indivisible action? → Component
- Is it one action that needs multiple components working together? → Pattern
- Can the thing it is about be clearly named, and does it contain multiple patterns, components, or information about that thing? → Section
- Is it a fixed structural area of the interface regardless of content? → Region
Token
Definition
A token is a single design value. It is not markup, not behavior, and not a reusable UI unit. It is the lowest level of the system and exists only to provide named values that other layers use.
Decision rule
Ask: is this just a value?
If yes, it is a token.
Folder — design values live in app.css / Tailwind config. No numbered folder; tokens are not components.
Examples
--color-brand— the brand accent colour--color-canvas— the page backgroundsf-label-sm— a typography role classbg-canvas,text-fg-dim— Tailwind token utilities
Primitive — 1_primitives/ · @primitives
Definition
A primitive is styled HTML or a small UI building block that is used by multiple components. A primitive can contain other primitives. Its reason for existing is reuse across components, not direct use as a meaningful product-level unit.
Decision rule
Ask: will this be used by multiple components?
If yes, make it a primitive.
If no, it is probably just part of a component rather than its own taxonomy item.
Examples
ScrollBody—overflow-y-autoscroll container used inside NoteList, UploadQueue, SettingListPanelHeader— top chrome with title + action slots, used in capture, notes detail, settingsPanelFooter— bottom chrome for primary actions; used in capture, detail paneModal— focus-trap overlay; used by delete confirmation and any future dialogChip— small badge/label; used in NavItem, FilterPanelStatusDot— pulsing recording-state dot; used in TitleBar and Dictate HUDTextField— labelled text input; used in mic name, speaker name fields
Component — 2_components/ · @components
Definition
A component is a base action. It is a complete, understandable unit that lets a user initiate, record, or view something. It should contain the information needed for the user to understand what it does and how to use it.
Decision rule
Ask: is this a single, indivisible action?
If yes, it is a component.
Examples
Button— one action (primary, destructive, ghost, normal, active)Toggle— one on/off decisionNoteCard— one note row: user can select, copy, view, or delete itUploadItem— one queued file with progress, status, and actionsNavItem— one navigation destination: icon + label + optional badgeToast— one transient notificationWaveform— one live PCM visualizer
Pattern — 3_patterns/ · @patterns
Definition
A pattern is a complex action. It combines multiple components into a single interaction flow or coordinated action. A pattern exists when one action needs multiple parts, steps, or controls to work together.
Decision rule
Ask: is this still one action, but it needs multiple components working together?
If yes, it is a pattern.
Examples
NoteComposer— one action (create a note), but needs a TextField + Button working togetherNoteList— one action (browse notes), but needs multiple InlineNote components with shared scroll stateUploadQueue— one action (manage the import queue), built from multiple UploadItem rowsAccordion— one expand/collapse flow, coordinates multiple AccordionRow children
Section — 4_sections/ · @sections
Definition
A section is a contained mental model. It groups multiple patterns, components, or information around the same thing. The important boundary is that it is about one coherent object, subject, or area of understanding from the user's perspective.
Decision rule
Ask two questions.
First: can the object or thing this is about be clearly named?
Second: does it contain multiple patterns, components, information, or related content about that same thing?
If both are yes, it is a section.
Examples
NoteDetailPane— about one note: transcript, metadata, actions, all togetherFilterPanel— about the tag vocabulary: filter rows, active count, clear actionSettingsPanel— about app settings: routes to the correct settings tabWelcomeStep/ModelDownloadStep— each about one named onboarding moment
Views — 5_views/ · @views
Views are not a taxonomy level. They are route-level page compositions — they assemble regions, sections, patterns, and components into a full screen. Each view corresponds to one SvelteKit route or satellite window.
Examples
home.svelte— Home screen (recent notes, stats)notes.svelte— Notes screen (list + detail)capture.svelte— Scribe capture overlaydictate.svelte— Floating dictate HUD (satellite window)onboarding.svelte— Onboarding flow (satellite window)
Region — 6_regions/ · @regions
Definition
A region is a fixed structural area of the layout. It is part of the fundamental frame of the interface, regardless of what content appears inside it. A region is more like the room than the furniture.
Decision rule
Ask: is this an area of the interface that is regularly there and stays in the same place regardless of its contents?
If yes, it is a region.
Examples
AppSidebar— always on the left; its route icons change state but it never movesSettingsSidebar— replaces AppSidebar in settings mode; structurally the same slotTitleBar— always at the top of the shell; content (recording state, new note button) varies but the bar is always there
04 同仓库更多 Skills
ux-principles
ScribeFloat UX principles and design intent. Use when designing or reviewing any new screen, component, interaction pattern, or user flow — or when you need to understand WHY a design rule exists, not just what it is. Complements ui-enforcement (which governs tokens and class names).
ui-enforcement
Enforces ScribeFloat UI consistency — typography role classes, design tokens, and component primitives. Use when writing or editing Svelte/CSS frontend code, Tailwind classes, forms, labels, screens, onboarding, or when the user mentions design system, typography pass, sf-* classes, scroll layout, chrome/body panes, or UI consistency.
design-skill
暂无简介
ux-principles
ScribeFloat UX principles and design intent. Use when designing or reviewing any new screen, component, interaction pattern, or user flow — or when you need to understand WHY a design rule exists, not just what it is. Complements ui-enforcement (which governs tokens and class names).
ui-taxonomy
Classify UI work into the correct taxonomy level before building. Use when creating a new UI element, naming a component, deciding where something belongs in the system, or when another skill needs a shared vocabulary for UI structure.
ui-enforcement
Enforces ScribeFloat UI consistency — typography role classes, design tokens, and component primitives. Use when writing or editing Svelte/CSS frontend code, Tailwind classes, forms, labels, screens, onboarding, or when the user mentions design system, typography pass, sf-* classes, scroll layout, chrome/body panes, or UI consistency.