Design Decisions

by vinzenz

designdocument

Forces documentation of the reasoning behind every significant design decision. Creates a decision log that explains WHY choices were made, alternatives considered, and trade-offs accepted. Prevents unjustified "default" choices.

Skill Details

Repository Files

1 file in this skill directory


name: design-decisions description: Forces documentation of the reasoning behind every significant design decision. Creates a decision log that explains WHY choices were made, alternatives considered, and trade-offs accepted. Prevents unjustified "default" choices.

Design Decision Logger Skill

You are operating with design decision logging capabilities. This skill ensures that every significant design choice has documented reasoning — transforming unconscious defaults into conscious decisions.

Core Philosophy

"Great design isn't about creating features; it's about intentionality."

AI design fails not because it picks the "wrong" options, but because it picks options without reasons. A design where every choice has documented justification will always be better than one with "good defaults."

Why Log Decisions?

For the current design:

  • Forces examination of unconscious defaults
  • Reveals unjustified choices that need reconsideration
  • Creates accountability for design quality

For future iteration:

  • Explains WHY something is the way it is
  • Enables informed changes (not breaking things accidentally)
  • Teaches newcomers the design rationale

For collaboration:

  • Makes critique more productive ("I understand why, but...")
  • Enables delegation without loss of context
  • Creates institutional memory

What Counts as a "Significant Decision"?

<decision_threshold> Log decisions that:

  • Affect multiple components or screens
  • Establish a pattern that will be repeated
  • Required choosing between viable alternatives
  • Override a common convention or expectation
  • Will be questioned by someone reviewing the design

Don't log:

  • Individual pixel values within an established system
  • Obvious choices with no real alternatives
  • Temporary implementations meant to be revisited </decision_threshold>

Decision Categories

1. Typography Decisions

<typography_decisions> Font Family:

<decision category="typography" element="font-family">
  <choice>Geist Sans</choice>
  <reason>
    Our users are developers. Geist is designed specifically for
    developer tools, embodying "simplicity, minimalism, and speed"
    which aligns with our principle of "professional precision."
  </reason>
  <alternatives>
    <alternative name="Inter">
      Rejected: Overused in our competitive space (Linear, Vercel,
      Notion all use it). We need differentiation.
    </alternative>
    <alternative name="SF Pro">
      Rejected: Platform-specific. We need cross-platform consistency.
    </alternative>
    <alternative name="IBM Plex">
      Considered: Good option, but Geist's mono variant is better
      integrated. Would reconsider if Geist unavailable.
    </alternative>
  </alternatives>
  <trade_offs>
    - Less personality than a distinctive display font
    - Requires hosting (not a system font)
    + Excellent readability at all sizes
    + Consistent with developer tool expectations
  </trade_offs>
  <reversibility>Medium — would require full rebrand to change</reversibility>
</decision>

Type Scale:

<decision category="typography" element="type-scale">
  <choice>1.25 ratio (Major Third): 12, 15, 19, 24, 30, 37</choice>
  <reason>
    Moderate ratio provides clear hierarchy without dramatic jumps.
    Appropriate for information-dense interfaces where many levels
    of hierarchy are needed.
  </reason>
  <alternatives>
    <alternative name="1.5 ratio (Perfect Fifth)">
      Rejected: Too dramatic for our dense UI. Would require
      too much scrolling to accommodate large headings.
    </alternative>
    <alternative name="1.125 ratio (Major Second)">
      Rejected: Too subtle. Hierarchy becomes unclear, especially
      when combined with weight variations.
    </alternative>
  </alternatives>
</decision>

</typography_decisions>

2. Color Decisions

<color_decisions> Primary Color:

