You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"- Native grep/glob: only for initial filename/path discovery. Do not fall back to grep + Read for code navigation just because Serena's tools aren't loaded yet — load them.",
119
+
"- Exception — MCP timeout: if a Serena MCP call times out or hangs (seen mainly in OpenCode Desktop's long-lived sidecar), stop retrying MCP for this session: use native search/read for code, and access `.serena/memories/` files directly (or `serena memories read|write` when Serena CLI ≥ 1.5 is installed) for memory work. A full app relaunch restores Serena MCP.",
OpenCode Desktop runs one long-lived sidecar server; new sessions reuse its MCP clients,
21
+
so a stuck Serena MCP stays stuck until the Desktop app is fully relaunched (the TUI is
22
+
rarely affected). When a Serena MCP call times out or the MCP queue is clearly stuck, do
23
+
not keep retrying MCP — fall back narrowly:
24
+
25
+
1.**Memory ops** — read/write the same files directly under `.serena/memories/` (as
26
+
above). If a recent Serena CLI is installed (≥ 1.5, check `serena --version`),
27
+
`serena memories read|write|list` is an equivalent alternative; older versions
28
+
(e.g. 1.3.x) do not have the `memories` command.
29
+
2.**Code analysis** — fall back to native search/read tools. The Serena CLI cannot
30
+
execute analysis tools (`serena tools` only lists/describes them).
31
+
3.**Diagnostics** — `serena project health-check` and `serena project index` work
32
+
without MCP.
33
+
34
+
Keep the fallback scoped to the blocked call: this is a recovery path, not a license to
35
+
abandon Serena-first. A full Desktop relaunch is what actually resets the stale MCP client.
36
+
18
37
### Path Resolution (CRITICAL)
19
38
20
39
All result, progress, and state files MUST be written to the **project root**`.serena/memories/` directory, never to a subdirectory's `.serena/memories/`.
Copy file name to clipboardExpand all lines: .agents/skills/oma-design/SKILL.md
+22-2Lines changed: 22 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,6 +24,7 @@ DESIGN.md is the central artifact; all design work revolves around it.
24
24
- Creating or auditing `DESIGN.md`
25
25
- Selecting typography, color, layout, motion, or component direction
26
26
- Reviewing UI work for responsive behavior, accessibility, and visual quality
27
+
- Redesigning an existing site or app (preserve vs overhaul modes)
27
28
- Using optional vendor inspiration from Stitch MCP or getdesign
28
29
29
30
### When NOT to use
@@ -81,6 +82,7 @@ outputs:
81
82
82
83
### Transitions
83
84
- If `.design-context.md` is missing, create it before continuing.
85
+
- If the target is an existing site/app, load `resources/redesign-protocol.md` and classify Preserve vs Overhaul before proposing.
84
86
- If CJK support is needed, prioritize CJK-ready fonts.
85
87
- If vendor seed fetch fails, choose retry, continue without seed, or abort.
86
88
- If anti-patterns appear, surface alternatives before finalizing.
@@ -151,12 +153,16 @@ bunx getdesign@latest list
151
153
8. WCAG AA minimum for all designs. Respect `prefers-reduced-motion`.
152
154
9. Stitch MCP is optional; all phases work without it.
153
155
10. Present 2-3 design directions and get user confirmation before generating.
156
+
11. Declare a one-line Design Read before proposing: "Reading this as: \<page kind> for \<audience>, with a \<vibe> language." If genuinely ambiguous, ask exactly ONE clarifying question — never guess, never a question dump.
157
+
12. Redesigns follow `resources/redesign-protocol.md`: detect Preserve vs Overhaul, audit before touching, never silently change URLs, nav labels, form field names, or brand marks.
158
+
13. Visual assets follow `resources/asset-strategy.md`: image generation (oma-image) first, picsum seed second, labeled placeholder last. Div-based fake screenshots are banned.
159
+
14. Consistency locks: one accent color, one corner-radius system, one theme per page. Lock them early, audit against them in Phase 6 (checklist section 6 mechanical checks).
154
160
155
161
### Anti-Pattern Quick Reference
156
162
157
163
### Typography
158
164
- DON'T: Default to custom Google Fonts when system fonts suffice
159
-
- DON'T: Use Inter/Geist alone without considering project context
165
+
- DON'T: Reach for Inter as the default custom sans (LLM signature); override only on explicit neutral/Linear-style ask or public-sector/a11y-first brief
160
166
- DON'T: Load 3+ font families without justification
161
167
- DON'T: Body text below 16px on mobile
162
168
- DO: System font stack first, custom fonts for brand identity only
@@ -190,9 +196,21 @@ bunx getdesign@latest list
190
196
### Components
191
197
- DON'T: Glassmorphism everywhere; use sparingly
192
198
- DON'T: Hover-only interactions without touch/keyboard alternatives
199
+
- DON'T: Default to lucide-react or hand-rolled SVG icons; pick one family deliberately (Phosphor > HugeIcons > Radix > Tabler; lucide on explicit ask or existing dependency)
193
200
- DO: shadcn/ui for base, Aceternity UI / React Bits for accent effects
194
201
- DO: All interactive elements must have visible focus states
Copy file name to clipboardExpand all lines: .agents/skills/oma-design/resources/anti-patterns.md
+42-1Lines changed: 42 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@
5
5
6
6
## Typography
7
7
- DON'T: Default to custom Google Fonts when system fonts suffice
8
-
- DON'T: Use Inter or Geist alone without considering project context
8
+
- DON'T: Reach for Inter as the default custom sans. When a custom font is justified (brand identity), pick deliberately from alternatives first (Geist, Outfit, Cabinet Grotesk, Satoshi, or a brand-appropriate face). Inter-by-reflex is the LLM signature. OVERRIDE: Inter is acceptable when the user explicitly asks for a neutral / standard / Linear-style feel, or the brief is public-sector / accessibility-first. CJK rules always win (Pretendard Variable / Noto Sans CJK)
9
9
- DON'T: Load 3+ font families without clear justification
10
10
- DON'T: Set body text below 16px on mobile
11
11
- DON'T: Use light font-weight (300) for body on dark backgrounds without testing contrast
@@ -63,6 +63,47 @@
63
63
- DO: Use Intersection Observer to trigger animations only when visible
64
64
- DO: Pause off-screen Canvas/WebGL renderers
65
65
66
+
## Content & Copy
67
+
- DON'T: Generic persona names ("John Doe", "Jane Smith") or slop brand names ("Acme", "Nexus", "SmartFlow", "Cloudly")
68
+
- DON'T: Fake-perfect numbers (99.99%, 50%, 1234567); use organic data (47.2%) or label mocks explicitly
69
+
- DON'T: Fake-precise specs the brand never claimed (invented "5.8mm", "4.1x" for spec aesthetics)
- DON'T: Poetic/performative section labels ("From the field", "Quietly trusted by", "On our desks"); use plain functional labels ("Testimonials", "Latest writing") or none
73
+
- DON'T: Section-number eyebrows ("001 · Capabilities", "06 · how it works") or version labels in the hero (BETA, V0.6) unless the brief is a launch
74
+
- DON'T: Scroll cues ("Scroll to explore", animated mouse icons) or decorative locale/time/weather strips
75
+
- DON'T: Mix copy registers (technical mono + editorial prose + marketing punch) in one page without brand justification
76
+
- DON'T: Quotes longer than 3 lines; attribution is name + role, never name only ("- Sarah")
77
+
- DON'T: Em-dash (`—`) ANYWHERE in visible output — the #1 LLM stylistic tell. Zero tolerance: banned in headlines, eyebrows, pills, body copy, quotes, attribution, captions, button text, and alt text. No "sparingly" allowance — the model ignores soft limits. Restructure instead: two sentences, a comma, parentheses, or a colon
78
+
- DON'T: En-dash (`–`) as a separator; date ranges (2018-2026) and number ranges use a plain hyphen. The only permitted dashes are the hyphen (`-`) and the math minus sign
79
+
- DO: Copy self-audit before handoff — re-read every visible string; rewrite anything grammatically broken, unclear-referent, or AI-cute. Plain functional copy beats clever broken copy
80
+
- DO: One label per CTA intent across the page
81
+
- DO: Apply register rules per content language (CJK copy follows i18n-guide)
82
+
83
+
## Consistency Locks
84
+
- DON'T: Introduce a second accent color mid-page (a rose-accented site does not get a teal badge in the footer)
85
+
- DON'T: Mix corner-radius systems without a documented rule (round buttons in a square layout is broken design)
86
+
- DON'T: Invert theme for a single section mid-page (one light warm-paper section inside a dark page reads as a paste accident)
87
+
- DO: Pick accent, radius scale, and theme ONCE per page; lock them; audit every component against the locks before handoff
88
+
- DO: If a deliberate full theme switch is a composition device, use it at most once per page with a strong transition
89
+
90
+
## Assets & Imagery
91
+
- DON'T: Div-based fake screenshots (fake dashboards, task lists, terminal windows built from styled divs) — the #1 AI-design tell
92
+
- DON'T: Text-only pages passing as "minimalism"; even restrained pages need 2-3 real images
93
+
- DON'T: Plain text wordmarks in "Trusted by" logo walls; use real SVG logos or generated monogram marks
94
+
- DON'T: Hand-rolled SVG icons or decorative illustrations by default
95
+
- DON'T: Pills/labels overlaid on images, photo-credit captions as decoration, guessed Unsplash URLs
96
+
- DO: Source priority: image generation (oma-image) → picsum seed → labeled placeholder slot + tell the user
97
+
- DO: See `resources/asset-strategy.md` for full rules
98
+
99
+
## Iconography
100
+
- DON'T: Default to `lucide-react`. It ships with shadcn/ui, so every AI-generated site carries the same icon set. OVERRIDE: acceptable when the user explicitly asks for it, or the project already depends on it (including shadcn base components — never mix families to escape it)
101
+
- DON'T: Hand-roll SVG icon paths. If a glyph is missing, install a second allowed library or compose from primitives
102
+
- DON'T: Mix icon families in one component tree (no Phosphor + Lucide together)
0 commit comments