dme-agent 7.4.1 → 9.69.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 +62 -43
- package/assets/agent/AGENTS.md +471 -0
- package/assets/agent/DME-Agent-v7.4-SYSTEM.md +29 -98
- package/assets/agent/DME-Agent-v9.69-SYSTEM.md +208 -0
- package/assets/agent/PROMPT-COMPACT.md +24 -15
- package/assets/agent/dme-v7.4.md +12 -14
- package/assets/agent/dme-v9.69.md +43 -0
- package/assets/manifesto/DME-Agent-v9.69.md +514 -0
- package/assets/references/icon-doctrine.md +122 -0
- package/assets/references/motion-bible.md +262 -0
- package/assets/references/palette-intake.md +159 -0
- package/assets/skills/dme-app-shell/SKILL.md +19 -0
- package/assets/skills/dme-critique/SKILL.md +105 -6
- package/assets/skills/dme-dashboard/SKILL.md +108 -35
- package/assets/skills/dme-design/SKILL.md +138 -11
- package/assets/skills/dme-icons/SKILL.md +21 -0
- package/assets/skills/dme-landing/SKILL.md +98 -23
- package/assets/skills/dme-motion/SKILL.md +19 -0
- package/assets/skills/dme-research/SKILL.md +134 -6
- package/assets/skills/dme-shadcn/SKILL.md +128 -6
- package/assets/skills/dme-ux/SKILL.md +110 -27
- package/assets/skills/dme-welcome/SKILL.md +20 -0
- package/bin/dme.mjs +166 -55
- package/package.json +9 -4
- package/src/detect.mjs +260 -0
- package/src/install.mjs +406 -177
- package/src/postinstall-hint.mjs +4 -3
- package/src/targets.mjs +39 -13
- package/src/tui.mjs +352 -0
- package/src/ui.mjs +139 -52
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
# Motion Bible — DME 9.69
|
|
2
|
+
|
|
3
|
+
> Pure motion reference for Absolute Front-End.
|
|
4
|
+
> Pair with AGENTS.md. Platform density overrides decoration desire.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Principles
|
|
9
|
+
|
|
10
|
+
1. **Intent first** — enter, exit, move, emphasize, celebrate (rare).
|
|
11
|
+
2. **One hierarchy of motion** — primary action moves more; chrome less.
|
|
12
|
+
3. **Platform density** — desktop richer; web calmer; mobile minimal.
|
|
13
|
+
4. **Reduced motion is law** — never optional.
|
|
14
|
+
5. **Never one fade for everything.**
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Easing graphs (cubic-bezier)
|
|
19
|
+
|
|
20
|
+
| Token | cubic-bezier | Feel | Use |
|
|
21
|
+
|---|---|---|---|
|
|
22
|
+
| `easeOut` | `0.16, 1, 0.3, 1` | Fast start, soft land | Entrances, most UI appear |
|
|
23
|
+
| `easeIn` | `0.55, 0, 1, 0.45` | Soft start, quick leave | Exits, dismiss |
|
|
24
|
+
| `easeInOut` | `0.65, 0, 0.35, 1` | Symmetric | Reposition on-screen |
|
|
25
|
+
| `cubicOut` | `0.33, 1, 0.68, 1` | Gentle settle | Sheets, drawers |
|
|
26
|
+
| `expoOut` | `0.16, 1, 0.3, 1` | Decided, premium | Hero/desktop reveal |
|
|
27
|
+
| `expoInOut` | `0.87, 0, 0.13, 1` | Dramatic morph | Rare route morph desktop |
|
|
28
|
+
| `emphasized` | `0.2, 0, 0, 1` | Material emphasized | Settle after drag |
|
|
29
|
+
| `standard` | `0.2, 0, 0, 1` | Quiet chrome | Sidebar width, tab line |
|
|
30
|
+
| `decelerate` | `0, 0, 0.2, 1` | Android-like decel | Secondary enter |
|
|
31
|
+
| `accelerate` | `0.4, 0, 1, 1` | Leave frame | Fast exit |
|
|
32
|
+
|
|
33
|
+
CSS:
|
|
34
|
+
|
|
35
|
+
```css
|
|
36
|
+
--ease-out: cubic-bezier(0.16, 1, 0.3, 1);
|
|
37
|
+
--ease-in: cubic-bezier(0.55, 0, 1, 0.45);
|
|
38
|
+
--ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
|
|
39
|
+
--ease-cubic-out: cubic-bezier(0.33, 1, 0.68, 1);
|
|
40
|
+
--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Tailwind arbitrary:
|
|
44
|
+
|
|
45
|
+
```txt
|
|
46
|
+
duration-200 ease-[cubic-bezier(0.16,1,0.3,1)]
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Springs (Framer Motion / motion)
|
|
52
|
+
|
|
53
|
+
| Token | stiffness | damping | mass | Use |
|
|
54
|
+
|---|---|---|---|---|
|
|
55
|
+
| `soft` | 280 | 24 | 0.8 | Button press, icon toggle |
|
|
56
|
+
| `snappy` | 400 | 30 | 0.6 | Command palette, popover, tab indicator |
|
|
57
|
+
| `gentle` | 120 | 20 | 1.0 | Welcome, large panels (desktop) |
|
|
58
|
+
| `stiff` | 500 | 40 | 0.5 | Small toggles, dense tools |
|
|
59
|
+
| `bouncy` | 300 | 16 | 0.7 | **Rare** — playful mood only |
|
|
60
|
+
|
|
61
|
+
```tsx
|
|
62
|
+
const springSoft = { type: "spring", stiffness: 280, damping: 24, mass: 0.8 }
|
|
63
|
+
const springSnappy = { type: "spring", stiffness: 400, damping: 30, mass: 0.6 }
|
|
64
|
+
const springGentle = { type: "spring", stiffness: 120, damping: 20, mass: 1 }
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Duration bands
|
|
70
|
+
|
|
71
|
+
| Band | ms | Examples |
|
|
72
|
+
|---|---|---|
|
|
73
|
+
| Feedback | 80–120 | Hover, active press color |
|
|
74
|
+
| Functional | 150–250 | Menu, toast, tooltip, tab |
|
|
75
|
+
| Panel | 220–380 | Sheet, dialog, sidebar |
|
|
76
|
+
| Page / welcome | 300–600 | Desktop route, onboarding beat |
|
|
77
|
+
| Cap | ≤800 | Anything longer needs strong reason and stillness after |
|
|
78
|
+
|
|
79
|
+
Stagger children: **40–60ms** web · **50–80ms** desktop lists (cap total choreography ~400ms web / ~700ms desktop).
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Platform density
|
|
84
|
+
|
|
85
|
+
### Web
|
|
86
|
+
|
|
87
|
+
- Prefer functional motion + **one** hero block.
|
|
88
|
+
- Avoid multi-panel layoutId storms.
|
|
89
|
+
- Prefer `opacity + 8–12px y` over large travel.
|
|
90
|
+
- Lazy-load heavy motion; CSS for micro when enough.
|
|
91
|
+
|
|
92
|
+
### Mobile web
|
|
93
|
+
|
|
94
|
+
- Shorter distances; no hover-dependent meaning.
|
|
95
|
+
- Prefer transforms/opacity (compositor-friendly).
|
|
96
|
+
- Disable nonessential parallax.
|
|
97
|
+
|
|
98
|
+
### Electron / Tauri
|
|
99
|
+
|
|
100
|
+
- Shared layout transitions OK.
|
|
101
|
+
- Welcome multi-beat sequences OK (2–4 beats).
|
|
102
|
+
- Sidebar spring, panel dock, palette snappy spring.
|
|
103
|
+
- Still avoid infinite loops and carnival.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Reduced motion
|
|
108
|
+
|
|
109
|
+
```css
|
|
110
|
+
@media (prefers-reduced-motion: reduce) {
|
|
111
|
+
*, *::before, *::after {
|
|
112
|
+
animation-duration: 0.01ms !important;
|
|
113
|
+
animation-iteration-count: 1 !important;
|
|
114
|
+
transition-duration: 0.01ms !important;
|
|
115
|
+
scroll-behavior: auto !important;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Framer:
|
|
121
|
+
|
|
122
|
+
```tsx
|
|
123
|
+
const reduce = useReducedMotion()
|
|
124
|
+
const enter = reduce
|
|
125
|
+
? { opacity: 1 }
|
|
126
|
+
: { opacity: 1, y: 0, transition: { duration: 0.28, ease: [0.16, 1, 0.3, 1] } }
|
|
127
|
+
const initial = reduce ? { opacity: 0 } : { opacity: 0, y: 8 }
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Law: under reduce → **no large travel, no springs that bounce, no parallax**. Opacity/instant OK.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Pattern recipes
|
|
135
|
+
|
|
136
|
+
### List enter (web-safe)
|
|
137
|
+
|
|
138
|
+
```tsx
|
|
139
|
+
const list = {
|
|
140
|
+
hidden: {},
|
|
141
|
+
show: { transition: { staggerChildren: 0.05 } },
|
|
142
|
+
}
|
|
143
|
+
const item = {
|
|
144
|
+
hidden: { opacity: 0, y: 8 },
|
|
145
|
+
show: {
|
|
146
|
+
opacity: 1,
|
|
147
|
+
y: 0,
|
|
148
|
+
transition: { duration: 0.28, ease: [0.16, 1, 0.3, 1] },
|
|
149
|
+
},
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Dialog
|
|
154
|
+
|
|
155
|
+
```tsx
|
|
156
|
+
// overlay: opacity 0→1, duration 0.2, easeOut
|
|
157
|
+
// content: opacity 0→1, scale 0.98→1, duration 0.22, ease [0.16,1,0.3,1]
|
|
158
|
+
// exit: reverse with easeIn ~0.15s
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Sheet (desktop richer)
|
|
162
|
+
|
|
163
|
+
```tsx
|
|
164
|
+
// x or y: 16–24px travel + opacity
|
|
165
|
+
// transition: { type: "spring", stiffness: 120, damping: 20 } // gentle desktop
|
|
166
|
+
// web: tween cubicOut 0.3s
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Tab indicator
|
|
170
|
+
|
|
171
|
+
```tsx
|
|
172
|
+
// layoutId="tab"
|
|
173
|
+
// transition: spring snappy
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Button press
|
|
177
|
+
|
|
178
|
+
```tsx
|
|
179
|
+
// whileTap={{ scale: 0.98 }}
|
|
180
|
+
// transition: spring soft
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Page transition (desktop)
|
|
184
|
+
|
|
185
|
+
```tsx
|
|
186
|
+
// initial: { opacity: 0, y: 10 }
|
|
187
|
+
// animate: { opacity: 1, y: 0 }
|
|
188
|
+
// exit: { opacity: 0, y: -6 }
|
|
189
|
+
// easeOut in / easeIn out; duration ~0.28 / 0.18
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Welcome sequence (desktop)
|
|
193
|
+
|
|
194
|
+
Beat 1: mark opacity + scale 0.96→1 (gentle spring)
|
|
195
|
+
Beat 2: title y:12→0 + opacity (delay 0.08)
|
|
196
|
+
Beat 3: CTA opacity (delay 0.16)
|
|
197
|
+
Then: **stillness**. No loop.
|
|
198
|
+
|
|
199
|
+
### CSS keyframe micro
|
|
200
|
+
|
|
201
|
+
```css
|
|
202
|
+
@keyframes fade-up {
|
|
203
|
+
from { opacity: 0; transform: translateY(8px); }
|
|
204
|
+
to { opacity: 1; transform: translateY(0); }
|
|
205
|
+
}
|
|
206
|
+
.enter {
|
|
207
|
+
animation: fade-up 0.28s cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### WAAPI (light one-off)
|
|
212
|
+
|
|
213
|
+
```js
|
|
214
|
+
el.animate(
|
|
215
|
+
[
|
|
216
|
+
{ opacity: 0, transform: "translateY(8px)" },
|
|
217
|
+
{ opacity: 1, transform: "translateY(0)" },
|
|
218
|
+
],
|
|
219
|
+
{ duration: 280, easing: "cubic-bezier(0.16, 1, 0.3, 1)", fill: "both" }
|
|
220
|
+
)
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## What to animate vs not
|
|
226
|
+
|
|
227
|
+
| Animate | Prefer static |
|
|
228
|
+
|---|---|
|
|
229
|
+
| Presence (enter/exit) | Long reading body text layout thrash |
|
|
230
|
+
| Feedback (press, success) | Endless ambient blobs |
|
|
231
|
+
| Spatial model (panel dock) | Random decorative floaters |
|
|
232
|
+
| Focus attention once | Competing three heroes moving |
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Banned
|
|
237
|
+
|
|
238
|
+
- Infinite typing loops as product hero
|
|
239
|
+
- Neon particles / mesh morph carnival
|
|
240
|
+
- Bounce overshoot on finance/ops seriousness
|
|
241
|
+
- Same 200ms opacity on every node
|
|
242
|
+
- Parallax that harms scroll comprehension
|
|
243
|
+
- >800ms blocking intro before first interaction without skip
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Selection cheat sheet
|
|
248
|
+
|
|
249
|
+
| Situation | Pick |
|
|
250
|
+
|---|---|
|
|
251
|
+
| Dropdown open | easeOut 180–220ms or spring snappy |
|
|
252
|
+
| Modal open | scale 0.98 + opacity easeOut |
|
|
253
|
+
| Modal close | easeIn 150ms |
|
|
254
|
+
| Toast | easeOut y + opacity |
|
|
255
|
+
| Sidebar collapse desktop | spring gentle / standard tween |
|
|
256
|
+
| KPI first paint | optional count-up once; desktop OK, web subtle |
|
|
257
|
+
| Error shake | 2–3 short x keyframes ≤300ms total; not comic |
|
|
258
|
+
| Skeleton → content | crossfade 150ms |
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
*DME 9.69 Motion Bible · Paz Operativa*
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Palette Intake — DME 9.69
|
|
2
|
+
|
|
3
|
+
> Ask once. Lock for the session. Peace when silent.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Intake questions (single block)
|
|
8
|
+
|
|
9
|
+
Ask **only if missing** from the user message / brief:
|
|
10
|
+
|
|
11
|
+
1. **Brand colors** — primary / secondary / accent (hex, HSL, or named tokens)? Or **“use peace gray”**?
|
|
12
|
+
2. **Mood** — one phrase: calm ops · editorial premium · dense tools · playful soft · clinical · finance trust · other
|
|
13
|
+
3. **Platform** — web · desktop Electron/Tauri · mobile web · hybrid
|
|
14
|
+
4. **Product type** — dashboard · landing · SaaS shell · onboarding · marketing · internal tool · other
|
|
15
|
+
|
|
16
|
+
Optional: dark / light / system · type preference · locale.
|
|
17
|
+
|
|
18
|
+
### Example intake (agent → user)
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
Antes de gerar a UI, trava a sessão (responde em 4 linhas se quiser):
|
|
22
|
+
1. Cores da marca (hex) ou “peace gray”?
|
|
23
|
+
2. Mood (ex: calm ops / editorial)?
|
|
24
|
+
3. Plataforma: web · Electron/Tauri · mobile web?
|
|
25
|
+
4. Tipo: dashboard · landing · app · onboarding?
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Lock template (Decision Brief)
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
Palette lock:
|
|
34
|
+
mode: brand | peace-gray
|
|
35
|
+
canvas: …
|
|
36
|
+
surface: …
|
|
37
|
+
text: …
|
|
38
|
+
muted: …
|
|
39
|
+
border: …
|
|
40
|
+
accent: …
|
|
41
|
+
accent-foreground: …
|
|
42
|
+
danger / success: …
|
|
43
|
+
focus-ring: …
|
|
44
|
+
Mood: …
|
|
45
|
+
Platform → motion density: web-calmer | desktop-rich | mobile-min
|
|
46
|
+
Anchor: Vercel dens | Apple editorial | Fumadocs | Linear calm | Raycast command
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Do **not** re-ask after lock unless user changes product direction.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Peace Gray default
|
|
54
|
+
|
|
55
|
+
When brand is unset or user says peace gray / “tanto faz” / “só manda”:
|
|
56
|
+
|
|
57
|
+
### Light
|
|
58
|
+
|
|
59
|
+
| Token | Value |
|
|
60
|
+
|---|---|
|
|
61
|
+
| canvas | `#FAFAFA` |
|
|
62
|
+
| surface | `#FFFFFF` |
|
|
63
|
+
| border | `#E4E4E7` (zinc-200) |
|
|
64
|
+
| text | `#18181B` (zinc-900) |
|
|
65
|
+
| text-muted | `#71717A` (zinc-500) |
|
|
66
|
+
| muted-fill | `#F4F4F5` (zinc-100) |
|
|
67
|
+
| accent | `#18181B` (ink CTA) |
|
|
68
|
+
| accent-fg | `#FAFAFA` |
|
|
69
|
+
| ring | `rgba(24,24,27,0.2)` |
|
|
70
|
+
|
|
71
|
+
### Dark
|
|
72
|
+
|
|
73
|
+
| Token | Value |
|
|
74
|
+
|---|---|
|
|
75
|
+
| canvas | `#09090B` |
|
|
76
|
+
| surface | `#18181B` |
|
|
77
|
+
| border | `#27272A` (zinc-800) |
|
|
78
|
+
| text | `#FAFAFA` |
|
|
79
|
+
| text-muted | `#A1A1AA` (zinc-400) |
|
|
80
|
+
| muted-fill | `rgba(39,39,42,0.6)` |
|
|
81
|
+
| accent | `#F4F4F5` (ink CTA) |
|
|
82
|
+
| accent-fg | `#18181B` |
|
|
83
|
+
| ring | `rgba(250,250,250,0.25)` |
|
|
84
|
+
|
|
85
|
+
**Soft contrast:** prefer charcoal/off-white pairings for long reading. Avoid forcing pure `#000` on pure `#FFF` as the only text system.
|
|
86
|
+
|
|
87
|
+
Stone alternative: swap zinc→stone for warmer peace (editorial calm).
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Brand mapping algorithm
|
|
92
|
+
|
|
93
|
+
Given brand primary (and optional secondary/accent):
|
|
94
|
+
|
|
95
|
+
1. **Primary** → main CTA / key active states (not every button)
|
|
96
|
+
2. **Secondary** → charts, tags, rare highlights OR ignore if weak
|
|
97
|
+
3. **Accent** → badges, links, focus if primary is too heavy
|
|
98
|
+
4. Build **neutrals** from zinc/stone independent of brand (peace structure stays)
|
|
99
|
+
5. Enforce **≤10% accent** on app surfaces; marketing hero may use more
|
|
100
|
+
6. Derive hover/active as darker/lighter of primary (not neon multipliers)
|
|
101
|
+
7. Check **AA contrast** for text-on-primary buttons; if fail, use ink buttons + brand as underline/dot only
|
|
102
|
+
|
|
103
|
+
### Tailwind mental model
|
|
104
|
+
|
|
105
|
+
```txt
|
|
106
|
+
bg-background text-foreground
|
|
107
|
+
bg-card border-border
|
|
108
|
+
bg-primary text-primary-foreground
|
|
109
|
+
bg-muted text-muted-foreground
|
|
110
|
+
ring-ring
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Map session lock → CSS variables once; components consume tokens, not ad-hoc hex soup.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Mood → bias (no hex)
|
|
118
|
+
|
|
119
|
+
| Mood | Neutrals | Accent behavior | Radius |
|
|
120
|
+
|---|---|---|---|
|
|
121
|
+
| Calm ops | zinc | ink or single quiet brand | ≤8 |
|
|
122
|
+
| Editorial premium | stone/warm gray | deep ink; brand sparingly | ≤8 |
|
|
123
|
+
| Dense tools | higher contrast zinc | status colors strict | ≤6–8 |
|
|
124
|
+
| Playful soft | light zinc | pastel brand OK low saturation | ≤12 |
|
|
125
|
+
| Clinical | cool gray | blue/teal status disciplined | ≤8 |
|
|
126
|
+
| Finance trust | deep ink + zinc | green positive / red risk only | ≤8 |
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Platform note
|
|
131
|
+
|
|
132
|
+
Palette is independent of platform; **motion density** is not.
|
|
133
|
+
Still document both in the same lock block.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Anti-laws (removed from 7.4)
|
|
138
|
+
|
|
139
|
+
| Old law | 9.69 |
|
|
140
|
+
|---|---|
|
|
141
|
+
| Accent dark always `#FFDE21` | Only if brand/session locks it |
|
|
142
|
+
| Light CTA always `#0065F2` | Only if brand/session locks it |
|
|
143
|
+
| Dark bg always `#09090b` as brand identity | Valid as **peace dark canvas**, not brand personality |
|
|
144
|
+
|
|
145
|
+
Legacy yellow/blue may appear in historical docs as examples — **not runtime defaults**.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Fail conditions
|
|
150
|
+
|
|
151
|
+
- Inventing loud multicolor system without brand input
|
|
152
|
+
- Ignoring user-supplied hex
|
|
153
|
+
- Painting every surface with accent
|
|
154
|
+
- Pure black/white only with harsh glare for long sessions
|
|
155
|
+
- Re-asking palette every message
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
*DME 9.69 Palette Intake · Paz Operativa*
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dme-app-shell
|
|
3
|
+
description: >
|
|
4
|
+
DME 9.69 desktop app shells (Electron / Tauri / hybrid).
|
|
5
|
+
Triggers: /dme-app-shell, electron, tauri, desktop chrome, titlebar.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# DME App Shell 9.69
|
|
9
|
+
|
|
10
|
+
1. Platform: **electron** | **tauri** | hybrid
|
|
11
|
+
2. Custom titlebar + drag region; OS window controls zone
|
|
12
|
+
3. Left icon rail or full sidebar · content pane · optional inspector
|
|
13
|
+
4. Command palette > nested menus
|
|
14
|
+
5. No marketing hero inside the shell
|
|
15
|
+
6. Motion: subtle (sidebar width, panel opacity) — no bounce on chrome
|
|
16
|
+
7. shadcn: Sidebar, Menubar, Command, Tabs, Sheet, Tooltip
|
|
17
|
+
8. Tauri: lean DOM; prefer native dialogs/tray APIs
|
|
18
|
+
|
|
19
|
+
Deliver: shell map → chrome vs content → shadcn compose → subtract.
|
|
@@ -1,14 +1,113 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: dme-critique
|
|
3
3
|
description: >
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
DME 9.69 scorecard critique: peace, motion craft, icons, platform fit,
|
|
5
|
+
structure, UX human, text discipline, anti-AI. Triggers: /dme-critique,
|
|
6
|
+
critique UI, score design, anti-AI check, design review, audit UI.
|
|
6
7
|
---
|
|
7
8
|
|
|
8
|
-
# DME Critique
|
|
9
|
+
# DME Critique 9.69 — Scorecard
|
|
9
10
|
|
|
10
|
-
Score 0–5
|
|
11
|
+
Score each dimension **0–5**. Be specific: cite UI regions, not vibes.
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
**5** = doctrine locked · **3** = usable but soft · **0–1** = fails identity
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
## Scorecard
|
|
16
|
+
|
|
17
|
+
| # | Dimension | 5 looks like |
|
|
18
|
+
|---|-----------|--------------|
|
|
19
|
+
| 1 | **Structure** | One protagonist; shell inevitable; hierarchy clear |
|
|
20
|
+
| 2 | **Hierarchy** | size → weight → space → color; eye path intentional |
|
|
21
|
+
| 3 | **Type** | restrained scale; readable; mono only for data |
|
|
22
|
+
| 4 | **Color / Peace** | gray-white peace or locked brand; 90/10 neutrals; no carnival |
|
|
23
|
+
| 5 | **Density** | tight where ops need it; air where editorial needs it |
|
|
24
|
+
| 6 | **Identity** | one anchor (vercel-dens / apple-editorial / fumadocs) |
|
|
25
|
+
| 7 | **shadcn** | primitives composed; zero reinvention of atoms |
|
|
26
|
+
| 8 | **UX human** | non-dev language; verbs; recovery paths; no dark patterns |
|
|
27
|
+
| 9 | **Text discipline** | caps respected; no walls; no banned AI fluff |
|
|
28
|
+
| 10 | **Cards** | lean or absent; no feature-card spam |
|
|
29
|
+
| 11 | **Dashboard/Landing/Shell craft** | right pattern for surface; work object or conversion clear |
|
|
30
|
+
| 12 | **Motion craft** | platform density correct; easing intentional; reduced-motion |
|
|
31
|
+
| 13 | **Icons** | smart density; lucide consistent; no spam tiles |
|
|
32
|
+
| 14 | **Platform fit** | web calm vs app rich; titlebar/drag if desktop |
|
|
33
|
+
| 15 | **States** | empty · loading · error · success · offline considered |
|
|
34
|
+
| 16 | **a11y** | contrast AA; focus; labels; targets |
|
|
35
|
+
| 17 | **Anti-AI** | no mesh/glow/blobs/feature triad essays/journey copy |
|
|
36
|
+
| 18 | **Subtraction** | every element earns space |
|
|
37
|
+
|
|
38
|
+
## Instant fail (cap total judgment)
|
|
39
|
+
|
|
40
|
+
Any of these → call **blocker** regardless of average:
|
|
41
|
+
|
|
42
|
+
- Text walls / jargon for lay audience on non-devtools
|
|
43
|
+
- Feature-card icon spam (5–6 essay cards)
|
|
44
|
+
- Missing empty or error for primary flow
|
|
45
|
+
- Hand-rolled Button/Dialog/Table when shadcn expected
|
|
46
|
+
- Infinite decorative motion / ignores reduced-motion
|
|
47
|
+
- Dark patterns (confirmshaming, fake urgency)
|
|
48
|
+
- “Welcome to your dashboard” as logged-in home filler
|
|
49
|
+
|
|
50
|
+
## Platform rubrics (extra)
|
|
51
|
+
|
|
52
|
+
### Web landing
|
|
53
|
+
|
|
54
|
+
- 3s message · 10s trust · 30s CTA
|
|
55
|
+
- Motion ≤ calm fade/stagger
|
|
56
|
+
|
|
57
|
+
### Dashboard
|
|
58
|
+
|
|
59
|
+
- Work object in 10s
|
|
60
|
+
- Metrics = numbers not paragraphs
|
|
61
|
+
- Table/queue hero
|
|
62
|
+
|
|
63
|
+
### App shell
|
|
64
|
+
|
|
65
|
+
- Titlebar/drag safe
|
|
66
|
+
- Welcome not replaying daily
|
|
67
|
+
- Richer motion only where earned
|
|
68
|
+
|
|
69
|
+
## Output format (always)
|
|
70
|
+
|
|
71
|
+
### 1. Scores table
|
|
72
|
+
|
|
73
|
+
| Dimension | Score | Note (≤1 line) |
|
|
74
|
+
|-----------|-------|----------------|
|
|
75
|
+
|
|
76
|
+
### 2. Blockers
|
|
77
|
+
|
|
78
|
+
Numbered, fix-or-die.
|
|
79
|
+
|
|
80
|
+
### 3. Fix order
|
|
81
|
+
|
|
82
|
+
Priority sequence (P0 → P2). Each item: **what · where · how**.
|
|
83
|
+
|
|
84
|
+
### 4. Keep
|
|
85
|
+
|
|
86
|
+
3–7 things that already work — don’t redesign for sport.
|
|
87
|
+
|
|
88
|
+
### 5. Verdict
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
Average: X.X / 5
|
|
92
|
+
Ship: yes | yes with P0 | no
|
|
93
|
+
One-line identity read: "…"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Tone
|
|
97
|
+
|
|
98
|
+
Direct, design-director clear. No praise sandwich fluff. No rewrite of entire product unless asked — critique first.
|
|
99
|
+
|
|
100
|
+
## Optional deep pass
|
|
101
|
+
|
|
102
|
+
If he asks “fix it”, route to `/dme-design` with blockers as intake.
|
|
103
|
+
|
|
104
|
+
## Checklist for the critic
|
|
105
|
+
|
|
106
|
+
- [ ] All 18 dimensions scored
|
|
107
|
+
- [ ] Platform named and scored in #14
|
|
108
|
+
- [ ] Motion #12 and Icons #13 not skipped
|
|
109
|
+
- [ ] Blockers explicit
|
|
110
|
+
- [ ] Fix order actionable
|
|
111
|
+
- [ ] Keep list non-empty if anything works
|
|
112
|
+
|
|
113
|
+
**Judge for peace, craft, and humans — not for trendiness.**
|