picasso-skill 1.4.0 → 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 +1 -0
- package/agents/picasso.md +74 -0
- package/commands/autorefine.md +6 -0
- package/commands/quick-audit.md +6 -0
- package/package.json +1 -1
- package/skills/picasso/SKILL.md +20 -0
package/README.md
CHANGED
package/agents/picasso.md
CHANGED
|
@@ -496,6 +496,8 @@ When the user invokes these commands, execute the corresponding workflow:
|
|
|
496
496
|
| `/design-system-sync` | Detect and fix drift between DESIGN.md and code |
|
|
497
497
|
| `/preset <name>` | Apply a curated community design preset |
|
|
498
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 |
|
|
499
501
|
|
|
500
502
|
## /godmode -- The Ultimate Design Transformation
|
|
501
503
|
|
|
@@ -1043,6 +1045,78 @@ failed.forEach(a => console.log(' FAIL: ' + a.id + ' - ' + a.title));
|
|
|
1043
1045
|
|
|
1044
1046
|
Combine results from all three tools, deduplicate overlapping findings, and report with severity levels.
|
|
1045
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
|
+
|
|
1046
1120
|
## Rules
|
|
1047
1121
|
|
|
1048
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.
|
package/package.json
CHANGED
package/skills/picasso/SKILL.md
CHANGED
|
@@ -217,6 +217,26 @@ These optional directives can be used to steer design refinement:
|
|
|
217
217
|
|
|
218
218
|
---
|
|
219
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
|
+
|
|
220
240
|
## The Non-Negotiables
|
|
221
241
|
|
|
222
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.
|