Standalone v1.3.1

vois-patterns

Picks the right container structure before you write a single line of code.

Structural decision trees for container types, form states, table layouts, and page-level patterns. Use before vois-tokens. Routes to righter skill for all microcopy (labels, errors, buttons, helpers). Use when building pages, forms, features, workflows.

  • What the user is trying to do

    Describe the user action — editing a record, confirming a destructive action, reviewing a dashboard, submitting a form. One sentence is enough.

  • Container type decision

    A path ID from the decision tree with confidence score and one-sentence reasoning for why this structure fits the job.

  • Template rules

    Structural constraints that apply to the chosen container — layout rules, scroll behavior, action placement, and mobile handling.

Load the vois-patterns skill. The user needs to [describe the user action or job-to-be-done].

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 Patterns Skill

You are building the structure of pages and containers for a design system. This skill defines the architectural decisions that come before implementation (tokens, components, styling).

Read this skill first. After you determine structure here, read vois-tokens for implementation details (spacing, typography, components, tokens).

This skill routes to righter skill for all microcopy (button labels, error messages, field descriptions, helper text). Don’t guess at words—follow the righter skill.


Before You Write Anything

  1. What is the user trying to accomplish? (Dashboard overview? Edit a record? Confirm an action?)

  2. Pick the container type from the decision tree below.

  3. Read the matching reference file for full template rules.

  4. Call record_pattern_decision once you have picked a path. Do this before writing any code.

    Tool: record_pattern_decision
    Arguments:
      pathId: <one of the path IDs listed in the decision tree below>
      confidence: <0.0–1.0 — how clearly the UI fits this path>
      reasoning: <one sentence on why you chose this path>

    If no path fits well (confidence below 0.6), call report_pattern_gap instead of forcing a match:

    Tool: report_pattern_gap
    Arguments:
      description: <what the UI needs to do>
      closestPathId: <the closest match even if it doesn't fit>
      gapDescription: <what the templates don't cover>
  5. For every word that appears in UI, check righter skill. See references/microcopy-routing.md for the full list of what counts as copy.

  6. Then read vois-tokens for implementation (tokens, spacing, components).


Decision Tree: What Container Type Should I Build?

START: What is the user trying to accomplish?

├─ PATH A: Manage settings or account preferences
│  └─ → read references/settings-pages.md
│     ├─ IF: 2–3 sections only      → [PATH-A-DEPTH-SHALLOW]
│     └─ IF: 4+ sections            → [PATH-A-DEPTH-DEEP]

├─ PATH B: View, filter, and act on a list of items
│  └─ → read references/table-list.md                       [PATH-B]

├─ PATH C: Create a new item OR edit an existing item
│  └─ → read references/forms.md
│     ├─ IF: 1–6 fields             → [PATH-C-SIMPLE]
│     ├─ IF: 7–15 fields            → [PATH-C-MEDIUM]
│     └─ IF: 15+ fields / complex   → [PATH-C-COMPLEX]

├─ PATH D: Quick input, confirmation, or selection
│  └─ → read references/dialogs-and-action-sheets.md         [PATH-D]

└─ PATH E: View details of a single item (read-only or view state)
   └─ → read references/detail-pages.md                      [PATH-E]

Read only the one reference file that matches the path you picked. Each template file is self-contained.


Reference Files

FileCoversPath ID(s)
references/settings-pages.mdProfile, workspace, billing, notifications, members sections; view/edit state[PATH-A]
references/table-list.mdBrowse/filter/act on lists, sidebar vs modal detail view, pagination[PATH-B]
references/forms.mdCreate/edit forms by complexity tier, validation, save behavior[PATH-C]
references/dialogs-and-action-sheets.mdModal vs action sheet by breakpoint, confirmation/selection dialogs[PATH-D]
references/detail-pages.mdRead-only single-record views[PATH-E]
references/permissions-and-conditional-logic.mdHide vs disable by role, parent/child input dependencies, accordions— (cross-cutting)
references/microcopy-routing.mdFull list of what counts as UI copy and must route to righter— (cross-cutting)

Spacing Rules (Quick Reference)

These are implemented via vois-tokens; listed here for context.

  • 24px vertical: heading ↔ body text
  • 24px horizontal: between two input fields
  • 40px vertical: body content ↔ primary action button
  • 20px horizontal: between primary/secondary buttons (bottom right anchored)
  • Use gap tokens on container div instead of margin-bottom on elements

For exact Tailwind class names and token values, see vois-tokens.


Quick Checklist Before Implementation

  • Container type selected (settings / table / form / dialog / detail)
  • record_pattern_decision called with pathId and confidence
  • Page structure sketched (what sections, what’s visible, what’s hidden by role)
  • Permissions applied (hide/disable rules — see references/permissions-and-conditional-logic.md)
  • All copy routed to righter skill and reviewed
  • Ready to read vois-tokens for tokens, spacing, components
  • Mobile breakpoint behavior defined (action sheets vs dialogs, sidebar vs hamburger, etc.)

Relationship to Other Skills

This skill ↔ vois-tokens:

  • Read this first (what to build)
  • Then read vois-tokens (how to code it correctly)
  • vois-tokens handles tokens, spacing, components, animation, accessibility
  • This skill handles structural decisions and microcopy routing

This skill ↔ vois-components:

  • After picking a container type here, read vois-components to select specific components
  • vois-components resolves ambiguous pairs — Dialog vs Drawer, Toast vs Banner, Select vs Combobox
  • Always call record_component_choice after selecting; do not skip it

This skill ↔ righter skill:

  • Every word in UI comes from righter
  • This skill tells you which container type
  • Righter skill tells you what words go in that container
  • Always check righter for: button labels, error messages, field descriptions, status copy, confirmations