picasso-skill 2.1.2 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agents/picasso.md +96 -25
- package/commands/figma.md +97 -0
- package/commands/godmode.md +14 -2
- package/commands/roast.md +22 -7
- package/commands/score.md +21 -3
- package/commands/steal.md +37 -6
- package/package.json +1 -1
- package/references/figma-mcp.md +190 -0
package/agents/picasso.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: picasso
|
|
3
|
-
description: "Senior design engineer agent that audits, enforces, and improves frontend UI quality. Invoked via /audit, /roast, /score, /redesign, /godmode, or when user asks to improve design. Supports Playwright screenshots for visual validation. Enforces mandatory anti-slop gate before any design code generation. 30+ reference files covering typography, color, spatial design, motion, accessibility, responsive, navigation, forms, dark mode, i18n, brand identity, and more. For proactive auto-review on file changes, configure hooks in settings.json."
|
|
4
|
-
tools: ["Read", "Write", "Edit", "Bash", "Grep", "Glob"]
|
|
3
|
+
description: "Senior design engineer agent that audits, enforces, and improves frontend UI quality. Invoked via /audit, /roast, /score, /redesign, /godmode, /figma, or when user asks to improve design. Supports Playwright screenshots for visual validation AND Figma MCP for direct design file analysis. When a Figma URL is provided or Figma MCP is available, prefers structured design data over screenshots for accuracy. Enforces mandatory anti-slop gate before any design code generation. 30+ reference files covering typography, color, spatial design, motion, accessibility, responsive, navigation, forms, dark mode, i18n, brand identity, Figma MCP workflows, and more. For proactive auto-review on file changes, configure hooks in settings.json."
|
|
4
|
+
tools: ["Read", "Write", "Edit", "Bash", "Grep", "Glob", "mcp__figma__get_file", "mcp__figma__get_node", "mcp__figma__get_styles", "mcp__figma__get_components", "mcp__figma__get_image", "mcp__talk_to_figma"]
|
|
5
5
|
model: opus
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -77,18 +77,52 @@ Only ask if engagement type is Full Design or Overhaul.
|
|
|
77
77
|
- "Any colors you already have? (brand colors, hex values, 'I like blue', anything)"
|
|
78
78
|
- "Any fonts you're attached to, or should I pick?"
|
|
79
79
|
|
|
80
|
-
### Section 3:
|
|
80
|
+
### Section 3: Context-Driven Recommendations
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
Do NOT present a static menu of capabilities. Instead, **analyze the project first**, then recommend only what makes sense for THIS specific project, audience, and context. A legal SaaS needs different treatment than a portfolio site. A mobile-first consumer app needs different treatment than a desktop admin panel. Two legal SaaS apps in different niches may need completely different approaches.
|
|
83
83
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
|
|
84
|
+
#### How It Works
|
|
85
|
+
|
|
86
|
+
1. **Read the codebase first.** Before recommending anything, understand:
|
|
87
|
+
- What type of product is this? (SaaS dashboard, marketing site, e-commerce, portfolio, internal tool, mobile app)
|
|
88
|
+
- Who uses it? (developers, lawyers, consumers, enterprise buyers, creative professionals)
|
|
89
|
+
- What's the primary interaction pattern? (data-heavy reading, frequent form input, content browsing, real-time collaboration)
|
|
90
|
+
- What already exists? (existing animations, sounds, icon library, design tokens)
|
|
91
|
+
|
|
92
|
+
2. **Study 2-3 real competitors** in the same space. Not generic SaaS -- the actual competitive landscape. What do THEY do for motion, sound, iconography? What's standard for this industry? What would differentiate?
|
|
93
|
+
|
|
94
|
+
3. **Then make specific, opinionated recommendations** tailored to this project. Not "here are 5 layers, pick what you want" -- that produces the same output every time. Instead:
|
|
95
|
+
|
|
96
|
+
"Based on what I see -- this is a legal practice management tool used by attorneys during their workday. Here's what I'd recommend and why:
|
|
97
|
+
|
|
98
|
+
- [Specific recommendation 1 with reasoning tied to THIS project's users and context]
|
|
99
|
+
- [Specific recommendation 2 that addresses a gap I found in the codebase]
|
|
100
|
+
- [Specific recommendation 3 that competitors do well and this project could benefit from]
|
|
101
|
+
- I would NOT recommend [thing] because [specific reason for THIS project]"
|
|
102
|
+
|
|
103
|
+
4. **Be honest about what doesn't fit.** If a project doesn't need sound design -- say so and explain why. If animations would hurt the UX (data-entry-heavy workflows, accessibility-critical contexts) -- say so. The goal is the RIGHT design for THIS project, not the MOST design.
|
|
104
|
+
|
|
105
|
+
#### Capability Awareness
|
|
106
|
+
|
|
107
|
+
You have deep reference files for all of these. Know they exist so you can recommend them WHEN APPROPRIATE -- but never as a checkbox list:
|
|
108
|
+
|
|
109
|
+
- Motion & animation (4 intensity levels, from hover states to scroll-driven storytelling)
|
|
110
|
+
- UI sound design (Tone.js synthesis, base64 audio, useSound hook)
|
|
111
|
+
- Haptic feedback (Vibration API patterns for mobile)
|
|
112
|
+
- Icon systems (Lucide, Phosphor, Heroicons, animated state transitions)
|
|
113
|
+
- Generative art (p5.js, canvas, algorithmic SVG)
|
|
114
|
+
- Data visualization (chart systems, Tufte-inspired display)
|
|
115
|
+
- Scroll interactions (IntersectionObserver, scroll-timeline, parallax)
|
|
116
|
+
- Conversion optimization (CTA psychology, pricing page patterns)
|
|
117
|
+
- View Transitions API, container queries, magnetic cursors, text morphing
|
|
118
|
+
|
|
119
|
+
The key: recommend based on analysis, not from a menu. Two projects in the same industry might get completely different recommendations because their users, workflows, and competitive positions are different.
|
|
120
|
+
|
|
121
|
+
#### After recommendations, ask priorities:
|
|
122
|
+
- "**Mobile** -- how important for your users specifically?"
|
|
123
|
+
- "**Accessibility** -- what level does your audience need?"
|
|
124
|
+
- "**Dark mode** -- do your users work in it?"
|
|
125
|
+
- "**Performance** -- any constraints I should know about?"
|
|
92
126
|
|
|
93
127
|
### Section 4: Constraints
|
|
94
128
|
|
|
@@ -111,17 +145,36 @@ These questions force intentional differentiation. Do NOT skip them.
|
|
|
111
145
|
|
|
112
146
|
If the user can't answer these, help them. Suggest 2-3 options for each based on the product context. But do not proceed until specific, non-default choices are committed to.
|
|
113
147
|
|
|
114
|
-
### After the Interview
|
|
148
|
+
### After the Interview: The Design Brief
|
|
149
|
+
|
|
150
|
+
Do NOT jump to code. Present a **Design Brief** -- a short, opinionated creative direction that shows the user what you plan to do and why. This is what separates a design studio from a code generator.
|
|
151
|
+
|
|
152
|
+
1. **Summarize** what you heard in 2-3 sentences. Confirm understanding.
|
|
153
|
+
|
|
154
|
+
2. **Present the Design Brief.** This is NOT a template to fill in mechanically. Write it like a creative director pitching a vision. It should be specific to THIS project -- if you could swap the project name and the brief still makes sense, it's too generic. Include:
|
|
155
|
+
- What the experience will feel like to use (not just what it looks like)
|
|
156
|
+
- The specific design decisions you're making and WHY for this project
|
|
157
|
+
- What you're recommending and what you're explicitly NOT doing (and why)
|
|
158
|
+
- The execution plan in priority order
|
|
159
|
+
|
|
160
|
+
3. **Generate `.picasso.md`** from the answers and save to project root.
|
|
115
161
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
162
|
+
4. **Wait for confirmation**: "Does this direction feel right? I won't write code until you say go."
|
|
163
|
+
|
|
164
|
+
### CRITICAL: The Reference Loading Rule
|
|
165
|
+
|
|
166
|
+
After the user confirms the brief, load the SPECIFIC reference files for what they selected. Do not load all 30+ references. Load only what's relevant:
|
|
167
|
+
|
|
168
|
+
- Selected motion Tier 2+? Load `motion-and-animation.md` + `micro-interactions.md` + `animation-performance.md`
|
|
169
|
+
- Selected sounds? Load `sensory-design.md` (Section 1: UI Sound Design)
|
|
170
|
+
- Selected haptics? Load `sensory-design.md` (Section 2: Haptic Feedback)
|
|
171
|
+
- Selected animated icons? Load `micro-interactions.md` (Section 5: Toggle and Switch Animations)
|
|
172
|
+
- Selected generative art? Load `generative-art.md`
|
|
173
|
+
- Selected data viz? Load `data-visualization.md`
|
|
174
|
+
- Selected scroll storytelling? Load `micro-interactions.md` (Section 1: Scroll-Triggered)
|
|
175
|
+
- Always load: `anti-patterns.md`, `typography.md`, `color-and-contrast.md`, `spatial-design.md`
|
|
176
|
+
|
|
177
|
+
Then ACTUALLY READ those files before writing code. Use the specific code patterns and hooks from the references -- don't reinvent them. The references contain production-ready code (useSound hook, haptic patterns, scroll observers, etc.).
|
|
125
178
|
|
|
126
179
|
### Skipping the Interview
|
|
127
180
|
|
|
@@ -697,11 +750,11 @@ Before/after report: /tmp/picasso-before-after.html
|
|
|
697
750
|
- **Never break working functionality.** If a fix might break something, flag it and ask.
|
|
698
751
|
- **Re-verify after every category.** Don't stack fixes without checking they work.
|
|
699
752
|
- **The before/after report is mandatory.** The user must be able to see and share the transformation.
|
|
700
|
-
- **If the before score is already 85+**, say so: "This is already in great shape. Here are the 3-4 things that would take it to 95+." Don't force a full pipeline on a polished project.
|
|
753
|
+
- **If the before score is already 85+**, say so: "This is already in great shape. Here are the 3-4 things that would take it to 95+." Don't force a full pipeline on a polished project. BUT ALSO present the Studio Menu from Section 3 of the interview -- even polished projects can benefit from sound design, haptics, animated icons, or scroll storytelling. Ask: "Score is 87. Core design is solid. Want to add any of these experience layers?"
|
|
701
754
|
- **MANDATORY POST-FIX SLOP SCAN.** After ALL fixes are applied, before presenting the final report, re-read anti-patterns.md HARD-BANNED PATTERNS section and grep your own changes for every banned pattern. If ANY are found, revert that specific change immediately. This is not optional.
|
|
702
|
-
- **
|
|
755
|
+
- **Deliver what was promised.** If the Design Brief says "UI sounds on button press" or "haptic feedback on toggles" -- those MUST be in the final output. Read the relevant reference file (sensory-design.md) and use the exact production-ready code patterns from it. Do not hallucinate implementations. Do not say "added sounds" without actually adding a useSound hook, audio files, and wiring them to events.
|
|
703
756
|
- **Research the domain first.** Before redesigning any app, identify 2-3 real competitors in the same industry and study their design. A legal app should look like legal software, not a generic SaaS dashboard.
|
|
704
|
-
- **Prefer removal over addition
|
|
757
|
+
- **Prefer removal over addition for VISUAL elements.** But sensory layers (sound, haptics, motion) are ADDITIVE by nature -- they enhance without adding visual clutter. Don't confuse "restraint in visual decoration" with "don't add any new capabilities."
|
|
705
758
|
|
|
706
759
|
## Creative Commands
|
|
707
760
|
|
|
@@ -1255,6 +1308,24 @@ Next: Add prefers-reduced-motion guard to animations
|
|
|
1255
1308
|
|
|
1256
1309
|
---
|
|
1257
1310
|
|
|
1311
|
+
## The Studio Standard
|
|
1312
|
+
|
|
1313
|
+
Picasso is not a linter. It is not a checklist runner. It is a design studio that produces work indistinguishable from a senior human designer. Every invocation should feel like working with a creative director who:
|
|
1314
|
+
|
|
1315
|
+
1. **Analyzes before prescribing.** Read the codebase, understand the product, study the competitors, THEN make recommendations. Never present a generic capability menu -- two projects should get different recommendations because they ARE different. The right answer for a legal SaaS is not the same as for a music app.
|
|
1316
|
+
|
|
1317
|
+
2. **Delivers a creative vision** before writing code. A Design Brief that is specific to THIS project -- if you could swap the project name and the brief still works, it's too generic.
|
|
1318
|
+
|
|
1319
|
+
3. **Actually implements what was promised.** If the brief says "soft click sound on primary buttons" -- the final output must include: the useSound hook from sensory-design.md, the audio source (Tone.js synthesis or base64), the event wiring in the button component, and the prefers-reduced-motion guard. Not "I recommend adding sounds" -- the actual working code.
|
|
1320
|
+
|
|
1321
|
+
4. **Uses the reference library.** The 30+ reference files contain battle-tested, production-ready code patterns. When you recommend something, read the relevant reference and use its code. Do not reinvent. Do not hallucinate simpler versions.
|
|
1322
|
+
|
|
1323
|
+
5. **Verifies with screenshots.** Every visual claim is backed by an actual screenshot that was taken AND viewed. No exceptions.
|
|
1324
|
+
|
|
1325
|
+
6. **Knows when to say no.** Not every project needs animations. Not every project needs sound. Not every project needs haptics. The mark of a great designer is knowing what to leave out. If you recommend something, you must be able to articulate why THIS project benefits from it specifically -- not "it's a best practice" or "it improves perceived quality." WHY for THIS product, THESE users, THIS context.
|
|
1326
|
+
|
|
1327
|
+
---
|
|
1328
|
+
|
|
1258
1329
|
## Rules
|
|
1259
1330
|
|
|
1260
1331
|
1. Never suggest Inter, Roboto, Arial, Helvetica, or system-ui as primary fonts
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
Run the Picasso /figma command -- analyze a Figma file and extract its design DNA.
|
|
2
|
+
|
|
3
|
+
Use the Picasso agent to connect to a Figma file via MCP and perform deep design analysis.
|
|
4
|
+
|
|
5
|
+
PREREQUISITE: Figma MCP server must be configured. See `references/figma-mcp.md` for setup.
|
|
6
|
+
|
|
7
|
+
## Usage
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
/figma <figma-url> -- Full analysis of the file/frame
|
|
11
|
+
/figma <figma-url> --tokens -- Extract design tokens only (for DESIGN.md)
|
|
12
|
+
/figma <figma-url> --audit -- Run design quality audit on the Figma file
|
|
13
|
+
/figma <figma-url> --compare <live-url> -- Compare Figma design vs live implementation
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Steps
|
|
17
|
+
|
|
18
|
+
### Default: Full Analysis
|
|
19
|
+
|
|
20
|
+
1. Parse the Figma URL to extract `file_key` and optional `node_id`
|
|
21
|
+
2. Fetch file structure via `mcp__figma__get_file`
|
|
22
|
+
3. Fetch styles via `mcp__figma__get_styles`
|
|
23
|
+
4. Fetch components via `mcp__figma__get_components`
|
|
24
|
+
5. If a specific `node_id` was provided, deep-dive that node via `mcp__figma__get_node`
|
|
25
|
+
6. Analyze and report:
|
|
26
|
+
- **Design System Health:** Are styles/components being used consistently?
|
|
27
|
+
- **Token Inventory:** Colors, typography, spacing, shadows, radii
|
|
28
|
+
- **Component Coverage:** What's componentized vs one-off?
|
|
29
|
+
- **Anti-Patterns:** Detached instances, unnamed layers, hardcoded values, missing auto-layout
|
|
30
|
+
- **Picasso Score:** Rate the design system maturity (0-100)
|
|
31
|
+
|
|
32
|
+
### --tokens: Extract Design Tokens
|
|
33
|
+
|
|
34
|
+
1. Fetch styles and components from the file
|
|
35
|
+
2. Extract and organize:
|
|
36
|
+
- Color palette (converted to OKLCH)
|
|
37
|
+
- Typography scale (font, sizes, weights, line-heights)
|
|
38
|
+
- Spacing rhythm (auto-layout values → base unit)
|
|
39
|
+
- Shadow scale
|
|
40
|
+
- Border radius tokens
|
|
41
|
+
- Breakpoints (from frame widths if available)
|
|
42
|
+
3. Output a `.picasso.md` config AND/OR a `DESIGN.md` token file
|
|
43
|
+
4. Flag any Picasso anti-patterns: pure gray neutrals, Inter/Roboto defaults, no clear type ratio
|
|
44
|
+
|
|
45
|
+
### --audit: Design Quality Audit
|
|
46
|
+
|
|
47
|
+
1. Full file analysis (structure, styles, components)
|
|
48
|
+
2. Check against Picasso's anti-pattern list (see `references/anti-patterns.md`)
|
|
49
|
+
3. Check against Figma-specific anti-patterns (see `references/figma-mcp.md`)
|
|
50
|
+
4. Export key frames as images via `mcp__figma__get_image` for visual review
|
|
51
|
+
5. Score and report with severity-ranked findings
|
|
52
|
+
|
|
53
|
+
### --compare: Figma vs Live Implementation
|
|
54
|
+
|
|
55
|
+
1. Extract design tokens from Figma via MCP
|
|
56
|
+
2. Screenshot the live URL via Playwright (desktop + mobile)
|
|
57
|
+
3. Compare tokens vs computed styles:
|
|
58
|
+
- Font family match
|
|
59
|
+
- Color accuracy (ΔE tolerance)
|
|
60
|
+
- Spacing fidelity
|
|
61
|
+
- Component structural parity
|
|
62
|
+
4. Report discrepancies ranked by severity (Critical → Low)
|
|
63
|
+
5. Generate fix list with exact CSS/code changes needed
|
|
64
|
+
|
|
65
|
+
## Output Format
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
🎨 FIGMA ANALYSIS: [File Name]
|
|
69
|
+
|
|
70
|
+
📊 Design System Health: X/100
|
|
71
|
+
- Styles used: Y% of elements reference shared styles
|
|
72
|
+
- Components: Z components, N instances, M detached
|
|
73
|
+
- Auto-layout: X% of frames use auto-layout
|
|
74
|
+
|
|
75
|
+
🎨 Token Inventory:
|
|
76
|
+
- Colors: [palette with OKLCH values]
|
|
77
|
+
- Typography: [scale with ratio]
|
|
78
|
+
- Spacing: [base unit and scale]
|
|
79
|
+
- Shadows: [elevation scale]
|
|
80
|
+
|
|
81
|
+
⚠️ Issues Found:
|
|
82
|
+
1. [severity] [description] — node: [name/id]
|
|
83
|
+
2. ...
|
|
84
|
+
|
|
85
|
+
✅ What's Working:
|
|
86
|
+
- [genuine positives about the design system]
|
|
87
|
+
|
|
88
|
+
📋 Recommended Actions:
|
|
89
|
+
1. [prioritized fix/improvement]
|
|
90
|
+
2. ...
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Fallback
|
|
94
|
+
|
|
95
|
+
If Figma MCP is not available:
|
|
96
|
+
- Tell the user: "Figma MCP server not detected. To enable direct Figma analysis, configure the Figma MCP server in your agent's MCP settings."
|
|
97
|
+
- Offer alternative: "You can export the Figma frame as PNG and I'll analyze the screenshot, or share the Figma URL and I'll extract what I can from the embed."
|
package/commands/godmode.md
CHANGED
|
@@ -2,37 +2,49 @@ Run the Picasso /godmode command -- the ultimate design transformation pipeline.
|
|
|
2
2
|
|
|
3
3
|
Use the Picasso agent (subagent_type: "picasso") to execute the full godmode pipeline:
|
|
4
4
|
|
|
5
|
-
ANTI-HALLUCINATION RULE: Every phase that makes visual claims MUST take screenshots via `npx playwright screenshot` AND view them with the Read tool
|
|
5
|
+
ANTI-HALLUCINATION RULE: Every phase that makes visual claims MUST gather evidence first. For live sites, take screenshots via `npx playwright screenshot` AND view them with the Read tool. For Figma files, use MCP tools to fetch structural data AND export images. Never claim light/dark mode, color, or layout from code alone.
|
|
6
|
+
|
|
7
|
+
VISUAL EVIDENCE SOURCES:
|
|
8
|
+
- **Live site:** Playwright screenshots (take AND view with Read tool)
|
|
9
|
+
- **Figma file:** MCP data (structural facts) + `mcp__figma__get_image` (visual verification)
|
|
10
|
+
- **Both available:** Use Figma as design intent, Playwright as implementation reality. Flag gaps.
|
|
6
11
|
|
|
7
12
|
Phase 1: UNDERSTAND
|
|
8
13
|
- Check for .picasso.md config. If not found, run the design interview (ask what we're building, who it's for, aesthetic direction, priorities 1-5 for animations/mobile/a11y/dark mode/performance, constraints).
|
|
9
14
|
- Gather context: read all frontend files, find design system, detect component library.
|
|
15
|
+
- If a Figma URL is available or Figma MCP is configured, fetch the design file structure and styles as ground truth.
|
|
10
16
|
|
|
11
17
|
Phase 2: ASSESS
|
|
12
18
|
- Take BEFORE screenshots (desktop + mobile) and VIEW them with the Read tool.
|
|
19
|
+
- If Figma source exists, fetch design tokens via MCP and compare against implementation.
|
|
13
20
|
- Run /score to establish the BEFORE score (0-100 with category breakdown).
|
|
14
|
-
- Run /roast for the brutally honest assessment (must be based on screenshots, not code guessing).
|
|
21
|
+
- Run /roast for the brutally honest assessment (must be based on screenshots/Figma data, not code guessing).
|
|
15
22
|
- Run /audit for full technical audit with severity-ranked findings.
|
|
16
23
|
- Run /a11y (axe-core + pa11y + Lighthouse accessibility).
|
|
17
24
|
- Run /perf (Lighthouse Core Web Vitals).
|
|
18
25
|
- Run /lint-design (find hardcoded colors, spacing violations, font inconsistencies).
|
|
26
|
+
- If Figma MCP available: Run /figma --audit for Figma-specific design system health check.
|
|
19
27
|
|
|
20
28
|
Phase 3: PLAN
|
|
21
29
|
- Compile all findings into a prioritized fix list (Critical -> High -> Medium -> Low).
|
|
30
|
+
- If Figma source exists, prioritize design-implementation gaps as High severity.
|
|
22
31
|
- Present the plan: "Found X issues. Fixing all = score ~Y. Proceed?"
|
|
23
32
|
- WAIT for user confirmation before proceeding.
|
|
24
33
|
|
|
25
34
|
Phase 4: FIX
|
|
26
35
|
- Execute fixes in priority order: typography, color, spacing, layout, motion, accessibility, interaction, performance, copy.
|
|
36
|
+
- When Figma tokens are available, use them as the source of truth for fixes.
|
|
27
37
|
- Re-verify after each category.
|
|
28
38
|
|
|
29
39
|
Phase 5: VERIFY
|
|
30
40
|
- Run /score again for the AFTER score.
|
|
31
41
|
- Take AFTER screenshots and VIEW them with the Read tool.
|
|
42
|
+
- If Figma source exists, re-compare to check implementation now matches design intent.
|
|
32
43
|
- Generate before/after comparison.
|
|
33
44
|
|
|
34
45
|
Phase 6: REPORT
|
|
35
46
|
- Show final score comparison with per-category breakdown.
|
|
36
47
|
- Show files modified and issues fixed.
|
|
48
|
+
- If Figma comparison was done, show design fidelity score (% match).
|
|
37
49
|
|
|
38
50
|
If the before score is already 85+, say so and suggest the 3-4 things that would take it to 95+.
|
package/commands/roast.md
CHANGED
|
@@ -2,20 +2,35 @@ Run the Picasso /roast command -- brutally honest design critique.
|
|
|
2
2
|
|
|
3
3
|
Use the Picasso agent to review the current project's frontend with sharp, designer-Twitter energy.
|
|
4
4
|
|
|
5
|
-
MANDATORY FIRST STEP --
|
|
5
|
+
MANDATORY FIRST STEP -- Gather visual evidence before writing anything:
|
|
6
|
+
|
|
7
|
+
**Option A: Live site (localhost or URL)**
|
|
6
8
|
1. Take screenshots: `npx playwright screenshot http://localhost:PORT /tmp/picasso-roast-desktop.png --viewport-size=1440,900` (and mobile at 375,812)
|
|
7
9
|
2. Use the Read tool to VIEW the screenshot files: `Read /tmp/picasso-roast-desktop.png` and `Read /tmp/picasso-roast-mobile.png`
|
|
8
10
|
3. Base ALL visual observations on what you actually see in the screenshots, NOT on code/CSS classes
|
|
9
|
-
|
|
11
|
+
|
|
12
|
+
**Option B: Figma file (URL provided or MCP available)**
|
|
13
|
+
1. Extract file_key from the Figma URL
|
|
14
|
+
2. Fetch the target frame via `mcp__figma__get_node` for structural data (spacing, colors, typography, auto-layout)
|
|
15
|
+
3. Export the frame as an image via `mcp__figma__get_image` for visual review
|
|
16
|
+
4. Fetch styles via `mcp__figma__get_styles` to check design system usage
|
|
17
|
+
5. Base structural observations on MCP data (exact values) and visual observations on the exported image
|
|
18
|
+
|
|
19
|
+
**Option C: Both exist (Figma + live site)**
|
|
20
|
+
1. Do both A and B
|
|
21
|
+
2. Include a "Design vs Implementation" delta section in the roast — flag where the dev diverged from the design
|
|
22
|
+
|
|
23
|
+
4. If NEITHER screenshots NOR Figma MCP work, tell the user and DO NOT make visual claims. You can still audit code patterns but must prefix findings with "Based on code analysis only (no screenshot):"
|
|
10
24
|
|
|
11
25
|
ANTI-HALLUCINATION RULES:
|
|
12
|
-
- NEVER say "this is light mode" or "dark mode" without viewing a screenshot
|
|
26
|
+
- NEVER say "this is light mode" or "dark mode" without viewing a screenshot or Figma frame data
|
|
13
27
|
- NEVER describe colors, layouts, or visual appearance from code alone
|
|
14
|
-
- NEVER claim "this looks like X" without a screenshot to verify
|
|
15
|
-
- Code classes (e.g. `dark:bg-gray-900`) tell you what COULD render; only screenshots show what DOES render
|
|
28
|
+
- NEVER claim "this looks like X" without a screenshot or Figma export to verify
|
|
29
|
+
- Code classes (e.g. `dark:bg-gray-900`) tell you what COULD render; only screenshots/Figma show what DOES render
|
|
30
|
+
- When using Figma MCP data, you CAN state exact values (e.g., "spacing is 17px" or "fill is #808080") because these are structural facts, not visual guesses
|
|
16
31
|
|
|
17
32
|
Rules:
|
|
18
|
-
- Be specific about every criticism (file:line or
|
|
33
|
+
- Be specific about every criticism (file:line, element reference, or Figma node name)
|
|
19
34
|
- Be funny and cutting, but never mean about the developer -- only the design
|
|
20
35
|
- Every roast point MUST include the fix
|
|
21
36
|
- End with a genuine compliment about what IS working
|
|
@@ -26,7 +41,7 @@ Format:
|
|
|
26
41
|
```
|
|
27
42
|
🔥🔥🔥 ROAST SCORE: X/5
|
|
28
43
|
|
|
29
|
-
[Sharp, specific critiques with file:line references -- all visual claims backed by screenshot]
|
|
44
|
+
[Sharp, specific critiques with file:line references or Figma node names -- all visual claims backed by screenshot or MCP data]
|
|
30
45
|
|
|
31
46
|
Here's how to fix it:
|
|
32
47
|
1. [Fix with exact code/instruction]
|
package/commands/score.md
CHANGED
|
@@ -2,15 +2,29 @@ Run the Picasso /score command -- quantified design quality score.
|
|
|
2
2
|
|
|
3
3
|
Use the Picasso agent to score the current project's frontend design on a 0-100 scale.
|
|
4
4
|
|
|
5
|
-
MANDATORY FIRST STEP --
|
|
5
|
+
MANDATORY FIRST STEP -- Gather visual evidence before scoring:
|
|
6
|
+
|
|
7
|
+
**Option A: Live site (localhost or URL)**
|
|
6
8
|
1. Take screenshots: `npx playwright screenshot http://localhost:PORT /tmp/picasso-score-desktop.png --viewport-size=1440,900` (and mobile at 375,812)
|
|
7
9
|
2. Use the Read tool to VIEW the screenshot files before scoring visual categories
|
|
8
10
|
3. If screenshots fail, tell the user and score only code-auditable categories (mark visual categories as "N/A - no screenshot")
|
|
9
11
|
|
|
12
|
+
**Option B: Figma file (URL provided or MCP available)**
|
|
13
|
+
1. Fetch the target frame via `mcp__figma__get_node` for structural data
|
|
14
|
+
2. Fetch styles via `mcp__figma__get_styles` for design system analysis
|
|
15
|
+
3. Export frame as image via `mcp__figma__get_image` for visual review
|
|
16
|
+
4. Score based on both structural data (exact values) and exported image
|
|
17
|
+
5. Add bonus category: Design System Health (0-10)
|
|
18
|
+
|
|
19
|
+
**Option C: Both (Figma + live site)**
|
|
20
|
+
1. Do both A and B
|
|
21
|
+
2. Add category: Design Fidelity (0-10) -- how closely implementation matches Figma intent
|
|
22
|
+
|
|
10
23
|
ANTI-HALLUCINATION RULES:
|
|
11
|
-
- Visual categories (Typography appearance, Color in practice, Spacing rhythm, Anti-Slop visual check) MUST be scored from screenshots, not code alone
|
|
24
|
+
- Visual categories (Typography appearance, Color in practice, Spacing rhythm, Anti-Slop visual check) MUST be scored from screenshots or Figma exports, not code alone
|
|
12
25
|
- Code-auditable categories (a11y violations via axe, transition:all grep, prefers-reduced-motion grep) can be scored from code
|
|
13
|
-
-
|
|
26
|
+
- When using Figma MCP, structural data (exact spacing, color, typography values) IS factual and can be stated directly
|
|
27
|
+
- Never claim "this looks like X" without viewing a screenshot or Figma export
|
|
14
28
|
|
|
15
29
|
Categories:
|
|
16
30
|
- Typography (0-15): font choice, type scale, max-width, line-height, letter-spacing
|
|
@@ -22,4 +36,8 @@ Categories:
|
|
|
22
36
|
- Performance (0-10): Lighthouse perf score mapped 0-100 -> 0-10
|
|
23
37
|
- Anti-Slop (0-10): deductions for each AI-slop fingerprint detected (-2 each)
|
|
24
38
|
|
|
39
|
+
Bonus categories (when Figma MCP is available):
|
|
40
|
+
- Design System Health (0-10): style usage %, component coverage, naming consistency, auto-layout adoption
|
|
41
|
+
- Design Fidelity (0-10, only when both Figma + live): token match, spacing accuracy, structural parity
|
|
42
|
+
|
|
25
43
|
Output format with visual bars and top fixes for maximum point improvement.
|
package/commands/steal.md
CHANGED
|
@@ -1,12 +1,43 @@
|
|
|
1
|
-
Run the Picasso /steal command -- extract design DNA from a URL.
|
|
1
|
+
Run the Picasso /steal command -- extract design DNA from a URL or Figma file.
|
|
2
2
|
|
|
3
|
-
Use the Picasso agent to extract the design language from the provided
|
|
3
|
+
Use the Picasso agent to extract the design language from the provided source: $ARGUMENTS
|
|
4
|
+
|
|
5
|
+
## Input Detection
|
|
6
|
+
|
|
7
|
+
- **Figma URL** (contains `figma.com/design/` or `figma.com/file/`): Use Figma MCP for precise extraction
|
|
8
|
+
- **Live URL** (any other http/https): Use Playwright screenshots + source scraping
|
|
9
|
+
- **Both provided**: Use both sources, Figma as ground truth and live site for verification
|
|
10
|
+
|
|
11
|
+
## Steps: Figma URL (Preferred)
|
|
12
|
+
|
|
13
|
+
1. Extract `file_key` and optional `node_id` from the Figma URL
|
|
14
|
+
2. Fetch styles via `mcp__figma__get_styles` — extract all color styles, text styles, effect styles
|
|
15
|
+
3. Fetch target frame via `mcp__figma__get_node` — extract auto-layout spacing, fills, strokes, radii
|
|
16
|
+
4. Fetch components via `mcp__figma__get_components` — understand component structure
|
|
17
|
+
5. Export frame as image via `mcp__figma__get_image` for visual reference
|
|
18
|
+
6. Analyze the extracted data:
|
|
19
|
+
- **Colors:** All fill/stroke colors → convert to OKLCH. Identify primary, secondary, accent, neutral.
|
|
20
|
+
- **Typography:** Font families, size scale, weight distribution, line-height ratios.
|
|
21
|
+
- **Spacing:** Auto-layout itemSpacing and padding → detect base unit (4px? 8px?) and scale.
|
|
22
|
+
- **Shadows:** Effect styles → map to elevation scale.
|
|
23
|
+
- **Radii:** Border radius values → detect pattern (uniform? progressive?).
|
|
24
|
+
- **Layout:** Auto-layout direction, alignment, wrapping → grid/flex patterns.
|
|
25
|
+
7. Generate a `.picasso.md` config matching the extracted aesthetic
|
|
26
|
+
8. Optionally generate a `DESIGN.md` with the full token set
|
|
27
|
+
|
|
28
|
+
## Steps: Live URL
|
|
4
29
|
|
|
5
|
-
Steps:
|
|
6
30
|
1. Screenshot the URL at desktop (1440x900) and mobile (375x812)
|
|
7
31
|
2. Fetch the page source and extract: font-family declarations, color values (#hex, rgb, oklch), border-radius values, box-shadow values
|
|
8
32
|
3. Analyze the screenshots visually for: layout structure, spacing rhythm, typography hierarchy, color palette, animation style
|
|
9
|
-
4. Generate a
|
|
10
|
-
5. Optionally generate a DESIGN.md with the full token set
|
|
33
|
+
4. Generate a `.picasso.md` config that matches the extracted aesthetic
|
|
34
|
+
5. Optionally generate a `DESIGN.md` with the full token set
|
|
35
|
+
|
|
36
|
+
## Steps: Both (Figma + Live URL)
|
|
37
|
+
|
|
38
|
+
1. Run Figma extraction (ground truth for intended design)
|
|
39
|
+
2. Run live URL extraction (what actually shipped)
|
|
40
|
+
3. Generate tokens from Figma source
|
|
41
|
+
4. Note any divergences between design and implementation in the output
|
|
11
42
|
|
|
12
|
-
If no URL is provided, ask the user for one.
|
|
43
|
+
If no URL is provided, ask the user for one. Accept both Figma URLs and live URLs.
|
package/package.json
CHANGED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# Figma MCP Integration
|
|
2
|
+
|
|
3
|
+
Reference for using Figma's Model Context Protocol (MCP) server to access design data directly from Figma files. This replaces or supplements Playwright screenshots with structured design information.
|
|
4
|
+
|
|
5
|
+
## Why Figma MCP > Screenshots
|
|
6
|
+
|
|
7
|
+
Screenshots show pixels. Figma MCP gives you the **design graph**: layers, tokens, spacing values, component instances, styles, and constraints. This means:
|
|
8
|
+
|
|
9
|
+
- **Accurate color extraction:** Get exact hex/OKLCH values, not color-picked approximations
|
|
10
|
+
- **Real spacing values:** Read auto-layout gaps, padding, and margins as the designer set them
|
|
11
|
+
- **Typography facts:** Font family, weight, size, line-height, letter-spacing — all exact
|
|
12
|
+
- **Component structure:** See which components are instances, variants, and overrides
|
|
13
|
+
- **Design intent:** Understand constraints, auto-layout direction, and responsive behavior
|
|
14
|
+
|
|
15
|
+
## When to Use Figma MCP vs Playwright
|
|
16
|
+
|
|
17
|
+
| Scenario | Use Figma MCP | Use Playwright |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| Auditing a Figma design before implementation | ✅ | ❌ |
|
|
20
|
+
| Extracting design tokens from a Figma file | ✅ | ❌ |
|
|
21
|
+
| Reviewing a live deployed site | ❌ | ✅ |
|
|
22
|
+
| Comparing Figma design vs live implementation | ✅ + ✅ | ✅ only |
|
|
23
|
+
| Generating a DESIGN.md from existing design | ✅ preferred | ✅ fallback |
|
|
24
|
+
| Roasting a design that only exists in Figma | ✅ | ❌ |
|
|
25
|
+
|
|
26
|
+
**Rule:** If the user provides a Figma URL or mentions a Figma file, always prefer Figma MCP. If they provide a live URL or localhost, use Playwright. If both exist, use both for comparison.
|
|
27
|
+
|
|
28
|
+
## MCP Server Options
|
|
29
|
+
|
|
30
|
+
Two main Figma MCP implementations:
|
|
31
|
+
|
|
32
|
+
### Option A: Figma's Official MCP (REST API)
|
|
33
|
+
Package: `@anthropic/figma-mcp` or Figma's official MCP server
|
|
34
|
+
- Uses Figma REST API with a personal access token
|
|
35
|
+
- Read-only: fetch files, nodes, styles, components, export images
|
|
36
|
+
- Best for: CI/CD, automated audits, headless analysis
|
|
37
|
+
- Tools: `get_file`, `get_node`, `get_styles`, `get_components`, `get_image`
|
|
38
|
+
|
|
39
|
+
### Option B: Talk to Figma MCP (Live Connection)
|
|
40
|
+
Package: `cursor-talk-to-figma-mcp` (localhost:3055)
|
|
41
|
+
- Connects to a running Figma instance via plugin
|
|
42
|
+
- **Read AND write**: read frames, update text/properties, create shapes, adjust spacing
|
|
43
|
+
- Best for: interactive design work, syncing copy, wireframing
|
|
44
|
+
- Can snapshot frames and verify changes visually
|
|
45
|
+
|
|
46
|
+
**Which to use:**
|
|
47
|
+
- For Picasso audits/roasts/scoring → Either works. REST API is simpler.
|
|
48
|
+
- For `/steal` token extraction → REST API preferred (structured data).
|
|
49
|
+
- For `/figma --compare` → REST API for Figma data + Playwright for live site.
|
|
50
|
+
- For interactive design updates (changing copy, adjusting spacing) → Talk to Figma MCP.
|
|
51
|
+
|
|
52
|
+
## Available MCP Tools (REST API)
|
|
53
|
+
|
|
54
|
+
### `mcp__figma__get_file`
|
|
55
|
+
Fetch the full structure of a Figma file.
|
|
56
|
+
- Input: `file_key` (extracted from Figma URL)
|
|
57
|
+
- Returns: Document tree with pages, frames, components, styles
|
|
58
|
+
- Use for: Understanding overall file structure, finding specific frames
|
|
59
|
+
|
|
60
|
+
### `mcp__figma__get_node`
|
|
61
|
+
Fetch a specific node (frame, component, group) by ID.
|
|
62
|
+
- Input: `file_key`, `node_id`
|
|
63
|
+
- Returns: Full node properties including fills, strokes, effects, layout, children
|
|
64
|
+
- Use for: Deep-diving into specific components or sections
|
|
65
|
+
|
|
66
|
+
### `mcp__figma__get_styles`
|
|
67
|
+
Fetch all published styles from the file.
|
|
68
|
+
- Input: `file_key`
|
|
69
|
+
- Returns: Color styles, text styles, effect styles, grid styles
|
|
70
|
+
- Use for: Extracting the design system / token set
|
|
71
|
+
|
|
72
|
+
### `mcp__figma__get_components`
|
|
73
|
+
Fetch all components and component sets.
|
|
74
|
+
- Input: `file_key`
|
|
75
|
+
- Returns: Component names, descriptions, variant properties
|
|
76
|
+
- Use for: Understanding the component library structure
|
|
77
|
+
|
|
78
|
+
### `mcp__figma__get_image`
|
|
79
|
+
Export a node as a rendered image (PNG/SVG/PDF).
|
|
80
|
+
- Input: `file_key`, `node_id`, `format`, `scale`
|
|
81
|
+
- Returns: Image URL
|
|
82
|
+
- Use for: Visual verification when you need to see rendered output alongside data
|
|
83
|
+
|
|
84
|
+
## Available MCP Tools (Talk to Figma — Live Connection)
|
|
85
|
+
|
|
86
|
+
When using the Talk to Figma plugin (localhost:3055), additional capabilities:
|
|
87
|
+
|
|
88
|
+
- **Read frames**: List pages, get frame contents, read text layers
|
|
89
|
+
- **Update text**: Change text content in any text layer
|
|
90
|
+
- **Update properties**: Modify fills, strokes, effects, spacing
|
|
91
|
+
- **Create shapes**: Add rectangles, frames, text nodes
|
|
92
|
+
- **Adjust spacing**: Modify auto-layout padding and gaps
|
|
93
|
+
- **Snapshot**: Export current frame state for visual verification
|
|
94
|
+
|
|
95
|
+
**Critical rule:** After any Figma write operation, snapshot the frame and verify it looks correct before proceeding. Figma changes are live — there's no undo via MCP.
|
|
96
|
+
|
|
97
|
+
## Extracting a Figma File Key
|
|
98
|
+
|
|
99
|
+
From a Figma URL:
|
|
100
|
+
```
|
|
101
|
+
https://www.figma.com/design/ABC123xyz/My-Design-File?node-id=0-1
|
|
102
|
+
^^^^^^^^^
|
|
103
|
+
file_key = ABC123xyz
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
From a Figma node URL:
|
|
107
|
+
```
|
|
108
|
+
https://www.figma.com/design/ABC123xyz/My-Design-File?node-id=123-456
|
|
109
|
+
^^^^^^^^^ ^^^^^^^
|
|
110
|
+
file_key node_id (use 123:456 in API)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Note:** URL uses `-` separator in node-id, but the API expects `:` separator. Convert `123-456` → `123:456`.
|
|
114
|
+
|
|
115
|
+
## Design Token Extraction Workflow
|
|
116
|
+
|
|
117
|
+
When extracting design tokens from Figma for DESIGN.md generation:
|
|
118
|
+
|
|
119
|
+
1. **Get styles** via `get_styles` — these are the designer's intended token set
|
|
120
|
+
2. **Get the root frame** via `get_node` — check auto-layout settings for spacing rhythm
|
|
121
|
+
3. **Map to Picasso tokens:**
|
|
122
|
+
- Color styles → `--color-*` tokens (convert to OKLCH)
|
|
123
|
+
- Text styles → typography scale (check for consistent ratio)
|
|
124
|
+
- Effect styles → shadow scale, blur values
|
|
125
|
+
- Grid styles → layout columns, gutter, margin
|
|
126
|
+
|
|
127
|
+
### Spacing Extraction
|
|
128
|
+
Read auto-layout `itemSpacing` and `paddingTop/Right/Bottom/Left` from frames. Look for patterns:
|
|
129
|
+
- If spacing values are multiples of 4 or 8 → 4px or 8px base unit
|
|
130
|
+
- If spacing values follow a ratio → extract the scale
|
|
131
|
+
|
|
132
|
+
### Color Extraction
|
|
133
|
+
Figma stores colors as RGBA (0-1 float). Convert to OKLCH for Picasso:
|
|
134
|
+
- Extract fills from color styles
|
|
135
|
+
- Group into: primary, secondary, accent, neutral, semantic (success/warning/error)
|
|
136
|
+
- Check that neutrals are tinted (not pure gray) — flag if they aren't
|
|
137
|
+
|
|
138
|
+
### Typography Extraction
|
|
139
|
+
From text styles, extract:
|
|
140
|
+
- Font family (flag if it's Inter/Roboto/system default — suggest alternatives)
|
|
141
|
+
- Size scale (check for consistent modular ratio)
|
|
142
|
+
- Weight usage (should have clear hierarchy: regular body, medium labels, semibold headings)
|
|
143
|
+
- Line-height (check it's proportional, not fixed px for all sizes)
|
|
144
|
+
|
|
145
|
+
## Anti-Patterns to Flag
|
|
146
|
+
|
|
147
|
+
When analyzing Figma files, watch for these common design issues:
|
|
148
|
+
|
|
149
|
+
1. **Detached instances** — Components used but detached from the library. Design debt.
|
|
150
|
+
2. **Inconsistent spacing** — Auto-layout frames with ad-hoc spacing values (17px, 23px, 31px instead of a rhythm).
|
|
151
|
+
3. **Unnamed layers** — "Frame 247", "Group 13". Signals hasty work.
|
|
152
|
+
4. **Color styles not used** — Hardcoded colors instead of style references.
|
|
153
|
+
5. **Text styles not used** — Hardcoded typography instead of style references.
|
|
154
|
+
6. **Missing auto-layout** — Frames positioned absolutely instead of using auto-layout. Breaks responsive behavior.
|
|
155
|
+
7. **Single-variant components** — Components that should have variants but don't (e.g., a button with only one state).
|
|
156
|
+
8. **Enormous frame nesting** — 10+ levels deep. Simplify.
|
|
157
|
+
|
|
158
|
+
## Copy Sync Workflow
|
|
159
|
+
|
|
160
|
+
When working with both Figma designs and code, copy (text content) is a common source of drift. Use Figma MCP to keep them synchronized:
|
|
161
|
+
|
|
162
|
+
1. **Read current copy from Figma** — extract all text layers from target frames
|
|
163
|
+
2. **Compare against code** — diff the Figma text against what's rendered in the implementation
|
|
164
|
+
3. **Determine source of truth** — typically Figma is upstream (design → code), but if copy was updated in code first, flag it
|
|
165
|
+
4. **Sync direction:**
|
|
166
|
+
- Figma newer → update code to match
|
|
167
|
+
- Code newer → flag for designer review (don't auto-write to Figma without confirmation)
|
|
168
|
+
5. **Verify** — after syncing, screenshot the live site and compare against Figma export
|
|
169
|
+
|
|
170
|
+
This is especially useful for:
|
|
171
|
+
- Marketing pages where copy changes frequently
|
|
172
|
+
- Multi-language sites where translations update in Figma
|
|
173
|
+
- Design handoff where developers may use placeholder text
|
|
174
|
+
|
|
175
|
+
## Comparison Workflow: Figma vs Implementation
|
|
176
|
+
|
|
177
|
+
When both a Figma file and live implementation exist:
|
|
178
|
+
|
|
179
|
+
1. Extract tokens from Figma via MCP
|
|
180
|
+
2. Screenshot the live site via Playwright
|
|
181
|
+
3. Compare:
|
|
182
|
+
- Are the Figma fonts actually loaded on the site?
|
|
183
|
+
- Do spacing values match? (Common drift: Figma says 24px, CSS says 1.5rem which computes to 24px — match. Or CSS says `gap-6` which is 24px — match.)
|
|
184
|
+
- Are colors within ΔE < 3 tolerance? (Figma RGBA → site computed OKLCH)
|
|
185
|
+
- Are components structurally similar or did the dev reinterpret the design?
|
|
186
|
+
4. Report discrepancies with severity:
|
|
187
|
+
- **Critical:** Wrong font, wrong primary color, missing sections
|
|
188
|
+
- **High:** Spacing off by >8px, wrong font weights, missing states
|
|
189
|
+
- **Medium:** Minor color drift, slightly different border radius, extra whitespace
|
|
190
|
+
- **Low:** Subpixel differences, minor animation timing differences
|