xiaohongshu
xiaohongshu
design-production
Creates production-ready design files, prototypes, and specifications for development teams. Translates validated concepts into detailed, implementable designs with comprehensive specs for developers. Produces Figma files (via API), high-fidelity prototypes, design specifications, and animation f...
Full skill instructions
This skill guides Claude through creating production-ready design artifacts that development teams can confidently implement. Production design is about precision, completeness, and developer handoff quality.
Production design provides everything developers need to build accurately:
Production designs must be:
Step 1: Gather Requirements
Questions to ask user:
1. What concept/direction was approved?
2. Does a design system exist? (Components, tokens)
3. What platforms? (iOS, Android, Web, Desktop)
4. What breakpoints/screen sizes?
5. Any technical constraints? (Framework, performance)
6. Timeline and which screens/flows to prioritize?
7. Do you have Figma API access for creating Figma files?
Use `view` to read:
- Approved concept files
- Design system documentation
- Brand guidelines
- Technical requirements from engineering
Step 2: Determine Output Format Based on user needs:
Define Design Tokens First:
// Create design-tokens.js
export const tokens = {
colors: {
primary: {
50: '#E3F2FD',
500: '#2196F3',
900: '#0D47A1'
},
neutral: {
50: '#FAFAFA',
500: '#9E9E9E',
900: '#212121'
},
semantic: {
success: '#4CAF50',
error: '#F44336',
warning: '#FF9800',
info: '#2196F3'
}
},
typography: {
fontFamily: {
sans: 'Inter, system-ui, sans-serif',
mono: 'Monaco, monospace'
},
fontSize: {
xs: '0.75rem', // 12px
sm: '0.875rem', // 14px
base: '1rem', // 16px
lg: '1.125rem', // 18px
xl: '1.25rem', // 20px
'2xl': '1.5rem', // 24px
'3xl': '1.875rem' // 30px
},
fontWeight: {
normal: 400,
medium: 500,
semibold: 600,
bold: 700
},
lineHeight: {
tight: 1.25,
normal: 1.5,
relaxed: 1.75
}
},
spacing: {
0: '0',
1: '0.25rem', // 4px
2: '0.5rem', // 8px
3: '0.75rem', // 12px
4: '1rem', // 16px
6: '1.5rem', // 24px
8: '2rem', // 32px
12: '3rem', // 48px
16: '4rem' // 64px
},
borderRadius: {
none: '0',
sm: '0.125rem', // 2px
base: '0.25rem', // 4px
md: '0.375rem', // 6px
lg: '0.5rem', // 8px
xl: '0.75rem', // 12px
full: '9999px'
},
shadows: {
sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
base: '0 1px 3px 0 rgba(0, 0, 0, 0.1)',
md: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',
lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1)',
xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1)'
}
};
Create Reusable Components:
// Button.jsx - Example component
import React from 'react';
export const Button = ({
variant = 'primary',
size = 'md',
children,
disabled = false,
onClick
}) => {
const baseStyles = 'font-medium rounded-lg transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2';
const variants = {
primary: 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500 disabled:bg-blue-300',
secondary: 'bg-gray-200 text-gray-900 hover:bg-gray-300 focus:ring-gray-500 disabled:bg-gray-100',
danger: 'bg-red-600 text-white hover:bg-red-700 focus:ring-red-500 disabled:bg-red-300'
};
const sizes = {
sm: 'px-3 py-1.5 text-sm',
md: 'px-4 py-2 text-base',
lg: 'px-6 py-3 text-lg'
};
return (
<button
className={`${baseStyles} ${variants[variant]} ${sizes[size]}`}
disabled={disabled}
onClick={onClick}
>
{children}
</button>
);
};
Note: Figma API integration requires user's Figma API token and file permissions.
Creating Figma Files Programmatically:
# First, install Figma API client if needed
# Then use Python or Node.js to interact with Figma API
# Example workflow:
# 1. Create new Figma file
# 2. Set up pages (e.g., "Components", "Screens", "Specs")
# 3. Create frames for each screen
# 4. Add components, text, shapes using API
# 5. Set up auto-layout, constraints
# 6. Add annotations and developer notes
Reading Existing Figma Files:
# Use Figma API to:
# 1. Fetch file structure
# 2. Extract component definitions
# 3. Read design tokens (colors, typography)
# 4. Export assets
# 5. Generate specs from Figma data
React Component Structure:
// Organize components logically
/components
/ui // Base components (Button, Input, Card)
/features // Feature-specific components
/layouts // Page layouts
/icons // Icon components
// Use design tokens consistently
import { tokens } from './design-tokens';
// Include all interactive states
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState(null);
const [data, setData] = useState(null);
Specification Document Format:
# [Screen/Component Name] Design Specification
## Overview
[Brief description of purpose and user flow]
## Layout & Structure
### Desktop (1440px+)
- Container max-width: 1280px
- Horizontal padding: 64px
- Vertical spacing between sections: 48px
### Tablet (768px - 1439px)
- Container max-width: 100%
- Horizontal padding: 32px
- Vertical spacing between sections: 32px
### Mobile (< 768px)
- Container max-width: 100%
- Horizontal padding: 16px
- Vertical spacing between sections: 24px
## Components
### Primary CTA Button
**States**:
- Default: bg-blue-600, text-white, px-6 py-3, rounded-lg
- Hover: bg-blue-700, cursor-pointer
- Active: bg-blue-800
- Disabled: bg-blue-300, cursor-not-allowed
- Loading: Show spinner, text "Processing..."
**Interaction**:
- Transition: all 200ms ease
- Focus: 2px blue ring, 2px offset
- Min-width: 120px
- Height: 48px
### Form Input
**States**:
- Default: border-gray-300, bg-white
- Focus: border-blue-500, ring-2 ring-blue-100
- Error: border-red-500, ring-2 ring-red-100
- Disabled: bg-gray-100, cursor-not-allowed
**Validation**:
- Show error message below input
- Error color: text-red-600
- Error icon: Inline, left of message
## Interactions & Animations
### Modal Open Animation
- Duration: 200ms
- Easing: ease-out
- Transform: scale(0.95) → scale(1)
- Opacity: 0 → 1
- Backdrop: blur(4px), bg-opacity-50
### Loading State
- Show skeleton screens during data load
- Skeleton: bg-gray-200, animated pulse
- Min display time: 300ms (prevent flash)
## Edge Cases
### Empty States
[Screenshot or description]
- Centered icon and message
- CTA to take first action
- Copy: "No items yet. Get started by..."
### Error States
[Screenshot or description]
- Error icon with message
- Retry button or next steps
- Copy: "Something went wrong. [Action]"
### Loading States
[Screenshot or description]
- Skeleton screens or spinners
- Preserve layout to prevent jank
### Long Content
- Text truncation after 2 lines
- Tooltip on hover shows full text
- "Show more" expansion if needed
## Accessibility
### Keyboard Navigation
- Tab order: logical, left-to-right, top-to-bottom
- Focus indicators: visible 2px ring
- Escape key: Closes modals/dropdowns
- Enter/Space: Activates buttons/checkboxes
### Screen Reader Support
- All images have alt text
- Forms have associated labels
- Error messages announced
- Loading states announced
### Color Contrast
- Text on background: 4.5:1 minimum
- Large text (18px+): 3:1 minimum
- Interactive elements: 3:1 minimum
## Assets Required
### Icons
- icon-close.svg (24x24)
- icon-check.svg (20x20)
- icon-error.svg (20x20)
### Images
- [email protected] (2880x1620)
- placeholder-avatar.png (128x128)
### Animations
- loading-spinner.json (Lottie)
## Developer Notes
### Implementation Considerations
- Use CSS Grid for main layout
- Lazy load images below fold
- Prefetch critical assets
- Use proper semantic HTML (section, nav, etc.)
### Performance Targets
- First Contentful Paint: < 1.5s
- Time to Interactive: < 3.5s
- Lighthouse Score: 90+
### Browser Support
- Chrome/Edge: Last 2 versions
- Firefox: Last 2 versions
- Safari: Last 2 versions
- Mobile Safari: iOS 14+
IMPORTANT: Organize all deliverables by feature/assignment in dated folders.
Each production design project should be saved in its own folder with the feature name:
docs/design/{feature-name}-production-{MMDDYY}/
Feature Name Guidelines:
checkout-flow, user-profile, dashboard-redesign, search-filtersExamples:
docs/design/checkout-flow-production-102425/docs/design/checkout-flow-production-110525/docs/design/user-profile-production-111025/Rationale:
Folder structure:
docs/design/{feature-name}-production-{MMDDYY}/
├── {feature-name}-design-specification.md
├── {feature-name}-component-guide.md
├── {feature-name}-design-tokens.js
├── {feature-name}-design-system.md
├── {feature-name}-prototype.jsx
└── {feature-name}-animations/
├── {animation-name}.json
└── {animation-name}.json
Created via: Figma API (if access provided) Structure:
{feature-name}-component-name, {feature-name}-screen-name (kebab-case)
Note: Link to Figma file in design specification documentLocation: docs/design/{feature-name}-production-{MMDDYY}/
File: {feature-name}-prototype.jsx or .html
Format: React with full design system (or HTML/CSS)
Include:
Location: docs/design/{feature-name}-production-{MMDDYY}/
File: {feature-name}-design-specification.md
Format: Markdown with embedded images
Include:
Location: docs/design/{feature-name}-production-{MMDDYY}/{feature-name}-animations/
File: {animation-name}.json
Format: Lottie JSON
Use cases: Loading indicators, success confirmations, illustrations
Tools: Export from After Effects or create programmatically
Location: docs/design/{feature-name}-production-{MMDDYY}/
File: {feature-name}-design-system.md
Format: Markdown with code examples
Include:
❌ Poor Spec: "Add some space around the button" ✅ Good Spec: "Padding: 12px vertical, 24px horizontal (py-3 px-6 in Tailwind)"
❌ Poor Spec: "Use the brand blue" ✅ Good Spec: "Background: #2196F3 (primary-500 from design tokens)"
❌ Poor Spec: "Make it fade in" ✅ Good Spec: "Opacity transition: 0 to 1 over 200ms with ease-out easing"
## Button Component
### Variants
- **Primary**: Main CTAs, high emphasis actions
- **Secondary**: Supporting actions, medium emphasis
- **Tertiary**: Low emphasis, inline actions
- **Danger**: Destructive actions (delete, remove)
### Sizes
- **Small**: 32px height, 12px vertical padding
- **Medium**: 40px height, 16px vertical padding
- **Large**: 48px height, 20px vertical padding
### States & Interactions
| State | Visual | Notes |
|-------|--------|-------|
| Default | Solid background | Base state |
| Hover | Darken 10% | Cursor: pointer |
| Active | Darken 15% | During click |
| Focus | 2px ring | Keyboard navigation |
| Disabled | 50% opacity | Cursor: not-allowed |
| Loading | Spinner + "Loading..." | Min 300ms display |
### Accessibility
- Minimum touch target: 44x44px (iOS), 48x48px (Android)
- Color contrast: 4.5:1 text, 3:1 background
- Keyboard: Tab to focus, Enter/Space to activate
- Screen reader: Action announced clearly
### Code Example
\`\`\`jsx
<Button variant="primary" size="md" onClick={handleClick}>
Save Changes
</Button>
\`\`\`
Problem: Only designing default state, forgetting hover/loading/error Instead: Design all states for every interactive element
Problem: "Small gap" or "a bit darker" - developers have to guess Instead: Use exact values: "8px gap" or "#1E40AF"
Problem: Random spacing values (13px, 17px, 22px) Instead: Use spacing scale (4px, 8px, 12px, 16px, 24px, 32px...)
Problem: Only designing for desktop, assuming mobile "works" Instead: Define behavior at each breakpoint
Problem: Light gray text on white background Instead: Test contrast ratios, minimum 4.5:1 for body text
Problem: Designs break with long names, empty lists, slow networks Instead: Design for edge cases explicitly
Problem: Unlabeled Figma layers, no specs, missing assets Instead: Organize files, name everything, provide complete specs
Problem: Designs requiring impossible performance or unsupported features Instead: Collaborate with engineering on feasibility
Problem: Complex animations that hurt performance or accessibility Instead: Keep animations subtle, purposeful, and performant
Before delivering production designs to engineering:
/mnt/user-data/outputs/Before marking production design complete:
/mnt/user-data/outputs/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