<decision category="color" element="primary">
  <choice>#0066FF (Vibrant blue)</choice>
  <reason>
    Blue conveys trust and professionalism (aligned with "professional
    precision" principle). This specific shade is:
    - Distinct from competitor blues (Stripe's is lighter, Linear's is different hue)
    - Accessible against both white and dark backgrounds
    - Energetic enough to serve as CTA color
  </reason>
  <alternatives>
    <alternative name="#6366F1 (Indigo/Purple)">
      Rejected: Too associated with AI/generic SaaS. Would blend
      in rather than differentiate.
    </alternative>
    <alternative name="#10B981 (Green)">
      Rejected: Green implies success/completion. Wrong semantic
      for primary actions.
    </alternative>
  </alternatives>
  <accessibility>
    - White text on this blue: 4.8:1 (AA pass)
    - This blue on white: 4.8:1 (AA pass)
    - Tested with Coblis for color blindness visibility
  </accessibility>
</decision>

Color Palette Philosophy:

<decision category="color" element="palette-philosophy">
  <choice>Monochromatic base + single accent</choice>
  <reason>
    Our UI is information-dense. Multiple colors would create
    visual chaos. Single accent creates clear affordances
    (blue = interactive). Grayscale hierarchy for content.
  </reason>
  <principles_served>
    - "Professional precision" — not playful multicolor
    - "Focus on content" — color doesn't distract
  </principles_served>
</decision>

</color_decisions>

3. Spacing Decisions

<spacing_decisions> Base Unit:

<decision category="spacing" element="base-unit">
  <choice>4px base unit</choice>
  <reason>
    4px allows fine-grained control while maintaining consistency.
    8px would be too coarse for our dense UI. Scale: 4, 8, 12, 16,
    24, 32, 48, 64.
  </reason>
  <alternatives>
    <alternative name="8px base">
      Rejected: Jumps between 8 and 16 too large for subtle
      adjustments in dense layouts.
    </alternative>
  </alternatives>
  <implementation>
    CSS custom properties: --space-1 through --space-8
    Tailwind: Extended spacing scale
  </implementation>
</decision>

Component Density:

<decision category="spacing" element="density">
  <choice>Compact density (less padding than typical)</choice>
  <reason>
    Power users (our target) prefer information density. They're
    scanning, not reading. Reference: Linear, GitHub, VS Code
    all use compact density for professional tools.
  </reason>
  <trade_offs>
    - Harder for beginners
    - Requires careful touch target sizing
    + More visible at once
    + Feels professional/powerful
  </trade_offs>
</decision>

</spacing_decisions>

4. Layout Decisions

<layout_decisions> Page Structure:

<decision category="layout" element="page-structure">
  <choice>Fixed sidebar + fluid content area</choice>
  <reason>
    Sidebar provides consistent navigation anchor. Fluid content
    allows adaptation to data needs. Reference: Linear, Notion,
    VS Code all use this pattern for tool-based products.
  </reason>
  <alternatives>
    <alternative name="Top navigation">
      Rejected: Loses vertical space. Our users have wide screens;
      horizontal space is abundant.
    </alternative>
    <alternative name="Collapsible sidebar">
      Accepted as option: Sidebar can collapse for full-focus mode.
    </alternative>
  </alternatives>
</decision>

Grid System:

<decision category="layout" element="grid">
  <choice>12-column grid with 24px gutters</choice>
  <reason>
    12 divides evenly by 2, 3, 4, 6 — maximum flexibility.
    24px gutters balance density with breathing room.
  </reason>
  <responsive_behavior>
    - Desktop: 12 columns
    - Tablet: 8 columns
    - Mobile: 4 columns
  </responsive_behavior>
</decision>

</layout_decisions>

5. Component Decisions

<component_decisions> Button Styles:

<decision category="components" element="buttons">
  <choice>
    Primary: Filled blue, white text
    Secondary: Outlined, blue border, blue text
    Tertiary: Text only, blue text
    Destructive: Filled red for dangerous actions
  </choice>
  <reason>
    Visual hierarchy matches importance hierarchy. Fill = most
    important, outline = alternative option, text = least prominent.
    Color coding (blue vs red) adds semantic meaning.
  </reason>
  <size_rationale>
    Default: 36px height (comfortable click target)
    Small: 28px (for dense contexts)
    Large: 44px (for primary page actions)
  </size_rationale>
</decision>

Form Inputs:

<decision category="components" element="inputs">
  <choice>Bottom border only (not full border)</choice>
  <reason>
    Reduces visual noise in forms with many fields. Lighter
    appearance aligns with "professional precision" — not
    chunky or heavy.
  </reason>
  <alternatives>
    <alternative name="Full border">
      Available as variant: For isolated inputs or emphasis.
    </alternative>
  </alternatives>
  <accessibility>
    Border color meets 3:1 contrast for UI components.
    Focus state adds left border + background shift.
  </accessibility>
</decision>

</component_decisions>

6. Motion Decisions

<motion_decisions> Animation Philosophy:

<decision category="motion" element="philosophy">
  <choice>Functional motion only — no decorative animation</choice>
  <reason>
    Our users are power users doing focused work. Animation
    should communicate state changes, not entertain. Every
    animation must answer: "What information does this convey?"
  </reason>
  <where_animation_used>
    - Page transitions (context: what changed)
    - Loading states (progress: something is happening)
    - Feedback (confirmation: action succeeded/failed)
    - Reveals (hierarchy: new content appearing)
  </where_animation_used>
  <where_animation_not_used>
    - Hover effects (too noisy at high interaction rates)
    - Idle states (distracting)
    - "Personality" animations (off-brand)
  </where_animation_not_used>
</decision>

Timing:

<decision category="motion" element="timing">
  <choice>
    Micro-interactions: 150ms
    Component transitions: 200ms
    Page transitions: 300ms
    Easing: cubic-bezier(0.4, 0, 0.2, 1) (Material "standard")
  </choice>
  <reason>
    Fast enough to feel instant, slow enough to be perceived.
    Consistent easing creates unified feel. Material easing
    is well-tested and feels natural.
  </reason>
</decision>

</motion_decisions>

Decision Log Template

<decision_template>

<design_decision_log>
  <metadata>
    <project>Project name</project>
    <created>Date</created>
    <last_updated>Date</last_updated>
    <authors>Who made/documented these decisions</authors>
  </metadata>

  <principles_reference>
    <!-- Link back to design brief -->
    <principle id="1">Principle name</principle>
    <principle id="2">Principle name</principle>
  </principles_reference>

  <decisions>
    <decision id="DES-001" category="typography" date="YYYY-MM-DD">
      <element>What was decided</element>
      <choice>The decision made</choice>
      <reason>Why this choice serves our users/principles</reason>
      <alternatives>
        <alternative name="Option name" rejected_because="Reason"/>
      </alternatives>
      <trade_offs>
        <accepted>What we gave up</accepted>
        <gained>What we gained</gained>
      </trade_offs>
      <principles_served>1, 2</principles_served>
      <reversibility>easy/medium/hard</reversibility>
      <depends_on>DES-000 (if dependent on another decision)</depends_on>
    </decision>

    <!-- More decisions... -->
  </decisions>

  <unresolved>
    <question id="Q-001">
      <topic>What needs to be decided</topic>
      <options>Possible choices</options>
      <blocking>What this blocks</blocking>
    </question>
  </unresolved>
</design_decision_log>

</decision_template>

Validation Questions

For each logged decision, verify:

Red Flags

Decisions that need reconsideration:

<red_flags>

  • "It's the default" — Not a reason. Why is the default right for us?
  • "Everyone does it" — Not a reason. Why is convention right here?
  • "It looks good" — Not a reason. Good for whom? In what context?
  • "I like it" — Not a reason. User preference trumps designer preference.
  • No alternatives listed — Did you actually consider options?
  • Principle not referenced — How does this serve the design goals? </red_flags>

Output Summary

<summary_format>

<decision_log_summary>
  <statistics>
    <total_decisions>N</total_decisions>
    <fully_justified>N with complete reasoning</fully_justified>
    <needs_revision>N missing justification</needs_revision>
    <unresolved_questions>N</unresolved_questions>
  </statistics>

  <coverage>
    <typography_decisions>N</typography_decisions>
    <color_decisions>N</color_decisions>
    <spacing_decisions>N</spacing_decisions>
    <layout_decisions>N</layout_decisions>
    <component_decisions>N</component_decisions>
    <motion_decisions>N</motion_decisions>
  </coverage>

  <red_flags_found>
    <flag decision_id="DES-XXX">
      <issue>What's problematic</issue>
      <recommendation>How to fix</recommendation>
    </flag>
  </red_flags_found>

  <overall_intentionality>
    Score 1-10 with explanation of how well decisions are justified
  </overall_intentionality>
</decision_log_summary>

</summary_format>

Key Principle

"It feels like a person looked at it and said, 'This is it.'" — On Linear's design

Every decision in a great design system should feel like someone cared about it specifically. The decision log is proof of that care.

Related Skills

Team Composition Analysis

This skill should be used when the user asks to "plan team structure", "determine hiring needs", "design org chart", "calculate compensation", "plan equity allocation", or requests organizational design and headcount planning for a startup.

artdesign

Kpi Dashboard Design

Design effective KPI dashboards with metrics selection, visualization best practices, and real-time monitoring patterns. Use when building business dashboards, selecting metrics, or designing data visualization layouts.

designdata

Dbt Transformation Patterns

Master dbt (data build tool) for analytics engineering with model organization, testing, documentation, and incremental strategies. Use when building data transformations, creating data models, or implementing analytics engineering best practices.

testingdocumenttool

Sql Optimization Patterns

Master SQL query optimization, indexing strategies, and EXPLAIN analysis to dramatically improve database performance and eliminate slow queries. Use when debugging slow queries, designing database schemas, or optimizing application performance.

designdata

Clinical Decision Support

Generate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug develo

developmentdocumentcli

Senior Data Scientist

World-class data science skill for statistical modeling, experimentation, causal inference, and advanced analytics. Expertise in Python (NumPy, Pandas, Scikit-learn), R, SQL, statistical methods, A/B testing, time series, and business intelligence. Includes experiment design, feature engineering, model evaluation, and stakeholder communication. Use when designing experiments, building predictive models, performing causal analysis, or driving data-driven decisions.

designtestingdata

Scientific Schematics

Create publication-quality scientific diagrams using Nano Banana Pro AI with smart iterative refinement. Uses Gemini 3 Pro for quality review. Only regenerates if quality is below threshold for your document type. Specialized in neural network architectures, system diagrams, flowcharts, biological pathways, and complex scientific visualizations.

artdocument

Mermaid Diagrams

Comprehensive guide for creating software diagrams using Mermaid syntax. Use when users need to create, visualize, or document software through diagrams including class diagrams (domain modeling, object-oriented design), sequence diagrams (application flows, API interactions, code execution), flowcharts (processes, algorithms, user journeys), entity relationship diagrams (database schemas), C4 architecture diagrams (system context, containers, components), state diagrams, git graphs, pie charts,

artdesigncode

Ux Researcher Designer

UX research and design toolkit for Senior UX Designer/Researcher including data-driven persona generation, journey mapping, usability testing frameworks, and research synthesis. Use for user research, persona creation, journey mapping, and design validation.

designtestingtool

Supabase Postgres Best Practices

Postgres performance optimization and best practices from Supabase. Use this skill when writing, reviewing, or optimizing Postgres queries, schema designs, or database configurations.

designdata

Skill Information

Category:Creative
Last Updated:11/25/2025