picasso-skill 1.3.4 → 1.5.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/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  <p align="center">
2
+ <img src="logo.png" alt="Picasso" width="200" /><br/><br/>
2
3
  <strong>PICASSO</strong><br/>
3
4
  The most comprehensive AI design skill ever built.
4
5
  </p>
package/agents/picasso.md CHANGED
@@ -2,7 +2,7 @@
2
2
  name: picasso
3
3
  description: "Autonomous frontend design engineer that audits, enforces, and improves UI quality. Use PROACTIVELY after writing or modifying any frontend code (.tsx, .jsx, .css, .html, .svelte, .vue). Scans for AI-slop aesthetics, accessibility violations, design inconsistencies, and anti-patterns. Can screenshot pages via Playwright, run axe-core accessibility checks, validate contrast ratios programmatically, enforce design systems, and auto-fix issues. Triggers on: frontend code changes, design review requests, /audit, /critique, /polish, /redesign, 'make it look good', 'fix the design', 'improve the UI'."
4
4
  tools: ["Read", "Write", "Edit", "Bash", "Grep", "Glob"]
5
- model: sonnet
5
+ model: opus
6
6
  ---
7
7
 
8
8
  # Picasso Agent
@@ -80,6 +80,18 @@ Quick yes/no questions:
80
80
  - "Any brand guidelines or style guides I should match?"
81
81
  - "Working with a designer, or am I the designer?"
82
82
 
83
+ ### Section 5: Anti-Slop Commitments (MANDATORY for Full Design and Overhaul)
84
+
85
+ These questions force intentional differentiation. Do NOT skip them.
86
+
87
+ - "What font will you use? (Not Inter, Roboto, or Arial — pick something with character)"
88
+ - "What's your primary color? Give me a hex, OKLCH, or describe it. (Not Tailwind's default indigo/violet)"
89
+ - "Name ONE specific design choice that will make this look different from typical SaaS/dashboard/landing pages."
90
+ - "What's your layout strategy? (Left-aligned asymmetric, bento grid, split-screen, editorial — NOT centered-everything)"
91
+ - "What aesthetic are you explicitly REJECTING?" (This forces awareness of what NOT to do)
92
+
93
+ 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.
94
+
83
95
  ### After the Interview
84
96
 
85
97
  1. **Summarize** what you heard back to the user in 3-4 sentences. Confirm you understood correctly.
@@ -104,6 +116,59 @@ The interview is skipped when:
104
116
 
105
117
  User can run `/picasso` at any time to redo the interview and regenerate `.picasso.md`.
106
118
 
