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.
@@ -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
- Score UI against DME 7.4.1 (structure, UX human, text discipline, dashboard/landing craft).
5
- Triggers: /dme-critique, critique UI, anti-AI check, score design.
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: Structure, Hierarchy, Type, Color, Density, Identity, shadcn, **UX human**, **Text discipline**, Dashboard/Landing craft, Anti-AI, A11y, Subtraction.
11
+ Score each dimension **0–5**. Be specific: cite UI regions, not vibes.
11
12
 
12
- Fail if text walls, jargon for laypeople, feature-card spam, or missing empty/error states.
13
+ **5** = doctrine locked · **3** = usable but soft · **0–1** = fails identity
13
14
 
14
- Output: scores table · blockers · fix order · keep.
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.**