Standalone v1.2.1

vois-components

Resolves which component to use when two similar options both seem right.

Component selection rubrics organized by job-to-be-done. Use after vois-patterns determines structure, before vois-tokens applies tokens. For every component you pick, call the record_component_choice MCP tool. Use when deciding between similar components — Dialog vs Drawer, Toast vs Banner, Select vs Combobox, etc.

  • Job-to-be-done

    Describe what the component needs to accomplish as a verb plus object — confirm a destructive action, show transient feedback, group related controls.

  • Component selection

    The specific component name from the Vois manifest with alternatives considered and one-sentence reasoning for why this one wins.

  • record_component_choice log

    A structured log entry for every selection made, feeding the self-improving design system.

Load the vois-components skill. I need to [describe the job-to-be-done, e.g. confirm a destructive action / show transient feedback].

Skills that call into or pair with this one. Click a node to open it. Expand the reference files node to browse them on GitHub.

Get this skill

Download the SKILL.md file and install it in Claude or Cursor.

  1. Download the SKILL.md file using the button above.
  2. Open claude.ai and go to Settings.
  3. Select Skills from the sidebar.
  4. Click Add skill and upload the SKILL.md file.
  5. Give the skill a name and save. Claude loads it automatically when relevant.

Skills installed in Claude persist across conversations. Claude reads the skill when the trigger conditions match your message.

Vois Component Selection Skill

You are picking specific components from the workspace manifest. This skill answers “which component for this job” — not what structure (that’s vois-patterns) and not how to style it (that’s vois-tokens).

Read this skill after vois-patterns has determined the container type. For every component you pick, call record_component_choice before moving to vois-tokens.

The Quick Reference table below resolves most cases on its own. When it doesn’t — ambiguous case, need the full decision tree, or need to justify the choice — read the matching reference file.


Before You Pick a Component

  1. Identify the job-to-be-done — phrase it as a verb plus object: “confirm a destructive action”, “show transient feedback”, “group related controls”

  2. Find the matching row in Quick Reference, or the matching job in the index below

  3. If ambiguous, read the matching reference file and walk its decision tree

  4. Call record_component_choice with your selection:

    Tool: record_component_choice
    Arguments:
      job: <the job-to-be-done, one sentence>
      componentName: <exact component name from the manifest>
      alternativesConsidered: <array of component names you ruled out>
      reasoning: <one sentence on why you chose this over the alternatives>
  5. If no section matches your job, call report_pattern_gap:

    Tool: report_pattern_gap
    Arguments:
      description: <what the UI needs to do>
      closestPathId: <closest job ID from this skill, e.g. JOB-OVERLAY-INTERACTION>
      gapDescription: <what the rubrics don't cover>

Note on workspace manifests. These rubrics use standard shadcn/ui component names. Your workspace may extend or rename them — e.g. Banner instead of Alert, DataTable instead of Table. Check your workspace manifest for the exact name; use the rubric logic to make the selection, then record the workspace-specific name.


Quick Reference

JobUseNot
Confirm destructive actionAlertDialogDialog, Toast
Transient feedback, no action neededToastAlert, Banner
Transient feedback, action requiredAlert (persistent)Toast
Focused overlay, short taskDialogDrawer, Sheet
Focused overlay, contextual to a list itemSheetDialog
Group content, interactive itemCarddiv, Surface
Switch between major content areasTabsSegmented Control
Filter a list, 2–4 optionsSegmented ControlTabs
Choose from short listSelectCombobox
Choose from long list / searchComboboxSelect
Search + trigger actionsCommandSelect, Combobox
Short label, no interactionTooltipPopover
Rich content, triggered by clickPopoverTooltip
Immediate-effect binary settingSwitchCheckbox
Form field binary / consentCheckboxSwitch
Page load or content fetchSkeletonSpinner
Action in progressSpinner (inline)Skeleton
Measurable long operationProgressSpinner
True zero stateEmptyState with CTABlank space
Filtered to zero resultsInline message + clearEmptyState
Row-level actionsDropdownMenuContextMenu, Command
Right-click enhancementContextMenuDropdownMenu
2–5 sequential required stepsStepperProgress, Wizard
5+ full-page sequential stepsWizardStepper
2+ levels deep in hierarchyBreadcrumbBack link
1 level deepBack linkBreadcrumb
Simple collection, no sortingListTable
Comparable attributes, < 100 rowsTableDataTable
100+ rows, sortable, bulk actionsDataTableTable
Persistent app navigationSidebarDrawer
Contextual tools for selected itemSheet or PanelSidebar, Drawer

Job Index

Each reference file has the full decision tree (with thresholds and edge cases) plus “why not X” reasoning for every alternative ruled out.

FileJobs covered
references/feedback-and-confirmation.mdJob 1 Confirm destructive action · Job 2 Transient feedback · Job 13 Loading state · Job 14 Empty content
references/overlays-and-containers.mdJob 3 Focused overlay interaction · Job 4 Contain a unit of content · Job 20 Secondary content / persistent nav
references/navigation-and-switching.mdJob 5 Switch views / filter · Job 17 Position in a hierarchy
references/selection-and-input.mdJob 6 Choose from a list · Job 9 Accept text input · Job 10 Binary preference
references/contextual-info-and-actions.mdJob 7 Contextual info (tooltip/popover) · Job 8 Trigger an action · Job 15 Expose a set of actions
references/display-and-identity.mdJob 11 Label/categorize content · Job 12 Represent a user/group · Job 18 Display structured data
references/forms-and-process.mdJob 16 Multi-step process · Job 19 Data entry surface

Relationship to Other Skills

Read vois-patterns first. That skill determines the container type — settings page, form, table, dialog. Once you know the structure, come here to pick the specific components that fill it.

Read vois-tokens after. Once components are selected, vois-tokens handles tokens, spacing, animation, and accessibility implementation.

Righter for all copy. Component labels, empty state messages, button text, error copy — all of it goes through righter (which calls get_microcopy first). This skill says nothing about words.