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 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. Open the index page with Playwright MCP, screenshot at 1440x900, view with Read.
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
- - Open with Playwright MCP, screenshot, view with Read
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
- - Open via Playwright MCP, screenshot at 1440x900, view with Read tool
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 Playwright MCP is unavailable, write the HTML and tell user the path to open manually
52
+ - If npx playwright is unavailable, write the HTML and tell user the path to open manually
@@ -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. Open with Playwright MCP, screenshot at 1440x900, view with Read
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 Playwright MCP is unavailable, write the HTML and give the user the file path
44
+ - If npx playwright is unavailable, write the HTML and give the user the file path
@@ -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. Open via Playwright MCP (`mcp__playwright__browser_navigate` to `file:///tmp/picasso-preview.html`)
28
- 7. Screenshot at 1440x900, view with Read tool
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 Playwright MCP is unavailable, write the file and tell the user the path to open manually
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)
@@ -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
- Run the Picasso /quick-audit command. Check exactly 6 things and report pass/fail for each. Takes 5 minutes, not 30.
6
+ # /quick-audit -- 5-Minute Fast Audit
7
7
 
8
- MANDATORY FIRST STEP: Take a desktop screenshot (`npx playwright screenshot http://localhost:PORT /tmp/picasso-quick-audit.png --viewport-size=1440,900`) and VIEW it with the Read tool before assessing Layout, Spacing, or Anti-Slop visually. Font and Color checks can be done from code. Accessibility can be done from code. But layout/spacing/anti-slop require visual verification.
8
+ Check exactly 6 things and report pass/fail. Takes 5 minutes, not 30.
9
9
 
10
- If screenshots fail, you can still check Font, Color, and Accessibility from code. Mark Layout, Spacing, and Anti-Slop as "SKIPPED (no screenshot available)" instead of guessing.
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 from 🔥 (barely warm) to 🔥🔥🔥🔥🔥 (absolute inferno)
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
- Run the Picasso /score command -- quantified design quality score.
1
+ ---
2
+ name: score
3
+ description: "Quantified 0-100 design quality score with category breakdown."
4
+ ---
2
5
 
3
- Use the Picasso agent to score the current project's frontend design on a 0-100 scale.
6
+ # /score -- Design Quality Score
4
7
 
5
- MANDATORY FIRST STEP -- Gather visual evidence before scoring:
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. Use the Read tool to VIEW the screenshot files before scoring visual categories
9
- 3. If screenshots fail, tell the user and score only code-auditable categories (mark visual categories as "N/A - no screenshot")
10
-
11
- If a Figma URL is provided, run /figma first to extract design tokens, then proceed with those as ground truth.
12
-
13
- ANTI-HALLUCINATION RULES:
14
- - Visual categories (Typography appearance, Color in practice, Spacing rhythm, Anti-Slop visual check) MUST be scored from screenshots, not code alone
15
- - Code-auditable categories (a11y violations via axe, transition:all grep, prefers-reduced-motion grep) can be scored from code
16
- - Never claim "this looks like X" without viewing a screenshot
17
-
18
- Categories:
19
- - Typography (0-15): font choice, type scale, max-width, line-height, letter-spacing
20
- - Color (0-15): no pure black/gray, OKLCH usage, tinted neutrals, 60-30-10, semantics
21
- - Spacing (0-10): consistent 4px scale, Gestalt grouping
22
- - Accessibility (0-20): axe-core violations, focus-visible, semantic HTML, alt text, reduced-motion
23
- - Motion (0-10): no transition:all, stagger pattern, reduced-motion, no bounce
24
- - Responsive (0-10): works at 375px, touch targets, no horizontal scroll
25
- - Performance (0-10): Lighthouse perf score mapped 0-100 -> 0-10
26
- - Anti-Slop (0-10): deductions for each AI-slop fingerprint detected (-2 each)
27
-
28
- Output format with visual bars and top fixes for maximum point improvement.
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
+ ```
@@ -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
- - Open via Playwright MCP: `mcp__playwright__browser_navigate` to `file:///tmp/picasso-variants.html`
25
- - Screenshot at 1440x900 viewport
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 Playwright MCP is unavailable, write the HTML file and tell the user the path to open manually.
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "picasso-skill",
3
- "version": "2.6.0",
3
+ "version": "2.7.0",
4
4
  "description": "The ultimate AI design skill for producing distinctive, production-grade frontend interfaces",
5
5
  "bin": {
6
6
  "picasso-skill": "./bin/install.mjs"
@@ -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 and font imports
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. **Open** via Playwright MCP: `mcp__playwright__browser_navigate` to `file:///tmp/picasso-preview-{name}.html`
16
- 4. **Screenshot** via `mcp__playwright__browser_take_screenshot`
17
- 5. **View** the screenshot with `Read` tool (mandatory -- never skip this)
18
- 6. **Present** to the user with the file path so they can also open it in their browser
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 Playwright MCP Is Unavailable
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
- <link rel="preconnect" href="https://fonts.googleapis.com">
52
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
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 {