home / skills / qodex-ai / ai-agent-skills / aesthetic-analysis
npx playbooks add skill qodex-ai/ai-agent-skills --skill aesthetic-analysisReview the files below or copy the command above to add this skill to your agents.
---
name: aesthetic-analysis
description: Analyze and extract design patterns from visual examples. Deconstructs design systems, color palettes, typography, and layout principles from reference materials.
license: Proprietary. LICENSE.txt has complete terms
---
# Landing Page Redesign
## Instructions
When requested to redesign a landing page based on a reference:
### 1. **User Interview**
- If not provided in the initial request, ask the user for:
- **Reference URL or Image**: The landing page or design to replicate (can be a live website URL or an image URL)
- **Target Page**: Which file in the codebase should receive the design (e.g., `app/(tabs)/index.tsx`, `app/landing.tsx`)
- If details are provided in the initial request, skip to step 2
### 2. **Capture Reference Design**
- Use Playwright MCP to open the reference URL:
- Navigate to the page
- Take a full-page screenshot to understand structure
- Interact with the website, mouse hover, click around
- Analyze the page deeply
- Analyze the landing page/image for:
- Layout structure (header, hero, sections, footer)
- Interactive elements
- Color palette
- Typography (fonts, sizes, weights)
- Spacing and padding patterns
- UI components (buttons, cards, forms, etc.)
- Responsive design patterns
### 3. **Implement the Design**
- Read the target page file to understand current structure
- Implement the design following these principles:
- **Match the layout**: Replicate section structure, grid layouts, flex patterns
- **Match the intractions**: Replicate mouse and button interactions, whether clicks or hovers - on key elements
- **Match colors**: Extract and use exact hex values from the reference
- **Match typography**: Use similar fonts (adjust to available system fonts or suggest font imports)
- **Match spacing**: Replicate padding, margins, and gaps
- **Match components**: Build equivalent React Native components for buttons, cards, inputs, etc.
- **Follow project patterns**: Use StyleSheet.create() as per CLAUDE.md guidelines
- **Mobile-first**: Ensure the design works on mobile (Expo/React Native)
- Write the implementation to the target file
### 4. **Compare Implementations**
- If the reference is a live website:
- Take a screenshot of the implemented page
- Use Playwright to view your implementation
- Visually compare:
- Layout alignment and proportions
- Color accuracy
- Typography consistency
- Spacing and padding
- Component styling details
- Document differences found
### 5. **Iterate and Refine**
- Based on comparison, identify specific gaps:
- Layout issues (alignment, sizing, positioning)
- Color mismatches
- Typography differences
- Missing components or details
- Spacing inconsistencies
- Make targeted refinements to address each gap
- Repeat steps 4-5 until:
- The design matches as closely as technically possible
- All major visual elements are replicated
- User confirms satisfaction
- **Aim for 3-5 iterations** minimum to achieve high fidelity
### 6. **Final Review**
- Present the final implementation to the user
- Summarize what was matched and any intentional differences
- Suggest any follow-up improvements (e.g., animations, hover states, responsive tweaks)
## Best Practices
- **Be detail-oriented**: Small differences in spacing, colors, or typography can break the visual consistency
- **Extract exact values**: Use color pickers and measurement tools to get precise values from screenshots
- **Component reusability**: Extract repeated patterns into reusable components
- **Maintain project standards**: Follow the StyleSheet.create() pattern and existing architecture
- **Document trade-offs**: If React Native limitations prevent exact replication, document why
## Example Flow
**User request:** "Make our landing page look like https://stripe.com/payments"
1. **Interview**: Ask "Which file should receive this design?" → User: "app/(tabs)/index.tsx"
2. **Capture**:
- Navigate to stripe.com/payments
- Take full-page screenshot
- Analyze deeply: Dark theme, gradient hero, feature grid, clean typography, button changes color upon hover/click
3. **Implement**:
- Read app/(tabs)/index.tsx
- Build based on reference
4. **Compare**:
- Screenshot shows hero gradient is lighter than reference
- Button border-radius is too sharp
- Font weights don't match
- Button doesn't change upon hover
5. **Iterate**:
- Adjust gradient colors to match
- Reduce border-radius on buttons
- Increase font weights
- button changes upon hover/click
- Re-compare
6. **Iterate again**:
- Fine-tune spacing between sections
- Adjust icon sizes
- Match exact color values
7. **Final review**: Present to user with summary of matched elements
## Technical Notes
- **React Native considerations**:
- Web fonts may need to be loaded via expo-font or google fonts
- Some web-specific effects (box-shadow) have React Native equivalents (shadowColor, shadowOffset)
- Use Dimensions API for responsive layouts
- **Iteration targets**:
- First iteration: Overall layout and structure
- Second iteration: Colors and typography
- Third iteration: Spacing and sizing refinement
- Fourth+ iterations: Fine details and polish
## References
- [Playwright MCP Documentation](https://github.com/executeautomation/mcp-playwright)
- [Expo Style Guide](https://docs.expo.dev/develop/user-interface/style/)
- [React Native StyleSheet](https://reactnative.dev/docs/stylesheet)