This is a selective decision map, not a skill and not a screenshot catalog.
Linear is the inherited operational baseline for every Thorbis rule and specialist skill. Thorbis still owns its trade model, language, electric-blue identity, profiles, tokens, primitives, accessibility baseline, and final product decisions.
Use the matrix only when DESIGN.md, AGENTS.md, and the smallest owning skill do not already make the governing pattern obvious. Pick one primary row and at most one supporting contextual surface. Do not average several rows into a new page.
How to use it
- Name the person, device, interruption, profile, action, and surface.
- Open the smallest owning Thorbis skill.
- Find the matrix row that describes the operational problem, not the screen that looks closest.
- Search the pattern and component registry for the named Thorbis implementation.
- Reuse the contract with Thorbis objects and trade language.
- Verify desktop and 390px, keyboard, both themes, states, accessibility, and return state.
- If the matrix or registry has no match, stop and record D-012. This reference never authorizes page-local invention.
DESIGN.md wins. Linear is the external tie-breaker for operational shell, hierarchy, density, navigation, contextual surfaces, keyboard behavior, durable state, and contextual AI placement. Specialist Thorbis rules still govern forms, payments, evidence, cinematic presentation, native platform behavior, resilience, and domain workflows.
1. Shell and orientation
| ID / need | Owning Thorbis skill / pattern | Contract | Evidence |
|---|---|---|---|
| L-01 One operational application | Product + UI → AppShell | Keep one inverted-L shell: quiet places, location, view controls, dominant sheet. Modules change the occupant, not the application frame. | Dense list (opens in a new tab) |
| L-02 Show where the operator is | Product + UI → LocationBar | Name the current place or durable record once. Do not repeat a hero/title block inside the sheet. | Project workspace (opens in a new tab) |
| L-03 Change how a place is sliced | UI + Ecosystem → ViewBar | Tabs, filters, grouping, density, and display options alter the current place; they are not global destinations. | Saved view (opens in a new tab) |
| L-04 Keep work visually dominant | UI → attention hierarchy | Chrome recedes after orientation. The current job, customer, invoice, schedule, or report owns the strongest contrast. | Linear refresh (opens in a new tab) |
| L-05 Add supporting context | Product + UI → inspector slot | Put secondary facts beside work, inside the layout. Keep them narrower and quieter; never make a floating desktop drawer into a second app. | Properties rail (opens in a new tab) |
| L-06 Inspect many without losing the collection | Product + Ecosystem → split list-detail | Preserve the collection while inspecting one object. Selection, Back, next/previous, focus, and scroll remain predictable. | Inbox split view (opens in a new tab) |
| L-07 Choose the correct surface | DESIGN D-013/D-014 | URL/history/several actions = route. Done-or-cancel = modal. One value = popover. Secondary facts = inspector. Look only = Peek. Small edit = inline. | Issue record (opens in a new tab) |
| L-08 Preserve return state | Product + UI → navigation state | Opening and closing inspection returns focus, scroll, selection, and view state. Shared objects use real links. | Inbox split view (opens in a new tab) |
| L-09 Keep repeated actions predictable | UI → action neighborhoods | Create, filter, display, share, overflow, and commit actions occupy consistent regions across modules. Content specializes; chrome does not. | Linear refresh (opens in a new tab) |
2. Finding, views, and navigation
| ID / need | Owning Thorbis skill / pattern | Contract | Evidence |
|---|---|---|---|
| L-10 Go somewhere or do something quickly | UI → CommandMenu | ⌘K is an instant action system with useful zero-query recents and actions. It is not the workspace for comparing many records. | Command onboarding (opens in a new tab) |
| L-11 Find and compare many records | Product + UI → SearchPage | Use a durable route with query, scope, filters, sort, keyboard traversal, optional split preview, and a shareable URL. | Search no results (opens in a new tab) |
| L-12 Filter the current collection | UI + Ecosystem → local filter | Keep search and filter state attached to the collection it changes. Show active criteria as concise removable controls. | Filtered list (opens in a new tab) |
| L-13 Choose a filter property | UI → filter menu | Use a searchable hierarchy: property first, value second, applied criterion visible afterward. | Filter property menu (opens in a new tab) |
| L-14 Choose filter values | UI → nested value menu | Show available values, selection state, and useful counts where they help. Do not open Settings to refine one view. | Priority filter (opens in a new tab) |
| L-15 Reuse a useful slice | Ecosystem + UI → saved view | Save query, filters, grouping, ordering, display properties, scope, and ownership as one named view without changing the underlying collection. | Saved-view editor (opens in a new tab) |
| L-16 Personalize one collection | UI → display options | Centralize grouping, ordering, completed visibility, nested records, title length, columns, and density. Distinguish personal display from shared defaults. | Display options (opens in a new tab) |
| L-17 Return to frequent places | Ecosystem → favorites and recents | Let people pin durable places and recover recent work without expanding global navigation into every relationship. | Document navigation (opens in a new tab) |
| L-18 Inspect without navigating | UI → Peek | Offer a fast dismissible preview for scanning. No deep editing, nested navigation, or durable workflow inside Peek. | Peek (opens in a new tab) |
| L-19 Explain why nothing is visible | UI → cause-specific EmptyState | First-run, no data, no results, filtered out, permission, offline, and error are different states. Name the cause and correct recovery. | Filtered empty state (opens in a new tab) |
3. Collections and scanning
| ID / need | Owning Thorbis skill / pattern | Contract | Evidence |
|---|---|---|---|
| L-20 Scan a large operational collection | UI + Ecosystem → ListPage | Preserve one dominant horizontal reading axis: state/identity/title first, stable trailing metadata second. Rows are links and keyboard-addressable. | Dense issue list (opens in a new tab) |
| L-21 Group rows by meaningful state | UI + Ecosystem → grouped list | Use quiet headers with label, count, collapse, and contextual create. The group organizes; it does not become a card. | Grouped view (opens in a new tab) |
| L-22 Move work through stages | Product + UI → BoardPage | Columns represent one shared state dimension. Cards stay compact; hidden and empty columns remain manageable. | Board (opens in a new tab) |
| L-23 Keep secondary columns available | Product + UI → hidden-column rail | Collapse terminal or non-primary columns into a quiet rail or display option instead of giving every status equal permanent width. | Hidden columns (opens in a new tab) |
| L-24 Show work across time | Product + UI → ScheduleTimeline | Time is the governing axis. Keep labels and selected-object context readable during horizontal traversal; do not use decorative Gantt treatment. | Project timeline (opens in a new tab) |
| L-25 Select one or many rows | UI → selection state | Selection is distinct from hover and keyboard focus. Preserve count and selected identities; never depend on hidden hover controls. | Bulk selection (opens in a new tab) |
| L-26 Act on a selected set | UI + Resilience → selection bar | Summon batch actions only after selection. Show count, allowed actions, clear/escape, progress, partial failure, and result. | Contextual bulk bar (opens in a new tab) |
| L-27 Offer useful entry points before All | Ecosystem → curated subset | Surface Today, Needs attention, Unassigned, Awaiting approval, or another useful slice when it reduces hunting; retain the full explorer. | My issues views (opens in a new tab) |
| L-28 Teach an empty collection | UI → first-run empty state | Define the object briefly, show one primary creation action, and offer documentation secondarily. Do not fill the canvas with fake cards. | Projects empty state (opens in a new tab) |
| L-29 Show a valid empty result | UI → plain empty state | When emptiness needs no action, keep it quiet; a short cause label can be enough. | No matching items (opens in a new tab) |
| L-30 Recover from over-filtering | UI → filtered empty state | Keep active criteria visible, state how many records are hidden when known, and place Clear filters beside the explanation. | No matching filters (opens in a new tab) |
| L-31 Load a dense collection | UI → geometry-matched skeleton | Reserve final row, group, and card geometry. Generic shimmer blocks that cause reflow are a defect. | Calm density (opens in a new tab) |
4. Records and contextual work
| ID / need | Owning Thorbis skill / pattern | Contract | Evidence |
|---|---|---|---|
| L-32 Work deeply inside one durable object | Product + Ecosystem + UI → RecordWorkspace | Use a route. Keep identity, state, primary action, local navigation, main content, properties, relationships, and evidence understandable as depth grows. | Issue record (opens in a new tab) |
| L-33 Orient the record | Product + UI → identity header | Show stable identifier, plain-language title, state, and key actions without a marketing hero or repeated title. | Issue identity (opens in a new tab) |
| L-34 Edit supporting metadata | UI → property rail / popover | Keep status, priority, owner, date, labels, and relationships concise and locally editable. Main work stays broad. | Properties rail (opens in a new tab) |
| L-35 Read defining content | Type + UI → record body | Give the problem, scope, description, document, or transaction uninterrupted width. Use typography and rhythm instead of nested cards. | Project overview (opens in a new tab) |
| L-36 Show consequential history | Ecosystem + Resilience → evidence timeline | Record meaningful state changes, actors, timestamps, source, and results. Prefer evidence over a generic feed of every event. | Issue activity (opens in a new tab) |
| L-37 Discuss the work | UI → comment thread and composer | Keep discussion attached to the object, preserve drafts, support references and attachments, and distinguish comments from system evidence. | Mobile record comments (opens in a new tab) |
| L-38 Break work into child records | Ecosystem → subrecord section | Show count, state, compact child rows, and contextual creation. Children remain real linked records when they need ownership or history. | Sub-items (opens in a new tab) |
| L-39 Create a child without losing context | Product + UI → inline child create | Expand a small local composer; ask only for facts required now and allow deeper detail after creation. | Inline creation (opens in a new tab) |
| L-40 Connect related records and resources | Ecosystem → relationship section | Surface customer, property, job, estimate, invoice, equipment, file, or communication where it matters. Relationships are links, not sidebar clutter. | Project resources (opens in a new tab) |
| L-41 Edit a small property in place | UI → inline edit | Preserve reading context; expose edit, focus, commit, cancel, error, and safe Undo. Money, permissions, and destructive changes get stronger treatment. | Inline issue creation (opens in a new tab) |
| L-42 Expose secondary record actions | UI → contextual action menu | Keep share, copy, remind, subscribe, move, archive, and destructive actions in a compact local menu with direct verbs and separation. | Mobile action menu (opens in a new tab) |
5. Creation, choices, and transient surfaces
| ID / need | Owning Thorbis skill / pattern | Contract | Evidence |
|---|---|---|---|
| L-43 Create a common object quickly | Product + UI → quick-create modal | Preserve the current workspace behind a focused transaction with identity, useful defaults, optional properties, Create, Cancel, and no nested overlay. | Small create modal (opens in a new tab) |
| L-44 Create in current context | Product + UI → contextual create | Pre-fill parent, group, customer, property, schedule, or other known facts. Do not ask again for context the system already knows. | Inline child creation (opens in a new tab) |
| L-45 Create a complex durable object | Product + Resilience → creation route | When creation needs sections, uploads, review, history, several actions, or resumability, use a route with draft recovery. | New project boundary (opens in a new tab) |
| L-46 Choose one local value | UI → property popover | Anchor to the property, support keyboard search and selection when needed, close on commit, and return focus. | Reminder choice (opens in a new tab) |
| L-47 Choose secondary operations | UI → context menu | Keep it compact, grouped, object-local, and verb-led. Separate destructive actions. | Comment menu (opens in a new tab) |
| L-48 Complete a small settings transaction | UI → modal transaction | One narrow task, visible labels, local validation, commit, Cancel, Escape, and focus return. | Add emoji modal (opens in a new tab) |
| L-49 Defer attention | UI → remind/snooze choice | Offer meaningful relative times plus custom scheduling; confirm the resulting time and keep record state explicit. | Mobile reminder sheet (opens in a new tab) |
| L-50 Confirm a reversible low-risk action | UI + Resilience → result notice and Undo | Execute quickly, name the result, provide Undo for a reasonable period, and avoid celebratory interruption. | Mobile feedback (opens in a new tab) |
6. Settings and administration
| ID / need | Owning Thorbis skill / pattern | Contract | Evidence |
|---|---|---|---|
| L-51 Configure durable behavior | Product + UI → SettingsPage | Use a route with persistent category navigation and readable content column. Settings are places, not one giant modal. | Preferences (opens in a new tab) |
| L-52 Explain a settings section | UI → settings section | State purpose and consequence, group related controls, keep help local, and use direct labels. | Initiatives settings (opens in a new tab) |
| L-53 Save one settings topic | UI + Resilience → local form commit | Save near the section being edited, expose dirty state, and prevent silent loss. Do not use one remote Save for unrelated topics. | Local save (opens in a new tab) |
| L-54 Let an individual adapt the environment | UI → preferences | Density, visible properties, sidebar, theme, naming, and interaction preferences may vary. Strong defaults remain complete and grammar does not fork. | Interface preferences (opens in a new tab) |
| L-55 Set shared operational defaults | Product + Resilience → organization settings | Shared statuses, calendars, communications, permissions, and automation live at the correct scope with visible ownership. | Workspace settings (opens in a new tab) |
| L-56 Manage a finite taxonomy | Product + UI → taxonomy manager | Group statuses, labels, or categories; preserve order and semantics; create inline when safe; show usage before destructive changes. | Status manager (opens in a new tab) |
| L-57 Define conditional automation | Product + Resilience → rule builder | Render When and Then in plain language, expose scope and order, validate conflicts, support testing, and show exactly what changes. | Automation rules (opens in a new tab) |
| L-58 Enable integrations or capabilities | Product + UI → capability list | Use stable rows with identity, concise purpose, state, availability, and one configuration path. Avoid marketplace cards inside Admin. | AI and agents settings (opens in a new tab) |
| L-59 Handle irreversible administration | Resilience + UI → danger zone | Separate by consequence, state impact and recovery window, require explicit confirmation, and show progress and result. Red alone is insufficient. | Workspace danger zone (opens in a new tab) |
7. Planning, dashboards, and updates
| ID / need | Owning Thorbis skill / pattern | Contract | Evidence |
|---|---|---|---|
| L-60 Monitor today's operation | Product + UI → operational Evidence dashboard | Declare audience, decision, cadence, owner, and freshness. Lead with exceptions and actionable queues at compact density. | Dashboard guidance (opens in a new tab) |
| L-61 Review strategic progress | Product + Type → strategic Evidence dashboard | Use fewer larger measures with trend, context, narrative annotation, and explicit period. Reorientation matters more than maximum density. | Dashboard guidance (opens in a new tab) |
| L-62 Present a metric | Type + UI → contextual metric | Show label, value, unit, window, freshness, and comparison or expected range when it changes interpretation. | Dashboard guidance (opens in a new tab) |
| L-63 Coordinate a multi-part initiative | Product + Ecosystem → planning workspace | Put purpose, owner, dates, status, milestones, updates, work, and progress in one durable workspace. Properties stay subordinate to the plan. | Project overview (opens in a new tab) |
| L-64 Communicate periodic progress | Type + Ecosystem → authored update | Use a dated authored update with health, changes, risks, and next steps; keep it distinct from raw activity. | Project updates (opens in a new tab) |
| L-65 Understand dates and dependencies | Product + UI → planning timeline | Use a real time axis, selected-object context, milestones, dependencies, and preserved horizontal scale and position. | Project timeline (opens in a new tab) |
8. AI and agents
| ID / need | Owning Thorbis skill / pattern | Contract | Evidence |
|---|---|---|---|
| L-66 Ask a broad workspace question | Product + UI → agent workspace | Use the normal shell with focused composer, useful starter tasks, history, linked records, and clear scope. No neon parallel app. | Ask Linear landing (opens in a new tab) |
| L-67 Offer a useful zero-query agent state | Product → starter tasks | Present a small set of high-value examples tied to real Thorbis capabilities. They teach scope; they are not promotional cards. | Ask Linear examples (opens in a new tab) |
| L-68 Acknowledge an agent request | Resilience + UI → agent lifecycle | Respond immediately and expose compact thinking, waiting, executing, complete, partial, and error states. Silence and streaming noise are defects. | Thinking state (opens in a new tab) |
| L-69 Show an agent result | Product + Type → linked answer | Lead with result, then supporting records, provenance, assumptions, and next actions. Deep trace is inspectable rather than always expanded. | Agent result (opens in a new tab) |
| L-70 Keep AI beside current work | Product + UI → contextual assist | Use an inspector or local suggestion when the underlying record remains primary. Preserve record context and make assistance dismissible. | Agent side panel (opens in a new tab) |
| L-71 Distinguish suggestion from committed state | Resilience + UI → suggestion treatment | Identify the AI, suggested value, reason/confidence where useful, current committed value, provenance, and accountable person. | Triage Intelligence (opens in a new tab) |
| L-72 Approve consequential agent work | Resilience → approval checkpoint | Summarize exact changes, scope, audience, reversibility, and external effects before commit. Approval is action-specific, not blanket access. | Agent guidelines (opens in a new tab) |
| L-73 Increase automation with trust | Resilience → trust ladder | Move by action category through observe → suggest → approve → automate. Keep override, audit, pause, and rollback. | Triage settings (opens in a new tab) |
| L-74 Configure agent guidance | Product + Resilience → guidance and reusable skills | Separate stable workspace guidance from task skills. Name scope, trigger, inputs, constraints, output, and failure behavior. | Agent guidance (opens in a new tab) |
| L-75 Load only relevant agent context | AGENTS.md → selective router | Resolve the owning skill, load the smallest sufficient context, and encode invalid actions out of tools. Never dump the full design corpus into every run. | Skills selector (opens in a new tab) |
9. Mobile and responsive transformation
| ID / need | Owning Thorbis skill / pattern | Contract | Evidence |
|---|---|---|---|
| L-76 Move work to a phone | Native + owning domain skill → role-adaptive shell | Preserve object identity and work state, but rebuild navigation and action priority for the role. Never shrink the desktop inverted L. | Linear mobile redesign (opens in a new tab) |
| L-77 Scan a mobile collection | Native + Ecosystem → mobile list | Keep one dominant vertical path, compact state and identity, reachable create/filter/search, and quiet group headings. | Mobile issue list (opens in a new tab) |
| L-78 Work inside a mobile record | Native + Ecosystem → mobile record route | Identity and state lead; properties compact; body, children, activity, and comments flow vertically. Preserve deep links and Back. | Mobile record (opens in a new tab) |
| L-79 Navigate primary mobile places | Native → bottom navigation | Keep a small role-relevant set of destinations with clear current state. Secondary places remain in command or menu. | Mobile project list (opens in a new tab) |
| L-80 Change mobile display options | Native + UI → bottom sheet | Use a thumb-reachable sheet for grouping, ordering, visibility, and row properties while the list remains visible. | Mobile display options (opens in a new tab) |
| L-81 Create on mobile | Native + Product → focused composer | Use full-height or elevated composition with title/body first, essential property chips, keyboard-safe actions, draft recovery, and one commit. | Mobile create (opens in a new tab) |
| L-82 Comment during field work | Native + UI → persistent composer | Keep reply reachable without covering the record. Support attachments and mentions; preserve draft through interruption. | Mobile composer (opens in a new tab) |
| L-83 Expose secondary mobile actions | Native + UI → anchored menu | Use a readable grouped menu with destructive action separated. Dismiss and return to the same record position. | Mobile action menu (opens in a new tab) |
| L-84 Show mobile feedback | Native + UI → compact result notice | Confirm near the bottom safe area without blocking work; offer Undo when appropriate and announce accessibly. | Mobile feedback (opens in a new tab) |
| L-85 Apply native visual effects | Native → legibility gate | Platform effects are optional. Refuse refraction, blur, motion, translucency, or fashion that reduces contrast, reading speed, touch clarity, battery, or performance. | Liquid Glass study (opens in a new tab) |
Composition rules
A view normally has one primary pattern and at most one supporting contextual surface.
- Dispatch:
AppShell + BoardPage + inspector. - Search:
AppShell + SearchPage + split preview. - Customer:
AppShell + RecordWorkspace + contextual relationships. - Collect payment: Guided payment transaction, not a record copied into a modal.
- Technician job: native mobile record or Guided flow, not squeezed desktop.
- Brain suggestion on an invoice: invoice record plus local suggestion/approval, not a separate AI dashboard.
Do not combine List, Board, Dashboard, Record, Canvas, and Guided as equal regions. Pick the governing task.
Canonical refusals
- No standalone Linear skill.
- No Linear purple, logo, object names, or pixel-identical chrome.
- No second shell for Money, Sites, Brain, Inventory, or another module.
- No dashboard above every list.
- No desktop drawer used as a route.
- No card grid because the canvas is empty.
- No permanent row-action clutter for selection or context-menu actions.
- No global navigation made from record relationships.
- No hidden critical action that exists only on hover or a shortcut.
- No separate visual costume for AI.
- No mobile layout produced by shrinking desktop geometry.
- No preference that rewrites shared semantics or product grammar.
- No screenshot treated as authority after the Thorbis rule exists.
Verification
Every implementation proves:
- person, device, interruption, profile, pattern, and surface are named;
- location and view state are distinct;
- one dominant reading axis or work region exists;
- empty, loading, error, disabled, permission, destructive, partial, and offline states match the pattern;
- hover, focus, active, and selection are distinct;
- critical actions have visible paths;
- object destinations are real links;
- keyboard traversal and focus return work on desktop;
- 390px is a transformation, not overflow;
- light/dark, zoom, text expansion, forced colors, and reduced motion remain usable;
- hostile user content cannot collapse geometry;
- return state survives Back, close, refresh, reconnect, and handoff where required;
- words are Thorbis words: job, stop, tech, truck, customer, property, estimate, invoice, payment.
Two failures mean the pattern is not ready to ship.
Primary source index
- A calmer interface for a product in motion (opens in a new tab)
- How we redesigned the Linear UI (opens in a new tab)
- Best practices for Linear dashboards (opens in a new tab)
- A Linear spin on Liquid Glass (opens in a new tab)
- Custom views (opens in a new tab)
- Display options (opens in a new tab)
- Filters (opens in a new tab)
- Search (opens in a new tab)
- Inbox (opens in a new tab)
- Peek (opens in a new tab)
- Board layout (opens in a new tab)
- Agent Interaction Guidelines (opens in a new tab)
- How we built Triage Intelligence (opens in a new tab)
- How we built Linear Agent (opens in a new tab)
Linear supplies evidence and operating philosophy. Thorbis owns the rule, the name, the specialist owner, and the implementation.