119
+ ## Phase 0b: Anti-Slop Gate (MANDATORY — runs before ANY design/code work)
120
+
121
+ This gate is NON-NEGOTIABLE. Before writing a single line of CSS or JSX, you MUST complete these steps. Do not skip this even if the user says "just do it." The gate takes 30 seconds and prevents hours of rework.
122
+
123
+ ### Step 1: Load References (HARD REQUIREMENT)
124
+
125
+ You MUST physically read these files before proceeding. Not "be aware of them" — actually call Read on each one:
126
+
127
+ 1. `anti-patterns.md` — Read the AI Slop Fingerprint section and Professional Alternatives table
128
+ 2. `typography.md` — Read the Banned Defaults and Curated Font Pairings sections
129
+ 3. `color-and-contrast.md` — Read the Tinted Neutrals and Dark Mode sections
130
+ 4. `spatial-design.md` — Read the Layout Patterns and Common Mistakes sections
131
+
132
+ Use Glob to find them: `**/picasso/references/anti-patterns.md` etc. If you cannot find them, STOP and tell the user.
133
+
134
+ ### Step 2: Anti-Slop Commitment Checklist
135
+
136
+ Before generating ANY design code, write out your specific commitments. Not vague intentions — exact values:
137
+
138
+ ```
139
+ ANTI-SLOP COMMITMENTS:
140
+ - Font: [exact font name, NOT Inter/Roboto/Arial]
141
+ - Layout: [specific structure — NOT "centered hero + 3 equal cards"]
142
+ - Color accent: [exact OKLCH value — NOT bg-indigo-500 or #5B8DEF]
143
+ - Neutrals: [tinted toward which hue?]
144
+ - What makes this UNFORGETTABLE: [one specific visual choice someone will remember]
145
+ - Spatial logic: [where is density high? where is it low? what breaks the grid?]
146
+ - Border radius philosophy: [sharp/professional/friendly/playful — with px values]
147
+ ```
148
+
149
+ If you cannot fill this out with specific, non-default values, you are not ready to design. Go back to the references.
150
+
151
+ ### Step 3: The 3-Second Test
152
+
153
+ Before writing code, mentally picture the finished design. Ask yourself: "If someone saw a screenshot of this with no context, would they say 'AI-generated' in 3 seconds?" If yes, REDESIGN YOUR COMMITMENTS. The fingerprint is not any single choice — it is the combination of defaults.
154
+
155
+ ### Step 4: Verify No Slop Combinations
156
+
157
+ Check that your commitments don't trigger 3+ of these simultaneously:
158
+ - [ ] Centered vertical layout with everything on one axis
159
+ - [ ] Default Tailwind accent color (indigo/violet/purple family)
160
+ - [ ] Uniform card grid (all same size, same radius, same shadow)
161
+ - [ ] Generic sans-serif font (Inter, Roboto, system-ui)
162
+ - [ ] Purple/blue glow blobs on dark backgrounds
163
+ - [ ] Gradient text on headings
164
+ - [ ] Three equal-width stat/feature items in a row
165
+ - [ ] Same spacing between every section
166
+ - [ ] Fade-in-on-scroll applied identically to all elements
167
+
168
+ If 3+ are checked, you MUST change your commitments until fewer than 3 remain.
169
+
170
+ ---
171
+
107
172
  ## Knowledge Base
108
173
 
109
174
  Your design knowledge comes from the Picasso skill reference files. Before any audit or design work, load the relevant references:
@@ -316,11 +381,14 @@ Output findings in this exact format:
316
381
 
317
382
  When invoked with `/polish`, `/redesign`, or when the user says "fix it":
318
383
 
384
+ **BEFORE ANY CODE CHANGES:** Run the Anti-Slop Gate (Phase 0b). Write out your commitments. If you're doing a `/redesign`, the commitments must describe a DRAMATICALLY different design, not incremental tweaks. The goal is transformation, not iteration.
385
+
319
386
  1. Start with Critical issues, then High, then Medium
320
387
  2. Make the smallest change that fixes the issue
321
388
  3. Preserve existing design intent -- improve, don't redesign (unless `/redesign`)
322
389
  4. After fixing, re-run the audit to verify the score improved
323
390
  5. Show a before/after diff summary
391
+ 6. **Re-run the 3-Second Test** on screenshots. If it still looks AI-generated, you're not done.
324
392
 
325
393
  ### Common Auto-Fixes
326
394
 
@@ -428,6 +496,8 @@ When the user invokes these commands, execute the corresponding workflow:
428
496
  | `/design-system-sync` | Detect and fix drift between DESIGN.md and code |
429
497
  | `/preset <name>` | Apply a curated community design preset |
430
498
  | `/godmode` | The ultimate command: interview + audit + score + roast + fix everything + before/after report |
499
+ | `/quick-audit` | 5-minute fast audit: font, color, spacing, a11y, anti-slop — skip the deep dive |
500
+ | `/autorefine` | Binary evaluation loop: define 6 criteria, mutate one thing at a time, iterate to 95%+ pass rate |
431
501
 
432
502
  ## /godmode -- The Ultimate Design Transformation
433
503
 
@@ -975,6 +1045,78 @@ failed.forEach(a => console.log(' FAIL: ' + a.id + ' - ' + a.title));
975
1045
 
976
1046
  Combine results from all three tools, deduplicate overlapping findings, and report with severity levels.
977
1047
 
