xiaohongshu
xiaohongshu
design-decisions
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.
Full skill instructions
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.
"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."
For the current design:
For future iteration:
For collaboration:
<decision_threshold> Log decisions that:
Don't log:
<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>
<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>
<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>
<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>
<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>
<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_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>
For each logged decision, verify:
<validation> 1. **"Why this?"** — Can you explain the choice without saying "it looks good"? 2. **"Why not that?"** — Can you explain why alternatives were rejected? 3. **"For whom?"** — Does this serve the specific users defined in the brief? 4. **"According to what?"** — Which design principle does this support? 5. **"What if wrong?"** — How hard is this to change later? </validation>Decisions that need reconsideration:
<red_flags>
<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>
"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.
xiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience