picasso-skill 2.6.0 → 2.7.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 +2 -2
- package/commands/mood.md +3 -2
- package/commands/preset.md +2 -2
- package/commands/preview.md +3 -3
- package/commands/quick-audit.md +65 -3
- package/commands/roast.md +6 -1
- package/commands/score.md +90 -24
- package/commands/variants.md +3 -4
- package/package.json +1 -1
- package/references/visual-preview.md +17 -9
package/agents/picasso.md
CHANGED
|
@@ -83,7 +83,7 @@ This is what makes Picasso different from every other design tool. Generate a ga
|
|
|
83
83
|
|
|
84
84
|
5. Also generate a single `/tmp/picasso-gallery/index.html` that shows a thumbnail grid of all samples -- each as a small card (200px wide) with the sample number and the key differentiator (font name + primary color + one-word mood).
|
|
85
85
|
|
|
86
|
-
6.
|
|
86
|
+
6. Screenshot via Bash: `npx playwright screenshot /tmp/picasso-gallery/index.html /tmp/picasso-gallery.png --viewport-size=1200,800`. View: `Read /tmp/picasso-gallery.png`.
|
|
87
87
|
|
|
88
88
|
7. Present: "Here are {N} directions for your app. React to what you see -- which ones do you like? Which do you hate? Anything close but needs tweaking? You can also open `/tmp/picasso-gallery/index.html` in your browser to browse them all."
|
|
89
89
|
|
|
@@ -158,7 +158,7 @@ Do NOT jump to code. Present a **Design Brief** -- a short, opinionated creative
|
|
|
158
158
|
- Generate a self-contained HTML page showing a representative layout in the committed design tokens (nav + hero + card + buttons + input)
|
|
159
159
|
- Use the Full Page Mood Preview structure from `references/visual-preview.md`
|
|
160
160
|
- Write to `/tmp/picasso-brief-preview.html`
|
|
161
|
-
-
|
|
161
|
+
- Screenshot via Bash: `npx playwright screenshot /tmp/picasso-brief-preview.html /tmp/picasso-brief-preview.png --viewport-size=1200,800`. View with `Read`.
|
|
162
162
|
- Present alongside the text brief: "Here's what I'm proposing -- the reasoning and a visual preview."
|
|
163
163
|
|
|
164
164
|
4. **Generate `.picasso.md`** from the answers and save to project root.
|
package/commands/mood.md
CHANGED
|
@@ -35,7 +35,8 @@ If no mood word is provided, ask the user for one.
|
|
|
35
35
|
- Footer with muted text
|
|
36
36
|
- Load fonts using the Font Mapping table from `references/visual-preview.md`
|
|
37
37
|
- Write to `/tmp/picasso-mood-{word}.html`
|
|
38
|
-
-
|
|
38
|
+
- Screenshot via Bash: `npx playwright screenshot /tmp/picasso-mood-{word}.html /tmp/picasso-mood-{word}.png --viewport-size=1200,800`
|
|
39
|
+
- View: `Read /tmp/picasso-mood-{word}.png`
|
|
39
40
|
- Present to user: "This is what '{word}' looks like as a design system. Does this feel right, or should I adjust?"
|
|
40
41
|
|
|
41
42
|
3. **Wait for confirmation.** Do not write `.picasso.md` or `DESIGN.md` until the user approves the visual direction.
|
|
@@ -48,4 +49,4 @@ If no mood word is provided, ask the user for one.
|
|
|
48
49
|
|
|
49
50
|
- Never write config files before showing the visual preview
|
|
50
51
|
- If the user says "adjust" or "not quite", iterate on the tokens and regenerate the preview
|
|
51
|
-
- If
|
|
52
|
+
- If npx playwright is unavailable, write the HTML and tell user the path to open manually
|
package/commands/preset.md
CHANGED
|
@@ -21,7 +21,7 @@ The preset name: `$ARGUMENTS`
|
|
|
21
21
|
- Each card: preset name (in its heading font), 5-swatch color palette strip, one-line mood description, a sample button in the preset's primary color and radius
|
|
22
22
|
- Card backgrounds use the preset's surface color, text uses its text color
|
|
23
23
|
3. Write to `/tmp/picasso-preset-browser.html`
|
|
24
|
-
4.
|
|
24
|
+
4. Screenshot via Bash: `npx playwright screenshot /tmp/picasso-preset-browser.html /tmp/picasso-preset-browser.png --viewport-size=1200,1600 --full-page`, then view with `Read`
|
|
25
25
|
5. Present: "Here are all 22 presets. Which one catches your eye?"
|
|
26
26
|
6. Wait for the user to pick
|
|
27
27
|
|
|
@@ -41,4 +41,4 @@ The preset name: `$ARGUMENTS`
|
|
|
41
41
|
## Rules
|
|
42
42
|
|
|
43
43
|
- Never apply a preset without showing a visual preview first
|
|
44
|
-
- If
|
|
44
|
+
- If npx playwright is unavailable, write the HTML and give the user the file path
|
package/commands/preview.md
CHANGED
|
@@ -24,8 +24,8 @@ Generate and display visual previews of design options.
|
|
|
24
24
|
- Nav bar, hero section, card grid, form, footer
|
|
25
25
|
- All styled with the project's committed tokens
|
|
26
26
|
5. Write to `/tmp/picasso-preview.html`
|
|
27
|
-
6.
|
|
28
|
-
7.
|
|
27
|
+
6. Screenshot via Bash: `npx playwright screenshot /tmp/picasso-preview.html /tmp/picasso-preview.png --viewport-size=1200,800`
|
|
28
|
+
7. View: `Read /tmp/picasso-preview.png`
|
|
29
29
|
8. Present to user: "Here's what your current design tokens look like rendered. Open `/tmp/picasso-preview.html` in your browser for full resolution."
|
|
30
30
|
|
|
31
31
|
### `/preview <preset-name>`
|
|
@@ -47,6 +47,6 @@ Generate and display visual previews of design options.
|
|
|
47
47
|
## Rules
|
|
48
48
|
|
|
49
49
|
- Always load font URLs from the Font Mapping table in `references/visual-preview.md`
|
|
50
|
-
- If
|
|
50
|
+
- If npx playwright is unavailable, write the file and tell the user the path to open manually
|
|
51
51
|
- Never describe what the preview looks like without viewing the screenshot first
|
|
52
52
|
- The HTML must be fully self-contained (inline styles, external font imports only)
|
package/commands/quick-audit.md
CHANGED
|
@@ -3,8 +3,70 @@ name: quick-audit
|
|
|
3
3
|
description: "5-minute fast design audit: 6 binary checks (font, color, layout, spacing, a11y, anti-slop)"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
# /quick-audit -- 5-Minute Fast Audit
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Check exactly 6 things and report pass/fail. Takes 5 minutes, not 30.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
## First Step
|
|
11
|
+
|
|
12
|
+
Take a desktop screenshot: `npx playwright screenshot http://localhost:PORT /tmp/picasso-quick-audit.png --viewport-size=1440,900`
|
|
13
|
+
View it with `Read` before assessing Layout, Spacing, or Anti-Slop.
|
|
14
|
+
|
|
15
|
+
If screenshots fail, check Font/Color/Accessibility from code. Mark Layout/Spacing/Anti-Slop as "SKIPPED (no screenshot)."
|
|
16
|
+
|
|
17
|
+
## The 6 Checks
|
|
18
|
+
|
|
19
|
+
### 1. Font
|
|
20
|
+
FAIL if primary font is any of: Inter, Roboto, Arial, Open Sans, system-ui, Helvetica.
|
|
21
|
+
FAIL if primary font is the framework default (Geist for Next.js, Noto Sans for Material).
|
|
22
|
+
PASS if a deliberately chosen, non-default font is used.
|
|
23
|
+
|
|
24
|
+
### 2. Color
|
|
25
|
+
FAIL if neutrals are pure gray (#808080, #ccc, #666, #333 without hue tint).
|
|
26
|
+
FAIL if primary color is Tailwind's default indigo/violet/purple family.
|
|
27
|
+
PASS if neutrals are tinted and primary is a deliberate brand choice.
|
|
28
|
+
|
|
29
|
+
### 3. Layout
|
|
30
|
+
FAIL if everything is centered on one vertical axis with no spatial variation.
|
|
31
|
+
PASS if layout has asymmetry, varied section widths, or intentional spatial hierarchy.
|
|
32
|
+
(Requires screenshot to verify.)
|
|
33
|
+
|
|
34
|
+
### 4. Spacing
|
|
35
|
+
FAIL if spacing is uniform everywhere with no gestalt grouping.
|
|
36
|
+
PASS if spacing follows a consistent scale AND varies between groups vs. within groups.
|
|
37
|
+
(Requires screenshot to verify.)
|
|
38
|
+
|
|
39
|
+
### 5. Accessibility
|
|
40
|
+
FAIL if `outline: none` exists without `:focus-visible` replacement.
|
|
41
|
+
FAIL if `prefers-reduced-motion` is not handled.
|
|
42
|
+
PASS if focus indicators and motion preferences are both addressed.
|
|
43
|
+
|
|
44
|
+
### 6. Anti-Slop
|
|
45
|
+
FAIL if 3+ of these appear simultaneously:
|
|
46
|
+
- Indigo/violet/purple as primary color
|
|
47
|
+
- Per-card staggered entrance animations (animation-delay per stat card)
|
|
48
|
+
- Rainbow-coded elements (different color per icon/badge/card)
|
|
49
|
+
- Gradient blobs on body background
|
|
50
|
+
- Uniform identical card grid (all same size/radius/style)
|
|
51
|
+
- Icons inside colored circle/rounded-square containers
|
|
52
|
+
- hover:-translate-y + shadow-lg on cards
|
|
53
|
+
- Colored left-border or top-border per card
|
|
54
|
+
- Everything centered on one axis
|
|
55
|
+
- Same spacing between every section
|
|
56
|
+
|
|
57
|
+
PASS if fewer than 3 are present.
|
|
58
|
+
|
|
59
|
+
## Output
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
## Quick Audit: [project name]
|
|
63
|
+
|
|
64
|
+
Font: PASS/FAIL (details)
|
|
65
|
+
Color: PASS/FAIL (details)
|
|
66
|
+
Layout: PASS/FAIL (details)
|
|
67
|
+
Spacing: PASS/FAIL (details)
|
|
68
|
+
Accessibility: PASS/FAIL (details)
|
|
69
|
+
Anti-Slop: PASS/FAIL (X fingerprints: list them)
|
|
70
|
+
|
|
71
|
+
Result: X/6 -- [one-line recommendation]
|
|
72
|
+
```
|
package/commands/roast.md
CHANGED
|
@@ -23,7 +23,12 @@ Rules:
|
|
|
23
23
|
- Be funny and cutting, but never mean about the developer -- only the design
|
|
24
24
|
- Every roast point MUST include the fix
|
|
25
25
|
- End with a genuine compliment about what IS working
|
|
26
|
-
- Output a Roast Score
|
|
26
|
+
- Output a Roast Score calibrated to severity:
|
|
27
|
+
- 🔥 (1/5): Minor polish. Good design with a few rough edges.
|
|
28
|
+
- 🔥🔥 (2/5): Noticeable issues. Looks decent but has clear amateur tells.
|
|
29
|
+
- 🔥🔥🔥 (3/5): Significant problems. AI-generated fingerprints visible. Needs real design work.
|
|
30
|
+
- 🔥🔥🔥🔥 (4/5): Major overhaul needed. Multiple anti-patterns, no cohesive design language.
|
|
31
|
+
- 🔥🔥🔥🔥🔥 (5/5): Start over. Every design decision is a default or anti-pattern.
|
|
27
32
|
- Load anti-patterns.md first to check against the AI slop fingerprint
|
|
28
33
|
|
|
29
34
|
Format:
|
package/commands/score.md
CHANGED
|
@@ -1,28 +1,94 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: score
|
|
3
|
+
description: "Quantified 0-100 design quality score with category breakdown."
|
|
4
|
+
---
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
# /score -- Design Quality Score
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
Score the current project's frontend design on a 0-100 scale.
|
|
9
|
+
|
|
10
|
+
## First Steps (Mandatory)
|
|
6
11
|
|
|
7
12
|
1. Take screenshots: `npx playwright screenshot http://localhost:PORT /tmp/picasso-score-desktop.png --viewport-size=1440,900` (and mobile at 375,812)
|
|
8
|
-
2.
|
|
9
|
-
3. If screenshots fail, tell the user and score only code-auditable categories
|
|
10
|
-
|
|
11
|
-
If a Figma URL is provided, run /figma first
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
13
|
+
2. View the screenshots with `Read` before scoring visual categories
|
|
14
|
+
3. If screenshots fail, tell the user and score only code-auditable categories
|
|
15
|
+
|
|
16
|
+
If a Figma URL is provided, run /figma first for ground truth.
|
|
17
|
+
|
|
18
|
+
## Scoring Categories
|
|
19
|
+
|
|
20
|
+
### Typography (0-15)
|
|
21
|
+
- Font choice: not a banned default AND not a framework default (Geist for Next.js, Roboto for Material). +3
|
|
22
|
+
- Type scale: follows a modular ratio, not ad-hoc sizes. +3
|
|
23
|
+
- Body text max-width set (65ch or equivalent). +3
|
|
24
|
+
- Line-height: 1.5-1.6 body, 1.1-1.2 headings. +3
|
|
25
|
+
- Letter-spacing on uppercase text (0.05em+). +3
|
|
26
|
+
|
|
27
|
+
### Color (0-15)
|
|
28
|
+
- No pure black (#000) or pure gray. +3
|
|
29
|
+
- OKLCH or HSL usage (not all raw hex). +3
|
|
30
|
+
- Neutrals tinted toward palette hue. +3
|
|
31
|
+
- 60-30-10 ratio (dominant surface, secondary, accent). +3
|
|
32
|
+
- Semantic colors defined (success, warning, error). +3
|
|
33
|
+
|
|
34
|
+
### Spacing (0-10)
|
|
35
|
+
- Consistent scale (4px multiples). +5
|
|
36
|
+
- Gestalt grouping: tighter within groups, wider between. +5
|
|
37
|
+
|
|
38
|
+
### UX Heuristics (0-20)
|
|
39
|
+
Score against Nielsen's 10 heuristics (see `references/ux-evaluation.md`), 2 pts each:
|
|
40
|
+
- H1: System status (loading states, feedback). +2
|
|
41
|
+
- H2: Real world match (clear labels, familiar icons). +2
|
|
42
|
+
- H3: User control (undo, escape, back). +2
|
|
43
|
+
- H4: Consistency (same styles everywhere). +2
|
|
44
|
+
- H5: Error prevention (validation, confirmation). +2
|
|
45
|
+
- H6: Recognition (visible labels, persistent nav). +2
|
|
46
|
+
- H7: Efficiency (keyboard shortcuts, bulk ops). +2
|
|
47
|
+
- H8: Minimal design (clear hierarchy, no clutter). +2
|
|
48
|
+
- H9: Error recovery (helpful error messages). +2
|
|
49
|
+
- H10: Help (tooltips, onboarding). +2
|
|
50
|
+
|
|
51
|
+
### Motion (0-10)
|
|
52
|
+
- No `transition: all` (grep for it). +3
|
|
53
|
+
- Page has choreographed entrance (page-level, NOT per-card stagger). +3
|
|
54
|
+
- `prefers-reduced-motion` support exists. +2
|
|
55
|
+
- No bounce/elastic easing. +2
|
|
56
|
+
|
|
57
|
+
### Responsive (0-10)
|
|
58
|
+
- Content readable at 375px. +5
|
|
59
|
+
- Touch targets >= 44px. +3
|
|
60
|
+
- No horizontal scroll on mobile. +2
|
|
61
|
+
|
|
62
|
+
### Performance (0-10)
|
|
63
|
+
- If Lighthouse available: map score 0-100 to 0-10
|
|
64
|
+
- If Lighthouse unavailable: check for lazy loading (+3), image dimensions set (+3), font-display: swap (+2), no layout-shifting elements (+2)
|
|
65
|
+
|
|
66
|
+
### Anti-Slop (0-10)
|
|
67
|
+
Start at 10, deduct -2 for each fingerprint found (minimum 0):
|
|
68
|
+
- Indigo/violet/purple as primary (unless user's declared brand color)
|
|
69
|
+
- Per-card/per-row staggered entrance animations
|
|
70
|
+
- Rainbow-coded elements (different color per card/badge/icon)
|
|
71
|
+
- Gradient blobs on body background
|
|
72
|
+
- Uniform identical card grid (all same size/style)
|
|
73
|
+
- Icons inside colored circle containers
|
|
74
|
+
- hover:-translate-y + shadow-lg on cards
|
|
75
|
+
- Colored left-border or top-border accents on cards
|
|
76
|
+
|
|
77
|
+
## Output
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
## Picasso Design Score: XX/100
|
|
81
|
+
|
|
82
|
+
Typography: [bars] XX/15
|
|
83
|
+
Color: [bars] XX/15
|
|
84
|
+
Spacing: [bars] XX/10
|
|
85
|
+
UX Heuristics: [bars] XX/20
|
|
86
|
+
Motion: [bars] XX/10
|
|
87
|
+
Responsive: [bars] XX/10
|
|
88
|
+
Performance: [bars] XX/10
|
|
89
|
+
Anti-Slop: [bars] XX/10
|
|
90
|
+
|
|
91
|
+
Top fixes for +XX points:
|
|
92
|
+
1. [specific fix] (+X)
|
|
93
|
+
2. [specific fix] (+X)
|
|
94
|
+
```
|
package/commands/variants.md
CHANGED
|
@@ -21,9 +21,8 @@ Generate 2-3 genuinely different aesthetic directions and show them as a side-by
|
|
|
21
21
|
- For each direction, render a preview card showing: color palette strip, nav bar, heading, body text, sample card, primary/secondary buttons, input field -- all in that direction's tokens
|
|
22
22
|
- Load fonts using the Font Mapping table from `references/visual-preview.md`
|
|
23
23
|
- Write the comparison HTML to `/tmp/picasso-variants.html`
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
- View the screenshot with the Read tool
|
|
24
|
+
- Screenshot via Bash: `npx playwright screenshot /tmp/picasso-variants.html /tmp/picasso-variants.png --viewport-size=1200,800`
|
|
25
|
+
- View the screenshot: `Read /tmp/picasso-variants.png`
|
|
27
26
|
6. Present the visual comparison to the user: "Here are the directions. Which speaks to you? Pick one, combine elements, or reject all."
|
|
28
27
|
7. Also tell the user: "Open `/tmp/picasso-variants.html` in your browser for full resolution."
|
|
29
28
|
|
|
@@ -33,5 +32,5 @@ Generate 2-3 genuinely different aesthetic directions and show them as a side-by
|
|
|
33
32
|
- No two directions can share the same heading font
|
|
34
33
|
- At least one direction must be surprising or unconventional
|
|
35
34
|
- Always include one "safe" option and one "bold" option
|
|
36
|
-
- Visual preview is MANDATORY, not optional. If
|
|
35
|
+
- Visual preview is MANDATORY, not optional. If npx playwright is unavailable, write the HTML file and tell the user the path to open manually.
|
|
37
36
|
- Never describe what the directions look like without viewing the screenshot first
|
package/package.json
CHANGED
|
@@ -10,19 +10,28 @@ Every time Picasso presents 2+ aesthetic options for the user to choose from, ge
|
|
|
10
10
|
|
|
11
11
|
### Standard Flow
|
|
12
12
|
|
|
13
|
-
1. **Generate** a self-contained HTML file with inline styles
|
|
13
|
+
1. **Generate** a self-contained HTML file with inline styles (NO external font imports -- use `system-ui` with font name labels)
|
|
14
14
|
2. **Write** to `/tmp/picasso-preview-{name}.html`
|
|
15
|
-
3. **
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
3. **Screenshot** via Bash: `npx playwright screenshot /tmp/picasso-preview-{name}.html /tmp/picasso-preview-{name}.png --viewport-size=1200,800`
|
|
16
|
+
- `npx playwright screenshot` accepts file paths directly (no `file://` prefix needed)
|
|
17
|
+
- Do NOT use `mcp__playwright__browser_navigate` + `mcp__playwright__browser_take_screenshot` -- these timeout on external font loading and block `file://` protocol
|
|
18
|
+
4. **View** the screenshot with `Read /tmp/picasso-preview-{name}.png` (mandatory -- never skip this)
|
|
19
|
+
5. **Present** to the user with both paths (HTML for full-res browser viewing, PNG for quick preview)
|
|
19
20
|
|
|
20
|
-
### If
|
|
21
|
+
### If npx playwright Is Unavailable
|
|
21
22
|
|
|
22
23
|
1. Write the HTML file to `/tmp/`
|
|
23
24
|
2. Tell the user: "I've generated a visual preview at `/tmp/picasso-preview-{name}.html` -- open it in your browser to see the options."
|
|
24
25
|
3. Do NOT make visual claims about what the preview looks like without viewing it
|
|
25
26
|
|
|
27
|
+
### Font Rule for Previews
|
|
28
|
+
|
|
29
|
+
Do NOT import Google Fonts or Fontshare fonts via `<link>` or `@import` in preview HTML. External font loading causes screenshot timeouts. Instead:
|
|
30
|
+
- Use `system-ui, -apple-system, sans-serif` for body text
|
|
31
|
+
- Use `Georgia, serif` for serif directions
|
|
32
|
+
- Use `ui-monospace, monospace` for mono directions
|
|
33
|
+
- **Label the intended font** in each preview card: "Font: Satoshi + DM Sans" so the user knows what will be used in the real implementation
|
|
34
|
+
|
|
26
35
|
### File Naming
|
|
27
36
|
|
|
28
37
|
- Interview aesthetics: `/tmp/picasso-interview-vibes.html`
|
|
@@ -48,9 +57,8 @@ Generate the full HTML dynamically. For each direction, substitute the actual fo
|
|
|
48
57
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
49
58
|
<title>Picasso: Choose a Direction</title>
|
|
50
59
|
<!-- Import fonts for all directions shown -->
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
<link href="https://fonts.googleapis.com/css2?family={FONT_1}&family={FONT_2}&family={FONT_3}&display=swap" rel="stylesheet">
|
|
60
|
+
<!-- No external font imports -- use system fonts to avoid screenshot timeouts -->
|
|
61
|
+
<!-- Label intended fonts in the .font-info footer of each card -->
|
|
54
62
|
<style>
|
|
55
63
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
56
64
|
body {
|