agentsclimarketplace

Vois components

Skill ommakes/Skills/vois-components

Skills for product design

Install
npx -y skills add ommakes/Skills --skill vois-components

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 21 stars21 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Component selection rubrics organized by job-to-be-done. Use after vois-patterns determines structure, before vois-tokens applies tokens. Optionally records each choice via the vois_record_component_choice MCP tool if one is available. Use when deciding between similar components — Dialog vs Drawer, Toast vs Banner, Select vs Combobox, etc.

SKILL.md

6.8 KB, as published. Nobody here has run it

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. If a vois_record_component_choice tool is available in your environment, call it for every component you pick before moving to vois-tokens; if not, just make the selection and move on.

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. If a vois_record_component_choice tool is available, call it with your selection:

    Tool: vois_record_component_choice
    Arguments:
      job: <the job-to-be-done, one sentence, e.g. "confirm destructive action">
      componentName: <exact component name from the manifest, e.g. "AlertDialog">
      alternativesConsidered: <optional array of component names you ruled out>
      reasoning: <optional one sentence on why you chose this over the alternatives>
    

    If that tool isn't available, this step is optional telemetry — proceed with your selection.

  5. If no section matches your job and a vois_report_pattern_gap tool is available, call it:

    Tool: vois_report_pattern_gap
    Arguments:
      skillVersion: <this skill's version, from SKILL.md frontmatter>
      userGoal: <what the UI needs to do>
      attemptedFallback: <closest job ID from this skill, e.g. JOB-OVERLAY-INTERACTION>
      reasoning: <what the rubrics don't cover>
    

    There is no description/closestPathId/gapDescription argument shape on the real tool — use the fields above. If the tool isn't available, just note the gap in your own output and proceed with the closest match.

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

data/components-rules.json has the full decision tree (condition → recommended component, including nested thresholds and edge cases) plus every "why not X" rationale, for all 20 jobs — query it by id or number. This is now the only source for this content; the prose reference files it was extracted from have been removed as fully redundant.

Job IDJob
JOB-CONFIRM-DESTRUCTIVEJob 1 Confirm destructive action
JOB-TRANSIENT-FEEDBACKJob 2 Transient feedback
JOB-OVERLAY-INTERACTIONJob 3 Focused overlay interaction
JOB-CONTAIN-CONTENTJob 4 Contain a unit of content
JOB-SWITCH-VIEWSJob 5 Switch views / filter
JOB-CHOOSE-FROM-LISTJob 6 Choose from a list
JOB-CONTEXTUAL-INFOJob 7 Contextual info (tooltip/popover)
JOB-TRIGGER-ACTIONJob 8 Trigger an action
JOB-ACCEPT-TEXTJob 9 Accept text input
JOB-BINARY-PREFERENCEJob 10 Binary preference
JOB-LABEL-CONTENTJob 11 Label/categorize content
JOB-REPRESENT-USERJob 12 Represent a user/group
JOB-LOADING-STATEJob 13 Loading state
JOB-EMPTY-CONTENTJob 14 Empty content
JOB-EXPOSE-ACTIONSJob 15 Expose a set of actions
JOB-MULTISTEP-GUIDEJob 16 Multi-step process
JOB-NAVIGATION-POSITIONJob 17 Position in a hierarchy
JOB-DISPLAY-DATAJob 18 Display structured data
JOB-DATA-ENTRYJob 19 Data entry surface
JOB-SECONDARY-CONTENTJob 20 Secondary content / persistent nav

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 vois_get_microcopy first). This skill says nothing about words.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.