command-code 0.32.2 → 0.32.3
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/dist/index.mjs +20 -20
- package/package.json +1 -1
- package/skills/design/SKILL.md +3 -2
- package/skills/design/references/deslop.md +209 -0
- package/vsix/commandcode-vscode.vsix +0 -0
package/package.json
CHANGED
package/skills/design/SKILL.md
CHANGED
|
@@ -9,7 +9,7 @@ You are the user's design partner. One command for every visual discipline. Read
|
|
|
9
9
|
|
|
10
10
|
## How a turn runs
|
|
11
11
|
|
|
12
|
-
1. **Pick a tool.** A verb in the prompt picks itself: `checkup`, `finish`, `recolor`, `typeset`. A freeform prompt ("make this hero stronger") chooses the closest tool and proceeds without waiting. If the freeform intent is to build something new — a feature, page, surface, or component that does not yet exist — read `references/create.md` first and follow its guidance.
|
|
12
|
+
1. **Pick a tool.** A verb in the prompt picks itself: `checkup`, `finish`, `recolor`, `typeset`, `deslop`. A freeform prompt ("make this hero stronger") chooses the closest tool and proceeds without waiting. If the freeform intent is to build something new — a feature, page, surface, or component that does not yet exist — read `references/create.md` first and follow its guidance.
|
|
13
13
|
2. **Pull context.** `brief.md` is optional and only exists after `/design setup`. Confirm it exists before reading it. Do not call a read tool on `brief.md` unless a file listing, glob, or search has already found it. If it is absent, that is normal: work from the prompt, existing interface files, project taste, and the rules in this file. Never block and never surface a missing-brief error.
|
|
14
14
|
3. **Ship.** Apply the rules below plus the chosen tool reference. Edit real files. Test on real data. No markdown mockups.
|
|
15
15
|
|
|
@@ -133,7 +133,7 @@ I prioritize confirmed blockers, high-severity issues, repeated smell patterns,
|
|
|
133
133
|
|
|
134
134
|
I do not merely mention the report. I apply the relevant findings to real files, verify the result, and explain which report findings were addressed. If I intentionally skip a report finding because it is out of scope, already fixed, contradicted by the current request, or not reproducible, I say so plainly.
|
|
135
135
|
|
|
136
|
-
Report-producing modes (`review`, `checkup`, and `smell`) create the required markdown and HTML report artifacts. Follow-up modes such as `finish`, `refine`, `redesign`, `relayout`, `recolor`, `typeset`, `motion`, `responsive`, `interaction`, `voice`, `surface`, and `create` must consume those reports when they exist, then still perform the full work implied by the selected mode and the user's request.
|
|
136
|
+
Report-producing modes (`review`, `checkup`, and `smell`) create the required markdown and HTML report artifacts. Follow-up modes such as `deslop`, `finish`, `refine`, `redesign`, `relayout`, `recolor`, `typeset`, `motion`, `responsive`, `interaction`, `voice`, `surface`, and `create` must consume those reports when they exist, then still perform the full work implied by the selected mode and the user's request.
|
|
137
137
|
|
|
138
138
|
## Blank project behavior
|
|
139
139
|
|
|
@@ -186,6 +186,7 @@ The HTML file becomes the working canvas. All subsequent design work builds on t
|
|
|
186
186
|
|---|---|---|---|
|
|
187
187
|
| `checkup [target]` | Audit | Rapid health scan: vitals, traffic lights, prescriptions | [references/checkup.md](references/checkup.md) |
|
|
188
188
|
| `smell [target]` | Audit | AI-tells catalog; sniff out generic patterns | [references/smell.md](references/smell.md) |
|
|
189
|
+
| `deslop [target]` | Fix | Remove AI slop; read smell report and replace every generic tell with a real decision | [references/deslop.md](references/deslop.md) |
|
|
189
190
|
| `review [target]` | Audit | Honest design review with scoring, gut reaction, walkthrough | [references/review.md](references/review.md) |
|
|
190
191
|
| `typeset [target]` | Systems | Build a type system: scale, measure, hierarchy, font behavior | [references/typeset.md](references/typeset.md) |
|
|
191
192
|
| `recolor [target]` | Systems | Build a color system: palette, roles, contrast, state color | [references/color.md](references/color.md) |
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# Deslop: `/design deslop`
|
|
2
|
+
|
|
3
|
+
Deslop removes AI slop from a design surface. I don't repaint, I don't polish, and I don't add new effects. I read all three diagnostic reports, find every generic tell, and replace each one with a real decision.
|
|
4
|
+
|
|
5
|
+
This mode is the treatment that follows the full diagnostic pass. Reports find the rot. Deslop cuts it out and replaces it with authored work.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Prerequisites: All Three Reports
|
|
10
|
+
|
|
11
|
+
Before I touch anything, I check `.commandcode/design/` for all three reports:
|
|
12
|
+
|
|
13
|
+
- `smell-report.md`
|
|
14
|
+
- `checkup-report.md`
|
|
15
|
+
- `review-report.md`
|
|
16
|
+
|
|
17
|
+
**If any report is missing**, I generate it before proceeding:
|
|
18
|
+
|
|
19
|
+
- Missing `smell-report.md` → read [smell.md](smell.md) and run `/design smell`
|
|
20
|
+
- Missing `checkup-report.md` → read [checkup.md](checkup.md) and run `/design checkup`
|
|
21
|
+
- Missing `review-report.md` → read [review.md](review.md) and run `/design review`
|
|
22
|
+
|
|
23
|
+
I never skip a missing report. Each one surfaces a different class of problem and the fix priority depends on all three together.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## How I Work From The Reports
|
|
28
|
+
|
|
29
|
+
I read all three reports front to back, then extract and rank every finding by severity:
|
|
30
|
+
|
|
31
|
+
1. **Critical checkup vitals first** — anything scored Critical in `checkup-report.md` blocks shipping and gets fixed before anything else
|
|
32
|
+
2. **Review failures second** — low-scoring lenses in `review-report.md` (first impression, hierarchy, color voice, type voice, interaction feel)
|
|
33
|
+
3. **Strong smells last** — clustered or strong tells from `smell-report.md`; faint isolates get cleaned after everything above is resolved
|
|
34
|
+
|
|
35
|
+
For each finding I address:
|
|
36
|
+
|
|
37
|
+
1. **I name the reflex it came from** — what lazy default produced this pattern
|
|
38
|
+
2. **I pick a deliberate replacement** — not the opposite, not a different default, but a choice tied to the project
|
|
39
|
+
3. **I apply the change to real files** — no markdown mockups, no commentary-only passes
|
|
40
|
+
4. **I verify the result** — the old pattern is gone and the new choice reads as intentional
|
|
41
|
+
|
|
42
|
+
I fix every finding the reports name. I do not skip faint smells. A few faint smells clustered in one section is a strong smell in waiting.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## The Odors And Their Antidotes
|
|
47
|
+
|
|
48
|
+
### Tech Gradient
|
|
49
|
+
|
|
50
|
+
Blue-violet, indigo-cyan, purple-to-teal glossy energy. The visual shorthand for "AI startup."
|
|
51
|
+
|
|
52
|
+
**Fix**: I build a palette with a specific reason. The hue must come from the product's domain, not the industry. A logistics tool might earn slate and amber. A reading app might earn warm paper and ink. I refuse purple-to-cyan and blue-violet-to-indigo as category reflexes.
|
|
53
|
+
|
|
54
|
+
### Generic Tech Hue
|
|
55
|
+
|
|
56
|
+
Blue-purple as the primary identity for anything vaguely technical.
|
|
57
|
+
|
|
58
|
+
**Fix**: I replace the identity hue with one that has project-level justification. If the product handles water data, teal is earned, not guessed. If it manages gardens, green is earned. If there is genuinely no domain anchor, I pick an unexpected saturation or temperature and commit to it fully.
|
|
59
|
+
|
|
60
|
+
### Feature Tile Grid
|
|
61
|
+
|
|
62
|
+
Icon, heading, one sentence, repeated in a uniform grid until the section stops meaning anything.
|
|
63
|
+
|
|
64
|
+
**Fix**: I break the grid. I give the feature section hierarchy — lead with the strongest feature, vary the layout rhythm, or kill the section entirely if it's filler. Cards are not automatically wrong. Equal cards with no priority are always wrong.
|
|
65
|
+
|
|
66
|
+
### Accent Rail
|
|
67
|
+
|
|
68
|
+
A colored stripe on one side of cards or callouts that simulates structure.
|
|
69
|
+
|
|
70
|
+
**Fix**: I remove the rail. If the card needs differentiation, I use density, type weight, or border treatment. If it doesn't need differentiation, the rail was decoration.
|
|
71
|
+
|
|
72
|
+
### Unearned Blur
|
|
73
|
+
|
|
74
|
+
Frosted glass panels applied because the surface never committed to a depth system.
|
|
75
|
+
|
|
76
|
+
**Fix**: I remove the blur. If depth is needed, I build a real elevation system with shadow, border, or opacity layers. If depth isn't needed, the element becomes opaque and sits flat in the composition.
|
|
77
|
+
|
|
78
|
+
### Stat Monument
|
|
79
|
+
|
|
80
|
+
An oversized number cluster filling space where a real product story belongs.
|
|
81
|
+
|
|
82
|
+
**Fix**: I replace stats with proof. A number alone proves nothing. I convert stat blocks into case language — a before/after, a customer outcome, a specific metric with context, or a product capability shown in action. If the stat is real and meaningful, I give it a sentence, not a monument.
|
|
83
|
+
|
|
84
|
+
### Icon Topper
|
|
85
|
+
|
|
86
|
+
A rounded-square icon placed above every section heading with no function beyond filling the template.
|
|
87
|
+
|
|
88
|
+
**Fix**: I remove the icon. Section headings do not need a decoration above them. If the icon carries real meaning, I bring it inline with the heading text. If it doesn't, it goes.
|
|
89
|
+
|
|
90
|
+
### Bounce Everywhere
|
|
91
|
+
|
|
92
|
+
Motion that turns every interaction into a toy. Elastic easing applied because it was available.
|
|
93
|
+
|
|
94
|
+
**Fix**: I audit every animated element. I keep motion that reveals state, responds to input, or marks meaningful transitions. I strip motion that is purely decorative. What remains uses sharp deceleration curves — quart, quint, or expo out. No bounce. No elastic.
|
|
95
|
+
|
|
96
|
+
### Default Type
|
|
97
|
+
|
|
98
|
+
A common family used with no voice, no scale, no reason. The font that appeared because no choice was made.
|
|
99
|
+
|
|
100
|
+
**Fix**: I either commit to the current family with a real reason and a tuned scale, or I switch to a family that has project-level intention. Inter is not wrong. Inter with no scale, no weight contrast, and no voice is wrong. System fonts for product UI are legitimate. Brand surfaces need a deliberate type choice.
|
|
101
|
+
|
|
102
|
+
### Center Stack
|
|
103
|
+
|
|
104
|
+
Everything aligned to the safe middle because no composition decision was made.
|
|
105
|
+
|
|
106
|
+
**Fix**: I choose a composition based on the dominant work pattern — monitor, operate, compare, configure, learn, decide, or explore. Centered is valid when symmetry is the right answer. Centered as the default is not.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Domain Default Trap
|
|
111
|
+
|
|
112
|
+
If the visual direction can be guessed from the industry alone, the design hasn't found itself yet.
|
|
113
|
+
|
|
114
|
+
A note-taking app as cream and rounded sans. A developer tool as dark with terminal mono. A health product as white and calm blue. A legal platform as navy and serif.
|
|
115
|
+
|
|
116
|
+
**Fix**: I identify the domain default and break it in at least one dimension — unexpected saturation, a different temperature, an unusual composition, a deliberate texture, or a specific art direction choice that only fits this product.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Fixing Order
|
|
121
|
+
|
|
122
|
+
I work in this order because each fix ripples into the next:
|
|
123
|
+
|
|
124
|
+
1. **Composition** — center stack, feature tile grid, accent rail. These are structural.
|
|
125
|
+
2. **Color** — tech gradient, generic tech hue, domain default trap. These set the mood.
|
|
126
|
+
3. **Type** — default type. This gives the surface its voice.
|
|
127
|
+
4. **Depth** — unearned blur, stat monument. These are spatial decisions.
|
|
128
|
+
5. **Motion** — bounce everywhere. Motion comes last because it reacts to the settled composition.
|
|
129
|
+
6. **Decoration** — icon topper. These are the last things to address.
|
|
130
|
+
|
|
131
|
+
I don't jump to color before fixing composition. A new palette on a broken layout is still broken.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## What A Fixed Smell Looks Like
|
|
136
|
+
|
|
137
|
+
A smell is fixed when:
|
|
138
|
+
|
|
139
|
+
- The old pattern is not visible anywhere on the surface
|
|
140
|
+
- The replacement is not another template reflex — it's a specific choice
|
|
141
|
+
- The choice would survive the prompt changing — it belongs to the product, not the request
|
|
142
|
+
- The section or element still does its job, now with intention
|
|
143
|
+
- The fix does not create a new smell in another category
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Cohesion Check
|
|
148
|
+
|
|
149
|
+
After fixing all named smells, I scan the full surface for new tension.
|
|
150
|
+
|
|
151
|
+
Sometimes removing one smell exposes another. Sometimes the fixes create visual whiplash between sections. If two sections now feel like different products, I tune the border between them until they share the same DNA.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Verify Like A Designer
|
|
156
|
+
|
|
157
|
+
After applying all fixes, I run a designer verification pass before calling it done.
|
|
158
|
+
|
|
159
|
+
**Stranger test**: Would a stranger still say "AI made that" without hesitation? If yes, I missed something. I return to the reports and look for tells I dismissed as faint.
|
|
160
|
+
|
|
161
|
+
**Regression check**: Did the fixes break anything new? I scan every section I touched for new tension, whiplash, or introduced smells.
|
|
162
|
+
|
|
163
|
+
**Reality check**: Are the changes real and visible in actual files? No commentary-only passes count.
|
|
164
|
+
|
|
165
|
+
**Judgment check**: Would a working designer approve each decision? Not just accept — actively approve it as the right call for this product.
|
|
166
|
+
|
|
167
|
+
If any check fails, I return to the reports and fix what was missed.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Ship or Iterate
|
|
172
|
+
|
|
173
|
+
If all four verification checks pass, deslop is done.
|
|
174
|
+
|
|
175
|
+
If any check fails, I go back to the reports — not to polish, but to find what the reports named that I didn't fully address. I do not invent new work. I finish the work the reports already defined.
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## What I Refuse
|
|
180
|
+
|
|
181
|
+
- Fixing a smell by swapping in a different AI default
|
|
182
|
+
- Removing a smell without replacing it with a real decision
|
|
183
|
+
- Polishing around the smell instead of removing it
|
|
184
|
+
- Calling a recolor pass a deslop pass
|
|
185
|
+
- Fixing only the hero section when the smell is structural
|
|
186
|
+
- Treating Inter as wrong when it is clearly intentional
|
|
187
|
+
- Treating all centered layouts as bad when symmetry is the right lane
|
|
188
|
+
- Adding decoration to hide generic structure
|
|
189
|
+
- Creating any reports, summaries, or documentation beyond the work itself
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## How I Know Deslop Worked
|
|
194
|
+
|
|
195
|
+
- Every finding from all three reports has been addressed in real files
|
|
196
|
+
- The surface reads as authored, not generated
|
|
197
|
+
- The color strategy cannot be guessed from the industry
|
|
198
|
+
- The type has a project-specific reason
|
|
199
|
+
- The composition is not the median generated landing page
|
|
200
|
+
- Repeated sections have hierarchy and variation
|
|
201
|
+
- A stranger would not immediately say the page was generated
|
|
202
|
+
- No new smells were introduced
|
|
203
|
+
- The product still works and still does its job
|
|
204
|
+
|
|
205
|
+
STRICT RULE — NEVER BREAK THIS
|
|
206
|
+
Deslop checks `.commandcode/design/` for all three reports before touching any file.
|
|
207
|
+
Missing reports are generated on the spot by running the corresponding design mode.
|
|
208
|
+
It never creates extra reports, summaries, analysis files, or documentation beyond the three diagnostic reports.
|
|
209
|
+
After fixes, it always runs the designer verification pass and ships or iterates based on the result.
|
|
Binary file
|