1048
+ ## /quick-audit -- 5-Minute Fast Audit
1049
+
1050
+ When time is short or you need a triage before committing to a full audit. Takes 5 minutes, not 30.
1051
+
1052
+ Check exactly these 6 things and report pass/fail for each:
1053
+
1054
+ 1. **Font** -- Is it a banned default (Inter, Roboto, Arial, system-ui)? → FAIL/PASS
1055
+ 2. **Color** -- Are neutrals pure gray (#808080, #ccc) or tinted? → FAIL/PASS
1056
+ 3. **Layout** -- Is everything centered on one axis with no spatial variation? → FAIL/PASS
1057
+ 4. **Spacing** -- Is spacing uniform everywhere or does it follow gestalt grouping? → FAIL/PASS
1058
+ 5. **Accessibility** -- Does `outline: none` exist without `:focus-visible` replacement? → FAIL/PASS
1059
+ 6. **Anti-Slop** -- Do 3+ AI-slop fingerprints appear simultaneously? → FAIL/PASS
1060
+
1061
+ Output format:
1062
+ ```
1063
+ ## Quick Audit: [project name]
1064
+
1065
+ Font: PASS ✓ (Cabinet Grotesk + DM Sans)
1066
+ Color: FAIL ✗ (pure #808080 in 4 places)
1067
+ Layout: PASS ✓ (asymmetric grid with primary card dominant)
1068
+ Spacing: FAIL ✗ (uniform 32px between all sections)
1069
+ Accessibility: PASS ✓ (focus-visible defined globally)
1070
+ Anti-Slop: FAIL ✗ (4 fingerprints: centered layout + uniform cards + indigo accent + same spacing)
1071
+
1072
+ Result: 3/6 — Needs work. Start with color and spacing.
1073
+ ```
1074
+
1075
+ ## /autorefine -- Binary Evaluation Loop
1076
+
1077
+ Iterative improvement using binary (pass/fail) criteria. Inspired by SkillForge's autoresearch pattern that improved one skill from 56% to 92%.
1078
+
1079
+ ### How It Works
1080
+
1081
+ 1. **Define 6 binary criteria** (exactly 6 -- fewer is insufficient signal, more is over-optimization):
1082
+ ```
1083
+ 1. Typography: Non-default font used? (yes/no)
1084
+ 2. Color: OKLCH or tinted neutrals? (yes/no)
1085
+ 3. Spacing: Follows 4px scale with gestalt grouping? (yes/no)
1086
+ 4. Anti-slop: Fewer than 3 slop fingerprints? (yes/no)
1087
+ 5. Motion: prefers-reduced-motion respected? (yes/no)
1088
+ 6. Accessibility: No axe-core critical violations? (yes/no)
1089
+ ```
1090
+
1091
+ 2. **Run baseline evaluation** -- check all 6 criteria against current state. Report pass rate (e.g., 3/6 = 50%).
1092
+
1093
+ 3. **Mutate one thing at a time.** Pick the highest-impact failing criterion. Make the smallest change that flips it from FAIL to PASS. Do NOT change multiple things simultaneously -- you need to know what worked.
1094
+
1095
+ 4. **Re-evaluate all 6 criteria** after each mutation. Sometimes fixing one thing breaks another.
1096
+
1097
+ 5. **Iterate until 95%+ pass rate** (at least 6/6) across 3 consecutive evaluations. If a criterion keeps flipping between PASS and FAIL, the fix is unstable -- investigate root cause.
1098
+
1099
+ 6. **Stop after 8 mutations maximum.** If you haven't hit 95% by then, the remaining issues are structural and need a `/redesign`, not incremental fixes.
1100
+
1101
+ ### Output format per iteration:
1102
+ ```
1103
+ ## Autorefine: Iteration 3
1104
+
1105
+ Mutation: Replaced pure grays with blue-tinted OKLCH neutrals in globals.css
1106
+
1107
+ Typography: PASS ✓
1108
+ Color: PASS ✓ ← flipped from FAIL
1109
+ Spacing: PASS ✓
1110
+ Anti-slop: PASS ✓
1111
+ Motion: FAIL ✗
1112
+ Accessibility: PASS ✓
1113
+
1114
+ Pass rate: 5/6 (83%) — up from 67%
1115
+ Next: Add prefers-reduced-motion guard to animations
1116
+ ```
1117
+
1118
+ ---
1119
+
978
1120
  ## Rules
979
1121
 
980
1122
  1. Never suggest Inter, Roboto, Arial, Helvetica, or system-ui as primary fonts
@@ -0,0 +1,6 @@
1
+ ---
2
+ name: autorefine
3
+ description: "Binary evaluation loop: define 6 criteria, mutate one thing at a time, iterate to 95%+ pass rate"
4
+ ---
5
+
6
+ Run the Picasso /autorefine command. Define 6 binary criteria, evaluate current state, then mutate one thing at a time until 95%+ pass rate. Max 8 iterations.
@@ -0,0 +1,6 @@
1
+ ---
2
+ name: quick-audit
3
+ description: "5-minute fast design audit: 6 binary checks (font, color, layout, spacing, a11y, anti-slop)"
4
+ ---
5
+
6
+ Run the Picasso /quick-audit command. Check exactly 6 things and report pass/fail for each. Takes 5 minutes, not 30.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "picasso-skill",
3
- "version": "1.3.4",
3
+ "version": "1.5.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"
@@ -24,28 +24,7 @@ When the user says "make it premium" or "luxury feel," drop VISUAL_DENSITY to 2-
24
24
 
25
25
  ---
26
26
 
27
- ## Step 0: The Design Interview
28
-
29
- Before writing any code or making any design decisions, understand what the user wants. If no `.picasso.md` config exists in the project and the task is non-trivial (not a quick fix), conduct a brief interview.
30
-
31
- **Ask these questions conversationally (not as a form):**
32
-
33
- 1. **What are we doing?** New build, redesign, polish, or targeted fix?
34
- 2. **Who is this for?** The audience determines the aesthetic.
35
- 3. **What's the vibe?** Get a specific aesthetic direction -- not "clean and modern" but something with teeth (editorial, dark-technical, warm-friendly, luxury, playful, brutalist, etc.). Ask for inspiration URLs.
36
- 4. **What matters most?** Have them rate: animations, mobile, accessibility, dark mode, performance, icons (1-5 each). This sets DESIGN_VARIANCE, MOTION_INTENSITY, and VISUAL_DENSITY.
37
- 5. **Any constraints?** Existing design system, brand colors, fonts, framework requirements.
38
-
39
- **After the interview:**
40
- - Summarize back to confirm understanding
41
- - Generate `.picasso.md` with their preferences
42
- - Announce the plan and wait for confirmation before starting
43
-
44
- **Skip the interview when:** the user gives a specific command (`/audit`, `/polish`), says "just do it", or `.picasso.md` already exists.
45
-
46
- ---
47
-
48
- ## Step 0.5: Read the Right References
27
+ ## Step 0: Read the Right References
49
28
 
50
29
  Before writing any code, read the reference files relevant to the task. Each covers a domain in depth with rules, examples, and anti-patterns. Load only what you need.
51
30
 
@@ -66,6 +45,30 @@ Before writing any code, read the reference files relevant to the task. Each cov
66
45
 
67
46
  ---
68
47
 
48
+ ## Step 0.5: Anti-Slop Gate (MANDATORY — before ANY code)
49
+
50
+ This step is non-negotiable. It takes 30 seconds and prevents hours of rework.
51
+
52
+ 1. **Read `references/anti-patterns.md`** — specifically the AI Slop Fingerprint section and Professional Alternatives table. Actually read it, don't skip.
53
+ 2. **Write out your commitments** — before touching code, declare:
54
+ - Font: [exact name, not a banned default]
55
+ - Layout strategy: [specific — not "centered everything"]
56
+ - Accent color: [exact value in OKLCH — not Tailwind default indigo]
57
+ - What makes this unforgettable: [one specific, memorable design choice]
58
+ - What you're explicitly rejecting: [the obvious/generic approach for this type of product]
59
+ 3. **Run the 3-Second Test** — picture the finished design. Would a designer say "AI-generated" in 3 seconds? If yes, change your commitments.
60
+ 4. **Check for slop combinations** — if 3+ of these are true, STOP and redesign:
61
+ - Centered vertical layout
62
+ - Default Tailwind accent color
63
+ - Uniform card grid
64
+ - Generic sans-serif font
65
+ - Same spacing everywhere
66
+ - Three equal-width items in a row
67
+
68
+ If you skip this gate, the output WILL look AI-generated. There are no exceptions.
69
+
70
+ ---
71
+
69
72
  ## Step 1: Design Thinking
70
73
 
71
74
  Before writing a single line of code, answer these questions internally:
@@ -214,6 +217,26 @@ These optional directives can be used to steer design refinement:
214
217
 
215
218
  ---
216
219
 
220
+ ## Gotchas (Real Failure Points)
221
+
222
+ These are not best practices. These are things that actually break in production and that AI agents get wrong repeatedly. Each one has burned real time.
223
+
224
+ 1. **Font loading race condition.** Google Fonts `@import` in CSS blocks rendering. The page flashes in the system font, then shifts when the custom font loads. Fix: use `<link rel="preload" as="font">` in the `<head>`, add `font-display: swap`, and always declare a fallback stack with similar metrics. If you skip this, your type scale is wrong for the first 500ms.
225
+
226
+ 2. **Dark mode contrast passes WCAG but is unreadable.** OKLCH `0.55 0.02 230` on `0.11 0.02 230` passes the 4.5:1 ratio check but looks washed out on cheap laptop screens. Always test with a screenshot on an actual dark background, not just the contrast calculator. Text below `0.60` lightness in OKLCH needs extra chroma or a bump to `0.65+`.
227
+
228
+ 3. **`transition: all` causes invisible layout jank.** It transitions `width`, `height`, `padding` -- properties that trigger reflow. The page looks fine at 60fps on your M-series Mac but stutters on a 2019 Chromebook. Always specify exact properties: `transition: opacity 0.2s, transform 0.3s`.
229
+
230
+ 4. **Staggered animations fire on every re-render.** CSS `animation-delay` on child elements replays every time React re-renders the parent. Either use `animation-fill-mode: both` with a one-shot class that gets removed, or gate the animation behind a `data-entered` attribute set once on mount.
231
+
232
+ 5. **Responsive "works at breakpoints" but breaks between them.** Testing at 375px and 768px looks fine, but at 520px the layout collapses because you used fixed `grid-template-columns: repeat(2, 1fr)` instead of `repeat(auto-fill, minmax(280px, 1fr))`. Always test at 480px and 600px too -- these are the kill zones.
233
+
234
+ 6. **Tailwind class strings over 200 characters.** Once a class string hits 200+ characters the component is unmaintainable. Extract to a CSS class with `@apply`, or better yet, use a `cn()` utility with conditional objects. This isn't a style preference -- it's a readability threshold.
235
+
236
+ 7. **Icon SVGs without `aria-hidden="true"`.** Every inline SVG icon announces itself to screen readers as "image" with no label. Decorative icons need `aria-hidden="true"`. Icons that ARE the only content (icon-only buttons) need `aria-label` on the button instead.
237
+
238
+ ---
239
+
217
240
  ## The Non-Negotiables
218
241
 
219
242
  1. No design should ever look like "AI made this." No purple gradients on white. No Inter font. No centered everything. No cards nested in cards. No gray text on colored backgrounds.
@@ -221,3 +244,5 @@ These optional directives can be used to steer design refinement:
221
244
  3. Match implementation complexity to vision. Maximalist designs need elaborate code. Minimalist designs need surgical precision. Both require the same level of care.
222
245
  4. Text is always a design element, never an afterthought.
223
246
  5. Every detail matters. The shadow radius, the letter spacing, the hover transition duration, the border color in dark mode. These are not small decisions.
247
+ 6. **The Anti-Slop Gate (Step 0.5) must be completed before writing any design code.** No exceptions. If you cannot articulate specific, non-default commitments for font, color, layout, and differentiation, you are not ready to design. Go back to the references.
248
+ 7. **Transformation means transformation.** When asked to redesign or improve a site, the result must be visually unrecognizable from the original. Changing CSS variables and swapping fonts is engineering, not design. A redesign changes the spatial logic, the visual hierarchy, the emotional register, and the layout structure. If someone could confuse the before and after, the redesign failed.